From gmaruzz at freeswitch.org Thu Jan 1 04:10:04 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 07:10:04 -0500 Subject: [Freeswitch-svn] [commit] r11041 - freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax Message-ID: Author: gmaruzz Date: Thu Jan 1 07:10:03 2009 New Revision: 11041 Log: skypiax: let's switch_channel_mark_answered the channel when it's actually answered, and *NOT* after having been pre_answered. Also, indent all Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c (original) +++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c Thu Jan 1 07:10:03 2009 @@ -393,15 +393,15 @@ sent = frame->datalen; //DEBUGA_SKYPE("CLI PIPE to write %d\n", SKYPIAX_P_LOG, sent); -#ifdef WIN32 +#ifdef WIN32 switch_file_write(p->audioskypepipe[1], frame->data, &sent); #else /* WIN32 */ sent = write(p->audioskypepipe[1], frame->data, sent); #endif /* WIN32 */ - if(sent != frame->datalen){ - ERRORA("CLI PIPE write %d\n", SKYPIAX_P_LOG, sent); - }else{ - //NOTICA("CLI PIPE write %d\n", SKYPIAX_P_LOG, sent); + if (sent != frame->datalen && sent != -1) { + DEBUGA_SKYPE("CLI PIPE write %d\n", SKYPIAX_P_LOG, sent); + } else { + //NOTICA("CLI PIPE write %d\n", SKYPIAX_P_LOG, sent); } return SWITCH_STATUS_SUCCESS; @@ -511,8 +511,8 @@ switch_core_session_add_stream(*new_session, NULL); if ((tech_pvt = (private_t *) switch_core_session_alloc(*new_session, sizeof(private_t))) != 0) { - tech_pvt->p = &globals.SKYPIAX_INTERFACES[19]; //FIXME - globals.SKYPIAX_INTERFACES[19].tech_pvt = tech_pvt; //FIXME + tech_pvt->p = &globals.SKYPIAX_INTERFACES[19]; //FIXME + globals.SKYPIAX_INTERFACES[19].tech_pvt = tech_pvt; //FIXME channel = switch_core_session_get_channel(*new_session); skypiax_tech_init(tech_pvt, *new_session, NULL); } else { @@ -542,7 +542,7 @@ switch_channel_set_flag(channel, CF_OUTBOUND); switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND); switch_channel_set_state(channel, CS_INIT); - switch_channel_mark_pre_answered(channel); + //switch_channel_mark_pre_answered(channel); return SWITCH_CAUSE_SUCCESS; } @@ -590,20 +590,20 @@ if (channel) { switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); //DEBUGA_SKYPE("after channel_on_hangup\n", SKYPIAX_P_LOG); - - } else { - ERRORA("no channel?\n", SKYPIAX_P_LOG); - } + + } else { + ERRORA("no channel?\n", SKYPIAX_P_LOG); + } + + } else { + ERRORA("no session?\n", SKYPIAX_P_LOG); + } } else { - ERRORA("no session?\n", SKYPIAX_P_LOG); - } - - } else { - ERRORA("no tech_pvt?\n", SKYPIAX_P_LOG); + ERRORA("no tech_pvt?\n", SKYPIAX_P_LOG); } - p->interface_state = SKYPIAX_STATE_DOWN; - global_session = NULL; //FIXME + p->interface_state = SKYPIAX_STATE_DOWN; + global_session = NULL; //FIXME } } @@ -802,14 +802,13 @@ if (name) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "name=%s\n", name); } - #ifndef WIN32 - if (!XInitThreads()) { - ERRORA("Not initialized XInitThreads!\n", SKYPIAX_P_LOG); - } else { - DEBUGA_SKYPE("Initialized XInitThreads!\n", SKYPIAX_P_LOG); - } - switch_sleep(100); + if (!XInitThreads()) { + ERRORA("Not initialized XInitThreads!\n", SKYPIAX_P_LOG); + } else { + DEBUGA_SKYPE("Initialized XInitThreads!\n", SKYPIAX_P_LOG); + } + switch_sleep(100); #endif /* WIN32 */ if (interface_id && interface_id < SKYPIAX_MAX_INTERFACES) { @@ -828,36 +827,45 @@ switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].name, "N/A"); } #ifdef WIN32 - globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port = (unsigned short)atoi(tcp_cli_port); - globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port = (unsigned short)atoi(tcp_srv_port); + globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port = + (unsigned short) atoi(tcp_cli_port); + globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port = + (unsigned short) atoi(tcp_srv_port); #else /* WIN32 */ - globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port = atoi(tcp_cli_port); - globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port = atoi(tcp_srv_port); + globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port = atoi(tcp_cli_port); + globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port = atoi(tcp_srv_port); #endif /* WIN32 */ //switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port, tcp_cli_port); //switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port, tcp_srv_port); - switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].X11_display, X11_display); - switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].skype_user, skype_user); - switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].skype_password, skype_password); + switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].X11_display, + X11_display); + switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].skype_user, + skype_user); + switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].skype_password, + skype_password); switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].context, context); switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].dialplan, dialplan); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].X11_display=%s\n", - interface_id, globals.SKYPIAX_INTERFACES[interface_id].X11_display); + interface_id, + globals.SKYPIAX_INTERFACES[interface_id].X11_display); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].skype_user=%s\n", - interface_id, globals.SKYPIAX_INTERFACES[interface_id].skype_user); + interface_id, + globals.SKYPIAX_INTERFACES[interface_id].skype_user); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].skype_password=%s\n", - interface_id, globals.SKYPIAX_INTERFACES[interface_id].skype_password); + interface_id, + globals.SKYPIAX_INTERFACES[interface_id].skype_password); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port=%d\n", - interface_id, globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port); + interface_id, + globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port=%d\n", - interface_id, globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port); + interface_id, + globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].name=%s\n", interface_id, globals.SKYPIAX_INTERFACES[interface_id].name); @@ -866,15 +874,18 @@ interface_id, globals.SKYPIAX_INTERFACES[interface_id].context); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].dialplan=%s\n", - interface_id, globals.SKYPIAX_INTERFACES[interface_id].dialplan); + interface_id, + globals.SKYPIAX_INTERFACES[interface_id].dialplan); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "STARTING interface_id=%d\n", interface_id); switch_threadattr_create(&do_skype_thd_attr, skypiax_module_pool); //switch_threadattr_detach_set(do_skype_thd_attr, 1); switch_threadattr_stacksize_set(do_skype_thd_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread, do_skype_thd_attr, do_skype_thread, - &globals.SKYPIAX_INTERFACES[interface_id], skypiax_module_pool); + switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id]. + skypiax_do_skype_thread_thread, do_skype_thd_attr, + do_skype_thread, &globals.SKYPIAX_INTERFACES[interface_id], + skypiax_module_pool); switch_sleep(100000); @@ -883,10 +894,12 @@ //switch_threadattr_detach_set(skypiax_do_controldev_thread_thd_attr, 1); switch_threadattr_stacksize_set(skypiax_do_controldev_thread_thd_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread, + switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id]. + skypiax_do_controldev_thread_thread, skypiax_do_controldev_thread_thd_attr, skypiax_do_controldev_thread, - &globals.SKYPIAX_INTERFACES[interface_id], skypiax_module_pool); + &globals.SKYPIAX_INTERFACES[interface_id], + skypiax_module_pool); switch_sleep(1000000); @@ -932,7 +945,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_skypiax_load) { - struct skypiax_interface *p = NULL; //for logging + struct skypiax_interface *p = NULL; //for logging skypiax_module_pool = pool; @@ -966,58 +979,61 @@ struct skypiax_interface *p = NULL; switch_status_t status; unsigned int howmany = 8; -int interface_id; + int interface_id; //p = &globals.SKYPIAX_INTERFACES[2]; running = 0; -for(interface_id=0; interface_id < SKYPIAX_MAX_INTERFACES; interface_id++){ - p = &globals.SKYPIAX_INTERFACES[interface_id]; + for (interface_id = 0; interface_id < SKYPIAX_MAX_INTERFACES; interface_id++) { + p = &globals.SKYPIAX_INTERFACES[interface_id]; -if(globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread){ + if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread) { #ifdef WIN32 - switch_file_write(p->AsteriskHandlesAst.fdesc[1], "sciutati", &howmany); // let's the controldev_thread die + switch_file_write(p->AsteriskHandlesAst.fdesc[1], "sciutati", &howmany); // let's the controldev_thread die #else /* WIN32 */ - write(p->AsteriskHandlesAst.fdesc[1], "sciutati", howmany); + write(p->AsteriskHandlesAst.fdesc[1], "sciutati", howmany); #endif /* WIN32 */ - } + } -if(globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread){ + if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread) { #ifdef WIN32 - if (SendMessage(p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) { // let's the do_skype_thread die - ERRORA("WHY FALSE HERE? %d\n", SKYPIAX_P_LOG, GetLastError()); - } + if (SendMessage(p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) { // let's the do_skype_thread die + ERRORA("WHY FALSE HERE? %d\n", SKYPIAX_P_LOG, GetLastError()); + } #else - XEvent e; - Atom atom1 = - XInternAtom(p->AsteriskHandlesAst.disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False); - memset(&e, 0, sizeof(e)); - e.xclient.type = ClientMessage; - e.xclient.message_type = atom1; /* leading message */ - e.xclient.display = p->AsteriskHandlesAst.disp; - e.xclient.window = p->AsteriskHandlesAst.skype_win; - e.xclient.format = 8; + XEvent e; + Atom atom1 = + XInternAtom(p->AsteriskHandlesAst.disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False); + memset(&e, 0, sizeof(e)); + e.xclient.type = ClientMessage; + e.xclient.message_type = atom1; /* leading message */ + e.xclient.display = p->AsteriskHandlesAst.disp; + e.xclient.window = p->AsteriskHandlesAst.skype_win; + e.xclient.format = 8; - XSendEvent(p->AsteriskHandlesAst.disp, p->AsteriskHandlesAst.win, False, 0, &e); - XSync(p->AsteriskHandlesAst.disp, False); + XSendEvent(p->AsteriskHandlesAst.disp, p->AsteriskHandlesAst.win, False, 0, &e); + XSync(p->AsteriskHandlesAst.disp, False); #endif - } - while (x) { - x--; - switch_yield(20000); - } -if(globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread){ - switch_thread_join(&status, globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread); - } -if(globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread){ - switch_thread_join(&status, globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread); - } + } + while (x) { + x--; + switch_yield(20000); + } + if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread) { + switch_thread_join(&status, + globals.SKYPIAX_INTERFACES[interface_id]. + skypiax_do_controldev_thread_thread); + } + if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread) { + switch_thread_join(&status, + globals.SKYPIAX_INTERFACES[interface_id]. + skypiax_do_skype_thread_thread); + } } return SWITCH_STATUS_SUCCESS; } - /* For Emacs: * Local Variables: * mode:c Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h ============================================================================== --- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h (original) +++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h Thu Jan 1 07:10:03 2009 @@ -136,7 +136,7 @@ Window skype_win; Display *disp; Window win; -int api_connected; + int api_connected; int fdesc[2]; }; #else //WIN32 @@ -144,11 +144,11 @@ struct AsteriskHandles { HWND win32_hInit_MainWindowHandle; HWND win32_hGlobal_SkypeAPIWindowHandle; -HINSTANCE win32_hInit_ProcessHandle; -char win32_acInit_WindowClassName[128]; -UINT win32_uiGlobal_MsgID_SkypeControlAPIAttach; -UINT win32_uiGlobal_MsgID_SkypeControlAPIDiscover; -int api_connected; + HINSTANCE win32_hInit_ProcessHandle; + char win32_acInit_WindowClassName[128]; + UINT win32_uiGlobal_MsgID_SkypeControlAPIAttach; + UINT win32_uiGlobal_MsgID_SkypeControlAPIDiscover; + int api_connected; switch_file_t *fdesc[2]; }; @@ -195,10 +195,10 @@ #ifdef WIN32 switch_file_t *audiopipe[2]; switch_file_t *audioskypepipe[2]; -#else /* WIN32 */ +#else /* WIN32 */ int audiopipe[2]; int audioskypepipe[2]; -#endif /* WIN32 */ +#endif /* WIN32 */ switch_thread_t *tcp_srv_thread; switch_thread_t *tcp_cli_thread; switch_thread_t *skypiax_do_controldev_thread_thread; @@ -247,4 +247,5 @@ int skypiax_skype_write(struct skypiax_interface *p, char *msg_to_skype); int skypiax_skype_read(struct skypiax_interface *p); -int skypiax_skype_call(struct skypiax_interface *p, char *idest, int timeout, switch_core_session_t * session); +int skypiax_skype_call(struct skypiax_interface *p, char *idest, int timeout, + switch_core_session_t * session); Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c Thu Jan 1 07:10:03 2009 @@ -6,23 +6,17 @@ extern switch_endpoint_interface_t *skypiax_endpoint_interface; extern int running; - - /**********************************************************/ /**********************************************************/ /**********************************************************/ - extern switch_core_session_t *global_session; - #ifdef WIN32 #else /* NOT WIN32 */ #define SKYPE_X11_BUF_SIZE 512 #endif /* WIN32 */ - - /**********************************************************/ /**********************************************************/ /**********************************************************/ @@ -57,27 +51,26 @@ short totalbuf[SAMPLES_PER_FRAME]; //int one = 1; - if (option_debug > 10) { - WARNINGA("ENTERING FUNC\n", SKYPIAX_P_LOG); + if (option_debug > 100) { + DEBUGA_SKYPE("ENTERING FUNC\n", SKYPIAX_P_LOG); } memset(&my_addr, 0, sizeof(my_addr)); my_addr.sin_family = AF_INET; my_addr.sin_addr.s_addr = htonl(0x7f000001); /* use the localhost */ - my_addr.sin_port = htons(p->tcp_srv_port); + my_addr.sin_port = htons(p->tcp_srv_port); if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) { ERRORA("socket Error\n", SKYPIAX_P_LOG); - if (option_debug > 10) { + if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } return NULL; } - //setsockopt(s, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one)); if (bind(s, (struct sockaddr *) &my_addr, sizeof(struct sockaddr)) < 0) { ERRORA("bind Error\n", SKYPIAX_P_LOG); - if (option_debug > 10) { + if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } return NULL; @@ -111,152 +104,147 @@ fdselect = fd; FD_ZERO(&fs); FD_SET(fdselect, &fs); - to.tv_usec = 2000000; //20 msec + to.tv_usec = 2000000; //20 msec to.tv_sec = 0; rt = select(fdselect + 1, &fs, NULL, NULL, &to); - //rt=0; + //rt=0; if (rt > 0) { #ifdef WIN32 - len = recv(fd, (char *)srv_in, 320, 0); //seems that Skype only sends 320 bytes at time + len = recv(fd, (char *) srv_in, 320, 0); //seems that Skype only sends 320 bytes at time #else /* WIN32 */ - len = recv(fd, (char *)srv_in, 320, 0); //seems that Skype only sends 320 bytes at time + len = recv(fd, (char *) srv_in, 320, 0); //seems that Skype only sends 320 bytes at time #endif /* WIN32 */ - if ((SAMPLERATE_SKYPIAX - 8000) == 0) { + if ((SAMPLERATE_SKYPIAX - 8000) == 0) { - /****************************************************************/ - if (len > 0) { - a = 0; - for (i = 0; i < len / sizeof(short); i++) { - srv_out[a] = srv_in[i]; - i++; - a++; - } - - if (!p->audiobuf_is_loaded) { - for (i = 0; i < (len / sizeof(short)) / 2; i++) { - p->audiobuf[i] = srv_out[i]; - } - p->audiobuf_is_loaded = 1; - } else { - unsigned int howmany; - - howmany = len / 2 / 2; - for (i = 0; i < howmany; i++) - totalbuf[i] = p->audiobuf[i]; - - howmany = len / 2 / 2; - for (a = 0; a < howmany; a++) { - totalbuf[i] = srv_out[a]; - i++; - } + /****************************************************************/ + if (len > 0) { + a = 0; + for (i = 0; i < len / sizeof(short); i++) { + srv_out[a] = srv_in[i]; + i++; + a++; + } - howmany = len; + if (!p->audiobuf_is_loaded) { + for (i = 0; i < (len / sizeof(short)) / 2; i++) { + p->audiobuf[i] = srv_out[i]; + } + p->audiobuf_is_loaded = 1; + } else { + unsigned int howmany; -#ifdef WIN32 - switch_file_write(p->audiopipe[1], totalbuf, &howmany); -#else /* WIN32 */ - howmany = write(p->audiopipe[1], totalbuf, howmany); -#endif /* WIN32 */ - p->audiobuf_is_loaded = 0; - //DEBUGA_SKYPE("read=====> req=%d recv=%d to sent=%d sent=%d\n", SKYPIAX_P_LOG, sizeof(short)*SAMPLES_PER_FRAME, len, (len*sizeof(short))/2, howmany); - } - - } else if (len == 0) { - DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG); - switch_sleep(1000); - } else { - ERRORA("len=%d\n", SKYPIAX_P_LOG, len); - exit = 1; - break; - } - /****************************************************************/ - } else if (SAMPLERATE_SKYPIAX == 16000) { - - - /****************************************************************/ - if (len > 0) { - if (len == SAMPLES_PER_FRAME * sizeof(short)) { - unsigned int howmany; - howmany = len; + howmany = len / 2 / 2; + for (i = 0; i < howmany; i++) + totalbuf[i] = p->audiobuf[i]; + + howmany = len / 2 / 2; + for (a = 0; a < howmany; a++) { + totalbuf[i] = srv_out[a]; + i++; + } - WARNINGA("SRV recv %d\n", SKYPIAX_P_LOG, len); + howmany = len; -#ifdef WIN32 - switch_file_write(p->audiopipe[1], srv_in, &howmany); +#ifdef WIN32 + switch_file_write(p->audiopipe[1], totalbuf, &howmany); #else /* WIN32 */ - howmany = write(p->audiopipe[1], srv_in, howmany); + howmany = write(p->audiopipe[1], totalbuf, howmany); #endif /* WIN32 */ - p->audiobuf_is_loaded = 0; - WARNINGA("SRV PIPE WRITE=====> req=%lu recv=%d to sent=%d sent=%u\n", SKYPIAX_P_LOG, sizeof(short)*SAMPLES_PER_FRAME, len, len, howmany); - }else if (len == SAMPLES_PER_FRAME * sizeof(short) / 2) { + p->audiobuf_is_loaded = 0; + //DEBUGA_SKYPE("read=====> req=%d recv=%d to sent=%d sent=%d\n", SKYPIAX_P_LOG, sizeof(short)*SAMPLES_PER_FRAME, len, (len*sizeof(short))/2, howmany); + } -#if 1 + } else if (len == 0) { + DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG); + switch_sleep(1000); + } else { + ERRORA("len=%d\n", SKYPIAX_P_LOG, len); + exit = 1; + break; + } + /****************************************************************/ + } else if (SAMPLERATE_SKYPIAX == 16000) { + /****************************************************************/ + if (len > 0) { + if (len == SAMPLES_PER_FRAME * sizeof(short)) { + unsigned int howmany; + howmany = len; - if (!p->audiobuf_is_loaded) { - for (i = 0; i < (len / sizeof(short)); i++) { - p->audiobuf[i] = srv_in[i]; - } - p->audiobuf_is_loaded = 1; - } else { - unsigned int howmany = SAMPLES_PER_FRAME * sizeof(short); - //short totalbuf[SAMPLES_PER_FRAME]; - - for (i = 0; i < (len / sizeof(short)); i++) - totalbuf[i] = p->audiobuf[i]; - for (a = 0; a < (len / sizeof(short)); a++) { - totalbuf[i] = srv_in[a]; - i++; - } + WARNINGA("SRV recv %d\n", SKYPIAX_P_LOG, len); -#ifdef WIN32 - switch_file_write(p->audiopipe[1], totalbuf, &howmany); +#ifdef WIN32 + switch_file_write(p->audiopipe[1], srv_in, &howmany); #else /* WIN32 */ - howmany = write(p->audiopipe[1], totalbuf, howmany); + howmany = write(p->audiopipe[1], srv_in, howmany); #endif /* WIN32 */ - p->audiobuf_is_loaded = 0; - //NOTICA("SRV PIPE WRITE=====> req=%d recv=%d to sent=%d sent=%d\n", SKYPIAX_P_LOG, SAMPLES_PER_FRAME * sizeof(short), len, SAMPLES_PER_FRAME * sizeof(short), howmany); - } -#endif - + p->audiobuf_is_loaded = 0; + WARNINGA("SRV PIPE WRITE=====> req=%lu recv=%d to sent=%d sent=%u\n", + SKYPIAX_P_LOG, sizeof(short) * SAMPLES_PER_FRAME, len, len, + howmany); + } else if (len == SAMPLES_PER_FRAME * sizeof(short) / 2) { +#if 1 + if (!p->audiobuf_is_loaded) { + for (i = 0; i < (len / sizeof(short)); i++) { + p->audiobuf[i] = srv_in[i]; + } + p->audiobuf_is_loaded = 1; + } else { + unsigned int howmany = SAMPLES_PER_FRAME * sizeof(short); + //short totalbuf[SAMPLES_PER_FRAME]; - } else { + for (i = 0; i < (len / sizeof(short)); i++) + totalbuf[i] = p->audiobuf[i]; + for (a = 0; a < (len / sizeof(short)); a++) { + totalbuf[i] = srv_in[a]; + i++; + } - ERRORA("SRV len=%d\n", SKYPIAX_P_LOG, len); +#ifdef WIN32 + switch_file_write(p->audiopipe[1], totalbuf, &howmany); +#else /* WIN32 */ + howmany = write(p->audiopipe[1], totalbuf, howmany); +#endif /* WIN32 */ + p->audiobuf_is_loaded = 0; + //NOTICA("SRV PIPE WRITE=====> req=%d recv=%d to sent=%d sent=%d\n", SKYPIAX_P_LOG, SAMPLES_PER_FRAME * sizeof(short), len, SAMPLES_PER_FRAME * sizeof(short), howmany); + } +#endif - } + } else { - } else if (len == 0) { - DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG); - switch_sleep(1000); - //break; - } else { - ERRORA("SRV len=%d\n", SKYPIAX_P_LOG, len); - exit = 1; - break; - } - /****************************************************************/ + ERRORA("SRV len=%d\n", SKYPIAX_P_LOG, len); + } + } else if (len == 0) { + DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG); + switch_sleep(1000); + //break; + } else { + ERRORA("SRV len=%d\n", SKYPIAX_P_LOG, len); + exit = 1; + break; + } + /****************************************************************/ - } else { + } else { - ERRORA("SAMPLERATE_SKYPIAX can only be 8000 or 16000\n", SKYPIAX_P_LOG); - } + ERRORA("SAMPLERATE_SKYPIAX can only be 8000 or 16000\n", SKYPIAX_P_LOG); + } } else { - if(rt) - ERRORA("SRV rt=%d\n", SKYPIAX_P_LOG, rt); - switch_sleep(10000); - } + if (rt) + ERRORA("SRV rt=%d\n", SKYPIAX_P_LOG, rt); + switch_sleep(10000); + } } -#ifdef WIN32 +#ifdef WIN32 kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); switch_file_write(p->audiopipe[1], kill_cli_buff, &kill_cli_size); kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); @@ -295,7 +283,7 @@ #else closesocket(s); #endif - if (option_debug > 10) { + if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } return NULL; @@ -328,27 +316,26 @@ #endif /* WIN32 */ //int one = 1; - if (option_debug > 10) { - WARNINGA("ENTERING FUNC\n", SKYPIAX_P_LOG); + if (option_debug > 100) { + DEBUGA_SKYPE("ENTERING FUNC\n", SKYPIAX_P_LOG); } memset(&my_addr, 0, sizeof(my_addr)); my_addr.sin_family = AF_INET; my_addr.sin_addr.s_addr = htonl(0x7f000001); /* use the localhost */ - my_addr.sin_port = htons(p->tcp_cli_port); //FIXME configurable! + my_addr.sin_port = htons(p->tcp_cli_port); //FIXME configurable! if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) { ERRORA("socket Error\n", SKYPIAX_P_LOG); - if (option_debug > 10) { + if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } return NULL; } - //setsockopt(s, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one)); if (bind(s, (struct sockaddr *) &my_addr, sizeof(struct sockaddr)) < 0) { ERRORA("bind Error\n", SKYPIAX_P_LOG); - if (option_debug > 10) { + if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } #ifndef WIN32 @@ -382,99 +369,99 @@ if (!running) break; #ifdef WIN32 - fdselect = fd; //cannot select on audioskypepipe, let's select on socket write + fdselect = fd; //cannot select on audioskypepipe, let's select on socket write #else /* WIN32 */ fdselect = p->audioskypepipe[0]; #endif /* WIN32 */ FD_ZERO(&fs); FD_SET(fdselect, &fs); - to.tv_usec = 2000000; //20 msec + to.tv_usec = 2000000; //20 msec to.tv_sec = 0; #ifdef WIN32 - rt = select(fdselect + 1, NULL, &fs, NULL, &to);//cannot select on audioskypepipe, let's select on socket write + rt = select(fdselect + 1, NULL, &fs, NULL, &to); //cannot select on audioskypepipe, let's select on socket write #else /* WIN32 */ rt = select(fdselect + 1, &fs, NULL, NULL, &to); #endif /* WIN32 */ - //switch_sleep(1000);//FIXME - //memset(cli_in, '\0', sizeof(cli_in)); + //switch_sleep(1000);//FIXME + //memset(cli_in, '\0', sizeof(cli_in)); //rt = 0; - if (rt > 0) { - /*********************************************/ - if ((SAMPLERATE_SKYPIAX - 8000) == 0) { - got = SAMPLES_PER_FRAME * sizeof(short); -#ifdef WIN32 - switch_file_read(p->audioskypepipe[0], cli_in, &got); + if (rt > 0) { + /*********************************************/ + if ((SAMPLERATE_SKYPIAX - 8000) == 0) { + got = SAMPLES_PER_FRAME * sizeof(short); +#ifdef WIN32 + switch_file_read(p->audioskypepipe[0], cli_in, &got); #else /* WIN32 */ - got = read(p->audioskypepipe[0], cli_in, got); + got = read(p->audioskypepipe[0], cli_in, got); #endif /* WIN32 */ - if (got > 0) { - //DEBUGA_SKYPE("CLI PIPE read %d\n", SKYPIAX_P_LOG, got); - a = 0; - for (i = 0; i < got / sizeof(short); i++) { - cli_out[a] = cli_in[i]; - a++; - cli_out[a] = cli_in[i]; - a++; - } + if (got > 0) { + //DEBUGA_SKYPE("CLI PIPE read %d\n", SKYPIAX_P_LOG, got); + a = 0; + for (i = 0; i < got / sizeof(short); i++) { + cli_out[a] = cli_in[i]; + a++; + cli_out[a] = cli_in[i]; + a++; + } #ifdef WIN32 - len = send(fd, (char *)cli_out, got * 2, 0); + len = send(fd, (char *) cli_out, got * 2, 0); #else /* WIN32 */ - len = send(fd, cli_out, got * 2, 0); + len = send(fd, cli_out, got * 2, 0); #endif /* WIN32 */ - //DEBUGA_SKYPE("CLI PIPE send %d\n", SKYPIAX_P_LOG, len); + //DEBUGA_SKYPE("CLI PIPE send %d\n", SKYPIAX_P_LOG, len); - if (len == 0) { - ERRORA("Skype server GONE\n", SKYPIAX_P_LOG); - break; - } - } else { - switch_sleep(1000); - ERRORA("CLI PIPE give us: %u\n", SKYPIAX_P_LOG, got); - //break; - } - } - /*********************************************/ - /*********************************************/ - else if (SAMPLERATE_SKYPIAX == 16000) { - got = SAMPLES_PER_FRAME * sizeof(short); -#ifdef WIN32 - switch_file_read(p->audioskypepipe[0], cli_in, &got); + if (len == 0) { + ERRORA("Skype server GONE\n", SKYPIAX_P_LOG); + break; + } + } else { + switch_sleep(1000); + ERRORA("CLI PIPE give us: %u\n", SKYPIAX_P_LOG, got); + //break; + } + } + /*********************************************/ + /*********************************************/ + else if (SAMPLERATE_SKYPIAX == 16000) { + got = SAMPLES_PER_FRAME * sizeof(short); +#ifdef WIN32 + switch_file_read(p->audioskypepipe[0], cli_in, &got); #else /* WIN32 */ - got = read(p->audioskypepipe[0], cli_in, got); + got = read(p->audioskypepipe[0], cli_in, got); #endif /* WIN32 */ - if (got > 0) { - if(got != SAMPLES_PER_FRAME * sizeof(short) ) - ERRORA("CLI PIPE read %d\n", SKYPIAX_P_LOG, got); + if (got > 0) { + if (got != SAMPLES_PER_FRAME * sizeof(short)) + ERRORA("CLI PIPE read %d\n", SKYPIAX_P_LOG, got); #ifdef WIN32 - len = send(fd, (char *)cli_in, got, 0); + len = send(fd, (char *) cli_in, got, 0); #else /* WIN32 */ - len = send(fd, cli_in, got, 0); + len = send(fd, cli_in, got, 0); #endif /* WIN32 */ - if(len != got ) - ERRORA("CLI PIPE send %d\n", SKYPIAX_P_LOG, len); + if (len != got && len != -1) + DEBUGA_SKYPE("CLI PIPE send %d\n", SKYPIAX_P_LOG, len); - if (len == 0) { - ERRORA("Skype server GONE\n", SKYPIAX_P_LOG); - break; - } - } else { - switch_sleep(1000); - ERRORA("CLI PIPE give us: %u\n", SKYPIAX_P_LOG, got); - } - } - /*********************************************/ - - } else { - switch_sleep(1000); - if(rt) - ERRORA("select give us: %u\n", SKYPIAX_P_LOG, rt); - } + if (len == 0) { + ERRORA("Skype server GONE\n", SKYPIAX_P_LOG); + break; + } + } else { + switch_sleep(1000); + ERRORA("CLI PIPE give us: %u\n", SKYPIAX_P_LOG, got); + } + } + /*********************************************/ + + } else { + switch_sleep(1000); + if (rt) + ERRORA("select give us: %u\n", SKYPIAX_P_LOG, rt); + } } DEBUGA_SKYPE("Skype server GONE\n", SKYPIAX_P_LOG); @@ -492,7 +479,7 @@ #else closesocket(s); #endif - if (option_debug > 10) { + if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } return NULL; @@ -501,13 +488,12 @@ int skypiax_skypeaudio_init(struct skypiax_interface *p) { - #ifdef WIN32 switch_status_t rv; + rv = switch_file_pipe_create(&p->audiopipe[0], &p->audiopipe[1], skypiax_module_pool); rv = - switch_file_pipe_create(&p->audiopipe[0], &p->audiopipe[1], skypiax_module_pool); - rv = - switch_file_pipe_create(&p->audioskypepipe[0], &p->audioskypepipe[1], skypiax_module_pool); + switch_file_pipe_create(&p->audioskypepipe[0], &p->audioskypepipe[1], + skypiax_module_pool); #else /* WIN32 */ pipe(p->audiopipe); fcntl(p->audiopipe[0], F_SETFL, O_NONBLOCK); @@ -539,7 +525,6 @@ struct timeval to; #endif /* WIN32 */ - p = tech_pvt->p; //DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); @@ -551,7 +536,7 @@ fdselect = p->audiopipe[0]; FD_ZERO(&fs); FD_SET(fdselect, &fs); - to.tv_usec = 2000000; //20 msec + to.tv_usec = 2000000; //20 msec to.tv_sec = 0; rt = select(fdselect + 1, &fs, NULL, NULL, &to); #endif /* WIN32 */ @@ -564,14 +549,14 @@ switch_file_read(p->audiopipe[0], tech_pvt->read_frame.data, &samples); #else /* WIN32 */ - //samples = read(p->audiopipe[0], buf, SAMPLES_PER_FRAME * sizeof(short)); + //samples = read(p->audiopipe[0], buf, SAMPLES_PER_FRAME * sizeof(short)); samples = read(p->audiopipe[0], tech_pvt->read_frame.data, samples); #endif /* WIN32 */ if (samples != SAMPLES_PER_FRAME * sizeof(short)) { if (samples) ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG, - samples, SAMPLES_PER_FRAME * sizeof(short)); + samples, SAMPLES_PER_FRAME * sizeof(short)); //do nothing } else { tech_pvt->read_frame.datalen = samples; @@ -579,8 +564,8 @@ /* A real frame */ } } else { - if(rt) - DEBUGA_SKYPE("select returned %d\n", SKYPIAX_P_LOG, rt); + if (rt) + DEBUGA_SKYPE("select returned %d\n", SKYPIAX_P_LOG, rt); } @@ -589,38 +574,32 @@ return SWITCH_STATUS_SUCCESS; } - #ifdef WIN32 int LaunchSkype(struct skypiax_interface *p) { - LPTSTR pszMessage; - DWORD dwLastError; - char skypelogin[256]; - - memset(skypelogin, '\0', sizeof(skypelogin)); - sprintf(skypelogin, "/secondary /username:%s /password:%s", p->skype_user, p->skype_password); - - - ShellExecute(NULL, "open", "C:\\Program Files\\Skype\\Phone\\Skype.exe", skypelogin, ".", SW_SHOWNORMAL); - - dwLastError = GetLastError(); - - FormatMessage( - FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - dwLastError, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR)&pszMessage, - 0, NULL ); - - NOTICA("ShellExecute gave: %s\n", SKYPIAX_P_LOG,pszMessage); - LocalFree(pszMessage); - return 1; + LPTSTR pszMessage; + DWORD dwLastError; + char skypelogin[256]; + + memset(skypelogin, '\0', sizeof(skypelogin)); + sprintf(skypelogin, "/secondary /username:%s /password:%s", p->skype_user, + p->skype_password); + + ShellExecute(NULL, "open", "C:\\Program Files\\Skype\\Phone\\Skype.exe", skypelogin, + ".", SW_SHOWNORMAL); + + dwLastError = GetLastError(); + + FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwLastError, MAKELANGID(LANG_NEUTRAL, + SUBLANG_DEFAULT), + (LPTSTR) & pszMessage, 0, NULL); -} + NOTICA("ShellExecute gave: %s\n", SKYPIAX_P_LOG, pszMessage); + LocalFree(pszMessage); + return 1; +} enum { SKYPECONTROLAPI_ATTACH_SUCCESS = 0, /* Client is successfully @@ -673,11 +652,11 @@ lReturnCode = 0; fIssueDefProc = 0; - p = ( struct skypiax_interface *)GetWindowLong(hWindow, GWL_USERDATA); + p = (struct skypiax_interface *) GetWindowLong(hWindow, GWL_USERDATA); switch (uiMessage) { case WM_CREATE: - p=( struct skypiax_interface *)((LPCREATESTRUCT)ulParam)->lpCreateParams; - SetWindowLong(hWindow, GWL_USERDATA, (LONG)p); + p = (struct skypiax_interface *) ((LPCREATESTRUCT) ulParam)->lpCreateParams; + SetWindowLong(hWindow, GWL_USERDATA, (LONG) p); DEBUGA_SKYPE("got CREATE\n", SKYPIAX_P_LOG); break; case WM_DESTROY: @@ -703,50 +682,52 @@ } break; default: - if(p && p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach) { - if (uiMessage == p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach) { - switch (ulParam) { - case SKYPECONTROLAPI_ATTACH_SUCCESS: - if(!p->AsteriskHandlesAst.api_connected){ - NOTICA("\n\n\tConnected to Skype API!\n", SKYPIAX_P_LOG); - p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam; - //switch_sleep(5000); - p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle = - p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle; - } - break; - case SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION: - WARNINGA - ("\n\n\tIf I do not (almost) immediately connect to Skype API,\n\tplease give the Skype client authorization to be connected \n\tby Asterisk and to not ask you again.\n\n", - SKYPIAX_P_LOG); - switch_sleep(5000); - if(!p->AsteriskHandlesAst.api_connected){ - SendMessage - (HWND_BROADCAST, p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover, - (WPARAM) p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, 0); - } - break; - case SKYPECONTROLAPI_ATTACH_REFUSED: - ERRORA("Skype client refused to be connected by Skypiax!\n", SKYPIAX_P_LOG); - break; - case SKYPECONTROLAPI_ATTACH_NOT_AVAILABLE: - ERRORA("Skype API not (yet?) available\n", SKYPIAX_P_LOG); - break; - case SKYPECONTROLAPI_ATTACH_API_AVAILABLE: - DEBUGA_SKYPE("Skype API available\n", SKYPIAX_P_LOG); - switch_sleep(5000); - if(!p->AsteriskHandlesAst.api_connected){ - SendMessage - (HWND_BROADCAST, p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover, - (WPARAM) p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, 0); - } + if (p && p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach) { + if (uiMessage == p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach) { + switch (ulParam) { + case SKYPECONTROLAPI_ATTACH_SUCCESS: + if (!p->AsteriskHandlesAst.api_connected) { + NOTICA("\n\n\tConnected to Skype API!\n", SKYPIAX_P_LOG); + p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam; + //switch_sleep(5000); + p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle = + p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle; + } + break; + case SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION: + WARNINGA + ("\n\n\tIf I do not (almost) immediately connect to Skype API,\n\tplease give the Skype client authorization to be connected \n\tby Asterisk and to not ask you again.\n\n", + SKYPIAX_P_LOG); + switch_sleep(5000); + if (!p->AsteriskHandlesAst.api_connected) { + SendMessage(HWND_BROADCAST, + p->AsteriskHandlesAst. + win32_uiGlobal_MsgID_SkypeControlAPIDiscover, + (WPARAM) p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, 0); + } + break; + case SKYPECONTROLAPI_ATTACH_REFUSED: + ERRORA("Skype client refused to be connected by Skypiax!\n", SKYPIAX_P_LOG); + break; + case SKYPECONTROLAPI_ATTACH_NOT_AVAILABLE: + ERRORA("Skype API not (yet?) available\n", SKYPIAX_P_LOG); + break; + case SKYPECONTROLAPI_ATTACH_API_AVAILABLE: + DEBUGA_SKYPE("Skype API available\n", SKYPIAX_P_LOG); + switch_sleep(5000); + if (!p->AsteriskHandlesAst.api_connected) { + SendMessage(HWND_BROADCAST, + p->AsteriskHandlesAst. + win32_uiGlobal_MsgID_SkypeControlAPIDiscover, + (WPARAM) p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, 0); + } + break; + default: + WARNINGA("GOT AN UNKNOWN SKYPE WINDOWS MSG\n", SKYPIAX_P_LOG); + } + lReturnCode = 1; break; - default: - WARNINGA("GOT AN UNKNOWN SKYPE WINDOWS MSG\n", SKYPIAX_P_LOG); } - lReturnCode = 1; - break; - } } fIssueDefProc = 1; break; @@ -793,20 +774,24 @@ } } if (fReturnStatus == 0) - CloseHandle(p->AsteriskHandlesAst.win32_hInit_ProcessHandle), p->AsteriskHandlesAst.win32_hInit_ProcessHandle = NULL; + CloseHandle(p->AsteriskHandlesAst.win32_hInit_ProcessHandle), + p->AsteriskHandlesAst.win32_hInit_ProcessHandle = NULL; return (fReturnStatus); } void win32_DeInitialize_DestroyWindowClass(struct skypiax_interface *p) { - UnregisterClass(p->AsteriskHandlesAst.win32_acInit_WindowClassName, p->AsteriskHandlesAst.win32_hInit_ProcessHandle); - CloseHandle(p->AsteriskHandlesAst.win32_hInit_ProcessHandle), p->AsteriskHandlesAst.win32_hInit_ProcessHandle = NULL; + UnregisterClass(p->AsteriskHandlesAst.win32_acInit_WindowClassName, + p->AsteriskHandlesAst.win32_hInit_ProcessHandle); + CloseHandle(p->AsteriskHandlesAst.win32_hInit_ProcessHandle), + p->AsteriskHandlesAst.win32_hInit_ProcessHandle = NULL; } int win32_Initialize_CreateMainWindow(struct skypiax_interface *p) { p->AsteriskHandlesAst.win32_hInit_MainWindowHandle = - CreateWindowEx(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, p->AsteriskHandlesAst.win32_acInit_WindowClassName, "", + CreateWindowEx(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, + p->AsteriskHandlesAst.win32_acInit_WindowClassName, "", WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 128, 128, NULL, 0, p->AsteriskHandlesAst.win32_hInit_ProcessHandle, p); return (p->AsteriskHandlesAst.win32_hInit_MainWindowHandle != NULL ? 1 : 0); @@ -815,7 +800,8 @@ void win32_DeInitialize_DestroyMainWindow(struct skypiax_interface *p) { if (p->AsteriskHandlesAst.win32_hInit_MainWindowHandle != NULL) - DestroyWindow(p->AsteriskHandlesAst.win32_hInit_MainWindowHandle), p->AsteriskHandlesAst.win32_hInit_MainWindowHandle = NULL; + DestroyWindow(p->AsteriskHandlesAst.win32_hInit_MainWindowHandle), + p->AsteriskHandlesAst.win32_hInit_MainWindowHandle = NULL; } DWORD win32_dwThreadId; @@ -835,19 +821,17 @@ //DWORD MsgWaitResult; p = obj; - - - switch_file_pipe_create(&p->AsteriskHandlesAst.fdesc[0], &p->AsteriskHandlesAst.fdesc[1], skypiax_module_pool); + switch_file_pipe_create(&p->AsteriskHandlesAst.fdesc[0], + &p->AsteriskHandlesAst.fdesc[1], skypiax_module_pool); //switch_file_pipe_timeout_set(p->AsteriskHandlesAst.fdesc[0], 100); - p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach = RegisterWindowMessage("SkypeControlAPIAttach"); p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover = RegisterWindowMessage("SkypeControlAPIDiscover"); LaunchSkype(p); - switch_sleep(2000000); + switch_sleep(2000000); if (p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0 && p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) { @@ -855,7 +839,8 @@ if (win32_Initialize_CreateMainWindow(p)) { #if 1 if (SendMessage - (HWND_BROADCAST, p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover, + (HWND_BROADCAST, + p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover, (WPARAM) p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, 0) != 0) { #else @@ -974,8 +959,10 @@ //X11_errors_trap(); //XLockDisplay(disp); status = - XGetWindowProperty(AsteriskHandlesAst->disp, DefaultRootWindow(AsteriskHandlesAst->disp), skype_inst, 0, 1, False, XA_WINDOW, - &type_ret, &format_ret, &nitems_ret, &bytes_after_ret, &prop); + XGetWindowProperty(AsteriskHandlesAst->disp, + DefaultRootWindow(AsteriskHandlesAst->disp), skype_inst, 0, 1, + False, XA_WINDOW, &type_ret, &format_ret, &nitems_ret, + &bytes_after_ret, &prop); //XUnlockDisplay(disp); //X11_errors_untrap(); @@ -1053,7 +1040,7 @@ //FIXME pthread_cleanup_push(skypiax_skype_clean_disp, &xfd); DEBUGA_SKYPE("PUSH disp %d\n", SKYPIAX_P_LOG, xfd); - AsteriskHandlesAst->disp = disp; + AsteriskHandlesAst->disp = disp; if (skypiax_skype_present(AsteriskHandlesAst)) { root = DefaultRootWindow(disp); @@ -1098,7 +1085,7 @@ b = buffer; while (1) { - //switch_sleep(10000); + //switch_sleep(10000); XNextEvent(disp, &an_event); if (!running) break; @@ -1158,7 +1145,7 @@ struct AsteriskHandles *AsteriskHandlesAst; #endif /* WIN32 */ - DEBUGA_SKYPE("SENDING: |||%s||||\n", SKYPIAX_P_LOG, msg_to_skype); + DEBUGA_SKYPE("SENDING: |||%s||||\n", SKYPIAX_P_LOG, msg_to_skype); #ifdef WIN32 @@ -1196,7 +1183,6 @@ } AsteriskHandlesAst = &p->AsteriskHandlesAst; - if (!skypiax_skype_send_message(AsteriskHandlesAst, msg_to_skype)) { ERRORA ("Sending message failed - probably Skype crashed.\n\nPlease shutdown Skypiax (Asterisk), then restart Skype from the menu, then launch Skypiax and try again.\n", @@ -1248,459 +1234,464 @@ fdselect = p->AsteriskHandlesAst.fdesc[0]; FD_ZERO(&fs); FD_SET(fdselect, &fs); - to.tv_usec = 2000000; //500 msec + to.tv_usec = 2000000; //500 msec to.tv_sec = 0; rt = select(fdselect + 1, &fs, NULL, NULL, &to); #endif /* WIN32 */ if (rt > 0) { - if (p->AsteriskHandlesAst.fdesc[0]) { - howmany = sizeof(read_from_pipe); + if (p->AsteriskHandlesAst.fdesc[0]) { + howmany = sizeof(read_from_pipe); #ifdef WIN32 - switch_file_read(p->AsteriskHandlesAst.fdesc[0], read_from_pipe, &howmany); + switch_file_read(p->AsteriskHandlesAst.fdesc[0], read_from_pipe, &howmany); #else /* WIN32 */ - howmany = - read(p->AsteriskHandlesAst.fdesc[0], read_from_pipe, sizeof(read_from_pipe)); + howmany = + read(p->AsteriskHandlesAst.fdesc[0], read_from_pipe, sizeof(read_from_pipe)); #endif /* WIN32 */ - a = 0; - for (i = 0; i < howmany; i++) { - messaggio[a] = read_from_pipe[i]; - a++; - - if (read_from_pipe[i] == '\0') { - - //if (option_debug > 101) - DEBUGA_SKYPE("read_skype: howmany=%d, i=%d, a=%d, |||%s||| \n", SKYPIAX_P_LOG, - howmany, i, a, messaggio); - - if (!strncasecmp(messaggio, "ERROR 92 CALL", 12)) { - ERRORA("Skype got ERROR: |||%s|||, the number we called was not recognized\n", - SKYPIAX_P_LOG, messaggio); - p->skype_callflow = CALLFLOW_STATUS_FINISHED; - if (option_debug) - DEBUGA_SKYPE("skype_call now is DOWN\n", SKYPIAX_P_LOG); - p->skype_call_id[0] = '\0'; - - if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { - if (option_debug > 100) { - DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + a = 0; + for (i = 0; i < howmany; i++) { + messaggio[a] = read_from_pipe[i]; + a++; + + if (read_from_pipe[i] == '\0') { + + //if (option_debug > 101) + DEBUGA_SKYPE("read_skype: howmany=%d, i=%d, a=%d, |||%s||| \n", SKYPIAX_P_LOG, + howmany, i, a, messaggio); + + if (!strncasecmp(messaggio, "ERROR 92 CALL", 12)) { + ERRORA("Skype got ERROR: |||%s|||, the number we called was not recognized\n", + SKYPIAX_P_LOG, messaggio); + p->skype_callflow = CALLFLOW_STATUS_FINISHED; + if (option_debug) + DEBUGA_SKYPE("skype_call now is DOWN\n", SKYPIAX_P_LOG); + p->skype_call_id[0] = '\0'; + + if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + p->interface_state = SKYPIAX_STATE_DOWN; + return CALLFLOW_INCOMING_HANGUP; + } else { + p->interface_state = SKYPIAX_STATE_DOWN; } - p->interface_state = SKYPIAX_STATE_DOWN; - return CALLFLOW_INCOMING_HANGUP; - } else { - p->interface_state = SKYPIAX_STATE_DOWN; } - } - strncpy(messaggio_2, messaggio, sizeof(messaggio) - 1); + strncpy(messaggio_2, messaggio, sizeof(messaggio) - 1); - buf = messaggio; - stringp = &buf; - where = strsep(stringp, " "); - if (!where) { - WARNINGA("Skype MSG without spaces: %s\n", SKYPIAX_P_LOG, messaggio); - } + buf = messaggio; + stringp = &buf; + where = strsep(stringp, " "); + if (!where) { + WARNINGA("Skype MSG without spaces: %s\n", SKYPIAX_P_LOG, messaggio); + } - if (!strcasecmp(messaggio, "#333")) { - /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[11]: %s\n", SKYPIAX_P_LOG, - * messaggio_2, &messaggio_2[11]); */ - memset(p->skype_friends, 0, 4096); - strncpy(p->skype_friends, &messaggio_2[11], 4095); - } - if (!strcasecmp(messaggio, "#222")) { - /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[10]: %s\n", SKYPIAX_P_LOG, - * messaggio_2, &messaggio_2[10]); */ - memset(p->skype_fullname, 0, 512); - strncpy(p->skype_fullname, &messaggio_2[10], 511); - } - if (!strcasecmp(messaggio, "#765")) { - /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[10]: %s\n", SKYPIAX_P_LOG, - * messaggio_2, &messaggio_2[10]); */ - memset(p->skype_displayname, 0, 512); - strncpy(p->skype_displayname, &messaggio_2[10], 511); - } - if (!strcasecmp(messaggio, "ERROR")) { - ERRORA("Skype got ERROR: |||%s|||\n", SKYPIAX_P_LOG, messaggio); - p->skype_callflow = CALLFLOW_STATUS_FINISHED; - if (option_debug) - DEBUGA_SKYPE("skype_call now is DOWN\n", SKYPIAX_P_LOG); - p->skype_call_id[0] = '\0'; - - if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { - if (option_debug > 100) { - DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); - } - p->interface_state = SKYPIAX_STATE_DOWN; - return CALLFLOW_INCOMING_HANGUP; - } else { - p->interface_state = SKYPIAX_STATE_DOWN; + if (!strcasecmp(messaggio, "#333")) { + /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[11]: %s\n", SKYPIAX_P_LOG, + * messaggio_2, &messaggio_2[11]); */ + memset(p->skype_friends, 0, 4096); + strncpy(p->skype_friends, &messaggio_2[11], 4095); } - } - if (!strcasecmp(messaggio, "CURRENTUSERHANDLE") ) { - strncpy(obj, where, sizeof(obj) - 1); + if (!strcasecmp(messaggio, "#222")) { + /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[10]: %s\n", SKYPIAX_P_LOG, + * messaggio_2, &messaggio_2[10]); */ + memset(p->skype_fullname, 0, 512); + strncpy(p->skype_fullname, &messaggio_2[10], 511); + } + if (!strcasecmp(messaggio, "#765")) { + /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[10]: %s\n", SKYPIAX_P_LOG, + * messaggio_2, &messaggio_2[10]); */ + memset(p->skype_displayname, 0, 512); + strncpy(p->skype_displayname, &messaggio_2[10], 511); + } + if (!strcasecmp(messaggio, "ERROR")) { + ERRORA("Skype got ERROR: |||%s|||\n", SKYPIAX_P_LOG, messaggio); + p->skype_callflow = CALLFLOW_STATUS_FINISHED; + if (option_debug) + DEBUGA_SKYPE("skype_call now is DOWN\n", SKYPIAX_P_LOG); + p->skype_call_id[0] = '\0'; - where = strsep(stringp, " "); + if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + p->interface_state = SKYPIAX_STATE_DOWN; + return CALLFLOW_INCOMING_HANGUP; + } else { + p->interface_state = SKYPIAX_STATE_DOWN; + } + } + if (!strcasecmp(messaggio, "CURRENTUSERHANDLE")) { + strncpy(obj, where, sizeof(obj) - 1); - strncpy(id, where, sizeof(id) - 1); + where = strsep(stringp, " "); + strncpy(id, where, sizeof(id) - 1); - if (!strcasecmp(id, p->skype_user)) { - p->AsteriskHandlesAst.api_connected = 1; - //DEBUGA_SKYPE ("Skype MSG: messaggio: %s, currentuserhandle: %s, cuh: %s, skype_user: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, p->skype_user); - } + if (!strcasecmp(id, p->skype_user)) { + p->AsteriskHandlesAst.api_connected = 1; + //DEBUGA_SKYPE ("Skype MSG: messaggio: %s, currentuserhandle: %s, cuh: %s, skype_user: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, p->skype_user); + } } - if (!strcasecmp(messaggio, "CALL")) { - - strncpy(obj, where, sizeof(obj) - 1); + if (!strcasecmp(messaggio, "CALL")) { - where = strsep(stringp, " "); + strncpy(obj, where, sizeof(obj) - 1); - strncpy(id, where, sizeof(id) - 1); + where = strsep(stringp, " "); - where = strsep(stringp, " "); + strncpy(id, where, sizeof(id) - 1); - strncpy(prop, where, sizeof(prop) - 1); + where = strsep(stringp, " "); - where = strsep(stringp, " "); + strncpy(prop, where, sizeof(prop) - 1); - strncpy(value, where, sizeof(value) - 1); + where = strsep(stringp, " "); - where = strsep(stringp, " "); + strncpy(value, where, sizeof(value) - 1); - if (option_debug > 101) - DEBUGA_SKYPE - ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s, value: %s,where: %s!\n", - SKYPIAX_P_LOG, messaggio, obj, id, prop, value, where ? where : "NULL"); + where = strsep(stringp, " "); + if (option_debug > 101) + DEBUGA_SKYPE + ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s, value: %s,where: %s!\n", + SKYPIAX_P_LOG, messaggio, obj, id, prop, value, where ? where : "NULL"); - if (!strcasecmp(prop, "PARTNER_HANDLE")) { - strncpy(p->callid_number, value, sizeof(p->callid_number) - 1); - WARNINGA - ("the skype_call %s caller PARTNER_HANDLE (p->callid_number) is: %s\n", - SKYPIAX_P_LOG, id, p->callid_number); - return CALLFLOW_INCOMING_RING; - } - if (!strcasecmp(prop, "PARTNER_DISPNAME")) { - snprintf(p->callid_name, sizeof(p->callid_name) - 1, "%s%s%s", value, - where ? " " : "", where ? where : ""); - WARNINGA - ("the skype_call %s caller PARTNER_DISPNAME (p->callid_name) is: %s\n", - SKYPIAX_P_LOG, id, p->callid_name); - } - if (!strcasecmp(prop, "CONF_ID") && !strcasecmp(value, "0")) { - DEBUGA_SKYPE("the skype_call %s is NOT a conference call\n", SKYPIAX_P_LOG, - id); - if (p->interface_state == SKYPIAX_STATE_DOWN) - p->interface_state = SKYPIAX_STATE_PRERING; - } - if (!strcasecmp(prop, "CONF_ID") && strcasecmp(value, "0")) { - DEBUGA_SKYPE("the skype_call %s is a conference call\n", SKYPIAX_P_LOG, id); - if (p->interface_state == SKYPIAX_STATE_DOWN) - p->interface_state = SKYPIAX_STATE_PRERING; - } + if (!strcasecmp(prop, "PARTNER_HANDLE")) { + strncpy(p->callid_number, value, sizeof(p->callid_number) - 1); + WARNINGA + ("the skype_call %s caller PARTNER_HANDLE (p->callid_number) is: %s\n", + SKYPIAX_P_LOG, id, p->callid_number); + return CALLFLOW_INCOMING_RING; + } + if (!strcasecmp(prop, "PARTNER_DISPNAME")) { + snprintf(p->callid_name, sizeof(p->callid_name) - 1, "%s%s%s", value, + where ? " " : "", where ? where : ""); + WARNINGA + ("the skype_call %s caller PARTNER_DISPNAME (p->callid_name) is: %s\n", + SKYPIAX_P_LOG, id, p->callid_name); + } + if (!strcasecmp(prop, "CONF_ID") && !strcasecmp(value, "0")) { + DEBUGA_SKYPE("the skype_call %s is NOT a conference call\n", SKYPIAX_P_LOG, + id); + if (p->interface_state == SKYPIAX_STATE_DOWN) + p->interface_state = SKYPIAX_STATE_PRERING; + } + if (!strcasecmp(prop, "CONF_ID") && strcasecmp(value, "0")) { + DEBUGA_SKYPE("the skype_call %s is a conference call\n", SKYPIAX_P_LOG, id); + if (p->interface_state == SKYPIAX_STATE_DOWN) + p->interface_state = SKYPIAX_STATE_PRERING; + } - if (!strcasecmp(prop, "DTMF")) { - switch_core_session_t *session = NULL; - private_t *tech_pvt = NULL; - switch_channel_t *channel = NULL; - - DEBUGA_SKYPE("Call %s received a DTMF: %s\n", SKYPIAX_P_LOG, id, value); - - tech_pvt = p->tech_pvt; - //if(tech_pvt) - session = tech_pvt->session; - //if(session) - channel = switch_core_session_get_channel(session); - - if (channel) { - switch_dtmf_t dtmf = - { (char) value[0], switch_core_default_dtmf_duration(0) }; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%c DTMF %s\n", - dtmf.digit, switch_channel_get_name(channel)); - switch_mutex_lock(tech_pvt->flag_mutex); - switch_channel_queue_dtmf(channel, &dtmf); - switch_set_flag(tech_pvt, TFLAG_DTMF); - switch_mutex_unlock(tech_pvt->flag_mutex); + if (!strcasecmp(prop, "DTMF")) { + switch_core_session_t *session = NULL; + private_t *tech_pvt = NULL; + switch_channel_t *channel = NULL; + + DEBUGA_SKYPE("Call %s received a DTMF: %s\n", SKYPIAX_P_LOG, id, value); + + tech_pvt = p->tech_pvt; + //if(tech_pvt) + session = tech_pvt->session; + //if(session) + channel = switch_core_session_get_channel(session); + + if (channel) { + switch_dtmf_t dtmf = + { (char) value[0], switch_core_default_dtmf_duration(0) }; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%c DTMF %s\n", + dtmf.digit, switch_channel_get_name(channel)); + switch_mutex_lock(tech_pvt->flag_mutex); + switch_channel_queue_dtmf(channel, &dtmf); + switch_set_flag(tech_pvt, TFLAG_DTMF); + switch_mutex_unlock(tech_pvt->flag_mutex); + } } - } - if (!strcasecmp(prop, "FAILUREREASON")) { - DEBUGA_SKYPE - ("Skype has FAILED on skype_call %s. Let's wait for the FAILED message.\n", - SKYPIAX_P_LOG, id); - } - if (!strcasecmp(prop, "DURATION") && (!strcasecmp(value, "1"))) { - if (strcasecmp(id, p->skype_call_id)) { - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); - if (option_debug > 1) - DEBUGA_SKYPE - ("We called a Skype contact and he answered us on skype_call: %s.\n", - SKYPIAX_P_LOG, id); + if (!strcasecmp(prop, "FAILUREREASON")) { + DEBUGA_SKYPE + ("Skype has FAILED on skype_call %s. Let's wait for the FAILED message.\n", + SKYPIAX_P_LOG, id); } - } + if (!strcasecmp(prop, "DURATION") && (!strcasecmp(value, "1"))) { + if (strcasecmp(id, p->skype_call_id)) { + strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); + if (option_debug > 1) + DEBUGA_SKYPE + ("We called a Skype contact and he answered us on skype_call: %s.\n", + SKYPIAX_P_LOG, id); + } + } + + if (!strcasecmp(prop, "STATUS")) { - if (!strcasecmp(prop, "STATUS")) { + if (!strcasecmp(value, "RINGING")) { + char msg_to_skype[1024]; + if (p->interface_state != SKYPIAX_STATE_DIALING) { + /* we are not calling out */ - if (!strcasecmp(value, "RINGING")) { - char msg_to_skype[1024]; - if (p->interface_state != SKYPIAX_STATE_DIALING) { - /* we are not calling out */ + if (!strlen(p->skype_call_id)) { //FIXME + /* we are not inside an active call */ + p->skype_callflow = CALLFLOW_STATUS_RINGING; + p->interface_state = SKYPIAX_STATE_RING; + /* no owner, no active call, let's answer */ + skypiax_skype_write(p, "SET AGC OFF"); + switch_sleep(10000); + skypiax_skype_write(p, "SET AEC OFF"); + switch_sleep(10000); + sprintf(msg_to_skype, "GET CALL %s PARTNER_DISPNAME", id); + skypiax_skype_write(p, msg_to_skype); + switch_sleep(10000); + sprintf(msg_to_skype, "GET CALL %s PARTNER_HANDLE", id); + skypiax_skype_write(p, msg_to_skype); + switch_sleep(10000); + sprintf(msg_to_skype, "ALTER CALL %s ANSWER", id); + skypiax_skype_write(p, msg_to_skype); + if (option_debug) + DEBUGA_SKYPE("We answered a Skype RING on skype_call %s\n", + SKYPIAX_P_LOG, id); + strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); + } else { + /* we're owned, we're in a call, let's refuse */ + //sprintf(msg_to_skype, "SET CALL %s STATUS REFUSED", id); + sprintf(msg_to_skype, "ALTER CALL %s END HANGUP", id); + skypiax_skype_write(p, msg_to_skype); + switch_sleep(10000); + DEBUGA_SKYPE + ("We have NOT answered a Skype RING on skype_call %s, because we are already in a skypiax call\n", + SKYPIAX_P_LOG, id); - if (!strlen(p->skype_call_id)) { //FIXME - /* we are not inside an active call */ + } + } else { + /* we are calling out */ p->skype_callflow = CALLFLOW_STATUS_RINGING; - p->interface_state = SKYPIAX_STATE_RING; - /* no owner, no active call, let's answer */ - skypiax_skype_write(p, "SET AGC OFF"); - switch_sleep(10000); - skypiax_skype_write(p, "SET AEC OFF"); - switch_sleep(10000); - sprintf(msg_to_skype, "GET CALL %s PARTNER_DISPNAME", id); - skypiax_skype_write(p, msg_to_skype); - switch_sleep(10000); - sprintf(msg_to_skype, "GET CALL %s PARTNER_HANDLE", id); - skypiax_skype_write(p, msg_to_skype); - switch_sleep(10000); - sprintf(msg_to_skype, "ALTER CALL %s ANSWER", id); - skypiax_skype_write(p, msg_to_skype); - if (option_debug) - DEBUGA_SKYPE("We answered a Skype RING on skype_call %s\n", - SKYPIAX_P_LOG, id); + p->interface_state = SKYPIAX_STATE_RINGING; + //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING); strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); - } else { - /* we're owned, we're in a call, let's refuse */ - //sprintf(msg_to_skype, "SET CALL %s STATUS REFUSED", id); - sprintf(msg_to_skype, "ALTER CALL %s END HANGUP", id); - skypiax_skype_write(p, msg_to_skype); - switch_sleep(10000); - DEBUGA_SKYPE - ("We have NOT answered a Skype RING on skype_call %s, because we are already in a skypiax call\n", - SKYPIAX_P_LOG, id); - + DEBUGA_SKYPE("Our remote party in skype_call %s is RINGING\n", + SKYPIAX_P_LOG, id); } - } else { - /* we are calling out */ - p->skype_callflow = CALLFLOW_STATUS_RINGING; - p->interface_state = SKYPIAX_STATE_RINGING; + } else if (!strcasecmp(value, "EARLYMEDIA")) { + p->skype_callflow = CALLFLOW_STATUS_EARLYMEDIA; + p->interface_state = SKYPIAX_STATE_DIALING; //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING); - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); - DEBUGA_SKYPE("Our remote party in skype_call %s is RINGING\n", + DEBUGA_SKYPE("Our remote party in skype_call %s is EARLYMEDIA\n", SKYPIAX_P_LOG, id); - } - } else if (!strcasecmp(value, "EARLYMEDIA")) { - p->skype_callflow = CALLFLOW_STATUS_EARLYMEDIA; - p->interface_state = SKYPIAX_STATE_DIALING; - //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING); - DEBUGA_SKYPE("Our remote party in skype_call %s is EARLYMEDIA\n", - SKYPIAX_P_LOG, id); - } else if (!strcasecmp(value, "MISSED")) { - DEBUGA_SKYPE("We missed skype_call %s\n", SKYPIAX_P_LOG, id); - - } else if (!strcasecmp(value, "FINISHED")) { - //p->skype_callflow = CALLFLOW_STATUS_FINISHED; - if (option_debug) - DEBUGA_SKYPE("skype_call %s now is DOWN\n", SKYPIAX_P_LOG, id); - p->skype_call_id[0] = '\0'; + } else if (!strcasecmp(value, "MISSED")) { + DEBUGA_SKYPE("We missed skype_call %s\n", SKYPIAX_P_LOG, id); - if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { - if (option_debug > 100) { - DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } else if (!strcasecmp(value, "FINISHED")) { + //p->skype_callflow = CALLFLOW_STATUS_FINISHED; + if (option_debug) + DEBUGA_SKYPE("skype_call %s now is DOWN\n", SKYPIAX_P_LOG, id); + p->skype_call_id[0] = '\0'; + + if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + //p->interface_state = SKYPIAX_STATE_DOWN; + return CALLFLOW_INCOMING_HANGUP; + } else { + p->interface_state = SKYPIAX_STATE_DOWN; } - //p->interface_state = SKYPIAX_STATE_DOWN; - return CALLFLOW_INCOMING_HANGUP; - } else { - p->interface_state = SKYPIAX_STATE_DOWN; - } - } else if (!strcasecmp(value, "CANCELLED")) { - p->skype_callflow = CALLFLOW_STATUS_CANCELLED; - if (option_debug) - DEBUGA_SKYPE - ("we tried to call Skype on skype_call %s and Skype has now CANCELLED\n", - SKYPIAX_P_LOG, id); - p->skype_call_id[0] = '\0'; + } else if (!strcasecmp(value, "CANCELLED")) { + p->skype_callflow = CALLFLOW_STATUS_CANCELLED; + if (option_debug) + DEBUGA_SKYPE + ("we tried to call Skype on skype_call %s and Skype has now CANCELLED\n", + SKYPIAX_P_LOG, id); + p->skype_call_id[0] = '\0'; - if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { - if (option_debug > 100) { - DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + p->interface_state = SKYPIAX_STATE_DOWN; + return CALLFLOW_INCOMING_HANGUP; + } else { + p->interface_state = SKYPIAX_STATE_DOWN; } - p->interface_state = SKYPIAX_STATE_DOWN; - return CALLFLOW_INCOMING_HANGUP; - } else { - p->interface_state = SKYPIAX_STATE_DOWN; - } - } else if (!strcasecmp(value, "FAILED")) { - p->skype_callflow = CALLFLOW_STATUS_FAILED; - if (option_debug) - DEBUGA_SKYPE - ("we tried to call Skype on skype_call %s and Skype has now FAILED\n", - SKYPIAX_P_LOG, id); - p->skype_call_id[0] = '\0'; - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); - p->interface_state = SKYPIAX_STATE_DOWN; - if (option_debug > 100) { - DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); - } - return CALLFLOW_INCOMING_HANGUP; - } else if (!strcasecmp(value, "REFUSED")) { - if (!strcasecmp(id, p->skype_call_id)) { - /* this is the id of the call we are in, probably we generated it */ - p->skype_callflow = CALLFLOW_STATUS_REFUSED; + } else if (!strcasecmp(value, "FAILED")) { + p->skype_callflow = CALLFLOW_STATUS_FAILED; if (option_debug) DEBUGA_SKYPE - ("we tried to call Skype on skype_call %s and Skype has now REFUSED\n", + ("we tried to call Skype on skype_call %s and Skype has now FAILED\n", SKYPIAX_P_LOG, id); + p->skype_call_id[0] = '\0'; strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); p->interface_state = SKYPIAX_STATE_DOWN; - p->skype_call_id[0] = '\0'; if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } return CALLFLOW_INCOMING_HANGUP; - } else { - /* we're here because were us that refused an incoming call */ - DEBUGA_SKYPE("we REFUSED skype_call %s\n", SKYPIAX_P_LOG, id); - - } - } else if (!strcasecmp(value, "ROUTING")) { - p->skype_callflow = CALLFLOW_STATUS_ROUTING; - p->interface_state = SKYPIAX_STATE_DIALING; - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); - DEBUGA_SKYPE("skype_call: %s is now ROUTING\n", SKYPIAX_P_LOG, id); - } else if (!strcasecmp(value, "UNPLACED")) { - p->skype_callflow = CALLFLOW_STATUS_UNPLACED; - p->interface_state = SKYPIAX_STATE_DIALING; - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); - DEBUGA_SKYPE("skype_call: %s is now UNPLACED\n", SKYPIAX_P_LOG, id); - } else if (!strcasecmp(value, "INPROGRESS")) { - p->skype_callflow = CALLFLOW_STATUS_INPROGRESS; - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); - p->interface_state = SKYPIAX_STATE_UP; - if (option_debug > 1) - DEBUGA_SKYPE("skype_call: %s is now active\n", SKYPIAX_P_LOG, id); - - if (option_debug > 1) - DEBUGA_SKYPE("skype_call: %s SKYPIAX_CONTROL_ANSWER sent\n", - SKYPIAX_P_LOG, id); + } else if (!strcasecmp(value, "REFUSED")) { + if (!strcasecmp(id, p->skype_call_id)) { + /* this is the id of the call we are in, probably we generated it */ + p->skype_callflow = CALLFLOW_STATUS_REFUSED; + if (option_debug) + DEBUGA_SKYPE + ("we tried to call Skype on skype_call %s and Skype has now REFUSED\n", + SKYPIAX_P_LOG, id); + strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); + p->interface_state = SKYPIAX_STATE_DOWN; + p->skype_call_id[0] = '\0'; + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return CALLFLOW_INCOMING_HANGUP; + } else { + /* we're here because were us that refused an incoming call */ + DEBUGA_SKYPE("we REFUSED skype_call %s\n", SKYPIAX_P_LOG, id); - if (1) { //FIXME - char msg_to_skype[1024]; + } + } else if (!strcasecmp(value, "ROUTING")) { + p->skype_callflow = CALLFLOW_STATUS_ROUTING; + p->interface_state = SKYPIAX_STATE_DIALING; + strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); + DEBUGA_SKYPE("skype_call: %s is now ROUTING\n", SKYPIAX_P_LOG, id); + } else if (!strcasecmp(value, "UNPLACED")) { + p->skype_callflow = CALLFLOW_STATUS_UNPLACED; + p->interface_state = SKYPIAX_STATE_DIALING; + strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); + DEBUGA_SKYPE("skype_call: %s is now UNPLACED\n", SKYPIAX_P_LOG, id); + } else if (!strcasecmp(value, "INPROGRESS")) { + p->skype_callflow = CALLFLOW_STATUS_INPROGRESS; + strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); + p->interface_state = SKYPIAX_STATE_UP; + if (option_debug > 1) + DEBUGA_SKYPE("skype_call: %s is now active\n", SKYPIAX_P_LOG, id); + + if (option_debug > 1) + DEBUGA_SKYPE("skype_call: %s SKYPIAX_CONTROL_ANSWER sent\n", + SKYPIAX_P_LOG, id); if (1) { //FIXME - switch_threadattr_t *thd_attr = NULL; + char msg_to_skype[1024]; - switch_threadattr_create(&thd_attr, skypiax_module_pool); - switch_threadattr_detach_set(thd_attr, 1); - switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&p->tcp_srv_thread, thd_attr, - skypiax_do_tcp_srv_thread, p, skypiax_module_pool); - DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPIAX_P_LOG); - - switch_threadattr_create(&thd_attr, skypiax_module_pool); - switch_threadattr_detach_set(thd_attr, 1); - switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&p->tcp_cli_thread, thd_attr, - skypiax_do_tcp_cli_thread, p, skypiax_module_pool); - DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG); + if (1) { //FIXME + switch_threadattr_t *thd_attr = NULL; + + switch_threadattr_create(&thd_attr, skypiax_module_pool); + switch_threadattr_detach_set(thd_attr, 1); + switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); + switch_thread_create(&p->tcp_srv_thread, thd_attr, + skypiax_do_tcp_srv_thread, p, + skypiax_module_pool); + DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPIAX_P_LOG); + + switch_threadattr_create(&thd_attr, skypiax_module_pool); + switch_threadattr_detach_set(thd_attr, 1); + switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); + switch_thread_create(&p->tcp_cli_thread, thd_attr, + skypiax_do_tcp_cli_thread, p, + skypiax_module_pool); + DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG); + } + switch_sleep(100000); + sprintf(msg_to_skype, "ALTER CALL %s SET_OUTPUT PORT=\"%d\"", id, + p->tcp_srv_port); + skypiax_skype_write(p, msg_to_skype); + switch_sleep(100000); + sprintf(msg_to_skype, "ALTER CALL %s SET_INPUT PORT=\"%d\"", id, + p->tcp_cli_port); + skypiax_skype_write(p, msg_to_skype); + switch_sleep(100000); } - switch_sleep(100000); - sprintf(msg_to_skype, "ALTER CALL %s SET_OUTPUT PORT=\"%d\"", id, p->tcp_srv_port); - skypiax_skype_write(p, msg_to_skype); - switch_sleep(100000); - sprintf(msg_to_skype, "ALTER CALL %s SET_INPUT PORT=\"%d\"", id, p->tcp_cli_port); - skypiax_skype_write(p, msg_to_skype); - switch_sleep(100000); - } - p->skype_callflow = SKYPIAX_STATE_UP; + p->skype_callflow = SKYPIAX_STATE_UP; /**************************/ - //FIXME switch_core_session_t **new_session; + //FIXME switch_core_session_t **new_session; - //FIXME *new_session=switch_loadable_module_create_interface(skypiax_endpoint_interface, pool); + //FIXME *new_session=switch_loadable_module_create_interface(skypiax_endpoint_interface, pool); - if (!global_session) { //FIXME FIXME FIXME - switch_core_session_t *session = NULL; - private_t *tech_pvt = NULL; - switch_channel_t *channel = NULL; - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, - "New Inbound Channel!\n"); - - if ((session = - switch_core_session_request(skypiax_endpoint_interface, - NULL)) != 0) { - switch_core_session_add_stream(session, NULL); - if ((tech_pvt = - (private_t *) switch_core_session_alloc(session, - sizeof(private_t))) != 0) { - channel = switch_core_session_get_channel(session); - skypiax_tech_init(tech_pvt, session, p); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, - "Hey where is my memory pool?\n"); - switch_core_session_destroy(&session); - break; + if (!global_session) { //FIXME FIXME FIXME + switch_core_session_t *session = NULL; + private_t *tech_pvt = NULL; + switch_channel_t *channel = NULL; + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, + "New Inbound Channel!\n"); + + if ((session = + switch_core_session_request(skypiax_endpoint_interface, + NULL)) != 0) { + switch_core_session_add_stream(session, NULL); + if ((tech_pvt = + (private_t *) switch_core_session_alloc(session, + sizeof(private_t))) != + 0) { + channel = switch_core_session_get_channel(session); + skypiax_tech_init(tech_pvt, session, p); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, + "Hey where is my memory pool?\n"); + switch_core_session_destroy(&session); + break; + } + + // if ((tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session), NULL, dialplan, cid_name, cid_num, ip, NULL, NULL, NULL, modname, NULL, dest)) != 0) + + if ((tech_pvt->caller_profile = + switch_caller_profile_new(switch_core_session_get_pool(session), + "skypiax", "XML", p->callid_name, + p->callid_number, NULL, "calling_ani", + NULL, NULL, "mod_skypiax", "public", + "5000")) != 0) { + char name[128]; + switch_snprintf(name, sizeof(name), "skypiax/%s-%04x", + tech_pvt->caller_profile->destination_number, + rand() & 0xffff); + switch_channel_set_name(channel, name); + switch_channel_set_caller_profile(channel, + tech_pvt->caller_profile); + } + switch_channel_set_state(channel, CS_INIT); + if (switch_core_session_thread_launch(session) != + SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, + "Error spawning thread\n"); + switch_core_session_destroy(&session); + } } + //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id); + switch_channel_mark_answered(channel); + } else { + switch_core_session_t *session = NULL; + private_t *tech_pvt = NULL; + switch_channel_t *channel = NULL; + + tech_pvt = p->tech_pvt; + //session = tech_pvt->session; + session = global_session; + channel = switch_core_session_get_channel(session); + //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id); + switch_channel_mark_answered(channel); - // if ((tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session), NULL, dialplan, cid_name, cid_num, ip, NULL, NULL, NULL, modname, NULL, dest)) != 0) + //switch_channel_set_state(channel, CS_EXECUTE); - if ((tech_pvt->caller_profile = - switch_caller_profile_new(switch_core_session_get_pool(session), - "skypiax", "XML", p->callid_name, - p->callid_number, NULL, "calling_ani", - NULL, NULL, "mod_skypiax", "public", - "5000")) != 0) { - char name[128]; - switch_snprintf(name, sizeof(name), "skypiax/%s-%04x", - tech_pvt->caller_profile->destination_number, - rand() & 0xffff); - switch_channel_set_name(channel, name); - switch_channel_set_caller_profile(channel, tech_pvt->caller_profile); - } - switch_channel_set_state(channel, CS_INIT); - if (switch_core_session_thread_launch(session) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, - "Error spawning thread\n"); - switch_core_session_destroy(&session); - } } - WARNINGA("skype_call: %s, answered\n", SKYPIAX_P_LOG, id); - switch_channel_mark_answered(channel); - } else { - switch_core_session_t *session = NULL; - private_t *tech_pvt = NULL; - switch_channel_t *channel = NULL; - - tech_pvt = p->tech_pvt; - //session = tech_pvt->session; - session = global_session; - channel = switch_core_session_get_channel(session); - WARNINGA("skype_call: %s, answered\n", SKYPIAX_P_LOG, id); - switch_channel_mark_answered(channel); - - //switch_channel_set_state(channel, CS_EXECUTE); - - } /**************************/ - } else { - WARNINGA("skype_call: %s, STATUS: %s is not recognized\n", SKYPIAX_P_LOG, - id, value); + } else { + WARNINGA("skype_call: %s, STATUS: %s is not recognized\n", SKYPIAX_P_LOG, + id, value); - } - } //STATUS + } + } //STATUS - } //CALL + } //CALL - a = 0; - } //message end - } //read_from_pipe + a = 0; + } //message end + } //read_from_pipe - } + } } if (option_debug > 100) { @@ -1710,7 +1701,8 @@ return 0; } -int skypiax_skype_call(struct skypiax_interface *p, char *idest, int timeout, switch_core_session_t * session) +int skypiax_skype_call(struct skypiax_interface *p, char *idest, int timeout, + switch_core_session_t * session) { char *rdest; char msg_to_skype[1024]; @@ -1745,5 +1737,3 @@ //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING); return 0; } - - From gmaruzz at freeswitch.org Thu Jan 1 05:15:13 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 08:15:13 -0500 Subject: [Freeswitch-svn] [commit] r11042 - freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax Message-ID: Author: gmaruzz Date: Thu Jan 1 08:15:13 2009 New Revision: 11042 Log: skypiax: all remaining switch_log_printf are now converted to skypiax equivalent funcs Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c (original) +++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c Thu Jan 1 08:15:13 2009 @@ -63,11 +63,12 @@ static switch_status_t skypiax_codec(private_t * tech_pvt, int sample_rate, int codec_ms) { + skypiax_interface_t *p = NULL; if (switch_core_codec_init (&tech_pvt->read_codec, "L16", NULL, sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, NULL) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n"); + ERRORA( "Can't load codec?\n", SKYPIAX_P_LOG); return SWITCH_STATUS_FALSE; } @@ -75,7 +76,7 @@ (&tech_pvt->write_codec, "L16", NULL, sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, NULL) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n"); + ERRORA( "Can't load codec?\n", SKYPIAX_P_LOG); switch_core_codec_destroy(&tech_pvt->read_codec); return SWITCH_STATUS_FALSE; } @@ -109,9 +110,9 @@ } if (skypiax_codec(tech_pvt, SAMPLERATE_SKYPIAX, 20) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "skypiax_docec FAILED\n"); + ERRORA( "skypiax_docec FAILED\n", SKYPIAX_P_LOG); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "skypiax_codec SUCCESS\n"); + DEBUGA_SKYPE( "skypiax_codec SUCCESS\n", SKYPIAX_P_LOG); } DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); @@ -126,6 +127,7 @@ { switch_channel_t *channel; private_t *tech_pvt = NULL; + skypiax_interface_t *p = NULL; tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); @@ -143,7 +145,7 @@ globals.calls++; switch_mutex_unlock(globals.mutex); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL INIT\n", + DEBUGA_SKYPE( "%s CHANNEL INIT\n", SKYPIAX_P_LOG, switch_channel_get_name(channel)); return SWITCH_STATUS_SUCCESS; } @@ -152,7 +154,7 @@ { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; - skypiax_interface_t *p; + skypiax_interface_t *p = NULL; char msg_to_skype[256]; channel = switch_core_session_get_channel(session); @@ -183,7 +185,7 @@ switch_core_codec_destroy(&tech_pvt->write_codec); } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL HANGUP\n", + DEBUGA_SKYPE( "%s CHANNEL HANGUP\n", SKYPIAX_P_LOG, switch_channel_get_name(channel)); switch_mutex_lock(globals.mutex); globals.calls--; @@ -199,6 +201,7 @@ { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; + skypiax_interface_t *p = NULL; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -206,7 +209,7 @@ tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL ROUTING\n", + DEBUGA_SKYPE( "%s CHANNEL ROUTING\n", SKYPIAX_P_LOG, switch_channel_get_name(channel)); return SWITCH_STATUS_SUCCESS; @@ -217,6 +220,7 @@ switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; + skypiax_interface_t *p = NULL; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -224,7 +228,7 @@ tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL EXECUTE\n", + DEBUGA_SKYPE( "%s CHANNEL EXECUTE\n", SKYPIAX_P_LOG, switch_channel_get_name(channel)); return SWITCH_STATUS_SUCCESS; @@ -234,6 +238,7 @@ { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; + skypiax_interface_t *p = NULL; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -243,16 +248,16 @@ switch (sig) { case SWITCH_SIG_KILL: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "%s CHANNEL got SWITCH_SIG_KILL\n", + DEBUGA_SKYPE( + "%s CHANNEL got SWITCH_SIG_KILL\n", SKYPIAX_P_LOG, switch_channel_get_name(channel)); switch_clear_flag_locked(tech_pvt, TFLAG_IO); switch_clear_flag_locked(tech_pvt, TFLAG_VOICE); switch_set_flag_locked(tech_pvt, TFLAG_HANGUP); break; case SWITCH_SIG_BREAK: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "%s CHANNEL got SWITCH_SIG_BREAK\n", + DEBUGA_SKYPE( + "%s CHANNEL got SWITCH_SIG_BREAK\n", SKYPIAX_P_LOG, switch_channel_get_name(channel)); switch_set_flag_locked(tech_pvt, TFLAG_BREAK); break; @@ -265,13 +270,15 @@ static switch_status_t channel_on_exchange_media(switch_core_session_t * session) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL LOOPBACK\n"); + skypiax_interface_t *p = NULL; + DEBUGA_SKYPE( "CHANNEL LOOPBACK\n", SKYPIAX_P_LOG); return SWITCH_STATUS_SUCCESS; } static switch_status_t channel_on_soft_execute(switch_core_session_t * session) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL TRANSMIT\n"); + skypiax_interface_t *p = NULL; + DEBUGA_SKYPE( "CHANNEL TRANSMIT\n", SKYPIAX_P_LOG); return SWITCH_STATUS_SUCCESS; } @@ -291,6 +298,7 @@ switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; switch_byte_t *data; + skypiax_interface_t *p = NULL; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -302,35 +310,35 @@ if (skypiax_skypeaudio_read(tech_pvt) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, - "skypiax_skypeaudio_read ERROR\n"); + ERRORA( + "skypiax_skypeaudio_read ERROR\n", SKYPIAX_P_LOG); } else { switch_set_flag_locked(tech_pvt, TFLAG_VOICE); - //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "skypiax_skypeaudio_read SUCCESS\n"); + //ERRORA( "skypiax_skypeaudio_read SUCCESS\n"); } while (switch_test_flag(tech_pvt, TFLAG_IO)) { if (switch_test_flag(tech_pvt, TFLAG_BREAK)) { switch_clear_flag(tech_pvt, TFLAG_BREAK); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "CHANNEL READ FRAME goto CNG\n"); + DEBUGA_SKYPE( + "CHANNEL READ FRAME goto CNG\n", SKYPIAX_P_LOG); goto cng; } if (!switch_test_flag(tech_pvt, TFLAG_IO)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "CHANNEL READ FRAME not IO\n"); + DEBUGA_SKYPE( + "CHANNEL READ FRAME not IO\n", SKYPIAX_P_LOG); return SWITCH_STATUS_FALSE; } - //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "============>\n"); + //DEBUGA_SKYPE( "============>\n"); if (switch_test_flag(tech_pvt, TFLAG_IO) && switch_test_flag(tech_pvt, TFLAG_VOICE)) { switch_clear_flag_locked(tech_pvt, TFLAG_VOICE); if (!tech_pvt->read_frame.datalen) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "CHANNEL READ CONTINUE\n"); + DEBUGA_SKYPE( + "CHANNEL READ CONTINUE\n", SKYPIAX_P_LOG); continue; } *frame = &tech_pvt->read_frame; @@ -342,12 +350,12 @@ return SWITCH_STATUS_SUCCESS; } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL READ no TFLAG_IO\n"); + DEBUGA_SKYPE( "CHANNEL READ no TFLAG_IO\n", SKYPIAX_P_LOG); return SWITCH_STATUS_FALSE; } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL READ FALSE\n"); + DEBUGA_SKYPE( "CHANNEL READ FALSE\n", SKYPIAX_P_LOG); return SWITCH_STATUS_FALSE; cng: @@ -370,7 +378,7 @@ unsigned int sent; struct skypiax_interface *p = NULL; - //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL WRITE FRAME\n"); + //DEBUGA_SKYPE( "CHANNEL WRITE FRAME\n"); channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -465,13 +473,14 @@ { struct private_object *tech_pvt = switch_core_session_get_private(session); char *body = switch_event_get_body(event); + skypiax_interface_t *p = NULL; switch_assert(tech_pvt != NULL); if (!body) { body = ""; } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "event: |||%s|||\n", body); + WARNINGA( "event: |||%s|||\n", SKYPIAX_P_LOG, body); return SWITCH_STATUS_SUCCESS; } @@ -507,6 +516,7 @@ private_t *tech_pvt; switch_channel_t *channel; switch_caller_profile_t *caller_profile; + skypiax_interface_t *p = NULL; switch_core_session_add_stream(*new_session, NULL); if ((tech_pvt = @@ -516,8 +526,8 @@ channel = switch_core_session_get_channel(*new_session); skypiax_tech_init(tech_pvt, *new_session, NULL); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, - "Hey where is my memory pool?\n"); + ERRORA( + "Hey where is my memory pool?\n", SKYPIAX_P_LOG); switch_core_session_destroy(new_session); return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; } @@ -532,7 +542,7 @@ switch_channel_set_caller_profile(channel, caller_profile); tech_pvt->caller_profile = caller_profile; } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Doh! no caller profile\n"); + ERRORA( "Doh! no caller profile\n", SKYPIAX_P_LOG); switch_core_session_destroy(new_session); return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; } @@ -632,44 +642,44 @@ char *val = (char *) switch_xml_attr_soft(param, "value"); if (!strcasecmp(var, "debug")) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "globals.debug=%d\n", + DEBUGA_SKYPE( "globals.debug=%d\n", SKYPIAX_P_LOG, globals.debug); globals.debug = atoi(val); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "globals.debug=%d\n", + DEBUGA_SKYPE( "globals.debug=%d\n", SKYPIAX_P_LOG, globals.debug); } else if (!strcasecmp(var, "hold-music")) { switch_set_string(globals.hold_music, val); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "globals.hold_music=%s\n", + DEBUGA_SKYPE( "globals.hold_music=%s\n", SKYPIAX_P_LOG, globals.hold_music); } else if (!strcmp(var, "port")) { globals.port = atoi(val); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "globals.port=%d\n", + DEBUGA_SKYPE( "globals.port=%d\n", SKYPIAX_P_LOG, globals.port); } else if (!strcmp(var, "ip")) { set_global_ip(val); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "globals.ip=%s\n", + DEBUGA_SKYPE( "globals.ip=%s\n", SKYPIAX_P_LOG, globals.ip); } else if (!strcmp(var, "codec-master")) { if (!strcasecmp(val, "us")) { switch_set_flag(&globals, GFLAG_MY_CODEC_PREFS); } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "codec-master globals.debug=%d\n", globals.debug); + DEBUGA_SKYPE( + "codec-master globals.debug=%d\n", SKYPIAX_P_LOG, globals.debug); } else if (!strcmp(var, "dialplan")) { set_global_dialplan(val); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "globals.dialplan=%s\n", + DEBUGA_SKYPE( "globals.dialplan=%s\n", SKYPIAX_P_LOG, globals.dialplan); } else if (!strcmp(var, "codec-prefs")) { set_global_codec_string(val); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "globals.codec_string=%s\n", globals.codec_string); + DEBUGA_SKYPE( + "globals.codec_string=%s\n", SKYPIAX_P_LOG, globals.codec_string); globals.codec_order_last = switch_separate_string(globals.codec_string, ',', globals.codec_order, SWITCH_MAX_CODECS); } else if (!strcmp(var, "codec-rates")) { set_global_codec_rates_string(val); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "globals.codec_rates_string=%s\n", globals.codec_rates_string); + DEBUGA_SKYPE( + "globals.codec_rates_string=%s\n", SKYPIAX_P_LOG, globals.codec_rates_string); globals.codec_rates_last = switch_separate_string(globals.codec_rates_string, ',', globals.codec_rates, SWITCH_MAX_CODECS); @@ -741,50 +751,50 @@ } if (!skype_user) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, - "interface missing REQUIRED param 'skype_user'\n"); + ERRORA( + "interface missing REQUIRED param 'skype_user'\n", SKYPIAX_P_LOG); continue; } if (!skype_password) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, - "interface missing REQUIRED param 'skype_password'\n"); + ERRORA( + "interface missing REQUIRED param 'skype_password'\n", SKYPIAX_P_LOG); continue; } if (!X11_display) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, - "interface missing REQUIRED param 'X11_display'\n"); + ERRORA( + "interface missing REQUIRED param 'X11_display'\n", SKYPIAX_P_LOG); continue; } if (!tcp_cli_port) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, - "interface missing REQUIRED param 'tcp_cli_port'\n"); + ERRORA( + "interface missing REQUIRED param 'tcp_cli_port'\n", SKYPIAX_P_LOG); continue; } if (!tcp_srv_port) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, - "interface missing REQUIRED param 'tcp_srv_port'\n"); + ERRORA( + "interface missing REQUIRED param 'tcp_srv_port'\n", SKYPIAX_P_LOG); continue; } if (!id) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, - "interface missing REQUIRED param 'id'\n"); + ERRORA( + "interface missing REQUIRED param 'id'\n", SKYPIAX_P_LOG); continue; } if (switch_is_number(id)) { interface_id = atoi(id); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "interface_id=%d\n", + DEBUGA_SKYPE( "interface_id=%d\n", SKYPIAX_P_LOG, interface_id); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, - "interface param 'id' MUST be a number, now id='%s'\n", id); + ERRORA( + "interface param 'id' MUST be a number, now id='%s'\n", SKYPIAX_P_LOG, id); continue; } if (!name) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, - "interface missing param 'name', not nice, but works\n"); + WARNINGA( + "interface missing param 'name', not nice, but works\n", SKYPIAX_P_LOG); } if (!tonegroup) { @@ -800,7 +810,7 @@ } if (name) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "name=%s\n", name); + DEBUGA_SKYPE( "name=%s\n", SKYPIAX_P_LOG, name); } #ifndef WIN32 if (!XInitThreads()) { @@ -818,8 +828,8 @@ memset(&newconf, '\0', sizeof(newconf)); globals.SKYPIAX_INTERFACES[interface_id] = newconf; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "CONFIGURING interface_id=%d\n", interface_id); + DEBUGA_SKYPE( + "CONFIGURING interface_id=%d\n", SKYPIAX_P_LOG, interface_id); switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].interface_id, id); if (name) { switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].name, name); @@ -846,38 +856,38 @@ switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].context, context); switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].dialplan, dialplan); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].X11_display=%s\n", + DEBUGA_SKYPE( + "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].X11_display=%s\n", SKYPIAX_P_LOG, interface_id, globals.SKYPIAX_INTERFACES[interface_id].X11_display); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].skype_user=%s\n", + DEBUGA_SKYPE( + "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].skype_user=%s\n", SKYPIAX_P_LOG, interface_id, globals.SKYPIAX_INTERFACES[interface_id].skype_user); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].skype_password=%s\n", + DEBUGA_SKYPE( + "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].skype_password=%s\n", SKYPIAX_P_LOG, interface_id, globals.SKYPIAX_INTERFACES[interface_id].skype_password); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port=%d\n", + DEBUGA_SKYPE( + "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port=%d\n", SKYPIAX_P_LOG, interface_id, globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port=%d\n", + DEBUGA_SKYPE( + "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port=%d\n", SKYPIAX_P_LOG, interface_id, globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].name=%s\n", + DEBUGA_SKYPE( + "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].name=%s\n", SKYPIAX_P_LOG, interface_id, globals.SKYPIAX_INTERFACES[interface_id].name); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].context=%s\n", + DEBUGA_SKYPE( + "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].context=%s\n", SKYPIAX_P_LOG, interface_id, globals.SKYPIAX_INTERFACES[interface_id].context); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].dialplan=%s\n", + DEBUGA_SKYPE( + "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].dialplan=%s\n", SKYPIAX_P_LOG, interface_id, globals.SKYPIAX_INTERFACES[interface_id].dialplan); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, - "STARTING interface_id=%d\n", interface_id); + NOTICA( + "STARTING interface_id=%d\n", SKYPIAX_P_LOG, interface_id); switch_threadattr_create(&do_skype_thd_attr, skypiax_module_pool); //switch_threadattr_detach_set(do_skype_thd_attr, 1); @@ -905,12 +915,12 @@ skypiax_skypeaudio_init(&globals.SKYPIAX_INTERFACES[interface_id]); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, - "STARTED interface_id=%d\n", interface_id); + NOTICA( + "STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, - "interface id %d is higher than SKYPIAX_MAX_INTERFACES (%d)\n", + ERRORA( + "interface id %d is higher than SKYPIAX_MAX_INTERFACES (%d)\n", SKYPIAX_P_LOG, interface_id, SKYPIAX_MAX_INTERFACES); continue; } @@ -919,20 +929,20 @@ for (i = 0; i < SKYPIAX_MAX_INTERFACES; i++) { if (strlen(globals.SKYPIAX_INTERFACES[i].name)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "i=%d globals.SKYPIAX_INTERFACES[%d].interface_id=%s\n", i, i, + DEBUGA_SKYPE( + "i=%d globals.SKYPIAX_INTERFACES[%d].interface_id=%s\n", SKYPIAX_P_LOG, i, i, globals.SKYPIAX_INTERFACES[i].interface_id); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "i=%d globals.SKYPIAX_INTERFACES[%d].X11_display=%s\n", i, i, + DEBUGA_SKYPE( + "i=%d globals.SKYPIAX_INTERFACES[%d].X11_display=%s\n", SKYPIAX_P_LOG, i, i, globals.SKYPIAX_INTERFACES[i].X11_display); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "i=%d globals.SKYPIAX_INTERFACES[%d].name=%s\n", i, i, + DEBUGA_SKYPE( + "i=%d globals.SKYPIAX_INTERFACES[%d].name=%s\n", SKYPIAX_P_LOG, i, i, globals.SKYPIAX_INTERFACES[i].name); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "i=%d globals.SKYPIAX_INTERFACES[%d].context=%s\n", i, i, + DEBUGA_SKYPE( + "i=%d globals.SKYPIAX_INTERFACES[%d].context=%s\n", SKYPIAX_P_LOG, i, i, globals.SKYPIAX_INTERFACES[i].context); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "i=%d globals.SKYPIAX_INTERFACES[%d].dialplan=%s\n", i, i, + DEBUGA_SKYPE( + "i=%d globals.SKYPIAX_INTERFACES[%d].dialplan=%s\n", SKYPIAX_P_LOG, i, i, globals.SKYPIAX_INTERFACES[i].dialplan); } } Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c Thu Jan 1 08:15:13 2009 @@ -1024,12 +1024,12 @@ //disp = XOpenDisplay(getenv("DISPLAY")); disp = XOpenDisplay(p->X11_display); if (!disp) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, - "Cannot open X Display '%s', exiting skype thread\n", + ERRORA( + "Cannot open X Display '%s', exiting skype thread\n", SKYPIAX_P_LOG, p->X11_display); return NULL; } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "X Display '%s' opened\n", + DEBUGA_SKYPE( "X Display '%s' opened\n", SKYPIAX_P_LOG, p->X11_display); } @@ -1401,7 +1401,7 @@ if (channel) { switch_dtmf_t dtmf = { (char) value[0], switch_core_default_dtmf_duration(0) }; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%c DTMF %s\n", + NOTICA("%c DTMF %s\n", SKYPIAX_P_LOG, dtmf.digit, switch_channel_get_name(channel)); switch_mutex_lock(tech_pvt->flag_mutex); switch_channel_queue_dtmf(channel, &dtmf); @@ -1615,8 +1615,8 @@ private_t *tech_pvt = NULL; switch_channel_t *channel = NULL; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, - "New Inbound Channel!\n"); + NOTICA( + "New Inbound Channel!\n", SKYPIAX_P_LOG); if ((session = switch_core_session_request(skypiax_endpoint_interface, @@ -1629,8 +1629,8 @@ channel = switch_core_session_get_channel(session); skypiax_tech_init(tech_pvt, session, p); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, - "Hey where is my memory pool?\n"); + ERRORA( + "Hey where is my memory pool?\n", SKYPIAX_P_LOG); switch_core_session_destroy(&session); break; } @@ -1654,8 +1654,8 @@ switch_channel_set_state(channel, CS_INIT); if (switch_core_session_thread_launch(session) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, - "Error spawning thread\n"); + ERRORA( + "Error spawning thread\n", SKYPIAX_P_LOG); switch_core_session_destroy(&session); } } From gmaruzz at freeswitch.org Thu Jan 1 09:14:54 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 12:14:54 -0500 Subject: [Freeswitch-svn] [commit] r11043 - freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax Message-ID: Author: gmaruzz Date: Thu Jan 1 12:14:54 2009 New Revision: 11043 Log: skypiax: looping on recv, will not compile on win, needs to be finished Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c Thu Jan 1 12:14:54 2009 @@ -96,6 +96,7 @@ int rt; fd_set fs; struct timeval to; + int received = 0; if (!running) break; @@ -108,13 +109,25 @@ to.tv_sec = 0; rt = select(fdselect + 1, &fs, NULL, NULL, &to); - //rt=0; + //rt=1; if (rt > 0) { #ifdef WIN32 len = recv(fd, (char *) srv_in, 320, 0); //seems that Skype only sends 320 bytes at time #else /* WIN32 */ - len = recv(fd, (char *) srv_in, 320, 0); //seems that Skype only sends 320 bytes at time + while(received < SAMPLES_PER_FRAME * sizeof(short)){ + len = recv(fd, srv_in + (received / sizeof(short)), (SAMPLES_PER_FRAME * sizeof(short)) - received, 0); //seems that Skype only sends 320 bytes at time + received += len; + if(len == 0) + break; + } + if(len) + len = received; + + + + + //len = recv(fd, srv_in, SAMPLES_PER_FRAME * sizeof(short), 0); //seems that Skype only sends 320 bytes at time #endif /* WIN32 */ if ((SAMPLERATE_SKYPIAX - 8000) == 0) { @@ -171,20 +184,20 @@ /****************************************************************/ if (len > 0) { if (len == SAMPLES_PER_FRAME * sizeof(short)) { - unsigned int howmany; - howmany = len; + //unsigned int howmany; + //howmany = len; - WARNINGA("SRV recv %d\n", SKYPIAX_P_LOG, len); + //WARNINGA("SRV recv %d\n", SKYPIAX_P_LOG, len); #ifdef WIN32 switch_file_write(p->audiopipe[1], srv_in, &howmany); #else /* WIN32 */ - howmany = write(p->audiopipe[1], srv_in, howmany); + len = write(p->audiopipe[1], srv_in, len); #endif /* WIN32 */ - p->audiobuf_is_loaded = 0; - WARNINGA("SRV PIPE WRITE=====> req=%lu recv=%d to sent=%d sent=%u\n", - SKYPIAX_P_LOG, sizeof(short) * SAMPLES_PER_FRAME, len, len, - howmany); + //p->audiobuf_is_loaded = 0; + //WARNINGA("SRV PIPE WRITE=====> req=%lu recv=%d to sent=%d sent=%u\n", + //SKYPIAX_P_LOG, sizeof(short) * SAMPLES_PER_FRAME, len, len, + //howmany); } else if (len == SAMPLES_PER_FRAME * sizeof(short) / 2) { #if 1 From mikej at freeswitch.org Thu Jan 1 10:57:30 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 13:57:30 -0500 Subject: [Freeswitch-svn] [commit] r11044 - freeswitch/trunk/libs/esl Message-ID: Author: mikej Date: Thu Jan 1 13:57:30 2009 New Revision: 11044 Log: fix help Modified: freeswitch/trunk/libs/esl/fs_cli.c Modified: freeswitch/trunk/libs/esl/fs_cli.c ============================================================================== --- freeswitch/trunk/libs/esl/fs_cli.c (original) +++ freeswitch/trunk/libs/esl/fs_cli.c Thu Jan 1 13:57:30 2009 @@ -243,24 +243,23 @@ static int process_command(esl_handle_t *handle, const char *cmd) { - - if (!strcasecmp(cmd, "help")) { - printf( - "Command \tDescription\n" - "-----------------------------------------------\n" - "/help \tHelp\n" - "/exit, /quit, /bye, ... \tExit the program.\n" - "/event, /noevent, /nixevent\tEvent commands.\n" - "/log, /nolog \tLog commands.\n" - "/filter \tFilter commands.\n" - "\n" - ); - - goto end; - } - if ((*cmd == '/' && cmd++) || !strncasecmp(cmd, "...", 3)) { + if (!strcasecmp(cmd, "help")) { + printf( + "Command \tDescription\n" + "-----------------------------------------------\n" + "/help \tHelp\n" + "/exit, /quit, /bye, ... \tExit the program.\n" + "/event, /noevent, /nixevent\tEvent commands.\n" + "/log, /nolog \tLog commands.\n" + "/filter \tFilter commands.\n" + "\n" + ); + + goto end; + } + if ( !strcasecmp(cmd, "exit") || !strcasecmp(cmd, "quit") || @@ -737,10 +736,8 @@ } - - done: - #ifdef HAVE_EDITLINE + done: history(myhistory, &ev, H_SAVE, hfile); /* Clean up our memory */ From mikej at freeswitch.org Thu Jan 1 11:11:50 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 14:11:50 -0500 Subject: [Freeswitch-svn] [commit] r11045 - in freeswitch/trunk/src/mod: applications/mod_dptools endpoints/mod_sofia Message-ID: Author: mikej Date: Thu Jan 1 14:11:49 2009 New Revision: 11045 Log: build fixes Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c (original) +++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c Thu Jan 1 14:11:49 2009 @@ -2037,7 +2037,7 @@ switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags) { char *group; - switch_call_cause_t cause; + switch_call_cause_t cause = SWITCH_CAUSE_NONE; char *template = NULL, *dest = NULL; switch_originate_flag_t myflags = SOF_NONE; char *cid_name_override = NULL; Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c Thu Jan 1 14:11:49 2009 @@ -71,7 +71,7 @@ "s=FreeSWITCH\n" "c=IN %s %s\n" "t=0 0\n" - "m=image %d udptl t38\n", + "m=image %d udptl t38\n" "a=T38MaxBitRate:%d\n" "%s" "%s" From mikej at freeswitch.org Thu Jan 1 12:21:38 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 15:21:38 -0500 Subject: [Freeswitch-svn] [commit] r11046 - freeswitch/trunk Message-ID: Author: mikej Date: Thu Jan 1 15:21:37 2009 New Revision: 11046 Log: fix dependencies Modified: freeswitch/trunk/Freeswitch.2008.sln Modified: freeswitch/trunk/Freeswitch.2008.sln ============================================================================== --- freeswitch/trunk/Freeswitch.2008.sln (original) +++ freeswitch/trunk/Freeswitch.2008.sln Thu Jan 1 15:21:37 2009 @@ -831,6 +831,10 @@ EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aprtoolkit", "libs\openmrcp\aprtoolkit\aprtoolkit.2008.vcproj", "{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}" + ProjectSection(ProjectDependencies) = postProject + {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3} + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fsv", "src\mod\applications\mod_fsv\mod_fsv.2008.vcproj", "{E3246D17-E29B-4AB5-962A-C69B0C5837BB}" ProjectSection(ProjectDependencies) = postProject From mikej at freeswitch.org Thu Jan 1 14:09:19 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 17:09:19 -0500 Subject: [Freeswitch-svn] [commit] r11047 - freeswitch/trunk Message-ID: Author: mikej Date: Thu Jan 1 17:09:19 2009 New Revision: 11047 Log: build fixes Modified: freeswitch/trunk/Freeswitch.2008.express.sln Modified: freeswitch/trunk/Freeswitch.2008.express.sln ============================================================================== --- freeswitch/trunk/Freeswitch.2008.express.sln (original) +++ freeswitch/trunk/Freeswitch.2008.express.sln Thu Jan 1 17:09:19 2009 @@ -456,6 +456,10 @@ EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aprtoolkit", "libs\openmrcp\aprtoolkit\aprtoolkit.2008.vcproj", "{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}" + ProjectSection(ProjectDependencies) = postProject + {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3} + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fsv", "src\mod\applications\mod_fsv\mod_fsv.2008.vcproj", "{E3246D17-E29B-4AB5-962A-C69B0C5837BB}" ProjectSection(ProjectDependencies) = postProject @@ -630,10348 +634,6204 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug DirectSound|Mixed Platforms = Debug DirectSound|Mixed Platforms Debug DirectSound|Win32 = Debug DirectSound|Win32 Debug DirectSound|x64 = Debug DirectSound|x64 - Debug DLL|Mixed Platforms = Debug DLL|Mixed Platforms Debug DLL|Win32 = Debug DLL|Win32 Debug DLL|x64 = Debug DLL|x64 - Debug MS-LDAP|Mixed Platforms = Debug MS-LDAP|Mixed Platforms Debug MS-LDAP|Win32 = Debug MS-LDAP|Win32 Debug MS-LDAP|x64 = Debug MS-LDAP|x64 - Debug Passthrough|Mixed Platforms = Debug Passthrough|Mixed Platforms Debug Passthrough|Win32 = Debug Passthrough|Win32 Debug Passthrough|x64 = Debug Passthrough|x64 - Debug Static|Mixed Platforms = Debug Static|Mixed Platforms Debug Static|Win32 = Debug Static|Win32 Debug Static|x64 = Debug Static|x64 - Debug_CLR|Mixed Platforms = Debug_CLR|Mixed Platforms Debug_CLR|Win32 = Debug_CLR|Win32 Debug_CLR|x64 = Debug_CLR|x64 - Debug_Mono|Mixed Platforms = Debug_Mono|Mixed Platforms Debug_Mono|Win32 = Debug_Mono|Win32 Debug_Mono|x64 = Debug_Mono|x64 - Debug|Mixed Platforms = Debug|Mixed Platforms Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 - Release DirectSound|Mixed Platforms = Release DirectSound|Mixed Platforms Release DirectSound|Win32 = Release DirectSound|Win32 Release DirectSound|x64 = Release DirectSound|x64 - Release DLL|Mixed Platforms = Release DLL|Mixed Platforms Release DLL|Win32 = Release DLL|Win32 Release DLL|x64 = Release DLL|x64 - Release MS-LDAP|Mixed Platforms = Release MS-LDAP|Mixed Platforms Release MS-LDAP|Win32 = Release MS-LDAP|Win32 Release MS-LDAP|x64 = Release MS-LDAP|x64 - Release Passthrough|Mixed Platforms = Release Passthrough|Mixed Platforms Release Passthrough|Win32 = Release Passthrough|Win32 Release Passthrough|x64 = Release Passthrough|x64 - Release Static|Mixed Platforms = Release Static|Mixed Platforms Release Static|Win32 = Release Static|Win32 Release Static|x64 = Release Static|x64 - Release_CLR|Mixed Platforms = Release_CLR|Mixed Platforms Release_CLR|Win32 = Release_CLR|Win32 Release_CLR|x64 = Release_CLR|x64 - Release_Mono|Mixed Platforms = Release_Mono|Mixed Platforms Release_Mono|Win32 = Release_Mono|Win32 Release_Mono|x64 = Release_Mono|x64 - Release|Mixed Platforms = Release|Mixed Platforms Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DLL|Win32.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Static|Win32.ActiveCfg = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Static|Win32.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_CLR|Win32.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_Mono|Win32.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.ActiveCfg = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DirectSound|Win32.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DLL|Win32.ActiveCfg = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DLL|Win32.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DLL|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Passthrough|Win32.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Static|Win32.ActiveCfg = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Static|Win32.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Static|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_CLR|Win32.ActiveCfg = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_CLR|Win32.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_Mono|Win32.ActiveCfg = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_Mono|Win32.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_Mono|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Mixed Platforms.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.ActiveCfg = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DLL|Win32.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Static|Win32.ActiveCfg = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Static|Win32.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Static|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_CLR|Win32.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_Mono|Win32.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.ActiveCfg = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DirectSound|Win32.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DLL|Win32.ActiveCfg = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DLL|Win32.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DLL|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Passthrough|Win32.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Static|Win32.ActiveCfg = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Static|Win32.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Static|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_CLR|Win32.ActiveCfg = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_CLR|Win32.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_CLR|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_Mono|Win32.ActiveCfg = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_Mono|Win32.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_Mono|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Mixed Platforms.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.ActiveCfg = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.ActiveCfg = Release|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DirectSound|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DirectSound|Win32.ActiveCfg = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DirectSound|Win32.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DirectSound|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DLL|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DLL|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DLL|Win32.ActiveCfg = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DLL|Win32.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DLL|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug MS-LDAP|Win32.ActiveCfg = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug MS-LDAP|Win32.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug MS-LDAP|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Passthrough|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Passthrough|Win32.ActiveCfg = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Passthrough|Win32.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Passthrough|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Static|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Static|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Static|Win32.ActiveCfg = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Static|Win32.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Static|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_CLR|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_CLR|Win32.ActiveCfg = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_CLR|Win32.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_CLR|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_Mono|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_Mono|Win32.ActiveCfg = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_Mono|Win32.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_Mono|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.ActiveCfg = Debug|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DirectSound|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DirectSound|Mixed Platforms.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DirectSound|Win32.ActiveCfg = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DirectSound|Win32.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DirectSound|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DLL|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DLL|Mixed Platforms.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DLL|Win32.ActiveCfg = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DLL|Win32.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DLL|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release MS-LDAP|Mixed Platforms.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release MS-LDAP|Win32.ActiveCfg = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release MS-LDAP|Win32.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release MS-LDAP|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Passthrough|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Passthrough|Mixed Platforms.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Passthrough|Win32.ActiveCfg = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Passthrough|Win32.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Passthrough|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Static|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Static|Mixed Platforms.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Static|Win32.ActiveCfg = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Static|Win32.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Static|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_CLR|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_CLR|Mixed Platforms.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_CLR|Win32.ActiveCfg = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_CLR|Win32.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_CLR|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_Mono|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_Mono|Mixed Platforms.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_Mono|Win32.ActiveCfg = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_Mono|Win32.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_Mono|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Mixed Platforms.Build.0 = Release|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.ActiveCfg = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DLL|Win32.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Static|Win32.ActiveCfg = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Static|Win32.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Static|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_CLR|Win32.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_Mono|Win32.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.ActiveCfg = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DirectSound|Win32.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DLL|Win32.ActiveCfg = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DLL|Win32.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DLL|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Passthrough|Win32.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Static|Win32.ActiveCfg = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Static|Win32.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Static|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_CLR|Win32.ActiveCfg = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_CLR|Win32.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_CLR|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_Mono|Win32.ActiveCfg = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_Mono|Win32.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_Mono|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Mixed Platforms.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.ActiveCfg = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DLL|Win32.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Static|Win32.ActiveCfg = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Static|Win32.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Static|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_CLR|Win32.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_Mono|Win32.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Win32.ActiveCfg = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Win32.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DirectSound|Win32.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DLL|Win32.ActiveCfg = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DLL|Win32.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DLL|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Passthrough|Win32.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Static|Win32.ActiveCfg = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Static|Win32.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Static|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_CLR|Win32.ActiveCfg = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_CLR|Win32.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_CLR|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_Mono|Win32.ActiveCfg = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_Mono|Win32.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_Mono|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Mixed Platforms.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Win32.ActiveCfg = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Win32.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DLL|Win32.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Static|Win32.ActiveCfg = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Static|Win32.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Static|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_CLR|Win32.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_Mono|Win32.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.ActiveCfg = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DirectSound|Win32.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DLL|Win32.ActiveCfg = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DLL|Win32.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DLL|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Passthrough|Win32.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Static|Win32.ActiveCfg = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Static|Win32.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Static|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_CLR|Win32.ActiveCfg = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_CLR|Win32.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_CLR|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_Mono|Win32.ActiveCfg = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_Mono|Win32.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_Mono|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Mixed Platforms.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.ActiveCfg = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DLL|Win32.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Static|Win32.ActiveCfg = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Static|Win32.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Static|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_CLR|Win32.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_Mono|Win32.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.ActiveCfg = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DirectSound|Win32.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DLL|Win32.ActiveCfg = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DLL|Win32.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DLL|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Passthrough|Win32.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Static|Win32.ActiveCfg = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Static|Win32.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Static|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_CLR|Win32.ActiveCfg = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_CLR|Win32.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_CLR|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_Mono|Win32.ActiveCfg = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_Mono|Win32.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_Mono|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Mixed Platforms.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.ActiveCfg = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DLL|Win32.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Static|Win32.ActiveCfg = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Static|Win32.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_CLR|Win32.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_Mono|Win32.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Win32.ActiveCfg = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DirectSound|Win32.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DLL|Win32.ActiveCfg = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DLL|Win32.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DLL|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Passthrough|Win32.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Static|Win32.ActiveCfg = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Static|Win32.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Static|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_CLR|Win32.ActiveCfg = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_CLR|Win32.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_Mono|Win32.ActiveCfg = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_Mono|Win32.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_Mono|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Mixed Platforms.Build.0 = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Win32.ActiveCfg = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DLL|Win32.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Static|Win32.ActiveCfg = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Static|Win32.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Static|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_CLR|Win32.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_Mono|Win32.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.ActiveCfg = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DirectSound|Win32.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DLL|Win32.ActiveCfg = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DLL|Win32.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DLL|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Passthrough|Win32.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Static|Win32.ActiveCfg = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Static|Win32.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Static|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_CLR|Win32.ActiveCfg = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_CLR|Win32.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_CLR|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_Mono|Win32.ActiveCfg = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_Mono|Win32.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_Mono|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Mixed Platforms.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.ActiveCfg = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.ActiveCfg = Release|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DirectSound|Mixed Platforms.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DirectSound|Win32.ActiveCfg = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DirectSound|Win32.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DirectSound|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DLL|Mixed Platforms.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DLL|Mixed Platforms.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DLL|Win32.ActiveCfg = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DLL|Win32.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DLL|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug MS-LDAP|Win32.ActiveCfg = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug MS-LDAP|Win32.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug MS-LDAP|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Passthrough|Mixed Platforms.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Passthrough|Win32.ActiveCfg = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Passthrough|Win32.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Passthrough|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Static|Mixed Platforms.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Static|Mixed Platforms.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Static|Win32.ActiveCfg = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Static|Win32.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Static|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_CLR|Mixed Platforms.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_CLR|Win32.ActiveCfg = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_CLR|Win32.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_CLR|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_Mono|Mixed Platforms.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_Mono|Win32.ActiveCfg = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_Mono|Win32.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_Mono|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.ActiveCfg = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.ActiveCfg = Debug|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DirectSound|Mixed Platforms.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DirectSound|Mixed Platforms.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DirectSound|Win32.ActiveCfg = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DirectSound|Win32.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DirectSound|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DLL|Mixed Platforms.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DLL|Mixed Platforms.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DLL|Win32.ActiveCfg = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DLL|Win32.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DLL|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release MS-LDAP|Mixed Platforms.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release MS-LDAP|Win32.ActiveCfg = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release MS-LDAP|Win32.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release MS-LDAP|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Passthrough|Mixed Platforms.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Passthrough|Mixed Platforms.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Passthrough|Win32.ActiveCfg = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Passthrough|Win32.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Passthrough|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Static|Mixed Platforms.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Static|Mixed Platforms.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Static|Win32.ActiveCfg = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Static|Win32.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Static|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_CLR|Mixed Platforms.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_CLR|Mixed Platforms.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_CLR|Win32.ActiveCfg = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_CLR|Win32.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_CLR|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_Mono|Mixed Platforms.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_Mono|Mixed Platforms.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_Mono|Win32.ActiveCfg = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_Mono|Win32.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_Mono|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Mixed Platforms.Build.0 = Release|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.ActiveCfg = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DLL|Win32.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Static|Win32.ActiveCfg = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Static|Win32.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Static|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_CLR|Win32.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_Mono|Win32.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.ActiveCfg = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DirectSound|Win32.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DLL|Win32.ActiveCfg = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DLL|Win32.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DLL|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Passthrough|Win32.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Static|Win32.ActiveCfg = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Static|Win32.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Static|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_CLR|Win32.ActiveCfg = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_CLR|Win32.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_CLR|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_Mono|Win32.ActiveCfg = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_Mono|Win32.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_Mono|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Mixed Platforms.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.ActiveCfg = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DLL|Win32.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Static|Win32.ActiveCfg = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Static|Win32.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Static|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_CLR|Win32.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_Mono|Win32.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Win32.ActiveCfg = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Win32.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DirectSound|Win32.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DLL|Win32.ActiveCfg = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DLL|Win32.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DLL|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Passthrough|Win32.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Static|Win32.ActiveCfg = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Static|Win32.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Static|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_CLR|Win32.ActiveCfg = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_CLR|Win32.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_CLR|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_Mono|Win32.ActiveCfg = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_Mono|Win32.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_Mono|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Mixed Platforms.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Win32.ActiveCfg = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Win32.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DLL|Win32.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Static|Win32.ActiveCfg = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Static|Win32.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Static|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_CLR|Win32.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_Mono|Win32.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.ActiveCfg = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DirectSound|Win32.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DLL|Win32.ActiveCfg = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DLL|Win32.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DLL|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Passthrough|Win32.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Static|Win32.ActiveCfg = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Static|Win32.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Static|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_CLR|Win32.ActiveCfg = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_CLR|Win32.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_CLR|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_Mono|Win32.ActiveCfg = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_Mono|Win32.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_Mono|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Mixed Platforms.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.ActiveCfg = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DLL|Win32.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Static|Win32.ActiveCfg = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Static|Win32.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Static|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_CLR|Win32.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_Mono|Win32.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.ActiveCfg = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DirectSound|Win32.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DLL|Win32.ActiveCfg = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DLL|Win32.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DLL|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Passthrough|Win32.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Static|Win32.ActiveCfg = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Static|Win32.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Static|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_CLR|Win32.ActiveCfg = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_CLR|Win32.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_CLR|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_Mono|Win32.ActiveCfg = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_Mono|Win32.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_Mono|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Mixed Platforms.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.ActiveCfg = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DLL|Win32.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Static|Win32.ActiveCfg = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Static|Win32.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_CLR|Win32.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_Mono|Win32.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.ActiveCfg = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DirectSound|Win32.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DLL|Win32.ActiveCfg = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DLL|Win32.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DLL|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Passthrough|Win32.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Static|Win32.ActiveCfg = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Static|Win32.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Static|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_CLR|Win32.ActiveCfg = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_CLR|Win32.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_Mono|Win32.ActiveCfg = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_Mono|Win32.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_Mono|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Mixed Platforms.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.ActiveCfg = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DLL|Win32.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Static|Win32.ActiveCfg = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Static|Win32.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Static|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_CLR|Win32.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_Mono|Win32.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Win32.ActiveCfg = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DirectSound|Win32.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DLL|Win32.ActiveCfg = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DLL|Win32.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DLL|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Passthrough|Win32.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Static|Win32.ActiveCfg = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Static|Win32.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Static|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_CLR|Win32.ActiveCfg = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_CLR|Win32.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_CLR|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_Mono|Win32.ActiveCfg = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_Mono|Win32.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_Mono|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Mixed Platforms.Build.0 = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Win32.ActiveCfg = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DLL|Win32.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Static|Win32.ActiveCfg = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Static|Win32.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_CLR|Win32.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_Mono|Win32.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.ActiveCfg = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DirectSound|Win32.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DLL|Win32.ActiveCfg = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DLL|Win32.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DLL|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Passthrough|Win32.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Static|Win32.ActiveCfg = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Static|Win32.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Static|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_CLR|Win32.ActiveCfg = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_CLR|Win32.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_Mono|Win32.ActiveCfg = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_Mono|Win32.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_Mono|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Mixed Platforms.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.ActiveCfg = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DLL|Win32.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Static|Win32.ActiveCfg = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Static|Win32.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Static|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_CLR|Win32.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_Mono|Win32.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.ActiveCfg = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DirectSound|Win32.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DLL|Win32.ActiveCfg = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DLL|Win32.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DLL|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Passthrough|Win32.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Static|Win32.ActiveCfg = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Static|Win32.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Static|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_CLR|Win32.ActiveCfg = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_CLR|Win32.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_CLR|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_Mono|Win32.ActiveCfg = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_Mono|Win32.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_Mono|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Mixed Platforms.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.ActiveCfg = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DLL|Win32.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Static|Win32.ActiveCfg = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Static|Win32.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Static|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_CLR|Win32.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_Mono|Win32.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.ActiveCfg = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DirectSound|Win32.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DLL|Win32.ActiveCfg = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DLL|Win32.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DLL|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Passthrough|Win32.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Static|Win32.ActiveCfg = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Static|Win32.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Static|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_CLR|Win32.ActiveCfg = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_CLR|Win32.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_CLR|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_Mono|Win32.ActiveCfg = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_Mono|Win32.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_Mono|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Mixed Platforms.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.ActiveCfg = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DLL|Win32.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Static|Win32.ActiveCfg = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Static|Win32.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_CLR|Win32.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_Mono|Win32.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.ActiveCfg = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release DirectSound|Win32.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release DLL|Win32.ActiveCfg = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release DLL|Win32.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release DLL|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release Passthrough|Win32.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release Static|Win32.ActiveCfg = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release Static|Win32.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release Static|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release_CLR|Win32.ActiveCfg = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release_CLR|Win32.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release_Mono|Win32.ActiveCfg = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release_Mono|Win32.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release_Mono|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Mixed Platforms.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.ActiveCfg = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DLL|Win32.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Static|Win32.ActiveCfg = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Static|Win32.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Static|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_CLR|Win32.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_Mono|Win32.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.ActiveCfg = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DirectSound|Win32.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DLL|Win32.ActiveCfg = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DLL|Win32.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DLL|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Passthrough|Win32.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Static|Win32.ActiveCfg = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Static|Win32.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Static|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_CLR|Win32.ActiveCfg = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_CLR|Win32.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_CLR|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_Mono|Win32.ActiveCfg = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_Mono|Win32.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_Mono|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Mixed Platforms.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.ActiveCfg = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DLL|Win32.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Static|Win32.ActiveCfg = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Static|Win32.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Static|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_CLR|Win32.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_Mono|Win32.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.ActiveCfg = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DirectSound|Win32.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DLL|Win32.ActiveCfg = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DLL|Win32.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DLL|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Passthrough|Win32.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Static|Win32.ActiveCfg = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Static|Win32.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Static|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_CLR|Win32.ActiveCfg = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_CLR|Win32.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_CLR|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_Mono|Win32.ActiveCfg = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_Mono|Win32.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_Mono|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Mixed Platforms.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.ActiveCfg = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DLL|Win32.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Static|Win32.ActiveCfg = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Static|Win32.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Static|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_CLR|Win32.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_Mono|Win32.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.ActiveCfg = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release DirectSound|Win32.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release DLL|Win32.ActiveCfg = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release DLL|Win32.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release DLL|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release Passthrough|Win32.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release Static|Win32.ActiveCfg = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release Static|Win32.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release Static|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release_CLR|Win32.ActiveCfg = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release_CLR|Win32.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release_CLR|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release_Mono|Win32.ActiveCfg = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release_Mono|Win32.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release_Mono|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Mixed Platforms.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.ActiveCfg = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DLL|Win32.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Static|Win32.ActiveCfg = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Static|Win32.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Static|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_CLR|Win32.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_Mono|Win32.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.ActiveCfg = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DirectSound|Win32.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DLL|Win32.ActiveCfg = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DLL|Win32.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DLL|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Passthrough|Win32.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Static|Win32.ActiveCfg = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Static|Win32.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Static|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_CLR|Win32.ActiveCfg = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_CLR|Win32.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_CLR|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_Mono|Win32.ActiveCfg = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_Mono|Win32.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_Mono|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Mixed Platforms.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.ActiveCfg = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DLL|Win32.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Static|Win32.ActiveCfg = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Static|Win32.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Static|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_CLR|Win32.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_Mono|Win32.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.ActiveCfg = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DirectSound|Win32.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DLL|Win32.ActiveCfg = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DLL|Win32.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DLL|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Passthrough|Win32.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Static|Win32.ActiveCfg = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Static|Win32.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Static|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_CLR|Win32.ActiveCfg = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_CLR|Win32.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_CLR|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_Mono|Win32.ActiveCfg = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_Mono|Win32.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_Mono|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Mixed Platforms.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.ActiveCfg = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DLL|Win32.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Static|Win32.ActiveCfg = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Static|Win32.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Static|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_CLR|Win32.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_Mono|Win32.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Win32.ActiveCfg = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Win32.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DirectSound|Win32.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DLL|Win32.ActiveCfg = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DLL|Win32.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DLL|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Passthrough|Win32.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Static|Win32.ActiveCfg = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Static|Win32.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Static|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_CLR|Win32.ActiveCfg = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_CLR|Win32.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_CLR|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_Mono|Win32.ActiveCfg = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_Mono|Win32.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_Mono|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Mixed Platforms.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.ActiveCfg = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|x64.ActiveCfg = Release|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DirectSound|Mixed Platforms.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DirectSound|Win32.ActiveCfg = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DirectSound|Win32.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DirectSound|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DLL|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DLL|Mixed Platforms.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DLL|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug MS-LDAP|Win32.ActiveCfg = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug MS-LDAP|Win32.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug MS-LDAP|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Passthrough|Mixed Platforms.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Passthrough|Win32.ActiveCfg = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Passthrough|Win32.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Passthrough|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Static|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Static|Mixed Platforms.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Static|Win32.ActiveCfg = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Static|Win32.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Static|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_CLR|Mixed Platforms.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_CLR|Win32.ActiveCfg = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_CLR|Win32.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_CLR|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_Mono|Mixed Platforms.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_Mono|Win32.ActiveCfg = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_Mono|Win32.Build.0 = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_Mono|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DirectSound|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DirectSound|Mixed Platforms.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DirectSound|Win32.ActiveCfg = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DirectSound|Win32.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DirectSound|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DLL|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DLL|Mixed Platforms.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DLL|Win32.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DLL|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release MS-LDAP|Mixed Platforms.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release MS-LDAP|Win32.ActiveCfg = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release MS-LDAP|Win32.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release MS-LDAP|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Passthrough|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Passthrough|Mixed Platforms.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Passthrough|Win32.ActiveCfg = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Passthrough|Win32.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Passthrough|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Static|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Static|Mixed Platforms.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Static|Win32.ActiveCfg = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Static|Win32.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Static|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_CLR|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_CLR|Mixed Platforms.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_CLR|Win32.ActiveCfg = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_CLR|Win32.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_CLR|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_Mono|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_Mono|Mixed Platforms.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_Mono|Win32.ActiveCfg = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_Mono|Win32.Build.0 = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_Mono|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Mixed Platforms.Build.0 = Release|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.ActiveCfg = Release|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.Build.0 = Release|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.ActiveCfg = Release|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DirectSound|Mixed Platforms.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DirectSound|Win32.ActiveCfg = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DirectSound|Win32.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DirectSound|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DLL|Mixed Platforms.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DLL|Mixed Platforms.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DLL|Win32.ActiveCfg = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DLL|Win32.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DLL|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug MS-LDAP|Win32.ActiveCfg = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug MS-LDAP|Win32.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug MS-LDAP|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Passthrough|Mixed Platforms.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Passthrough|Win32.ActiveCfg = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Passthrough|Win32.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Passthrough|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Static|Mixed Platforms.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Static|Mixed Platforms.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Static|Win32.ActiveCfg = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Static|Win32.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Static|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_CLR|Mixed Platforms.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_CLR|Win32.ActiveCfg = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_CLR|Win32.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_CLR|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_Mono|Mixed Platforms.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_Mono|Win32.ActiveCfg = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_Mono|Win32.Build.0 = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_Mono|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.ActiveCfg = Debug|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.Build.0 = Debug|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.ActiveCfg = Debug|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DirectSound|Mixed Platforms.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DirectSound|Mixed Platforms.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DirectSound|Win32.ActiveCfg = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DirectSound|Win32.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DirectSound|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DLL|Mixed Platforms.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DLL|Mixed Platforms.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DLL|Win32.ActiveCfg = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DLL|Win32.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DLL|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release MS-LDAP|Mixed Platforms.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release MS-LDAP|Win32.ActiveCfg = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release MS-LDAP|Win32.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release MS-LDAP|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Passthrough|Mixed Platforms.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Passthrough|Mixed Platforms.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Passthrough|Win32.ActiveCfg = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Passthrough|Win32.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Passthrough|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Static|Mixed Platforms.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Static|Mixed Platforms.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Static|Win32.ActiveCfg = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Static|Win32.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Static|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_CLR|Mixed Platforms.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_CLR|Mixed Platforms.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_CLR|Win32.ActiveCfg = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_CLR|Win32.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_CLR|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_Mono|Mixed Platforms.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_Mono|Mixed Platforms.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_Mono|Win32.ActiveCfg = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_Mono|Win32.Build.0 = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_Mono|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Mixed Platforms.Build.0 = Release|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.ActiveCfg = Release|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.Build.0 = Release|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.ActiveCfg = Release|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DirectSound|Mixed Platforms.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DirectSound|Win32.ActiveCfg = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DirectSound|Win32.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DirectSound|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DLL|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DLL|Mixed Platforms.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DLL|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug MS-LDAP|Win32.ActiveCfg = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug MS-LDAP|Win32.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug MS-LDAP|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Passthrough|Mixed Platforms.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Passthrough|Win32.ActiveCfg = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Passthrough|Win32.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Passthrough|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Static|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Static|Mixed Platforms.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Static|Win32.ActiveCfg = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Static|Win32.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Static|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_CLR|Mixed Platforms.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_CLR|Win32.ActiveCfg = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_CLR|Win32.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_CLR|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_Mono|Mixed Platforms.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_Mono|Win32.ActiveCfg = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_Mono|Win32.Build.0 = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_Mono|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.ActiveCfg = Debug|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.Build.0 = Debug|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.ActiveCfg = Debug|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DirectSound|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DirectSound|Mixed Platforms.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DirectSound|Win32.ActiveCfg = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DirectSound|Win32.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DirectSound|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DLL|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DLL|Mixed Platforms.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DLL|Win32.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DLL|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release MS-LDAP|Mixed Platforms.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release MS-LDAP|Win32.ActiveCfg = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release MS-LDAP|Win32.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release MS-LDAP|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Passthrough|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Passthrough|Mixed Platforms.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Passthrough|Win32.ActiveCfg = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Passthrough|Win32.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Passthrough|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Static|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Static|Mixed Platforms.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Static|Win32.ActiveCfg = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Static|Win32.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Static|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_CLR|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_CLR|Mixed Platforms.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_CLR|Win32.ActiveCfg = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_CLR|Win32.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_CLR|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_Mono|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_Mono|Mixed Platforms.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_Mono|Win32.ActiveCfg = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_Mono|Win32.Build.0 = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_Mono|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Mixed Platforms.Build.0 = Release|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.ActiveCfg = Release|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.Build.0 = Release|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.ActiveCfg = Release|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DirectSound|Mixed Platforms.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DirectSound|Win32.ActiveCfg = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DirectSound|Win32.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DirectSound|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DLL|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DLL|Mixed Platforms.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DLL|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug MS-LDAP|Win32.ActiveCfg = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug MS-LDAP|Win32.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug MS-LDAP|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Passthrough|Mixed Platforms.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Passthrough|Win32.ActiveCfg = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Passthrough|Win32.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Passthrough|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Static|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Static|Mixed Platforms.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Static|Win32.ActiveCfg = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Static|Win32.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Static|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_CLR|Mixed Platforms.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_CLR|Win32.ActiveCfg = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_CLR|Win32.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_CLR|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_Mono|Mixed Platforms.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_Mono|Win32.ActiveCfg = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_Mono|Win32.Build.0 = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_Mono|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.ActiveCfg = Debug|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.Build.0 = Debug|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.ActiveCfg = Debug|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DirectSound|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DirectSound|Mixed Platforms.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DirectSound|Win32.ActiveCfg = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DirectSound|Win32.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DirectSound|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DLL|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DLL|Mixed Platforms.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DLL|Win32.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DLL|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release MS-LDAP|Mixed Platforms.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release MS-LDAP|Win32.ActiveCfg = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release MS-LDAP|Win32.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release MS-LDAP|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Passthrough|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Passthrough|Mixed Platforms.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Passthrough|Win32.ActiveCfg = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Passthrough|Win32.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Passthrough|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Static|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Static|Mixed Platforms.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Static|Win32.ActiveCfg = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Static|Win32.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Static|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_CLR|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_CLR|Mixed Platforms.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_CLR|Win32.ActiveCfg = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_CLR|Win32.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_CLR|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_Mono|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_Mono|Mixed Platforms.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_Mono|Win32.ActiveCfg = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_Mono|Win32.Build.0 = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_Mono|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Mixed Platforms.Build.0 = Release|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.ActiveCfg = Release|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.Build.0 = Release|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DLL|Win32.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Static|Win32.ActiveCfg = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Static|Win32.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_CLR|Win32.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_Mono|Win32.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.ActiveCfg = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DirectSound|Win32.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DLL|Win32.ActiveCfg = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DLL|Win32.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DLL|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Passthrough|Win32.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Static|Win32.ActiveCfg = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Static|Win32.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Static|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_CLR|Win32.ActiveCfg = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_CLR|Win32.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_Mono|Win32.ActiveCfg = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_Mono|Win32.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_Mono|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Mixed Platforms.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DLL|Win32.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Static|Win32.ActiveCfg = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Static|Win32.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Static|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_CLR|Win32.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_Mono|Win32.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Win32.ActiveCfg = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Win32.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DirectSound|Win32.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DLL|Win32.ActiveCfg = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DLL|Win32.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DLL|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Passthrough|Win32.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Static|Win32.ActiveCfg = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Static|Win32.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Static|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_CLR|Win32.ActiveCfg = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_CLR|Win32.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_CLR|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_Mono|Win32.ActiveCfg = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_Mono|Win32.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_Mono|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Mixed Platforms.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Win32.ActiveCfg = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Win32.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DLL|Win32.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Static|Win32.ActiveCfg = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Static|Win32.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Static|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_CLR|Win32.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_Mono|Win32.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.ActiveCfg = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DirectSound|Win32.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DLL|Win32.ActiveCfg = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DLL|Win32.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DLL|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Passthrough|Win32.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Static|Win32.ActiveCfg = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Static|Win32.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Static|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_CLR|Win32.ActiveCfg = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_CLR|Win32.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_CLR|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_Mono|Win32.ActiveCfg = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_Mono|Win32.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_Mono|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Mixed Platforms.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DLL|Win32.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Static|Win32.ActiveCfg = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Static|Win32.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Static|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_CLR|Win32.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_Mono|Win32.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DirectSound|Win32.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DLL|Win32.ActiveCfg = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DLL|Win32.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DLL|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Passthrough|Win32.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Static|Win32.ActiveCfg = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Static|Win32.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Static|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_CLR|Win32.ActiveCfg = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_CLR|Win32.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_CLR|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_Mono|Win32.ActiveCfg = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_Mono|Win32.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_Mono|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Mixed Platforms.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.ActiveCfg = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DLL|Win32.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Static|Win32.ActiveCfg = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Static|Win32.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_CLR|Win32.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_Mono|Win32.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Win32.ActiveCfg = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Win32.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DirectSound|Win32.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DLL|Win32.ActiveCfg = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DLL|Win32.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DLL|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Passthrough|Win32.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Static|Win32.ActiveCfg = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Static|Win32.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Static|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_CLR|Win32.ActiveCfg = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_CLR|Win32.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_Mono|Win32.ActiveCfg = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_Mono|Win32.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_Mono|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Mixed Platforms.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Win32.ActiveCfg = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Win32.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DLL|Win32.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Static|Win32.ActiveCfg = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Static|Win32.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Static|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_CLR|Win32.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_Mono|Win32.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.ActiveCfg = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DirectSound|Win32.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DLL|Win32.ActiveCfg = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DLL|Win32.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DLL|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Passthrough|Win32.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Static|Win32.ActiveCfg = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Static|Win32.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Static|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_CLR|Win32.ActiveCfg = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_CLR|Win32.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_CLR|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_Mono|Win32.ActiveCfg = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_Mono|Win32.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_Mono|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Mixed Platforms.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.ActiveCfg = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DLL|Win32.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Static|Win32.ActiveCfg = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Static|Win32.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Static|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_CLR|Win32.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_Mono|Win32.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Win32.ActiveCfg = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Win32.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DirectSound|Win32.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DLL|Win32.ActiveCfg = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DLL|Win32.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DLL|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Passthrough|Win32.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Static|Win32.ActiveCfg = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Static|Win32.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Static|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_CLR|Win32.ActiveCfg = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_CLR|Win32.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_CLR|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_Mono|Win32.ActiveCfg = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_Mono|Win32.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_Mono|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Mixed Platforms.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Win32.ActiveCfg = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Win32.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DLL|Win32.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Static|Win32.ActiveCfg = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Static|Win32.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_CLR|Win32.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_Mono|Win32.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Win32.ActiveCfg = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Win32.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DirectSound|Win32.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DLL|Win32.ActiveCfg = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DLL|Win32.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DLL|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Passthrough|Win32.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Static|Win32.ActiveCfg = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Static|Win32.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Static|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_CLR|Win32.ActiveCfg = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_CLR|Win32.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_Mono|Win32.ActiveCfg = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_Mono|Win32.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_Mono|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Mixed Platforms.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Win32.ActiveCfg = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Win32.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DLL|Win32.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Static|Win32.ActiveCfg = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Static|Win32.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Static|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_CLR|Win32.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_Mono|Win32.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Win32.ActiveCfg = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Win32.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DirectSound|Win32.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DLL|Win32.ActiveCfg = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DLL|Win32.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DLL|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Passthrough|Win32.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Static|Win32.ActiveCfg = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Static|Win32.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Static|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_CLR|Win32.ActiveCfg = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_CLR|Win32.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_CLR|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_Mono|Win32.ActiveCfg = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_Mono|Win32.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_Mono|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Mixed Platforms.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Win32.ActiveCfg = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Win32.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DLL|Win32.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Static|Win32.ActiveCfg = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Static|Win32.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Static|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_CLR|Win32.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_Mono|Win32.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.ActiveCfg = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DirectSound|Win32.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DLL|Win32.ActiveCfg = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DLL|Win32.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DLL|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Passthrough|Win32.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Static|Win32.ActiveCfg = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Static|Win32.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Static|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_CLR|Win32.ActiveCfg = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_CLR|Win32.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_CLR|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_Mono|Win32.ActiveCfg = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_Mono|Win32.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_Mono|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Mixed Platforms.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.ActiveCfg = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DLL|Win32.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Static|Win32.ActiveCfg = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Static|Win32.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Static|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_CLR|Win32.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_Mono|Win32.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.ActiveCfg = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DirectSound|Win32.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DLL|Win32.ActiveCfg = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DLL|Win32.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DLL|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Passthrough|Win32.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Static|Win32.ActiveCfg = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Static|Win32.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Static|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_CLR|Win32.ActiveCfg = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_CLR|Win32.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_CLR|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_Mono|Win32.ActiveCfg = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_Mono|Win32.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_Mono|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Mixed Platforms.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.ActiveCfg = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DLL|Win32.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Static|Win32.ActiveCfg = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Static|Win32.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Static|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_CLR|Win32.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_Mono|Win32.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.ActiveCfg = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DirectSound|Win32.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DLL|Win32.ActiveCfg = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DLL|Win32.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DLL|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Passthrough|Win32.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Static|Win32.ActiveCfg = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Static|Win32.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Static|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_CLR|Win32.ActiveCfg = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_CLR|Win32.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_CLR|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_Mono|Win32.ActiveCfg = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_Mono|Win32.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_Mono|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Mixed Platforms.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.ActiveCfg = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DLL|Win32.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Static|Win32.ActiveCfg = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Static|Win32.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Static|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_CLR|Win32.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_Mono|Win32.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.ActiveCfg = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DirectSound|Win32.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DLL|Win32.ActiveCfg = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DLL|Win32.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DLL|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Passthrough|Win32.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Static|Win32.ActiveCfg = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Static|Win32.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Static|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_CLR|Win32.ActiveCfg = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_CLR|Win32.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_CLR|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_Mono|Win32.ActiveCfg = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_Mono|Win32.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_Mono|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Mixed Platforms.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.ActiveCfg = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DLL|Win32.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Static|Win32.ActiveCfg = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Static|Win32.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_CLR|Win32.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_Mono|Win32.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.ActiveCfg = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DirectSound|Win32.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DLL|Win32.ActiveCfg = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DLL|Win32.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DLL|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Passthrough|Win32.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Static|Win32.ActiveCfg = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Static|Win32.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Static|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_CLR|Win32.ActiveCfg = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_CLR|Win32.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_Mono|Win32.ActiveCfg = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_Mono|Win32.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_Mono|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Mixed Platforms.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.ActiveCfg = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DLL|Win32.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Static|Win32.ActiveCfg = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Static|Win32.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Static|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_CLR|Win32.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_Mono|Win32.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.ActiveCfg = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DirectSound|Win32.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DLL|Win32.ActiveCfg = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DLL|Win32.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DLL|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Passthrough|Win32.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Static|Win32.ActiveCfg = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Static|Win32.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Static|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_CLR|Win32.ActiveCfg = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_CLR|Win32.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_CLR|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_Mono|Win32.ActiveCfg = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_Mono|Win32.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_Mono|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Mixed Platforms.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.ActiveCfg = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DLL|Win32.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Static|Win32.ActiveCfg = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Static|Win32.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Static|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_CLR|Win32.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_Mono|Win32.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.ActiveCfg = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DirectSound|Win32.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DLL|Win32.ActiveCfg = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DLL|Win32.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DLL|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Passthrough|Win32.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Static|Win32.ActiveCfg = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Static|Win32.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Static|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_CLR|Win32.ActiveCfg = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_CLR|Win32.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_CLR|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_Mono|Win32.ActiveCfg = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_Mono|Win32.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_Mono|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Mixed Platforms.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.ActiveCfg = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.ActiveCfg = Release|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DirectSound|Mixed Platforms.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DirectSound|Win32.ActiveCfg = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DirectSound|Win32.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DirectSound|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DLL|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DLL|Mixed Platforms.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DLL|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug MS-LDAP|Win32.ActiveCfg = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug MS-LDAP|Win32.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug MS-LDAP|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Passthrough|Mixed Platforms.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Passthrough|Win32.ActiveCfg = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Passthrough|Win32.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Passthrough|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Static|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Static|Mixed Platforms.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Static|Win32.ActiveCfg = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Static|Win32.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Static|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_CLR|Mixed Platforms.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_CLR|Win32.ActiveCfg = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_CLR|Win32.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_CLR|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_Mono|Mixed Platforms.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_Mono|Win32.ActiveCfg = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_Mono|Win32.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_Mono|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.ActiveCfg = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DirectSound|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DirectSound|Mixed Platforms.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DirectSound|Win32.ActiveCfg = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DirectSound|Win32.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DirectSound|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DLL|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DLL|Mixed Platforms.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DLL|Win32.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DLL|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release MS-LDAP|Mixed Platforms.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release MS-LDAP|Win32.ActiveCfg = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release MS-LDAP|Win32.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release MS-LDAP|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Passthrough|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Passthrough|Mixed Platforms.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Passthrough|Win32.ActiveCfg = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Passthrough|Win32.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Passthrough|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Static|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Static|Mixed Platforms.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Static|Win32.ActiveCfg = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Static|Win32.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Static|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_CLR|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_CLR|Mixed Platforms.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_CLR|Win32.ActiveCfg = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_CLR|Win32.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_CLR|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_Mono|Mixed Platforms.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_Mono|Mixed Platforms.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_Mono|Win32.ActiveCfg = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_Mono|Win32.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_Mono|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Mixed Platforms.Build.0 = Release|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.ActiveCfg = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.ActiveCfg = Release|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DirectSound|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DirectSound|Win32.ActiveCfg = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DirectSound|Win32.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DirectSound|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DLL|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DLL|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DLL|Win32.ActiveCfg = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DLL|Win32.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DLL|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug MS-LDAP|Win32.ActiveCfg = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug MS-LDAP|Win32.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug MS-LDAP|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Passthrough|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Passthrough|Win32.ActiveCfg = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Passthrough|Win32.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Passthrough|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Static|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Static|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Static|Win32.ActiveCfg = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Static|Win32.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Static|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_CLR|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_CLR|Win32.ActiveCfg = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_CLR|Win32.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_CLR|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_Mono|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_Mono|Win32.ActiveCfg = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_Mono|Win32.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_Mono|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.ActiveCfg = Debug|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DirectSound|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DirectSound|Mixed Platforms.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DirectSound|Win32.ActiveCfg = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DirectSound|Win32.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DirectSound|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DLL|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DLL|Mixed Platforms.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DLL|Win32.ActiveCfg = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DLL|Win32.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DLL|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release MS-LDAP|Mixed Platforms.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release MS-LDAP|Win32.ActiveCfg = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release MS-LDAP|Win32.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release MS-LDAP|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Passthrough|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Passthrough|Mixed Platforms.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Passthrough|Win32.ActiveCfg = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Passthrough|Win32.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Passthrough|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Static|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Static|Mixed Platforms.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Static|Win32.ActiveCfg = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Static|Win32.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Static|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_CLR|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_CLR|Mixed Platforms.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_CLR|Win32.ActiveCfg = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_CLR|Win32.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_CLR|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_Mono|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_Mono|Mixed Platforms.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_Mono|Win32.ActiveCfg = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_Mono|Win32.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_Mono|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Mixed Platforms.Build.0 = Release|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.ActiveCfg = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DLL|Win32.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Static|Win32.ActiveCfg = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Static|Win32.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Static|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_CLR|Win32.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_Mono|Win32.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.ActiveCfg = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DirectSound|Win32.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DLL|Win32.ActiveCfg = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DLL|Win32.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DLL|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Passthrough|Win32.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Static|Win32.ActiveCfg = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Static|Win32.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Static|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_CLR|Win32.ActiveCfg = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_CLR|Win32.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_CLR|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_Mono|Win32.ActiveCfg = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_Mono|Win32.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_Mono|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Mixed Platforms.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.ActiveCfg = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DLL|Win32.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Static|Win32.ActiveCfg = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Static|Win32.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Static|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_CLR|Win32.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_Mono|Win32.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.ActiveCfg = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DirectSound|Win32.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DLL|Win32.ActiveCfg = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DLL|Win32.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DLL|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Passthrough|Win32.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Static|Win32.ActiveCfg = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Static|Win32.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Static|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_CLR|Win32.ActiveCfg = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_CLR|Win32.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_CLR|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_Mono|Win32.ActiveCfg = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_Mono|Win32.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_Mono|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Mixed Platforms.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.ActiveCfg = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DLL|Win32.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Static|Win32.ActiveCfg = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Static|Win32.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Static|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_CLR|Win32.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_Mono|Win32.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.ActiveCfg = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DirectSound|Win32.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DLL|Win32.ActiveCfg = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DLL|Win32.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DLL|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Passthrough|Win32.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Static|Win32.ActiveCfg = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Static|Win32.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Static|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_CLR|Win32.ActiveCfg = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_CLR|Win32.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_CLR|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_Mono|Win32.ActiveCfg = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_Mono|Win32.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_Mono|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Mixed Platforms.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.ActiveCfg = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DLL|Win32.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Static|Win32.ActiveCfg = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Static|Win32.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Static|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_CLR|Win32.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_Mono|Win32.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Win32.ActiveCfg = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Win32.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DirectSound|Win32.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DLL|Win32.ActiveCfg = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DLL|Win32.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DLL|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Passthrough|Win32.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Static|Win32.ActiveCfg = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Static|Win32.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Static|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_CLR|Win32.ActiveCfg = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_CLR|Win32.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_CLR|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_Mono|Win32.ActiveCfg = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_Mono|Win32.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_Mono|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Mixed Platforms.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Win32.ActiveCfg = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Win32.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DLL|Win32.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Static|Win32.ActiveCfg = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Static|Win32.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Static|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_CLR|Win32.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_Mono|Win32.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.ActiveCfg = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DirectSound|Win32.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DLL|Win32.ActiveCfg = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DLL|Win32.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DLL|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Passthrough|Win32.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Static|Win32.ActiveCfg = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Static|Win32.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Static|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_CLR|Win32.ActiveCfg = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_CLR|Win32.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_CLR|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_Mono|Win32.ActiveCfg = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_Mono|Win32.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_Mono|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Mixed Platforms.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.ActiveCfg = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DLL|Win32.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Static|Win32.ActiveCfg = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Static|Win32.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_CLR|Win32.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_Mono|Win32.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.ActiveCfg = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DirectSound|Win32.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DLL|Win32.ActiveCfg = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DLL|Win32.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DLL|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Passthrough|Win32.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Static|Win32.ActiveCfg = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Static|Win32.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Static|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_CLR|Win32.ActiveCfg = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_CLR|Win32.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_Mono|Win32.ActiveCfg = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_Mono|Win32.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_Mono|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Mixed Platforms.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.ActiveCfg = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DLL|Win32.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Static|Win32.ActiveCfg = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Static|Win32.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Static|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_CLR|Win32.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_Mono|Win32.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.ActiveCfg = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DirectSound|Win32.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DLL|Win32.ActiveCfg = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DLL|Win32.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DLL|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Passthrough|Win32.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Static|Win32.ActiveCfg = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Static|Win32.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Static|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_CLR|Win32.ActiveCfg = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_CLR|Win32.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_CLR|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_Mono|Win32.ActiveCfg = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_Mono|Win32.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_Mono|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Mixed Platforms.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.ActiveCfg = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DLL|Win32.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Static|Win32.ActiveCfg = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Static|Win32.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Static|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_CLR|Win32.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_Mono|Win32.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.ActiveCfg = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DirectSound|Win32.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DLL|Win32.ActiveCfg = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DLL|Win32.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DLL|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Passthrough|Win32.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Static|Win32.ActiveCfg = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Static|Win32.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Static|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_CLR|Win32.ActiveCfg = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_CLR|Win32.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_CLR|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_Mono|Win32.ActiveCfg = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_Mono|Win32.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_Mono|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Mixed Platforms.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.ActiveCfg = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.ActiveCfg = Release|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DirectSound|Mixed Platforms.Build.0 = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DirectSound|Win32.ActiveCfg = Debug DirectSound|Win32 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DirectSound|Win32.Build.0 = Debug DirectSound|Win32 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DirectSound|x64.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DirectSound|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DLL|Mixed Platforms.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DLL|Mixed Platforms.Build.0 = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DLL|Win32.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DLL|x64.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DLL|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug MS-LDAP|Win32.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug MS-LDAP|x64.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug MS-LDAP|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Passthrough|Mixed Platforms.Build.0 = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Passthrough|Win32.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Passthrough|x64.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Passthrough|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Static|Mixed Platforms.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Static|Mixed Platforms.Build.0 = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Static|Win32.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Static|x64.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Static|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_CLR|Mixed Platforms.Build.0 = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_CLR|Win32.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_CLR|x64.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_CLR|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_Mono|Mixed Platforms.Build.0 = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_Mono|Win32.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_Mono|x64.ActiveCfg = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_Mono|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Mixed Platforms.Build.0 = Debug|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DirectSound|Mixed Platforms.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DirectSound|Mixed Platforms.Build.0 = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DirectSound|Win32.ActiveCfg = Release DirectSound|Win32 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DirectSound|Win32.Build.0 = Release DirectSound|Win32 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DirectSound|x64.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DirectSound|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DLL|Mixed Platforms.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DLL|Mixed Platforms.Build.0 = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DLL|Win32.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DLL|x64.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DLL|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release MS-LDAP|Mixed Platforms.Build.0 = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release MS-LDAP|Win32.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release MS-LDAP|x64.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release MS-LDAP|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Passthrough|Mixed Platforms.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Passthrough|Mixed Platforms.Build.0 = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Passthrough|Win32.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Passthrough|x64.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Passthrough|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Static|Mixed Platforms.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Static|Mixed Platforms.Build.0 = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Static|Win32.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Static|x64.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Static|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_CLR|Mixed Platforms.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_CLR|Mixed Platforms.Build.0 = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_CLR|Win32.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_CLR|x64.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_CLR|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_Mono|Mixed Platforms.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_Mono|Mixed Platforms.Build.0 = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_Mono|Win32.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_Mono|x64.ActiveCfg = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_Mono|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Mixed Platforms.Build.0 = Release|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DLL|Win32.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Static|Win32.ActiveCfg = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Static|Win32.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Static|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_CLR|Win32.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_Mono|Win32.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.ActiveCfg = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DirectSound|Win32.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DLL|Win32.ActiveCfg = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DLL|Win32.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DLL|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Passthrough|Win32.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Static|Win32.ActiveCfg = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Static|Win32.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Static|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_CLR|Win32.ActiveCfg = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_CLR|Win32.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_CLR|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_Mono|Win32.ActiveCfg = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_Mono|Win32.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_Mono|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Mixed Platforms.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.ActiveCfg = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.ActiveCfg = Release|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DirectSound|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DirectSound|Win32.ActiveCfg = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DirectSound|Win32.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DirectSound|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DLL|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DLL|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DLL|Win32.ActiveCfg = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DLL|Win32.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DLL|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug MS-LDAP|Win32.ActiveCfg = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug MS-LDAP|Win32.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug MS-LDAP|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Passthrough|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Passthrough|Win32.ActiveCfg = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Passthrough|Win32.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Passthrough|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Static|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Static|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Static|Win32.ActiveCfg = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Static|Win32.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Static|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_CLR|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_CLR|Win32.ActiveCfg = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_CLR|Win32.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_CLR|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_Mono|Mixed Platforms.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_Mono|Win32.ActiveCfg = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_Mono|Win32.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_Mono|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.ActiveCfg = Debug|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DirectSound|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DirectSound|Mixed Platforms.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DirectSound|Win32.ActiveCfg = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DirectSound|Win32.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DirectSound|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DLL|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DLL|Mixed Platforms.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DLL|Win32.ActiveCfg = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DLL|Win32.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DLL|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release MS-LDAP|Mixed Platforms.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release MS-LDAP|Win32.ActiveCfg = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release MS-LDAP|Win32.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release MS-LDAP|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Passthrough|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Passthrough|Mixed Platforms.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Passthrough|Win32.ActiveCfg = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Passthrough|Win32.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Passthrough|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Static|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Static|Mixed Platforms.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Static|Win32.ActiveCfg = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Static|Win32.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Static|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_CLR|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_CLR|Mixed Platforms.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_CLR|Win32.ActiveCfg = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_CLR|Win32.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_CLR|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_Mono|Mixed Platforms.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_Mono|Mixed Platforms.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_Mono|Win32.ActiveCfg = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_Mono|Win32.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_Mono|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Mixed Platforms.Build.0 = Release|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.ActiveCfg = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DLL|Win32.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Static|Win32.ActiveCfg = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Static|Win32.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Static|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_CLR|Win32.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_Mono|Win32.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.ActiveCfg = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DirectSound|Win32.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DLL|Win32.ActiveCfg = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DLL|Win32.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DLL|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Passthrough|Win32.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Static|Win32.ActiveCfg = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Static|Win32.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Static|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_CLR|Win32.ActiveCfg = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_CLR|Win32.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_CLR|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_Mono|Win32.ActiveCfg = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_Mono|Win32.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_Mono|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Mixed Platforms.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.ActiveCfg = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DLL|Win32.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Static|Win32.ActiveCfg = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Static|Win32.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Static|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_CLR|Win32.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_Mono|Win32.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.ActiveCfg = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DirectSound|Win32.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DLL|Win32.ActiveCfg = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DLL|Win32.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DLL|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Passthrough|Win32.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Static|Win32.ActiveCfg = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Static|Win32.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Static|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_CLR|Win32.ActiveCfg = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_CLR|Win32.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_CLR|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_Mono|Win32.ActiveCfg = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_Mono|Win32.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_Mono|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Mixed Platforms.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.ActiveCfg = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DLL|Win32.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Static|Win32.ActiveCfg = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Static|Win32.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_CLR|Win32.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_Mono|Win32.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.ActiveCfg = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DirectSound|Win32.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DLL|Win32.ActiveCfg = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DLL|Win32.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DLL|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Passthrough|Win32.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Static|Win32.ActiveCfg = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Static|Win32.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Static|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_CLR|Win32.ActiveCfg = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_CLR|Win32.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_Mono|Win32.ActiveCfg = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_Mono|Win32.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_Mono|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Mixed Platforms.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.ActiveCfg = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DLL|Win32.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Static|Win32.ActiveCfg = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Static|Win32.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Static|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_CLR|Win32.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_Mono|Win32.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|Win32.ActiveCfg = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|Win32.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DirectSound|Win32.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DLL|Win32.ActiveCfg = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DLL|Win32.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DLL|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Passthrough|Win32.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Static|Win32.ActiveCfg = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Static|Win32.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Static|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_CLR|Win32.ActiveCfg = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_CLR|Win32.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_CLR|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_Mono|Win32.ActiveCfg = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_Mono|Win32.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_Mono|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|Mixed Platforms.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|Win32.ActiveCfg = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|Win32.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DLL|Win32.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Static|Win32.ActiveCfg = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Static|Win32.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_CLR|Win32.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_Mono|Win32.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|Win32.ActiveCfg = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|Win32.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DirectSound|Win32.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DLL|Win32.ActiveCfg = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DLL|Win32.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DLL|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Passthrough|Win32.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Static|Win32.ActiveCfg = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Static|Win32.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Static|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_CLR|Win32.ActiveCfg = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_CLR|Win32.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_Mono|Win32.ActiveCfg = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_Mono|Win32.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_Mono|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|Mixed Platforms.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|Win32.ActiveCfg = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|Win32.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DLL|Win32.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Static|Win32.ActiveCfg = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Static|Win32.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Static|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_CLR|Win32.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_Mono|Win32.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|Win32.ActiveCfg = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|Win32.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DirectSound|Win32.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DLL|Win32.ActiveCfg = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DLL|Win32.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DLL|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Passthrough|Win32.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Static|Win32.ActiveCfg = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Static|Win32.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Static|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_CLR|Win32.ActiveCfg = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_CLR|Win32.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_CLR|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_Mono|Win32.ActiveCfg = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_Mono|Win32.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_Mono|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|Mixed Platforms.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|Win32.ActiveCfg = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|Win32.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DLL|Win32.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Static|Win32.ActiveCfg = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Static|Win32.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Static|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_CLR|Win32.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_Mono|Win32.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|Win32.ActiveCfg = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|Win32.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DirectSound|Win32.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DLL|Win32.ActiveCfg = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DLL|Win32.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DLL|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Passthrough|Win32.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Static|Win32.ActiveCfg = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Static|Win32.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Static|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_CLR|Win32.ActiveCfg = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_CLR|Win32.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_CLR|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_Mono|Win32.ActiveCfg = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_Mono|Win32.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_Mono|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|Mixed Platforms.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|Win32.ActiveCfg = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|Win32.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|x64.ActiveCfg = Release|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DirectSound|Mixed Platforms.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DirectSound|Win32.ActiveCfg = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DirectSound|Win32.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DirectSound|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DLL|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DLL|Mixed Platforms.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DLL|Win32.ActiveCfg = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DLL|Win32.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DLL|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug MS-LDAP|Win32.ActiveCfg = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug MS-LDAP|Win32.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug MS-LDAP|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Passthrough|Mixed Platforms.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Passthrough|Win32.ActiveCfg = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Passthrough|Win32.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Passthrough|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Static|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Static|Mixed Platforms.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Static|Win32.ActiveCfg = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Static|Win32.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Static|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_CLR|Mixed Platforms.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_CLR|Win32.ActiveCfg = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_CLR|Win32.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_CLR|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_Mono|Mixed Platforms.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_Mono|Win32.ActiveCfg = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_Mono|Win32.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_Mono|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|Win32.ActiveCfg = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|Win32.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|x64.ActiveCfg = Debug|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DirectSound|Mixed Platforms.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DirectSound|Mixed Platforms.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DirectSound|Win32.ActiveCfg = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DirectSound|Win32.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DirectSound|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DLL|Mixed Platforms.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DLL|Mixed Platforms.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DLL|Win32.ActiveCfg = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DLL|Win32.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DLL|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release MS-LDAP|Mixed Platforms.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release MS-LDAP|Win32.ActiveCfg = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release MS-LDAP|Win32.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release MS-LDAP|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Passthrough|Mixed Platforms.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Passthrough|Mixed Platforms.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Passthrough|Win32.ActiveCfg = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Passthrough|Win32.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Passthrough|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Static|Mixed Platforms.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Static|Mixed Platforms.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Static|Win32.ActiveCfg = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Static|Win32.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Static|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_CLR|Mixed Platforms.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_CLR|Mixed Platforms.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_CLR|Win32.ActiveCfg = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_CLR|Win32.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_CLR|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_Mono|Mixed Platforms.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_Mono|Mixed Platforms.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_Mono|Win32.ActiveCfg = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_Mono|Win32.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_Mono|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|Mixed Platforms.Build.0 = Release|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|Win32.ActiveCfg = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|Win32.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|x64.ActiveCfg = Release|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DirectSound|Mixed Platforms.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DirectSound|Win32.ActiveCfg = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DirectSound|Win32.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DirectSound|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DLL|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DLL|Mixed Platforms.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DLL|Win32.ActiveCfg = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DLL|Win32.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DLL|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug MS-LDAP|Win32.ActiveCfg = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug MS-LDAP|Win32.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug MS-LDAP|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Passthrough|Mixed Platforms.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Passthrough|Win32.ActiveCfg = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Passthrough|Win32.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Passthrough|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Static|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Static|Mixed Platforms.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Static|Win32.ActiveCfg = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Static|Win32.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Static|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_CLR|Mixed Platforms.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_CLR|Win32.ActiveCfg = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_CLR|Win32.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_CLR|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_Mono|Mixed Platforms.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_Mono|Win32.ActiveCfg = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_Mono|Win32.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_Mono|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|Win32.ActiveCfg = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|Win32.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|x64.ActiveCfg = Debug|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DirectSound|Mixed Platforms.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DirectSound|Mixed Platforms.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DirectSound|Win32.ActiveCfg = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DirectSound|Win32.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DirectSound|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DLL|Mixed Platforms.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DLL|Mixed Platforms.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DLL|Win32.ActiveCfg = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DLL|Win32.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DLL|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release MS-LDAP|Mixed Platforms.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release MS-LDAP|Win32.ActiveCfg = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release MS-LDAP|Win32.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release MS-LDAP|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Passthrough|Mixed Platforms.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Passthrough|Mixed Platforms.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Passthrough|Win32.ActiveCfg = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Passthrough|Win32.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Passthrough|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Static|Mixed Platforms.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Static|Mixed Platforms.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Static|Win32.ActiveCfg = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Static|Win32.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Static|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_CLR|Mixed Platforms.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_CLR|Mixed Platforms.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_CLR|Win32.ActiveCfg = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_CLR|Win32.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_CLR|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_Mono|Mixed Platforms.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_Mono|Mixed Platforms.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_Mono|Win32.ActiveCfg = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_Mono|Win32.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_Mono|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|Mixed Platforms.Build.0 = Release|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|Win32.ActiveCfg = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|Win32.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DLL|Win32.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Static|Win32.ActiveCfg = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Static|Win32.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Static|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_CLR|Win32.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_Mono|Win32.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|Win32.ActiveCfg = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|Win32.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DirectSound|Win32.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DLL|Win32.ActiveCfg = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DLL|Win32.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DLL|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Passthrough|Win32.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Static|Win32.ActiveCfg = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Static|Win32.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Static|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_CLR|Win32.ActiveCfg = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_CLR|Win32.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_CLR|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_Mono|Win32.ActiveCfg = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_Mono|Win32.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_Mono|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|Mixed Platforms.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|Win32.ActiveCfg = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|Win32.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DLL|Win32.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Static|Win32.ActiveCfg = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Static|Win32.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Static|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_CLR|Win32.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_Mono|Win32.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|Win32.ActiveCfg = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|Win32.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DirectSound|Win32.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DLL|Win32.ActiveCfg = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DLL|Win32.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DLL|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Passthrough|Win32.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Static|Win32.ActiveCfg = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Static|Win32.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Static|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_CLR|Win32.ActiveCfg = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_CLR|Win32.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_CLR|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_Mono|Win32.ActiveCfg = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_Mono|Win32.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_Mono|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|Mixed Platforms.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|Win32.ActiveCfg = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|Win32.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|x64.ActiveCfg = Release|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DirectSound|Mixed Platforms.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DirectSound|Win32.ActiveCfg = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DirectSound|Win32.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DirectSound|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DLL|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DLL|Mixed Platforms.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DLL|Win32.ActiveCfg = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DLL|Win32.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DLL|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug MS-LDAP|Win32.ActiveCfg = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug MS-LDAP|Win32.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug MS-LDAP|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Passthrough|Mixed Platforms.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Passthrough|Win32.ActiveCfg = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Passthrough|Win32.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Passthrough|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Static|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Static|Mixed Platforms.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Static|Win32.ActiveCfg = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Static|Win32.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Static|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_CLR|Mixed Platforms.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_CLR|Win32.ActiveCfg = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_CLR|Win32.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_CLR|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_Mono|Mixed Platforms.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_Mono|Win32.ActiveCfg = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_Mono|Win32.Build.0 = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_Mono|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|Win32.ActiveCfg = Debug|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|Win32.Build.0 = Debug|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|x64.ActiveCfg = Debug|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DirectSound|Mixed Platforms.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DirectSound|Mixed Platforms.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DirectSound|Win32.ActiveCfg = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DirectSound|Win32.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DirectSound|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DLL|Mixed Platforms.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DLL|Mixed Platforms.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DLL|Win32.ActiveCfg = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DLL|Win32.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DLL|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release MS-LDAP|Mixed Platforms.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release MS-LDAP|Win32.ActiveCfg = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release MS-LDAP|Win32.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release MS-LDAP|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Passthrough|Mixed Platforms.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Passthrough|Mixed Platforms.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Passthrough|Win32.ActiveCfg = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Passthrough|Win32.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Passthrough|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Static|Mixed Platforms.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Static|Mixed Platforms.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Static|Win32.ActiveCfg = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Static|Win32.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Static|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_CLR|Mixed Platforms.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_CLR|Mixed Platforms.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_CLR|Win32.ActiveCfg = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_CLR|Win32.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_CLR|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_Mono|Mixed Platforms.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_Mono|Mixed Platforms.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_Mono|Win32.ActiveCfg = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_Mono|Win32.Build.0 = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_Mono|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|Mixed Platforms.Build.0 = Release|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|Win32.ActiveCfg = Release|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|Win32.Build.0 = Release|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DLL|Win32.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Static|Win32.ActiveCfg = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Static|Win32.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Static|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_CLR|Win32.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_Mono|Win32.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.ActiveCfg = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DirectSound|Win32.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DLL|Win32.ActiveCfg = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DLL|Win32.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DLL|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Passthrough|Win32.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Static|Win32.ActiveCfg = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Static|Win32.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Static|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_CLR|Win32.ActiveCfg = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_CLR|Win32.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_CLR|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_Mono|Win32.ActiveCfg = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_Mono|Win32.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_Mono|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Mixed Platforms.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.ActiveCfg = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DLL|Win32.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Static|Win32.ActiveCfg = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Static|Win32.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_CLR|Win32.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_Mono|Win32.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.ActiveCfg = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DirectSound|Win32.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DLL|Win32.ActiveCfg = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DLL|Win32.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DLL|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Passthrough|Win32.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Static|Win32.ActiveCfg = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Static|Win32.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Static|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_CLR|Win32.ActiveCfg = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_CLR|Win32.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_Mono|Win32.ActiveCfg = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_Mono|Win32.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_Mono|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Mixed Platforms.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.ActiveCfg = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DLL|Win32.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Static|Win32.ActiveCfg = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Static|Win32.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_CLR|Win32.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_Mono|Win32.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.ActiveCfg = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DirectSound|Win32.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DLL|Win32.ActiveCfg = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DLL|Win32.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DLL|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Passthrough|Win32.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Static|Win32.ActiveCfg = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Static|Win32.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Static|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_CLR|Win32.ActiveCfg = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_CLR|Win32.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_Mono|Win32.ActiveCfg = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_Mono|Win32.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_Mono|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Mixed Platforms.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.ActiveCfg = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DLL|Win32.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Static|Win32.ActiveCfg = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Static|Win32.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Static|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_CLR|Win32.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_Mono|Win32.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.ActiveCfg = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DirectSound|Win32.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DLL|Win32.ActiveCfg = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DLL|Win32.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DLL|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Passthrough|Win32.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Static|Win32.ActiveCfg = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Static|Win32.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Static|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_CLR|Win32.ActiveCfg = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_CLR|Win32.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_CLR|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_Mono|Win32.ActiveCfg = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_Mono|Win32.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_Mono|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Mixed Platforms.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.ActiveCfg = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DLL|Win32.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Static|Win32.ActiveCfg = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Static|Win32.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Static|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_CLR|Win32.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_Mono|Win32.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.ActiveCfg = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DirectSound|Win32.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DLL|Win32.ActiveCfg = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DLL|Win32.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DLL|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Passthrough|Win32.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Static|Win32.ActiveCfg = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Static|Win32.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Static|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_CLR|Win32.ActiveCfg = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_CLR|Win32.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_CLR|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_Mono|Win32.ActiveCfg = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_Mono|Win32.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_Mono|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Mixed Platforms.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.ActiveCfg = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DLL|Win32.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Static|Win32.ActiveCfg = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Static|Win32.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Static|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_CLR|Win32.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_Mono|Win32.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.ActiveCfg = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DirectSound|Win32.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DLL|Win32.ActiveCfg = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DLL|Win32.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DLL|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Passthrough|Win32.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Static|Win32.ActiveCfg = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Static|Win32.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Static|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_CLR|Win32.ActiveCfg = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_CLR|Win32.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_CLR|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_Mono|Win32.ActiveCfg = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_Mono|Win32.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_Mono|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Mixed Platforms.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.ActiveCfg = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DLL|Win32.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Static|Win32.ActiveCfg = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Static|Win32.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Static|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_CLR|Win32.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_Mono|Win32.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.ActiveCfg = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DirectSound|Win32.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DLL|Win32.ActiveCfg = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DLL|Win32.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DLL|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Passthrough|Win32.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Static|Win32.ActiveCfg = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Static|Win32.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Static|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_CLR|Win32.ActiveCfg = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_CLR|Win32.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_CLR|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_Mono|Win32.ActiveCfg = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_Mono|Win32.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_Mono|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Mixed Platforms.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.ActiveCfg = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DLL|Win32.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Static|Win32.ActiveCfg = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Static|Win32.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Static|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_CLR|Win32.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_Mono|Win32.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.ActiveCfg = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DirectSound|Win32.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DLL|Win32.ActiveCfg = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DLL|Win32.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DLL|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Passthrough|Win32.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Static|Win32.ActiveCfg = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Static|Win32.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Static|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_CLR|Win32.ActiveCfg = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_CLR|Win32.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_CLR|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_Mono|Win32.ActiveCfg = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_Mono|Win32.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_Mono|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Mixed Platforms.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.ActiveCfg = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug DLL|Win32.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug Static|Win32.ActiveCfg = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug Static|Win32.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug Static|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug_CLR|Win32.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug_Mono|Win32.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.ActiveCfg = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release DirectSound|Win32.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release DLL|Win32.ActiveCfg = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release DLL|Win32.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release DLL|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release Passthrough|Win32.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release Static|Win32.ActiveCfg = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release Static|Win32.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release Static|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release_CLR|Win32.ActiveCfg = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release_CLR|Win32.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release_CLR|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release_Mono|Win32.ActiveCfg = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release_Mono|Win32.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release_Mono|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release|Mixed Platforms.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.ActiveCfg = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DLL|Win32.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Static|Win32.ActiveCfg = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Static|Win32.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Static|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_CLR|Win32.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_Mono|Win32.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.ActiveCfg = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DirectSound|Win32.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DLL|Win32.ActiveCfg = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DLL|Win32.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DLL|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Passthrough|Win32.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Static|Win32.ActiveCfg = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Static|Win32.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Static|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_CLR|Win32.ActiveCfg = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_CLR|Win32.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_CLR|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_Mono|Win32.ActiveCfg = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_Mono|Win32.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_Mono|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Mixed Platforms.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.ActiveCfg = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DLL|Win32.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Static|Win32.ActiveCfg = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Static|Win32.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Static|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_CLR|Win32.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_Mono|Win32.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.ActiveCfg = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DirectSound|Win32.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DLL|Win32.ActiveCfg = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DLL|Win32.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DLL|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Passthrough|Win32.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Static|Win32.ActiveCfg = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Static|Win32.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Static|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_CLR|Win32.ActiveCfg = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_CLR|Win32.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_CLR|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_Mono|Win32.ActiveCfg = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_Mono|Win32.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_Mono|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Mixed Platforms.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.ActiveCfg = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DLL|Win32.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Static|Win32.ActiveCfg = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Static|Win32.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_CLR|Win32.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_Mono|Win32.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.ActiveCfg = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DirectSound|Win32.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DLL|Win32.ActiveCfg = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DLL|Win32.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DLL|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Passthrough|Win32.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Static|Win32.ActiveCfg = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Static|Win32.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Static|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_CLR|Win32.ActiveCfg = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_CLR|Win32.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_Mono|Win32.ActiveCfg = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_Mono|Win32.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_Mono|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Mixed Platforms.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.ActiveCfg = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DLL|Win32.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Static|Win32.ActiveCfg = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Static|Win32.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Static|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_CLR|Win32.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_Mono|Win32.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.ActiveCfg = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DirectSound|Win32.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DLL|Win32.ActiveCfg = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DLL|Win32.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DLL|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Passthrough|Win32.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Static|Win32.ActiveCfg = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Static|Win32.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Static|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_CLR|Win32.ActiveCfg = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_CLR|Win32.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_CLR|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_Mono|Win32.ActiveCfg = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_Mono|Win32.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_Mono|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Mixed Platforms.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.ActiveCfg = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DLL|Win32.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Static|Win32.ActiveCfg = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Static|Win32.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Static|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_CLR|Win32.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_Mono|Win32.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.ActiveCfg = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DirectSound|Win32.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DLL|Win32.ActiveCfg = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DLL|Win32.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DLL|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Passthrough|Win32.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Static|Win32.ActiveCfg = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Static|Win32.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Static|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_CLR|Win32.ActiveCfg = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_CLR|Win32.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_CLR|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_Mono|Win32.ActiveCfg = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_Mono|Win32.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_Mono|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Mixed Platforms.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.ActiveCfg = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DLL|Win32.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Static|Win32.ActiveCfg = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Static|Win32.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Static|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_CLR|Win32.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_Mono|Win32.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.ActiveCfg = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DirectSound|Win32.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DLL|Win32.ActiveCfg = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DLL|Win32.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DLL|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Passthrough|Win32.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Static|Win32.ActiveCfg = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Static|Win32.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Static|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_CLR|Win32.ActiveCfg = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_CLR|Win32.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_CLR|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_Mono|Win32.ActiveCfg = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_Mono|Win32.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_Mono|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Mixed Platforms.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.ActiveCfg = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DLL|Win32.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Static|Win32.ActiveCfg = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Static|Win32.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Static|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_CLR|Win32.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_Mono|Win32.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|Win32.ActiveCfg = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|Win32.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DirectSound|Win32.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DLL|Win32.ActiveCfg = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DLL|Win32.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DLL|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Passthrough|Win32.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Static|Win32.ActiveCfg = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Static|Win32.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Static|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_CLR|Win32.ActiveCfg = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_CLR|Win32.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_CLR|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_Mono|Win32.ActiveCfg = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_Mono|Win32.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_Mono|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|Mixed Platforms.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|Win32.ActiveCfg = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|Win32.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DLL|Win32.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Static|Win32.ActiveCfg = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Static|Win32.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Static|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_CLR|Win32.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_Mono|Win32.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.ActiveCfg = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DirectSound|Win32.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DLL|Win32.ActiveCfg = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DLL|Win32.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DLL|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Passthrough|Win32.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Static|Win32.ActiveCfg = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Static|Win32.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Static|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_CLR|Win32.ActiveCfg = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_CLR|Win32.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_CLR|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_Mono|Win32.ActiveCfg = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_Mono|Win32.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_Mono|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Mixed Platforms.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.ActiveCfg = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DLL|Win32.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Static|Win32.ActiveCfg = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Static|Win32.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Static|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_CLR|Win32.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_Mono|Win32.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.ActiveCfg = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DirectSound|Win32.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DLL|Win32.ActiveCfg = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DLL|Win32.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DLL|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Passthrough|Win32.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Static|Win32.ActiveCfg = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Static|Win32.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Static|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_CLR|Win32.ActiveCfg = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_CLR|Win32.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_CLR|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_Mono|Win32.ActiveCfg = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_Mono|Win32.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_Mono|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Mixed Platforms.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.ActiveCfg = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DLL|Win32.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Static|Win32.ActiveCfg = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Static|Win32.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Static|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_CLR|Win32.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_Mono|Win32.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.ActiveCfg = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DirectSound|Win32.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DLL|Win32.ActiveCfg = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DLL|Win32.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DLL|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Passthrough|Win32.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Static|Win32.ActiveCfg = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Static|Win32.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Static|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_CLR|Win32.ActiveCfg = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_CLR|Win32.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_CLR|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_Mono|Win32.ActiveCfg = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_Mono|Win32.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_Mono|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Mixed Platforms.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.ActiveCfg = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DLL|Win32.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Static|Win32.ActiveCfg = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Static|Win32.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Static|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_CLR|Win32.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_Mono|Win32.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.ActiveCfg = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DirectSound|Win32.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DLL|Win32.ActiveCfg = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DLL|Win32.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DLL|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Passthrough|Win32.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Static|Win32.ActiveCfg = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Static|Win32.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Static|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_CLR|Win32.ActiveCfg = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_CLR|Win32.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_CLR|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_Mono|Win32.ActiveCfg = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_Mono|Win32.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_Mono|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Mixed Platforms.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.ActiveCfg = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DLL|Win32.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Static|Win32.ActiveCfg = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Static|Win32.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_CLR|Win32.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_Mono|Win32.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.ActiveCfg = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DirectSound|Win32.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DLL|Win32.ActiveCfg = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DLL|Win32.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DLL|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Passthrough|Win32.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Static|Win32.ActiveCfg = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Static|Win32.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Static|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_CLR|Win32.ActiveCfg = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_CLR|Win32.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_Mono|Win32.ActiveCfg = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_Mono|Win32.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_Mono|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Mixed Platforms.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.ActiveCfg = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DLL|Win32.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Static|Win32.ActiveCfg = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Static|Win32.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Static|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_CLR|Win32.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_Mono|Win32.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.ActiveCfg = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DirectSound|Win32.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DLL|Win32.ActiveCfg = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DLL|Win32.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DLL|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Passthrough|Win32.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Static|Win32.ActiveCfg = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Static|Win32.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Static|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_CLR|Win32.ActiveCfg = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_CLR|Win32.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_CLR|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_Mono|Win32.ActiveCfg = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_Mono|Win32.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_Mono|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Mixed Platforms.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.ActiveCfg = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DLL|Win32.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Static|Win32.ActiveCfg = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Static|Win32.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_CLR|Win32.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_Mono|Win32.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.ActiveCfg = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DirectSound|Win32.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DLL|Win32.ActiveCfg = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DLL|Win32.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DLL|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Passthrough|Win32.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Static|Win32.ActiveCfg = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Static|Win32.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Static|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_CLR|Win32.ActiveCfg = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_CLR|Win32.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_Mono|Win32.ActiveCfg = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_Mono|Win32.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_Mono|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Mixed Platforms.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.ActiveCfg = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DLL|Win32.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Static|Win32.ActiveCfg = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Static|Win32.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Static|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_CLR|Win32.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_Mono|Win32.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.ActiveCfg = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release DirectSound|Win32.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release DLL|Win32.ActiveCfg = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release DLL|Win32.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release DLL|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release Passthrough|Win32.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release Static|Win32.ActiveCfg = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release Static|Win32.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release Static|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release_CLR|Win32.ActiveCfg = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release_CLR|Win32.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release_CLR|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release_Mono|Win32.ActiveCfg = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release_Mono|Win32.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release_Mono|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Mixed Platforms.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.ActiveCfg = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DLL|Win32.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Static|Win32.ActiveCfg = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Static|Win32.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Static|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_CLR|Win32.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_Mono|Win32.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.ActiveCfg = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DirectSound|Win32.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DLL|Win32.ActiveCfg = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DLL|Win32.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DLL|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Passthrough|Win32.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Static|Win32.ActiveCfg = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Static|Win32.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Static|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_CLR|Win32.ActiveCfg = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_CLR|Win32.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_CLR|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_Mono|Win32.ActiveCfg = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_Mono|Win32.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_Mono|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Mixed Platforms.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.ActiveCfg = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug DLL|Win32.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug Static|Win32.ActiveCfg = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug Static|Win32.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug Static|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug_CLR|Win32.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug_Mono|Win32.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.ActiveCfg = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release DirectSound|Win32.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release DLL|Win32.ActiveCfg = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release DLL|Win32.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release DLL|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release Passthrough|Win32.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release Static|Win32.ActiveCfg = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release Static|Win32.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release Static|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release_CLR|Win32.ActiveCfg = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release_CLR|Win32.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release_CLR|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release_Mono|Win32.ActiveCfg = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release_Mono|Win32.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release_Mono|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release|Mixed Platforms.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.ActiveCfg = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DLL|Win32.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Static|Win32.ActiveCfg = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Static|Win32.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Static|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_CLR|Win32.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_Mono|Win32.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.ActiveCfg = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DirectSound|Win32.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DLL|Win32.ActiveCfg = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DLL|Win32.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DLL|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Passthrough|Win32.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Static|Win32.ActiveCfg = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Static|Win32.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Static|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_CLR|Win32.ActiveCfg = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_CLR|Win32.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_CLR|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_Mono|Win32.ActiveCfg = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_Mono|Win32.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_Mono|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Mixed Platforms.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.ActiveCfg = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DLL|Win32.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Static|Win32.ActiveCfg = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Static|Win32.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Static|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_CLR|Win32.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_Mono|Win32.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.ActiveCfg = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DirectSound|Win32.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DLL|Win32.ActiveCfg = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DLL|Win32.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DLL|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Passthrough|Win32.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Static|Win32.ActiveCfg = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Static|Win32.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Static|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_CLR|Win32.ActiveCfg = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_CLR|Win32.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_CLR|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_Mono|Win32.ActiveCfg = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_Mono|Win32.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_Mono|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Mixed Platforms.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.ActiveCfg = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug DLL|Win32.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug Static|Win32.ActiveCfg = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug Static|Win32.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug Static|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug_CLR|Win32.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug_Mono|Win32.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.ActiveCfg = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release DirectSound|Win32.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release DLL|Win32.ActiveCfg = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release DLL|Win32.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release DLL|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release Passthrough|Win32.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release Static|Win32.ActiveCfg = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release Static|Win32.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release Static|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release_CLR|Win32.ActiveCfg = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release_CLR|Win32.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release_CLR|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release_Mono|Win32.ActiveCfg = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release_Mono|Win32.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release_Mono|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release|Mixed Platforms.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.ActiveCfg = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DLL|Win32.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Static|Win32.ActiveCfg = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Static|Win32.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Static|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_CLR|Win32.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_Mono|Win32.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.ActiveCfg = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DirectSound|Win32.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DLL|Win32.ActiveCfg = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DLL|Win32.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DLL|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Passthrough|Win32.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Static|Win32.ActiveCfg = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Static|Win32.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Static|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_CLR|Win32.ActiveCfg = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_CLR|Win32.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_CLR|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_Mono|Win32.ActiveCfg = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_Mono|Win32.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_Mono|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Mixed Platforms.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.ActiveCfg = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DLL|Win32.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Static|Win32.ActiveCfg = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Static|Win32.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Static|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_CLR|Win32.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_Mono|Win32.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.ActiveCfg = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DirectSound|Win32.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DLL|Win32.ActiveCfg = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DLL|Win32.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DLL|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Passthrough|Win32.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Static|Win32.ActiveCfg = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Static|Win32.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Static|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_CLR|Win32.ActiveCfg = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_CLR|Win32.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_CLR|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_Mono|Win32.ActiveCfg = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_Mono|Win32.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_Mono|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Mixed Platforms.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.ActiveCfg = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DLL|Win32.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Static|Win32.ActiveCfg = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Static|Win32.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Static|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_CLR|Win32.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_Mono|Win32.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|Win32.ActiveCfg = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DirectSound|Win32.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DLL|Win32.ActiveCfg = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DLL|Win32.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DLL|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Passthrough|Win32.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Static|Win32.ActiveCfg = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Static|Win32.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Static|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_CLR|Win32.ActiveCfg = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_CLR|Win32.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_CLR|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_Mono|Win32.ActiveCfg = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_Mono|Win32.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_Mono|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|Mixed Platforms.Build.0 = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|Win32.ActiveCfg = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DLL|Win32.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Static|Win32.ActiveCfg = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Static|Win32.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Static|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_CLR|Win32.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_Mono|Win32.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.ActiveCfg = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DirectSound|Win32.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DLL|Win32.ActiveCfg = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DLL|Win32.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DLL|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Passthrough|Win32.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Static|Win32.ActiveCfg = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Static|Win32.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Static|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_CLR|Win32.ActiveCfg = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_CLR|Win32.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_CLR|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_Mono|Win32.ActiveCfg = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_Mono|Win32.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_Mono|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Mixed Platforms.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.ActiveCfg = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DLL|Win32.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Static|Win32.ActiveCfg = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Static|Win32.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Static|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_CLR|Win32.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_Mono|Win32.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Win32.ActiveCfg = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DirectSound|Win32.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DLL|Win32.ActiveCfg = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DLL|Win32.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DLL|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Passthrough|Win32.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Static|Win32.ActiveCfg = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Static|Win32.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Static|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_CLR|Win32.ActiveCfg = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_CLR|Win32.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_CLR|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_Mono|Win32.ActiveCfg = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_Mono|Win32.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_Mono|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Mixed Platforms.Build.0 = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Win32.ActiveCfg = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DLL|Win32.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Static|Win32.ActiveCfg = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Static|Win32.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Static|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_CLR|Win32.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_Mono|Win32.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Win32.ActiveCfg = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DirectSound|Win32.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DLL|Win32.ActiveCfg = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DLL|Win32.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DLL|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Passthrough|Win32.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Static|Win32.ActiveCfg = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Static|Win32.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Static|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_CLR|Win32.ActiveCfg = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_CLR|Win32.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_CLR|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_Mono|Win32.ActiveCfg = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_Mono|Win32.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_Mono|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|Mixed Platforms.Build.0 = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|Win32.ActiveCfg = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DLL|Win32.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Static|Win32.ActiveCfg = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Static|Win32.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Static|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_CLR|Win32.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_Mono|Win32.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Win32.ActiveCfg = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release DirectSound|Win32.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release DLL|Win32.ActiveCfg = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release DLL|Win32.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release DLL|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release Passthrough|Win32.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release Static|Win32.ActiveCfg = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release Static|Win32.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release Static|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release_CLR|Win32.ActiveCfg = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release_CLR|Win32.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release_CLR|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release_Mono|Win32.ActiveCfg = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release_Mono|Win32.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release_Mono|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release|Mixed Platforms.Build.0 = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release|Win32.ActiveCfg = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DLL|Win32.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Static|Win32.ActiveCfg = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Static|Win32.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_CLR|Win32.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_Mono|Win32.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.ActiveCfg = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release DirectSound|Win32.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release DLL|Win32.ActiveCfg = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release DLL|Win32.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release DLL|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release Passthrough|Win32.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release Static|Win32.ActiveCfg = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release Static|Win32.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release Static|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release_CLR|Win32.ActiveCfg = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release_CLR|Win32.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release_Mono|Win32.ActiveCfg = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release_Mono|Win32.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release_Mono|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Mixed Platforms.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.ActiveCfg = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.ActiveCfg = Release|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DirectSound|Mixed Platforms.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DirectSound|Win32.ActiveCfg = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DirectSound|Win32.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DirectSound|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DLL|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DLL|Mixed Platforms.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DLL|Win32.ActiveCfg = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DLL|Win32.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DLL|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug MS-LDAP|Win32.ActiveCfg = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug MS-LDAP|Win32.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug MS-LDAP|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Passthrough|Mixed Platforms.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Passthrough|Win32.ActiveCfg = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Passthrough|Win32.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Passthrough|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Static|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Static|Mixed Platforms.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Static|Win32.ActiveCfg = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Static|Win32.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Static|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_CLR|Mixed Platforms.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_CLR|Win32.ActiveCfg = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_CLR|Win32.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_CLR|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_Mono|Mixed Platforms.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_Mono|Win32.ActiveCfg = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_Mono|Win32.Build.0 = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_Mono|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.ActiveCfg = Debug|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.Build.0 = Debug|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x64.ActiveCfg = Debug|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DirectSound|Mixed Platforms.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DirectSound|Mixed Platforms.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DirectSound|Win32.ActiveCfg = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DirectSound|Win32.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DirectSound|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DLL|Mixed Platforms.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DLL|Mixed Platforms.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DLL|Win32.ActiveCfg = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DLL|Win32.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DLL|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release MS-LDAP|Mixed Platforms.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release MS-LDAP|Win32.ActiveCfg = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release MS-LDAP|Win32.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release MS-LDAP|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Passthrough|Mixed Platforms.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Passthrough|Mixed Platforms.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Passthrough|Win32.ActiveCfg = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Passthrough|Win32.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Passthrough|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Static|Mixed Platforms.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Static|Mixed Platforms.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Static|Win32.ActiveCfg = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Static|Win32.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Static|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_CLR|Mixed Platforms.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_CLR|Mixed Platforms.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_CLR|Win32.ActiveCfg = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_CLR|Win32.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_CLR|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_Mono|Mixed Platforms.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_Mono|Mixed Platforms.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_Mono|Win32.ActiveCfg = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_Mono|Win32.Build.0 = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_Mono|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Mixed Platforms.Build.0 = Release|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.ActiveCfg = Release|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.Build.0 = Release|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DLL|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Static|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Static|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_CLR|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_Mono|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DirectSound|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DLL|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DLL|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DLL|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Passthrough|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Static|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Static|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Static|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_CLR|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_CLR|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_Mono|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_Mono|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_Mono|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DLL|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Static|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Static|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_CLR|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_Mono|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DirectSound|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DLL|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DLL|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DLL|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Passthrough|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Static|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Static|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Static|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_CLR|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_CLR|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_Mono|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_Mono|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_Mono|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DLL|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Static|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Static|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_CLR|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_Mono|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DirectSound|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DLL|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DLL|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DLL|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Passthrough|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Static|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Static|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Static|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_CLR|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_CLR|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_Mono|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_Mono|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_Mono|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DLL|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Static|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Static|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_CLR|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_Mono|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DirectSound|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DLL|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DLL|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DLL|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Passthrough|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Static|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Static|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Static|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_CLR|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_CLR|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_Mono|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_Mono|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_Mono|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Mixed Platforms.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DLL|Win32.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Static|Win32.ActiveCfg = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Static|Win32.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Static|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_CLR|Win32.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_Mono|Win32.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.ActiveCfg = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DirectSound|Win32.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DLL|Win32.ActiveCfg = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DLL|Win32.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DLL|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Passthrough|Win32.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Static|Win32.ActiveCfg = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Static|Win32.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Static|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_CLR|Win32.ActiveCfg = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_CLR|Win32.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_CLR|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_Mono|Win32.ActiveCfg = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_Mono|Win32.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_Mono|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Mixed Platforms.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.ActiveCfg = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DLL|Win32.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Static|Win32.ActiveCfg = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Static|Win32.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_CLR|Win32.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_Mono|Win32.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.ActiveCfg = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DirectSound|Win32.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DLL|Win32.ActiveCfg = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DLL|Win32.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DLL|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Passthrough|Win32.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Static|Win32.ActiveCfg = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Static|Win32.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Static|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_CLR|Win32.ActiveCfg = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_CLR|Win32.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_Mono|Win32.ActiveCfg = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_Mono|Win32.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_Mono|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Mixed Platforms.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.ActiveCfg = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DLL|Win32.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Static|Win32.ActiveCfg = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Static|Win32.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Static|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_CLR|Win32.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_Mono|Win32.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.ActiveCfg = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DirectSound|Win32.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DLL|Win32.ActiveCfg = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DLL|Win32.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DLL|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Passthrough|Win32.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Static|Win32.ActiveCfg = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Static|Win32.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Static|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_CLR|Win32.ActiveCfg = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_CLR|Win32.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_CLR|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_Mono|Win32.ActiveCfg = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_Mono|Win32.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_Mono|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Mixed Platforms.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.ActiveCfg = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DLL|Win32.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Static|Win32.ActiveCfg = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Static|Win32.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_CLR|Win32.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_Mono|Win32.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.ActiveCfg = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DirectSound|Win32.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DLL|Win32.ActiveCfg = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DLL|Win32.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DLL|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Passthrough|Win32.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Static|Win32.ActiveCfg = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Static|Win32.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Static|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_CLR|Win32.ActiveCfg = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_CLR|Win32.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_Mono|Win32.ActiveCfg = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_Mono|Win32.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_Mono|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Mixed Platforms.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.ActiveCfg = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DLL|Win32.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Static|Win32.ActiveCfg = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Static|Win32.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Static|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_CLR|Win32.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_Mono|Win32.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.ActiveCfg = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DirectSound|Win32.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DLL|Win32.ActiveCfg = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DLL|Win32.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DLL|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Passthrough|Win32.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Static|Win32.ActiveCfg = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Static|Win32.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Static|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_CLR|Win32.ActiveCfg = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_CLR|Win32.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_CLR|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_Mono|Win32.ActiveCfg = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_Mono|Win32.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_Mono|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Mixed Platforms.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.ActiveCfg = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DLL|Win32.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Static|Win32.ActiveCfg = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Static|Win32.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Static|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_CLR|Win32.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_Mono|Win32.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.ActiveCfg = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DirectSound|Win32.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DLL|Win32.ActiveCfg = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DLL|Win32.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DLL|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Passthrough|Win32.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Static|Win32.ActiveCfg = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Static|Win32.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Static|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_CLR|Win32.ActiveCfg = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_CLR|Win32.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_CLR|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_Mono|Win32.ActiveCfg = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_Mono|Win32.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_Mono|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Mixed Platforms.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.ActiveCfg = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.ActiveCfg = Release|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DirectSound|Mixed Platforms.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DirectSound|Win32.ActiveCfg = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DirectSound|Win32.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DirectSound|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DLL|Mixed Platforms.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DLL|Mixed Platforms.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DLL|Win32.ActiveCfg = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DLL|Win32.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DLL|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug MS-LDAP|Win32.ActiveCfg = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug MS-LDAP|Win32.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug MS-LDAP|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Passthrough|Mixed Platforms.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Passthrough|Win32.ActiveCfg = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Passthrough|Win32.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Passthrough|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Static|Mixed Platforms.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Static|Mixed Platforms.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Static|Win32.ActiveCfg = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Static|Win32.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Static|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug_CLR|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_CLR|Mixed Platforms.Build.0 = Debug_CLR|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_CLR|Win32.ActiveCfg = Debug_CLR|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_CLR|Win32.Build.0 = Debug_CLR|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_CLR|x64.ActiveCfg = Debug_CLR|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_Mono|Mixed Platforms.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_Mono|Win32.ActiveCfg = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_Mono|Win32.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_Mono|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Mixed Platforms.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Mixed Platforms.Build.0 = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.ActiveCfg = Debug_CLR|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.Build.0 = Debug_CLR|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DirectSound|Mixed Platforms.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DirectSound|Mixed Platforms.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DirectSound|Win32.ActiveCfg = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DirectSound|Win32.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DirectSound|x64.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DLL|Mixed Platforms.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DLL|Mixed Platforms.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DLL|Win32.ActiveCfg = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DLL|Win32.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DLL|x64.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release MS-LDAP|Mixed Platforms.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release MS-LDAP|Win32.ActiveCfg = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release MS-LDAP|Win32.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release MS-LDAP|x64.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Passthrough|Mixed Platforms.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Passthrough|Mixed Platforms.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Passthrough|Win32.ActiveCfg = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Passthrough|Win32.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Passthrough|x64.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Static|Mixed Platforms.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Static|Mixed Platforms.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Static|Win32.ActiveCfg = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Static|Win32.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Static|x64.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_CLR|Mixed Platforms.ActiveCfg = Release_CLR|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_CLR|Mixed Platforms.Build.0 = Release_CLR|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_CLR|Win32.ActiveCfg = Release_CLR|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_CLR|Win32.Build.0 = Release_CLR|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_CLR|x64.ActiveCfg = Release_CLR|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_Mono|Mixed Platforms.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_Mono|Mixed Platforms.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_Mono|Win32.ActiveCfg = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_Mono|Win32.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_Mono|x64.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Mixed Platforms.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Mixed Platforms.Build.0 = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.ActiveCfg = Release_CLR|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.ActiveCfg = Release_Mono|Win32 - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug DirectSound|Win32.ActiveCfg = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug DirectSound|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug DLL|Mixed Platforms.Build.0 = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug DLL|Win32.ActiveCfg = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug DLL|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug MS-LDAP|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug Passthrough|Win32.ActiveCfg = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug Passthrough|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug Static|Mixed Platforms.Build.0 = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug Static|Win32.ActiveCfg = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug Static|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug_CLR|Win32.ActiveCfg = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug_CLR|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug_Mono|Win32.ActiveCfg = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug_Mono|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.ActiveCfg = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.Build.0 = Debug|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release DirectSound|Mixed Platforms.Build.0 = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release DirectSound|Win32.ActiveCfg = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release DirectSound|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release DLL|Mixed Platforms.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release DLL|Mixed Platforms.Build.0 = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release DLL|Win32.ActiveCfg = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release DLL|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release MS-LDAP|Win32.ActiveCfg = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release MS-LDAP|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release Passthrough|Mixed Platforms.Build.0 = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release Passthrough|Win32.ActiveCfg = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release Passthrough|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release Static|Mixed Platforms.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release Static|Mixed Platforms.Build.0 = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release Static|Win32.ActiveCfg = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release Static|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release_CLR|Mixed Platforms.Build.0 = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release_CLR|Win32.ActiveCfg = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release_CLR|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release_Mono|Mixed Platforms.Build.0 = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release_Mono|Win32.ActiveCfg = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release_Mono|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Mixed Platforms.Build.0 = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.ActiveCfg = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.Build.0 = Release|Any CPU {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.ActiveCfg = Release|Any CPU - {E796E337-DE78-4303-8614-9A590862EE95}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug DLL|Win32.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug Static|Win32.ActiveCfg = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug Static|Win32.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug Static|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug_CLR|Win32.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug_Mono|Win32.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.ActiveCfg = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release DirectSound|Win32.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release DLL|Win32.ActiveCfg = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release DLL|Win32.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release DLL|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release Passthrough|Win32.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release Static|Win32.ActiveCfg = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release Static|Win32.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release Static|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release_CLR|Win32.ActiveCfg = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release_CLR|Win32.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release_CLR|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release_Mono|Win32.ActiveCfg = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release_Mono|Win32.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release_Mono|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release|Mixed Platforms.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.ActiveCfg = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DLL|Win32.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Static|Win32.ActiveCfg = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Static|Win32.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Static|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_CLR|Win32.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_Mono|Win32.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.ActiveCfg = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release DirectSound|Win32.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release DLL|Win32.ActiveCfg = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release DLL|Win32.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release DLL|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release Passthrough|Win32.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release Static|Win32.ActiveCfg = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release Static|Win32.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release Static|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release_CLR|Win32.ActiveCfg = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release_CLR|Win32.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release_CLR|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release_Mono|Win32.ActiveCfg = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release_Mono|Win32.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release_Mono|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Mixed Platforms.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.ActiveCfg = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DLL|Win32.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Static|Win32.ActiveCfg = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Static|Win32.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Static|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_CLR|Win32.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_Mono|Win32.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.ActiveCfg = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DirectSound|Win32.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DLL|Win32.ActiveCfg = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DLL|Win32.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DLL|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Passthrough|Win32.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Static|Win32.ActiveCfg = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Static|Win32.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Static|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_CLR|Win32.ActiveCfg = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_CLR|Win32.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_CLR|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_Mono|Win32.ActiveCfg = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_Mono|Win32.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_Mono|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Mixed Platforms.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.ActiveCfg = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DLL|Win32.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Static|Win32.ActiveCfg = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Static|Win32.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Static|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_CLR|Win32.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_Mono|Win32.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.ActiveCfg = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DirectSound|Win32.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DLL|Win32.ActiveCfg = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DLL|Win32.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DLL|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Passthrough|Win32.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Static|Win32.ActiveCfg = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Static|Win32.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Static|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_CLR|Win32.ActiveCfg = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_CLR|Win32.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_CLR|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_Mono|Win32.ActiveCfg = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_Mono|Win32.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_Mono|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Mixed Platforms.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.ActiveCfg = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DLL|Win32.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Static|Win32.ActiveCfg = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Static|Win32.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_CLR|Win32.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_Mono|Win32.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.ActiveCfg = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DirectSound|Win32.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DLL|Win32.ActiveCfg = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DLL|Win32.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DLL|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Passthrough|Win32.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Static|Win32.ActiveCfg = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Static|Win32.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Static|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_CLR|Win32.ActiveCfg = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_CLR|Win32.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_Mono|Win32.ActiveCfg = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_Mono|Win32.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_Mono|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Mixed Platforms.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.ActiveCfg = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DLL|Win32.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Static|Win32.ActiveCfg = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Static|Win32.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_CLR|Win32.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_Mono|Win32.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.ActiveCfg = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DirectSound|Win32.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DLL|Win32.ActiveCfg = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DLL|Win32.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DLL|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Passthrough|Win32.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Static|Win32.ActiveCfg = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Static|Win32.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Static|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_CLR|Win32.ActiveCfg = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_CLR|Win32.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_Mono|Win32.ActiveCfg = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_Mono|Win32.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_Mono|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Mixed Platforms.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.ActiveCfg = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DLL|Win32.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Static|Win32.ActiveCfg = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Static|Win32.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Static|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_CLR|Win32.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_Mono|Win32.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.ActiveCfg = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DirectSound|Win32.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DLL|Win32.ActiveCfg = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DLL|Win32.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DLL|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Passthrough|Win32.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Static|Win32.ActiveCfg = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Static|Win32.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Static|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_CLR|Win32.ActiveCfg = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_CLR|Win32.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_CLR|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_Mono|Win32.ActiveCfg = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_Mono|Win32.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_Mono|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Mixed Platforms.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.ActiveCfg = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DirectSound|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DirectSound|Mixed Platforms.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DirectSound|Win32.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DLL|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DLL|Mixed Platforms.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DLL|Win32.ActiveCfg = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DLL|Win32.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug MS-LDAP|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug MS-LDAP|Mixed Platforms.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Passthrough|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Passthrough|Mixed Platforms.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Passthrough|Win32.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Static|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Static|Mixed Platforms.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Static|Win32.ActiveCfg = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Static|Win32.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_CLR|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_CLR|Mixed Platforms.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_CLR|Win32.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_Mono|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_Mono|Mixed Platforms.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_Mono|Win32.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_Mono|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.ActiveCfg = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DirectSound|Mixed Platforms.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DirectSound|Mixed Platforms.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DirectSound|Win32.ActiveCfg = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DirectSound|Win32.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DLL|Mixed Platforms.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DLL|Mixed Platforms.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DLL|Win32.ActiveCfg = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DLL|Win32.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DLL|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release MS-LDAP|Mixed Platforms.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release MS-LDAP|Mixed Platforms.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release MS-LDAP|Win32.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Passthrough|Mixed Platforms.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Passthrough|Mixed Platforms.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Passthrough|Win32.ActiveCfg = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Passthrough|Win32.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Static|Mixed Platforms.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Static|Mixed Platforms.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Static|Win32.ActiveCfg = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Static|Win32.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Static|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_CLR|Mixed Platforms.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_CLR|Mixed Platforms.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_CLR|Win32.ActiveCfg = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_CLR|Win32.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_Mono|Mixed Platforms.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_Mono|Mixed Platforms.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_Mono|Win32.ActiveCfg = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_Mono|Win32.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_Mono|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Mixed Platforms.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.ActiveCfg = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.ActiveCfg = Release|Win32 From mikej at freeswitch.org Thu Jan 1 15:48:32 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 18:48:32 -0500 Subject: [Freeswitch-svn] [commit] r11048 - freeswitch/trunk/libs/win32 Message-ID: Author: mikej Date: Thu Jan 1 18:48:32 2009 New Revision: 11048 Log: download correct sound file versions on windows Modified: freeswitch/trunk/libs/win32/Dowload 32khz Sounds.2008.vcproj freeswitch/trunk/libs/win32/Download 16khz Sounds.2008.vcproj freeswitch/trunk/libs/win32/Download 8khz Sounds.2008.vcproj Modified: freeswitch/trunk/libs/win32/Dowload 32khz Sounds.2008.vcproj ============================================================================== --- freeswitch/trunk/libs/win32/Dowload 32khz Sounds.2008.vcproj (original) +++ freeswitch/trunk/libs/win32/Dowload 32khz Sounds.2008.vcproj Thu Jan 1 18:48:32 2009 @@ -75,7 +75,7 @@ @@ -85,7 +85,7 @@ Modified: freeswitch/trunk/libs/win32/Download 16khz Sounds.2008.vcproj ============================================================================== --- freeswitch/trunk/libs/win32/Download 16khz Sounds.2008.vcproj (original) +++ freeswitch/trunk/libs/win32/Download 16khz Sounds.2008.vcproj Thu Jan 1 18:48:32 2009 @@ -75,7 +75,7 @@ @@ -85,7 +85,7 @@ Modified: freeswitch/trunk/libs/win32/Download 8khz Sounds.2008.vcproj ============================================================================== --- freeswitch/trunk/libs/win32/Download 8khz Sounds.2008.vcproj (original) +++ freeswitch/trunk/libs/win32/Download 8khz Sounds.2008.vcproj Thu Jan 1 18:48:32 2009 @@ -75,7 +75,7 @@ @@ -85,7 +85,7 @@ From mikej at freeswitch.org Thu Jan 1 16:55:27 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 19:55:27 -0500 Subject: [Freeswitch-svn] [commit] r11049 - in freeswitch/trunk/libs: portaudio/src/os/win win32/flite win32/pocketsphinx win32/sphinxbase Message-ID: Author: mikej Date: Thu Jan 1 19:55:26 2009 New Revision: 11049 Log: warnings cleanup Modified: freeswitch/trunk/libs/portaudio/src/os/win/pa_win_wdmks_utils.c freeswitch/trunk/libs/portaudio/src/os/win/pa_x86_plain_converters.c freeswitch/trunk/libs/win32/flite/flite.2008.vcproj freeswitch/trunk/libs/win32/pocketsphinx/pocketsphinx.2008.vcproj freeswitch/trunk/libs/win32/sphinxbase/sphinxbase.2008.vcproj Modified: freeswitch/trunk/libs/portaudio/src/os/win/pa_win_wdmks_utils.c ============================================================================== --- freeswitch/trunk/libs/portaudio/src/os/win/pa_win_wdmks_utils.c (original) +++ freeswitch/trunk/libs/portaudio/src/os/win/pa_win_wdmks_utils.c Thu Jan 1 19:55:26 2009 @@ -185,7 +185,8 @@ int PaWin_WDMKS_QueryFilterMaximumChannelCount( void *wcharDevicePath, int isInput ) { HANDLE deviceHandle; - int pinCount, pinId, i; + int pinCount, pinId; + ULONG i; int result = 0; KSPIN_DATAFLOW requiredDataflowDirection = (isInput ? KSPIN_DATAFLOW_OUT : KSPIN_DATAFLOW_IN ); Modified: freeswitch/trunk/libs/portaudio/src/os/win/pa_x86_plain_converters.c ============================================================================== --- freeswitch/trunk/libs/portaudio/src/os/win/pa_x86_plain_converters.c (original) +++ freeswitch/trunk/libs/portaudio/src/os/win/pa_x86_plain_converters.c Thu Jan 1 19:55:26 2009 @@ -124,7 +124,7 @@ #define PA_DITHER_BITS_ (15) /* Multiply by PA_FLOAT_DITHER_SCALE_ to get a float between -2.0 and +1.99999 */ -#define PA_FLOAT_DITHER_SCALE_ (1.0 / ((1< - - @@ -721,15 +715,15 @@ > @@ -742,4 +736,4 @@ - \ No newline at end of file + Modified: freeswitch/trunk/libs/win32/pocketsphinx/pocketsphinx.2008.vcproj ============================================================================== --- freeswitch/trunk/libs/win32/pocketsphinx/pocketsphinx.2008.vcproj (original) +++ freeswitch/trunk/libs/win32/pocketsphinx/pocketsphinx.2008.vcproj Thu Jan 1 19:55:26 2009 @@ -59,7 +59,7 @@ AssemblerListingLocation=".\Release/" ObjectFile=".\Release/" ProgramDataBaseFileName=".\Release/" - WarningLevel="3" + WarningLevel="0" SuppressStartupBanner="true" /> @@ -278,11 +278,11 @@ > @@ -474,7 +474,6 @@ PreprocessorDefinitions="" /> - - - - - - - - - - - - - - - - - - - - - - - - - - Author: mikej Date: Thu Jan 1 20:04:01 2009 New Revision: 11050 Log: warnings cleanup Modified: freeswitch/trunk/Freeswitch.2008.express.sln Modified: freeswitch/trunk/Freeswitch.2008.express.sln ============================================================================== --- freeswitch/trunk/Freeswitch.2008.express.sln (original) +++ freeswitch/trunk/Freeswitch.2008.express.sln Thu Jan 1 20:04:01 2009 @@ -594,12 +594,9 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_managed", "src\mod\languages\mod_managed\mod_managed.vcproj", "{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}" ProjectSection(ProjectDependencies) = postProject - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0} = {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0} {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSWITCH.Managed", "src\mod\languages\mod_managed\managed\FreeSWITCH.Managed.csproj", "{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download mpg123", "libs\win32\Download mpg123.2008.vcproj", "{E796E337-DE78-4303-8614-9A590862EE95}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmpg123", "libs\win32\mpg123\libmpg123.2008.vcproj", "{419C8F80-D858-4B48-A25C-AF4007608137}" @@ -634,6204 +631,764 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug DirectSound|Win32 = Debug DirectSound|Win32 - Debug DirectSound|x64 = Debug DirectSound|x64 - Debug DLL|Win32 = Debug DLL|Win32 - Debug DLL|x64 = Debug DLL|x64 - Debug MS-LDAP|Win32 = Debug MS-LDAP|Win32 - Debug MS-LDAP|x64 = Debug MS-LDAP|x64 - Debug Passthrough|Win32 = Debug Passthrough|Win32 - Debug Passthrough|x64 = Debug Passthrough|x64 - Debug Static|Win32 = Debug Static|Win32 - Debug Static|x64 = Debug Static|x64 - Debug_CLR|Win32 = Debug_CLR|Win32 - Debug_CLR|x64 = Debug_CLR|x64 - Debug_Mono|Win32 = Debug_Mono|Win32 - Debug_Mono|x64 = Debug_Mono|x64 Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 - Release DirectSound|Win32 = Release DirectSound|Win32 - Release DirectSound|x64 = Release DirectSound|x64 - Release DLL|Win32 = Release DLL|Win32 - Release DLL|x64 = Release DLL|x64 - Release MS-LDAP|Win32 = Release MS-LDAP|Win32 - Release MS-LDAP|x64 = Release MS-LDAP|x64 - Release Passthrough|Win32 = Release Passthrough|Win32 - Release Passthrough|x64 = Release Passthrough|x64 - Release Static|Win32 = Release Static|Win32 - Release Static|x64 = Release Static|x64 - Release_CLR|Win32 = Release_CLR|Win32 - Release_CLR|x64 = Release_CLR|x64 - Release_Mono|Win32 = Release_Mono|Win32 - Release_Mono|x64 = Release_Mono|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DLL|Win32.Build.0 = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Static|Win32.Build.0 = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.ActiveCfg = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.Build.0 = Debug|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.ActiveCfg = Debug|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DirectSound|Win32.Build.0 = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DLL|Win32.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DLL|Win32.Build.0 = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release DLL|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Passthrough|Win32.Build.0 = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Static|Win32.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Static|Win32.Build.0 = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release Static|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_CLR|Win32.Build.0 = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_Mono|Win32.Build.0 = Release|Win32 - {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release_Mono|x64.ActiveCfg = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.ActiveCfg = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.Build.0 = Release|Win32 {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DLL|Win32.Build.0 = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Static|Win32.Build.0 = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug Static|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.ActiveCfg = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.Build.0 = Debug|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.ActiveCfg = Debug|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DirectSound|Win32.Build.0 = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DLL|Win32.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DLL|Win32.Build.0 = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release DLL|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Passthrough|Win32.Build.0 = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Static|Win32.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Static|Win32.Build.0 = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release Static|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_CLR|Win32.Build.0 = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_CLR|x64.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_Mono|Win32.Build.0 = Release|Win32 - {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release_Mono|x64.ActiveCfg = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.ActiveCfg = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.Build.0 = Release|Win32 {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.ActiveCfg = Release|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DirectSound|Win32.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DirectSound|Win32.Build.0 = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DirectSound|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DLL|Win32.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DLL|Win32.Build.0 = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug DLL|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug MS-LDAP|Win32.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug MS-LDAP|Win32.Build.0 = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug MS-LDAP|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Passthrough|Win32.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Passthrough|Win32.Build.0 = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Passthrough|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Static|Win32.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Static|Win32.Build.0 = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug Static|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_CLR|Win32.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_CLR|Win32.Build.0 = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_CLR|x64.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_Mono|Win32.ActiveCfg = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_Mono|Win32.Build.0 = Debug Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug_Mono|x64.ActiveCfg = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.Build.0 = Debug Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.ActiveCfg = Debug|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DirectSound|Win32.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DirectSound|Win32.Build.0 = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DirectSound|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DLL|Win32.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DLL|Win32.Build.0 = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release DLL|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release MS-LDAP|Win32.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release MS-LDAP|Win32.Build.0 = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release MS-LDAP|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Passthrough|Win32.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Passthrough|Win32.Build.0 = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Passthrough|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Static|Win32.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Static|Win32.Build.0 = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release Static|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_CLR|Win32.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_CLR|Win32.Build.0 = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_CLR|x64.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_Mono|Win32.ActiveCfg = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_Mono|Win32.Build.0 = Release Passthrough|Win32 - {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release_Mono|x64.ActiveCfg = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.ActiveCfg = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.Build.0 = Release Passthrough|Win32 {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DLL|Win32.Build.0 = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Static|Win32.Build.0 = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug Static|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.ActiveCfg = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.Build.0 = Debug|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.ActiveCfg = Debug|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DirectSound|Win32.Build.0 = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DLL|Win32.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DLL|Win32.Build.0 = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release DLL|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Passthrough|Win32.Build.0 = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Static|Win32.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Static|Win32.Build.0 = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release Static|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_CLR|Win32.Build.0 = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_CLR|x64.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_Mono|Win32.Build.0 = Release|Win32 - {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release_Mono|x64.ActiveCfg = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.ActiveCfg = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.Build.0 = Release|Win32 {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DLL|Win32.Build.0 = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Static|Win32.Build.0 = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug Static|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Win32.ActiveCfg = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|Win32.Build.0 = Debug|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Debug|x64.ActiveCfg = Debug|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DirectSound|Win32.Build.0 = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DLL|Win32.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DLL|Win32.Build.0 = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release DLL|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Passthrough|Win32.Build.0 = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Static|Win32.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Static|Win32.Build.0 = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release Static|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_CLR|Win32.Build.0 = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_CLR|x64.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_Mono|Win32.Build.0 = Release|Win32 - {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release_Mono|x64.ActiveCfg = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Win32.ActiveCfg = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|Win32.Build.0 = Release|Win32 {3A5B9131-F20C-4A85-9447-6C1610941CEE}.Release|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DLL|Win32.Build.0 = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Static|Win32.Build.0 = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug Static|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.ActiveCfg = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.Build.0 = Debug|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.ActiveCfg = Debug|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DirectSound|Win32.Build.0 = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DLL|Win32.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DLL|Win32.Build.0 = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release DLL|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Passthrough|Win32.Build.0 = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Static|Win32.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Static|Win32.Build.0 = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release Static|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_CLR|Win32.Build.0 = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_CLR|x64.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_Mono|Win32.Build.0 = Release|Win32 - {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release_Mono|x64.ActiveCfg = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.ActiveCfg = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.Build.0 = Release|Win32 {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DLL|Win32.Build.0 = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Static|Win32.Build.0 = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug Static|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.ActiveCfg = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.Build.0 = Debug|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.ActiveCfg = Debug|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DirectSound|Win32.Build.0 = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DLL|Win32.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DLL|Win32.Build.0 = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release DLL|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Passthrough|Win32.Build.0 = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Static|Win32.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Static|Win32.Build.0 = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release Static|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_CLR|Win32.Build.0 = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_CLR|x64.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_Mono|Win32.Build.0 = Release|Win32 - {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release_Mono|x64.ActiveCfg = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.ActiveCfg = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.Build.0 = Release|Win32 {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DLL|Win32.Build.0 = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Static|Win32.Build.0 = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Win32.ActiveCfg = Debug|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|x64.ActiveCfg = Debug|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DirectSound|Win32.Build.0 = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DLL|Win32.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DLL|Win32.Build.0 = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release DLL|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Passthrough|Win32.Build.0 = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Static|Win32.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Static|Win32.Build.0 = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release Static|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_CLR|Win32.Build.0 = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_Mono|Win32.Build.0 = Release|Win32 - {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release_Mono|x64.ActiveCfg = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Win32.ActiveCfg = Release|Win32 {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DLL|Win32.Build.0 = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Static|Win32.Build.0 = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug Static|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.ActiveCfg = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.Build.0 = Debug|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.ActiveCfg = Debug|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DirectSound|Win32.Build.0 = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DLL|Win32.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DLL|Win32.Build.0 = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release DLL|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Passthrough|Win32.Build.0 = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Static|Win32.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Static|Win32.Build.0 = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release Static|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_CLR|Win32.Build.0 = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_CLR|x64.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_Mono|Win32.Build.0 = Release|Win32 - {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release_Mono|x64.ActiveCfg = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.ActiveCfg = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.Build.0 = Release|Win32 {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.ActiveCfg = Release|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DirectSound|Win32.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DirectSound|Win32.Build.0 = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DirectSound|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DLL|Win32.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DLL|Win32.Build.0 = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug DLL|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug MS-LDAP|Win32.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug MS-LDAP|Win32.Build.0 = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug MS-LDAP|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Passthrough|Win32.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Passthrough|Win32.Build.0 = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Passthrough|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Static|Win32.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Static|Win32.Build.0 = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug Static|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_CLR|Win32.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_CLR|Win32.Build.0 = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_CLR|x64.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_Mono|Win32.ActiveCfg = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_Mono|Win32.Build.0 = Debug MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug_Mono|x64.ActiveCfg = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.ActiveCfg = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.Build.0 = Debug MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.ActiveCfg = Debug|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DirectSound|Win32.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DirectSound|Win32.Build.0 = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DirectSound|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DLL|Win32.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DLL|Win32.Build.0 = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release DLL|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release MS-LDAP|Win32.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release MS-LDAP|Win32.Build.0 = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release MS-LDAP|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Passthrough|Win32.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Passthrough|Win32.Build.0 = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Passthrough|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Static|Win32.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Static|Win32.Build.0 = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release Static|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_CLR|Win32.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_CLR|Win32.Build.0 = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_CLR|x64.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_Mono|Win32.ActiveCfg = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_Mono|Win32.Build.0 = Release MS-LDAP|Win32 - {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release_Mono|x64.ActiveCfg = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.ActiveCfg = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.Build.0 = Release MS-LDAP|Win32 {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DLL|Win32.Build.0 = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Static|Win32.Build.0 = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug Static|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.ActiveCfg = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.Build.0 = Debug|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.ActiveCfg = Debug|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DirectSound|Win32.Build.0 = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DLL|Win32.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DLL|Win32.Build.0 = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release DLL|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Passthrough|Win32.Build.0 = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Static|Win32.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Static|Win32.Build.0 = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release Static|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_CLR|Win32.Build.0 = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_CLR|x64.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_Mono|Win32.Build.0 = Release|Win32 - {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release_Mono|x64.ActiveCfg = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.ActiveCfg = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.Build.0 = Release|Win32 {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DLL|Win32.Build.0 = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Static|Win32.Build.0 = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug Static|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Win32.ActiveCfg = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|Win32.Build.0 = Debug|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Debug|x64.ActiveCfg = Debug|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DirectSound|Win32.Build.0 = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DLL|Win32.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DLL|Win32.Build.0 = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release DLL|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Passthrough|Win32.Build.0 = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Static|Win32.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Static|Win32.Build.0 = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release Static|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_CLR|Win32.Build.0 = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_CLR|x64.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_Mono|Win32.Build.0 = Release|Win32 - {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release_Mono|x64.ActiveCfg = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Win32.ActiveCfg = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|Win32.Build.0 = Release|Win32 {C7705DC4-2088-493E-AF8D-65BC6D65C125}.Release|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DLL|Win32.Build.0 = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Static|Win32.Build.0 = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug Static|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.ActiveCfg = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.Build.0 = Debug|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.ActiveCfg = Debug|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DirectSound|Win32.Build.0 = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DLL|Win32.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DLL|Win32.Build.0 = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release DLL|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Passthrough|Win32.Build.0 = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Static|Win32.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Static|Win32.Build.0 = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release Static|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_CLR|Win32.Build.0 = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_CLR|x64.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_Mono|Win32.Build.0 = Release|Win32 - {784113EF-44D9-4949-835D-7065D3C7AD08}.Release_Mono|x64.ActiveCfg = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.ActiveCfg = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.Build.0 = Release|Win32 {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DLL|Win32.Build.0 = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Static|Win32.Build.0 = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug Static|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.ActiveCfg = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.Build.0 = Debug|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.ActiveCfg = Debug|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DirectSound|Win32.Build.0 = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DLL|Win32.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DLL|Win32.Build.0 = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release DLL|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Passthrough|Win32.Build.0 = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Static|Win32.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Static|Win32.Build.0 = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release Static|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_CLR|Win32.Build.0 = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_CLR|x64.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_Mono|Win32.Build.0 = Release|Win32 - {89385C74-5860-4174-9CAF-A39E7C48909C}.Release_Mono|x64.ActiveCfg = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.ActiveCfg = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.Build.0 = Release|Win32 {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DLL|Win32.Build.0 = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Static|Win32.Build.0 = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.ActiveCfg = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.Build.0 = Debug|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64.ActiveCfg = Debug|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DirectSound|Win32.Build.0 = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DLL|Win32.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DLL|Win32.Build.0 = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release DLL|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Passthrough|Win32.Build.0 = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Static|Win32.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Static|Win32.Build.0 = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release Static|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_CLR|Win32.Build.0 = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_Mono|Win32.Build.0 = Release|Win32 - {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release_Mono|x64.ActiveCfg = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.ActiveCfg = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.Build.0 = Release|Win32 {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DLL|Win32.Build.0 = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Static|Win32.Build.0 = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug Static|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Win32.ActiveCfg = Debug|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x64.ActiveCfg = Debug|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DirectSound|Win32.Build.0 = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DLL|Win32.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DLL|Win32.Build.0 = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release DLL|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Passthrough|Win32.Build.0 = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Static|Win32.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Static|Win32.Build.0 = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release Static|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_CLR|Win32.Build.0 = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_CLR|x64.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_Mono|Win32.Build.0 = Release|Win32 - {692F6330-4D87-4C82-81DF-40DB5892636E}.Release_Mono|x64.ActiveCfg = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Win32.ActiveCfg = Release|Win32 {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DLL|Win32.Build.0 = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Static|Win32.Build.0 = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.ActiveCfg = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.Build.0 = Debug|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.ActiveCfg = Debug|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DirectSound|Win32.Build.0 = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DLL|Win32.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DLL|Win32.Build.0 = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release DLL|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Passthrough|Win32.Build.0 = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Static|Win32.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Static|Win32.Build.0 = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release Static|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_CLR|Win32.Build.0 = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_Mono|Win32.Build.0 = Release|Win32 - {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release_Mono|x64.ActiveCfg = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.ActiveCfg = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DLL|Win32.Build.0 = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Static|Win32.Build.0 = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug Static|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.ActiveCfg = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.Build.0 = Debug|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DirectSound|Win32.Build.0 = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DLL|Win32.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DLL|Win32.Build.0 = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release DLL|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Passthrough|Win32.Build.0 = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Static|Win32.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Static|Win32.Build.0 = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release Static|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_CLR|Win32.Build.0 = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_CLR|x64.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_Mono|Win32.Build.0 = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release_Mono|x64.ActiveCfg = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.ActiveCfg = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.Build.0 = Release|Win32 {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DLL|Win32.Build.0 = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Static|Win32.Build.0 = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug Static|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.ActiveCfg = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.Build.0 = Debug|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.ActiveCfg = Debug|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DirectSound|Win32.Build.0 = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DLL|Win32.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DLL|Win32.Build.0 = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release DLL|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Passthrough|Win32.Build.0 = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Static|Win32.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Static|Win32.Build.0 = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release Static|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_CLR|Win32.Build.0 = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_CLR|x64.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_Mono|Win32.Build.0 = Release|Win32 - {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release_Mono|x64.ActiveCfg = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.ActiveCfg = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.Build.0 = Release|Win32 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DLL|Win32.Build.0 = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Static|Win32.Build.0 = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.ActiveCfg = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.Build.0 = Debug|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.ActiveCfg = Debug|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release DirectSound|Win32.Build.0 = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release DLL|Win32.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release DLL|Win32.Build.0 = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release DLL|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release Passthrough|Win32.Build.0 = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release Static|Win32.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release Static|Win32.Build.0 = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release Static|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release_CLR|Win32.Build.0 = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release_Mono|Win32.Build.0 = Release|Win32 - {1C453396-D912-4213-89FD-9B489162B7B5}.Release_Mono|x64.ActiveCfg = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.ActiveCfg = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.Build.0 = Release|Win32 {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DLL|Win32.Build.0 = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Static|Win32.Build.0 = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug Static|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.ActiveCfg = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.Build.0 = Debug|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.ActiveCfg = Debug|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DirectSound|Win32.Build.0 = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DLL|Win32.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DLL|Win32.Build.0 = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release DLL|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Passthrough|Win32.Build.0 = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Static|Win32.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Static|Win32.Build.0 = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release Static|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_CLR|Win32.Build.0 = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_CLR|x64.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_Mono|Win32.Build.0 = Release|Win32 - {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release_Mono|x64.ActiveCfg = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.ActiveCfg = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.Build.0 = Release|Win32 {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DLL|Win32.Build.0 = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Static|Win32.Build.0 = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug Static|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.ActiveCfg = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.Build.0 = Debug|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.ActiveCfg = Debug|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DirectSound|Win32.Build.0 = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DLL|Win32.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DLL|Win32.Build.0 = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release DLL|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Passthrough|Win32.Build.0 = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Static|Win32.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Static|Win32.Build.0 = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release Static|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_CLR|Win32.Build.0 = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_CLR|x64.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_Mono|Win32.Build.0 = Release|Win32 - {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release_Mono|x64.ActiveCfg = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.ActiveCfg = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.Build.0 = Release|Win32 {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DLL|Win32.Build.0 = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Static|Win32.Build.0 = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug Static|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.ActiveCfg = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.Build.0 = Debug|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.ActiveCfg = Debug|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release DirectSound|Win32.Build.0 = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release DLL|Win32.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release DLL|Win32.Build.0 = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release DLL|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release Passthrough|Win32.Build.0 = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release Static|Win32.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release Static|Win32.Build.0 = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release Static|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release_CLR|Win32.Build.0 = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release_CLR|x64.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release_Mono|Win32.Build.0 = Release|Win32 - {C24FB505-05D7-4319-8485-7540B44C8603}.Release_Mono|x64.ActiveCfg = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.ActiveCfg = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.Build.0 = Release|Win32 {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DLL|Win32.Build.0 = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Static|Win32.Build.0 = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug Static|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.ActiveCfg = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.Build.0 = Debug|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.ActiveCfg = Debug|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DirectSound|Win32.Build.0 = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DLL|Win32.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DLL|Win32.Build.0 = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release DLL|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Passthrough|Win32.Build.0 = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Static|Win32.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Static|Win32.Build.0 = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release Static|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_CLR|Win32.Build.0 = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_CLR|x64.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_Mono|Win32.Build.0 = Release|Win32 - {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release_Mono|x64.ActiveCfg = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.ActiveCfg = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.Build.0 = Release|Win32 {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DLL|Win32.Build.0 = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Static|Win32.Build.0 = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug Static|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.ActiveCfg = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.Build.0 = Debug|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.ActiveCfg = Debug|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DirectSound|Win32.Build.0 = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DLL|Win32.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DLL|Win32.Build.0 = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release DLL|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Passthrough|Win32.Build.0 = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Static|Win32.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Static|Win32.Build.0 = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release Static|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_CLR|Win32.Build.0 = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_CLR|x64.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_Mono|Win32.Build.0 = Release|Win32 - {05515420-16DE-4E63-BE73-85BE85BA5142}.Release_Mono|x64.ActiveCfg = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.ActiveCfg = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DLL|Win32.Build.0 = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Static|Win32.Build.0 = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug Static|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Win32.ActiveCfg = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|Win32.Build.0 = Debug|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Debug|x64.ActiveCfg = Debug|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DirectSound|Win32.Build.0 = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DLL|Win32.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DLL|Win32.Build.0 = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release DLL|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Passthrough|Win32.Build.0 = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Static|Win32.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Static|Win32.Build.0 = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release Static|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_CLR|Win32.Build.0 = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_CLR|x64.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_Mono|Win32.Build.0 = Release|Win32 - {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release_Mono|x64.ActiveCfg = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.ActiveCfg = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|x64.ActiveCfg = Release|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DirectSound|Win32.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DirectSound|Win32.Build.0 = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DirectSound|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug DLL|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug MS-LDAP|Win32.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug MS-LDAP|Win32.Build.0 = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug MS-LDAP|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Passthrough|Win32.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Passthrough|Win32.Build.0 = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Passthrough|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Static|Win32.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Static|Win32.Build.0 = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug Static|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_CLR|Win32.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_CLR|Win32.Build.0 = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_CLR|x64.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_Mono|Win32.ActiveCfg = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_Mono|Win32.Build.0 = Debug DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug_Mono|x64.ActiveCfg = Debug DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DirectSound|Win32.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DirectSound|Win32.Build.0 = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DirectSound|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DLL|Win32.Build.0 = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release DLL|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release MS-LDAP|Win32.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release MS-LDAP|Win32.Build.0 = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release MS-LDAP|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Passthrough|Win32.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Passthrough|Win32.Build.0 = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Passthrough|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Static|Win32.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Static|Win32.Build.0 = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release Static|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_CLR|Win32.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_CLR|Win32.Build.0 = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_CLR|x64.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_Mono|Win32.ActiveCfg = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_Mono|Win32.Build.0 = Release DLL|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release_Mono|x64.ActiveCfg = Release DLL|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.ActiveCfg = Release|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.Build.0 = Release|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.ActiveCfg = Release|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DirectSound|Win32.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DirectSound|Win32.Build.0 = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DirectSound|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DLL|Win32.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DLL|Win32.Build.0 = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug DLL|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug MS-LDAP|Win32.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug MS-LDAP|Win32.Build.0 = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug MS-LDAP|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Passthrough|Win32.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Passthrough|Win32.Build.0 = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Passthrough|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Static|Win32.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Static|Win32.Build.0 = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Static|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_CLR|Win32.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_CLR|Win32.Build.0 = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_CLR|x64.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_Mono|Win32.ActiveCfg = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_Mono|Win32.Build.0 = Debug Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug_Mono|x64.ActiveCfg = Debug Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.ActiveCfg = Debug|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.Build.0 = Debug|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.ActiveCfg = Debug|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DirectSound|Win32.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DirectSound|Win32.Build.0 = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DirectSound|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DLL|Win32.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DLL|Win32.Build.0 = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release DLL|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release MS-LDAP|Win32.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release MS-LDAP|Win32.Build.0 = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release MS-LDAP|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Passthrough|Win32.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Passthrough|Win32.Build.0 = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Passthrough|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Static|Win32.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Static|Win32.Build.0 = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Static|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_CLR|Win32.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_CLR|Win32.Build.0 = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_CLR|x64.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_Mono|Win32.ActiveCfg = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_Mono|Win32.Build.0 = Release Dll|Win32 - {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release_Mono|x64.ActiveCfg = Release Dll|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.ActiveCfg = Release|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.Build.0 = Release|Win32 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.ActiveCfg = Release|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DirectSound|Win32.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DirectSound|Win32.Build.0 = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DirectSound|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug DLL|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug MS-LDAP|Win32.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug MS-LDAP|Win32.Build.0 = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug MS-LDAP|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Passthrough|Win32.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Passthrough|Win32.Build.0 = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Passthrough|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Static|Win32.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Static|Win32.Build.0 = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug Static|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_CLR|Win32.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_CLR|Win32.Build.0 = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_CLR|x64.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_Mono|Win32.ActiveCfg = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_Mono|Win32.Build.0 = Debug DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug_Mono|x64.ActiveCfg = Debug DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.ActiveCfg = Debug|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.Build.0 = Debug|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.ActiveCfg = Debug|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DirectSound|Win32.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DirectSound|Win32.Build.0 = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DirectSound|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DLL|Win32.Build.0 = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release DLL|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release MS-LDAP|Win32.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release MS-LDAP|Win32.Build.0 = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release MS-LDAP|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Passthrough|Win32.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Passthrough|Win32.Build.0 = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Passthrough|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Static|Win32.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Static|Win32.Build.0 = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release Static|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_CLR|Win32.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_CLR|Win32.Build.0 = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_CLR|x64.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_Mono|Win32.ActiveCfg = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_Mono|Win32.Build.0 = Release DLL|Win32 - {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release_Mono|x64.ActiveCfg = Release DLL|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.ActiveCfg = Release|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.Build.0 = Release|Win32 {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.ActiveCfg = Release|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DirectSound|Win32.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DirectSound|Win32.Build.0 = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DirectSound|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug DLL|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug MS-LDAP|Win32.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug MS-LDAP|Win32.Build.0 = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug MS-LDAP|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Passthrough|Win32.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Passthrough|Win32.Build.0 = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Passthrough|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Static|Win32.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Static|Win32.Build.0 = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug Static|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_CLR|Win32.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_CLR|Win32.Build.0 = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_CLR|x64.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_Mono|Win32.ActiveCfg = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_Mono|Win32.Build.0 = Debug DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug_Mono|x64.ActiveCfg = Debug DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.ActiveCfg = Debug|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.Build.0 = Debug|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.ActiveCfg = Debug|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DirectSound|Win32.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DirectSound|Win32.Build.0 = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DirectSound|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DLL|Win32.Build.0 = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release DLL|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release MS-LDAP|Win32.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release MS-LDAP|Win32.Build.0 = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release MS-LDAP|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Passthrough|Win32.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Passthrough|Win32.Build.0 = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Passthrough|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Static|Win32.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Static|Win32.Build.0 = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release Static|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_CLR|Win32.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_CLR|Win32.Build.0 = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_CLR|x64.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_Mono|Win32.ActiveCfg = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_Mono|Win32.Build.0 = Release DLL|Win32 - {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release_Mono|x64.ActiveCfg = Release DLL|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.ActiveCfg = Release|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.Build.0 = Release|Win32 {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DLL|Win32.Build.0 = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Static|Win32.Build.0 = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.ActiveCfg = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DirectSound|Win32.Build.0 = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DLL|Win32.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DLL|Win32.Build.0 = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release DLL|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Passthrough|Win32.Build.0 = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Static|Win32.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Static|Win32.Build.0 = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release Static|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_CLR|Win32.Build.0 = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_Mono|Win32.Build.0 = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release_Mono|x64.ActiveCfg = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DLL|Win32.Build.0 = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Static|Win32.Build.0 = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug Static|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Win32.ActiveCfg = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|Win32.Build.0 = Debug|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Debug|x64.ActiveCfg = Debug|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DirectSound|Win32.Build.0 = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DLL|Win32.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DLL|Win32.Build.0 = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release DLL|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Passthrough|Win32.Build.0 = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Static|Win32.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Static|Win32.Build.0 = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release Static|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_CLR|Win32.Build.0 = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_CLR|x64.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_Mono|Win32.Build.0 = Release|Win32 - {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release_Mono|x64.ActiveCfg = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Win32.ActiveCfg = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|Win32.Build.0 = Release|Win32 {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}.Release|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DLL|Win32.Build.0 = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Static|Win32.Build.0 = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug Static|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.ActiveCfg = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.Build.0 = Debug|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.ActiveCfg = Debug|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DirectSound|Win32.Build.0 = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DLL|Win32.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DLL|Win32.Build.0 = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release DLL|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Passthrough|Win32.Build.0 = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Static|Win32.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Static|Win32.Build.0 = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release Static|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_CLR|Win32.Build.0 = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_CLR|x64.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_Mono|Win32.Build.0 = Release|Win32 - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release_Mono|x64.ActiveCfg = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DLL|Win32.Build.0 = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Static|Win32.Build.0 = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug Static|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DirectSound|Win32.Build.0 = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DLL|Win32.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DLL|Win32.Build.0 = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release DLL|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Passthrough|Win32.Build.0 = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Static|Win32.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Static|Win32.Build.0 = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release Static|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_CLR|Win32.Build.0 = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_CLR|x64.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_Mono|Win32.Build.0 = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release_Mono|x64.ActiveCfg = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.ActiveCfg = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.Build.0 = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DLL|Win32.Build.0 = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Static|Win32.Build.0 = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Win32.ActiveCfg = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|Win32.Build.0 = Debug|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Debug|x64.ActiveCfg = Debug|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DirectSound|Win32.Build.0 = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DLL|Win32.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DLL|Win32.Build.0 = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release DLL|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Passthrough|Win32.Build.0 = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Static|Win32.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Static|Win32.Build.0 = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release Static|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_CLR|Win32.Build.0 = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_Mono|Win32.Build.0 = Release|Win32 - {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release_Mono|x64.ActiveCfg = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Win32.ActiveCfg = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|Win32.Build.0 = Release|Win32 {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}.Release|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DLL|Win32.Build.0 = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Static|Win32.Build.0 = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug Static|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.ActiveCfg = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.Build.0 = Debug|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.ActiveCfg = Debug|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DirectSound|Win32.Build.0 = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DLL|Win32.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DLL|Win32.Build.0 = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release DLL|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Passthrough|Win32.Build.0 = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Static|Win32.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Static|Win32.Build.0 = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release Static|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_CLR|Win32.Build.0 = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_CLR|x64.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_Mono|Win32.Build.0 = Release|Win32 - {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release_Mono|x64.ActiveCfg = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.ActiveCfg = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DLL|Win32.Build.0 = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Static|Win32.Build.0 = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug Static|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Win32.ActiveCfg = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|Win32.Build.0 = Debug|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Debug|x64.ActiveCfg = Debug|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DirectSound|Win32.Build.0 = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DLL|Win32.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DLL|Win32.Build.0 = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release DLL|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Passthrough|Win32.Build.0 = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Static|Win32.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Static|Win32.Build.0 = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release Static|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_CLR|Win32.Build.0 = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_CLR|x64.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_Mono|Win32.Build.0 = Release|Win32 - {5927104D-C14C-4AC8-925C-4AB681762E75}.Release_Mono|x64.ActiveCfg = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Win32.ActiveCfg = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release|Win32.Build.0 = Release|Win32 {5927104D-C14C-4AC8-925C-4AB681762E75}.Release|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DLL|Win32.Build.0 = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Static|Win32.Build.0 = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Win32.ActiveCfg = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|Win32.Build.0 = Debug|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Debug|x64.ActiveCfg = Debug|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DirectSound|Win32.Build.0 = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DLL|Win32.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DLL|Win32.Build.0 = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release DLL|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Passthrough|Win32.Build.0 = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Static|Win32.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Static|Win32.Build.0 = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release Static|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_CLR|Win32.Build.0 = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_Mono|Win32.Build.0 = Release|Win32 - {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release_Mono|x64.ActiveCfg = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Win32.ActiveCfg = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|Win32.Build.0 = Release|Win32 {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}.Release|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DLL|Win32.Build.0 = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Static|Win32.Build.0 = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug Static|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Win32.ActiveCfg = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|Win32.Build.0 = Debug|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Debug|x64.ActiveCfg = Debug|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DirectSound|Win32.Build.0 = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DLL|Win32.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DLL|Win32.Build.0 = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release DLL|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Passthrough|Win32.Build.0 = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Static|Win32.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Static|Win32.Build.0 = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release Static|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_CLR|Win32.Build.0 = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_CLR|x64.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_Mono|Win32.Build.0 = Release|Win32 - {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release_Mono|x64.ActiveCfg = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Win32.ActiveCfg = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|Win32.Build.0 = Release|Win32 {49C34584-B6DA-448F-83CF-27584DC9FC90}.Release|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DLL|Win32.Build.0 = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Static|Win32.Build.0 = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug Static|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.ActiveCfg = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.Build.0 = Debug|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.ActiveCfg = Debug|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DirectSound|Win32.Build.0 = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DLL|Win32.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DLL|Win32.Build.0 = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release DLL|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Passthrough|Win32.Build.0 = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Static|Win32.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Static|Win32.Build.0 = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release Static|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_CLR|Win32.Build.0 = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_CLR|x64.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_Mono|Win32.Build.0 = Release|Win32 - {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release_Mono|x64.ActiveCfg = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.ActiveCfg = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.Build.0 = Release|Win32 {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DLL|Win32.Build.0 = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Static|Win32.Build.0 = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug Static|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.ActiveCfg = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.Build.0 = Debug|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.ActiveCfg = Debug|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DirectSound|Win32.Build.0 = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DLL|Win32.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DLL|Win32.Build.0 = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release DLL|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Passthrough|Win32.Build.0 = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Static|Win32.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Static|Win32.Build.0 = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release Static|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_CLR|Win32.Build.0 = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_CLR|x64.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_Mono|Win32.Build.0 = Release|Win32 - {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release_Mono|x64.ActiveCfg = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.ActiveCfg = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.Build.0 = Release|Win32 {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DLL|Win32.Build.0 = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Static|Win32.Build.0 = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug Static|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.ActiveCfg = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.Build.0 = Debug|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DirectSound|Win32.Build.0 = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DLL|Win32.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DLL|Win32.Build.0 = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release DLL|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Passthrough|Win32.Build.0 = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Static|Win32.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Static|Win32.Build.0 = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release Static|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_CLR|Win32.Build.0 = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_CLR|x64.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_Mono|Win32.Build.0 = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release_Mono|x64.ActiveCfg = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.ActiveCfg = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.Build.0 = Release|Win32 {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DLL|Win32.Build.0 = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Static|Win32.Build.0 = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug Static|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.ActiveCfg = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.Build.0 = Debug|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.ActiveCfg = Debug|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DirectSound|Win32.Build.0 = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DLL|Win32.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DLL|Win32.Build.0 = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release DLL|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Passthrough|Win32.Build.0 = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Static|Win32.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Static|Win32.Build.0 = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release Static|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_CLR|Win32.Build.0 = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_CLR|x64.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_Mono|Win32.Build.0 = Release|Win32 - {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release_Mono|x64.ActiveCfg = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.ActiveCfg = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.Build.0 = Release|Win32 {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DLL|Win32.Build.0 = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Static|Win32.Build.0 = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.ActiveCfg = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.Build.0 = Debug|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.ActiveCfg = Debug|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DirectSound|Win32.Build.0 = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DLL|Win32.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DLL|Win32.Build.0 = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release DLL|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Passthrough|Win32.Build.0 = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Static|Win32.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Static|Win32.Build.0 = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release Static|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_CLR|Win32.Build.0 = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_Mono|Win32.Build.0 = Release|Win32 - {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release_Mono|x64.ActiveCfg = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.ActiveCfg = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.Build.0 = Release|Win32 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DLL|Win32.Build.0 = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Static|Win32.Build.0 = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug Static|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.ActiveCfg = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.Build.0 = Debug|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.ActiveCfg = Debug|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DirectSound|Win32.Build.0 = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DLL|Win32.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DLL|Win32.Build.0 = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release DLL|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Passthrough|Win32.Build.0 = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Static|Win32.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Static|Win32.Build.0 = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release Static|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_CLR|Win32.Build.0 = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_CLR|x64.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_Mono|Win32.Build.0 = Release|Win32 - {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release_Mono|x64.ActiveCfg = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.ActiveCfg = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.Build.0 = Release|Win32 {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DLL|Win32.Build.0 = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Static|Win32.Build.0 = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug Static|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.ActiveCfg = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.Build.0 = Debug|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.ActiveCfg = Debug|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DirectSound|Win32.Build.0 = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DLL|Win32.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DLL|Win32.Build.0 = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release DLL|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Passthrough|Win32.Build.0 = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Static|Win32.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Static|Win32.Build.0 = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release Static|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_CLR|Win32.Build.0 = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_CLR|x64.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_Mono|Win32.Build.0 = Release|Win32 - {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release_Mono|x64.ActiveCfg = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.ActiveCfg = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.Build.0 = Release|Win32 {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.ActiveCfg = Release|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DirectSound|Win32.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DirectSound|Win32.Build.0 = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DirectSound|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DLL|Win32.Build.0 = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug DLL|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug MS-LDAP|Win32.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug MS-LDAP|Win32.Build.0 = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug MS-LDAP|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Passthrough|Win32.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Passthrough|Win32.Build.0 = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Passthrough|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Static|Win32.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Static|Win32.Build.0 = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug Static|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_CLR|Win32.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_CLR|Win32.Build.0 = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_CLR|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_Mono|Win32.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_Mono|Win32.Build.0 = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug_Mono|x64.ActiveCfg = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.ActiveCfg = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.Build.0 = Debug DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.ActiveCfg = Debug DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DirectSound|Win32.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DirectSound|Win32.Build.0 = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DirectSound|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DLL|Win32.Build.0 = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release DLL|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release MS-LDAP|Win32.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release MS-LDAP|Win32.Build.0 = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release MS-LDAP|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Passthrough|Win32.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Passthrough|Win32.Build.0 = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Passthrough|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Static|Win32.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Static|Win32.Build.0 = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release Static|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_CLR|Win32.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_CLR|Win32.Build.0 = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_CLR|x64.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_Mono|Win32.ActiveCfg = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_Mono|Win32.Build.0 = Release DLL|Win32 - {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release_Mono|x64.ActiveCfg = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.ActiveCfg = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.Build.0 = Release DLL|Win32 {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.ActiveCfg = Release|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DirectSound|Win32.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DirectSound|Win32.Build.0 = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DirectSound|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DLL|Win32.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DLL|Win32.Build.0 = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug DLL|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug MS-LDAP|Win32.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug MS-LDAP|Win32.Build.0 = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug MS-LDAP|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Passthrough|Win32.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Passthrough|Win32.Build.0 = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Passthrough|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Static|Win32.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Static|Win32.Build.0 = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug Static|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_CLR|Win32.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_CLR|Win32.Build.0 = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_CLR|x64.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_Mono|Win32.ActiveCfg = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_Mono|Win32.Build.0 = Debug Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug_Mono|x64.ActiveCfg = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.Build.0 = Debug Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.ActiveCfg = Debug|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DirectSound|Win32.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DirectSound|Win32.Build.0 = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DirectSound|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DLL|Win32.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DLL|Win32.Build.0 = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release DLL|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release MS-LDAP|Win32.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release MS-LDAP|Win32.Build.0 = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release MS-LDAP|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Passthrough|Win32.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Passthrough|Win32.Build.0 = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Passthrough|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Static|Win32.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Static|Win32.Build.0 = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release Static|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_CLR|Win32.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_CLR|Win32.Build.0 = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_CLR|x64.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_Mono|Win32.ActiveCfg = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_Mono|Win32.Build.0 = Release Passthrough|Win32 - {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release_Mono|x64.ActiveCfg = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.ActiveCfg = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.Build.0 = Release Passthrough|Win32 {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DLL|Win32.Build.0 = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Static|Win32.Build.0 = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug Static|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.ActiveCfg = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.Build.0 = Debug|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.ActiveCfg = Debug|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DirectSound|Win32.Build.0 = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DLL|Win32.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DLL|Win32.Build.0 = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release DLL|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Passthrough|Win32.Build.0 = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Static|Win32.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Static|Win32.Build.0 = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release Static|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_CLR|Win32.Build.0 = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_CLR|x64.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_Mono|Win32.Build.0 = Release|Win32 - {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release_Mono|x64.ActiveCfg = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.ActiveCfg = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.Build.0 = Release|Win32 {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DLL|Win32.Build.0 = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Static|Win32.Build.0 = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug Static|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.ActiveCfg = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.Build.0 = Debug|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64.ActiveCfg = Debug|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DirectSound|Win32.Build.0 = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DLL|Win32.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DLL|Win32.Build.0 = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release DLL|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Passthrough|Win32.Build.0 = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Static|Win32.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Static|Win32.Build.0 = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release Static|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_CLR|Win32.Build.0 = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_CLR|x64.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_Mono|Win32.Build.0 = Release|Win32 - {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release_Mono|x64.ActiveCfg = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.ActiveCfg = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.Build.0 = Release|Win32 {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DLL|Win32.Build.0 = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Static|Win32.Build.0 = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug Static|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.ActiveCfg = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.Build.0 = Debug|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64.ActiveCfg = Debug|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DirectSound|Win32.Build.0 = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DLL|Win32.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DLL|Win32.Build.0 = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release DLL|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Passthrough|Win32.Build.0 = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Static|Win32.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Static|Win32.Build.0 = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release Static|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_CLR|Win32.Build.0 = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_CLR|x64.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_Mono|Win32.Build.0 = Release|Win32 - {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release_Mono|x64.ActiveCfg = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.ActiveCfg = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.Build.0 = Release|Win32 {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DLL|Win32.Build.0 = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Static|Win32.Build.0 = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug Static|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Win32.ActiveCfg = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Win32.Build.0 = Debug|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|x64.ActiveCfg = Debug|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DirectSound|Win32.Build.0 = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DLL|Win32.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DLL|Win32.Build.0 = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release DLL|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Passthrough|Win32.Build.0 = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Static|Win32.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Static|Win32.Build.0 = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release Static|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_CLR|Win32.Build.0 = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_CLR|x64.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_Mono|Win32.Build.0 = Release|Win32 - {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release_Mono|x64.ActiveCfg = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Win32.ActiveCfg = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Win32.Build.0 = Release|Win32 {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DLL|Win32.Build.0 = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Static|Win32.Build.0 = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug Static|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.ActiveCfg = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.Build.0 = Debug|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.ActiveCfg = Debug|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DirectSound|Win32.Build.0 = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DLL|Win32.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DLL|Win32.Build.0 = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release DLL|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Passthrough|Win32.Build.0 = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Static|Win32.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Static|Win32.Build.0 = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release Static|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_CLR|Win32.Build.0 = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_CLR|x64.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_Mono|Win32.Build.0 = Release|Win32 - {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release_Mono|x64.ActiveCfg = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.ActiveCfg = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.Build.0 = Release|Win32 {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DLL|Win32.Build.0 = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Static|Win32.Build.0 = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.ActiveCfg = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.Build.0 = Debug|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64.ActiveCfg = Debug|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DirectSound|Win32.Build.0 = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DLL|Win32.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DLL|Win32.Build.0 = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release DLL|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Passthrough|Win32.Build.0 = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Static|Win32.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Static|Win32.Build.0 = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release Static|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_CLR|Win32.Build.0 = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_Mono|Win32.Build.0 = Release|Win32 - {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release_Mono|x64.ActiveCfg = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.ActiveCfg = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.Build.0 = Release|Win32 {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DLL|Win32.Build.0 = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Static|Win32.Build.0 = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug Static|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.ActiveCfg = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.Build.0 = Debug|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.ActiveCfg = Debug|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DirectSound|Win32.Build.0 = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DLL|Win32.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DLL|Win32.Build.0 = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release DLL|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Passthrough|Win32.Build.0 = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Static|Win32.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Static|Win32.Build.0 = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release Static|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_CLR|Win32.Build.0 = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_CLR|x64.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_Mono|Win32.Build.0 = Release|Win32 - {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release_Mono|x64.ActiveCfg = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.ActiveCfg = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.Build.0 = Release|Win32 {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DLL|Win32.Build.0 = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Static|Win32.Build.0 = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug Static|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.ActiveCfg = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.Build.0 = Debug|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.ActiveCfg = Debug|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DirectSound|Win32.Build.0 = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DLL|Win32.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DLL|Win32.Build.0 = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release DLL|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Passthrough|Win32.Build.0 = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Static|Win32.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Static|Win32.Build.0 = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release Static|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_CLR|Win32.Build.0 = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_CLR|x64.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_Mono|Win32.Build.0 = Release|Win32 - {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release_Mono|x64.ActiveCfg = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.ActiveCfg = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.Build.0 = Release|Win32 {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.ActiveCfg = Release|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DirectSound|Win32.ActiveCfg = Debug DirectSound|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DirectSound|Win32.Build.0 = Debug DirectSound|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DirectSound|x64.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DirectSound|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DLL|Win32.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DLL|x64.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug DLL|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug MS-LDAP|Win32.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug MS-LDAP|x64.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug MS-LDAP|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Passthrough|Win32.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Passthrough|x64.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Passthrough|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Static|Win32.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Static|x64.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug Static|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_CLR|Win32.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_CLR|x64.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_CLR|x64.Build.0 = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_Mono|Win32.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_Mono|x64.ActiveCfg = Debug DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug_Mono|x64.Build.0 = Debug DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DirectSound|Win32.ActiveCfg = Release DirectSound|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DirectSound|Win32.Build.0 = Release DirectSound|Win32 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DirectSound|x64.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DirectSound|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DLL|Win32.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DLL|x64.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release DLL|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release MS-LDAP|Win32.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release MS-LDAP|x64.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release MS-LDAP|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Passthrough|Win32.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Passthrough|x64.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Passthrough|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Static|Win32.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Static|x64.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release Static|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_CLR|Win32.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_CLR|x64.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_CLR|x64.Build.0 = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_Mono|Win32.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_Mono|x64.ActiveCfg = Release DirectSound|x64 - {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release_Mono|x64.Build.0 = Release DirectSound|x64 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DLL|Win32.Build.0 = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Static|Win32.Build.0 = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug Static|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.ActiveCfg = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.Build.0 = Debug|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.ActiveCfg = Debug|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DirectSound|Win32.Build.0 = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DLL|Win32.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DLL|Win32.Build.0 = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release DLL|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Passthrough|Win32.Build.0 = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Static|Win32.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Static|Win32.Build.0 = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release Static|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_CLR|Win32.Build.0 = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_CLR|x64.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_Mono|Win32.Build.0 = Release|Win32 - {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release_Mono|x64.ActiveCfg = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.ActiveCfg = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.Build.0 = Release|Win32 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.ActiveCfg = Release|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DirectSound|Win32.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DirectSound|Win32.Build.0 = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DirectSound|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DLL|Win32.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DLL|Win32.Build.0 = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug DLL|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug MS-LDAP|Win32.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug MS-LDAP|Win32.Build.0 = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug MS-LDAP|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Passthrough|Win32.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Passthrough|Win32.Build.0 = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Passthrough|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Static|Win32.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Static|Win32.Build.0 = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug Static|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_CLR|Win32.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_CLR|Win32.Build.0 = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_CLR|x64.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_Mono|Win32.ActiveCfg = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_Mono|Win32.Build.0 = Debug Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug_Mono|x64.ActiveCfg = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.Build.0 = Debug Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.ActiveCfg = Debug|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DirectSound|Win32.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DirectSound|Win32.Build.0 = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DirectSound|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DLL|Win32.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DLL|Win32.Build.0 = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release DLL|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release MS-LDAP|Win32.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release MS-LDAP|Win32.Build.0 = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release MS-LDAP|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Passthrough|Win32.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Passthrough|Win32.Build.0 = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Passthrough|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Static|Win32.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Static|Win32.Build.0 = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release Static|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_CLR|Win32.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_CLR|Win32.Build.0 = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_CLR|x64.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_Mono|Win32.ActiveCfg = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_Mono|Win32.Build.0 = Release Passthrough|Win32 - {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release_Mono|x64.ActiveCfg = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.ActiveCfg = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.Build.0 = Release Passthrough|Win32 {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DLL|Win32.Build.0 = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Static|Win32.Build.0 = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug Static|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.ActiveCfg = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.Build.0 = Debug|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.ActiveCfg = Debug|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DirectSound|Win32.Build.0 = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DLL|Win32.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DLL|Win32.Build.0 = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release DLL|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Passthrough|Win32.Build.0 = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Static|Win32.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Static|Win32.Build.0 = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release Static|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_CLR|Win32.Build.0 = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_CLR|x64.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_Mono|Win32.Build.0 = Release|Win32 - {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release_Mono|x64.ActiveCfg = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.ActiveCfg = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.Build.0 = Release|Win32 {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DLL|Win32.Build.0 = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Static|Win32.Build.0 = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug Static|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.ActiveCfg = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.Build.0 = Debug|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.ActiveCfg = Debug|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DirectSound|Win32.Build.0 = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DLL|Win32.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DLL|Win32.Build.0 = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release DLL|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Passthrough|Win32.Build.0 = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Static|Win32.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Static|Win32.Build.0 = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release Static|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_CLR|Win32.Build.0 = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_CLR|x64.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_Mono|Win32.Build.0 = Release|Win32 - {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release_Mono|x64.ActiveCfg = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.ActiveCfg = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.Build.0 = Release|Win32 {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DLL|Win32.Build.0 = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Static|Win32.Build.0 = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.ActiveCfg = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.Build.0 = Debug|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.ActiveCfg = Debug|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DirectSound|Win32.Build.0 = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DLL|Win32.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DLL|Win32.Build.0 = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release DLL|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Passthrough|Win32.Build.0 = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Static|Win32.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Static|Win32.Build.0 = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release Static|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_CLR|Win32.Build.0 = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_Mono|Win32.Build.0 = Release|Win32 - {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release_Mono|x64.ActiveCfg = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.ActiveCfg = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.Build.0 = Release|Win32 {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DLL|Win32.Build.0 = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Static|Win32.Build.0 = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug Static|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|Win32.ActiveCfg = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|Win32.Build.0 = Debug|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Debug|x64.ActiveCfg = Debug|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DirectSound|Win32.Build.0 = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DLL|Win32.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DLL|Win32.Build.0 = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release DLL|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Passthrough|Win32.Build.0 = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Static|Win32.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Static|Win32.Build.0 = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release Static|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_CLR|Win32.Build.0 = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_CLR|x64.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_Mono|Win32.Build.0 = Release|Win32 - {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release_Mono|x64.ActiveCfg = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|Win32.ActiveCfg = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|Win32.Build.0 = Release|Win32 {AA91F0AC-6562-435E-814C-5C94689FEFA2}.Release|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DLL|Win32.Build.0 = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Static|Win32.Build.0 = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|Win32.ActiveCfg = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|Win32.Build.0 = Debug|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Debug|x64.ActiveCfg = Debug|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DirectSound|Win32.Build.0 = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DLL|Win32.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DLL|Win32.Build.0 = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release DLL|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Passthrough|Win32.Build.0 = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Static|Win32.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Static|Win32.Build.0 = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release Static|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_CLR|Win32.Build.0 = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_Mono|Win32.Build.0 = Release|Win32 - {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release_Mono|x64.ActiveCfg = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|Win32.ActiveCfg = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|Win32.Build.0 = Release|Win32 {829A9309-3B94-43C0-846B-7EC9D6D35F8B}.Release|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DLL|Win32.Build.0 = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Static|Win32.Build.0 = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug Static|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|Win32.ActiveCfg = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|Win32.Build.0 = Debug|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Debug|x64.ActiveCfg = Debug|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DirectSound|Win32.Build.0 = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DLL|Win32.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DLL|Win32.Build.0 = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release DLL|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Passthrough|Win32.Build.0 = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Static|Win32.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Static|Win32.Build.0 = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release Static|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_CLR|Win32.Build.0 = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_CLR|x64.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_Mono|Win32.Build.0 = Release|Win32 - {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release_Mono|x64.ActiveCfg = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|Win32.ActiveCfg = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|Win32.Build.0 = Release|Win32 {EB751DC4-87BD-4766-B78D-DFB64BA9F988}.Release|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DLL|Win32.Build.0 = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Static|Win32.Build.0 = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug Static|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|Win32.ActiveCfg = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|Win32.Build.0 = Debug|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Debug|x64.ActiveCfg = Debug|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DirectSound|Win32.Build.0 = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DLL|Win32.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DLL|Win32.Build.0 = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release DLL|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Passthrough|Win32.Build.0 = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Static|Win32.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Static|Win32.Build.0 = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release Static|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_CLR|Win32.Build.0 = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_CLR|x64.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_Mono|Win32.Build.0 = Release|Win32 - {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release_Mono|x64.ActiveCfg = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|Win32.ActiveCfg = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|Win32.Build.0 = Release|Win32 {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}.Release|x64.ActiveCfg = Release|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DirectSound|Win32.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DirectSound|Win32.Build.0 = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DirectSound|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DLL|Win32.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DLL|Win32.Build.0 = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug DLL|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug MS-LDAP|Win32.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug MS-LDAP|Win32.Build.0 = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug MS-LDAP|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Passthrough|Win32.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Passthrough|Win32.Build.0 = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Passthrough|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Static|Win32.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Static|Win32.Build.0 = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug Static|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_CLR|Win32.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_CLR|Win32.Build.0 = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_CLR|x64.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_Mono|Win32.ActiveCfg = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_Mono|Win32.Build.0 = Debug Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug_Mono|x64.ActiveCfg = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|Win32.ActiveCfg = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|Win32.Build.0 = Debug Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Debug|x64.ActiveCfg = Debug|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DirectSound|Win32.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DirectSound|Win32.Build.0 = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DirectSound|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DLL|Win32.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DLL|Win32.Build.0 = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release DLL|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release MS-LDAP|Win32.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release MS-LDAP|Win32.Build.0 = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release MS-LDAP|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Passthrough|Win32.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Passthrough|Win32.Build.0 = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Passthrough|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Static|Win32.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Static|Win32.Build.0 = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release Static|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_CLR|Win32.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_CLR|Win32.Build.0 = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_CLR|x64.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_Mono|Win32.ActiveCfg = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_Mono|Win32.Build.0 = Release Static|Win32 - {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release_Mono|x64.ActiveCfg = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|Win32.ActiveCfg = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|Win32.Build.0 = Release Static|Win32 {CF78E84D-8456-44F2-8197-0E0E88D30A3C}.Release|x64.ActiveCfg = Release|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DirectSound|Win32.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DirectSound|Win32.Build.0 = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DirectSound|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DLL|Win32.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DLL|Win32.Build.0 = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug DLL|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug MS-LDAP|Win32.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug MS-LDAP|Win32.Build.0 = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug MS-LDAP|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Passthrough|Win32.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Passthrough|Win32.Build.0 = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Passthrough|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Static|Win32.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Static|Win32.Build.0 = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug Static|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_CLR|Win32.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_CLR|Win32.Build.0 = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_CLR|x64.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_Mono|Win32.ActiveCfg = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_Mono|Win32.Build.0 = Debug Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug_Mono|x64.ActiveCfg = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|Win32.ActiveCfg = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|Win32.Build.0 = Debug Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Debug|x64.ActiveCfg = Debug|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DirectSound|Win32.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DirectSound|Win32.Build.0 = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DirectSound|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DLL|Win32.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DLL|Win32.Build.0 = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release DLL|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release MS-LDAP|Win32.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release MS-LDAP|Win32.Build.0 = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release MS-LDAP|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Passthrough|Win32.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Passthrough|Win32.Build.0 = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Passthrough|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Static|Win32.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Static|Win32.Build.0 = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release Static|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_CLR|Win32.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_CLR|Win32.Build.0 = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_CLR|x64.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_Mono|Win32.ActiveCfg = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_Mono|Win32.Build.0 = Release Static|Win32 - {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release_Mono|x64.ActiveCfg = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|Win32.ActiveCfg = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|Win32.Build.0 = Release Static|Win32 {819C7242-6184-46FE-BC7B-C7E25C0581EE}.Release|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DLL|Win32.Build.0 = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Static|Win32.Build.0 = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug Static|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|Win32.ActiveCfg = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|Win32.Build.0 = Debug|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Debug|x64.ActiveCfg = Debug|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DirectSound|Win32.Build.0 = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DLL|Win32.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DLL|Win32.Build.0 = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release DLL|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Passthrough|Win32.Build.0 = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Static|Win32.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Static|Win32.Build.0 = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release Static|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_CLR|Win32.Build.0 = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_CLR|x64.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_Mono|Win32.Build.0 = Release|Win32 - {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release_Mono|x64.ActiveCfg = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|Win32.ActiveCfg = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|Win32.Build.0 = Release|Win32 {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}.Release|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DLL|Win32.Build.0 = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Static|Win32.Build.0 = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug Static|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|Win32.ActiveCfg = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|Win32.Build.0 = Debug|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Debug|x64.ActiveCfg = Debug|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DirectSound|Win32.Build.0 = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DLL|Win32.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DLL|Win32.Build.0 = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release DLL|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Passthrough|Win32.Build.0 = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Static|Win32.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Static|Win32.Build.0 = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release Static|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_CLR|Win32.Build.0 = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_CLR|x64.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_Mono|Win32.Build.0 = Release|Win32 - {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release_Mono|x64.ActiveCfg = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|Win32.ActiveCfg = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|Win32.Build.0 = Release|Win32 {A407B661-D7DC-4E30-B268-FFF3296C35E6}.Release|x64.ActiveCfg = Release|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DirectSound|Win32.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DirectSound|Win32.Build.0 = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DirectSound|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DLL|Win32.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DLL|Win32.Build.0 = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug DLL|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug MS-LDAP|Win32.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug MS-LDAP|Win32.Build.0 = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug MS-LDAP|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Passthrough|Win32.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Passthrough|Win32.Build.0 = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Passthrough|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Static|Win32.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Static|Win32.Build.0 = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug Static|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_CLR|Win32.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_CLR|Win32.Build.0 = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_CLR|x64.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_Mono|Win32.ActiveCfg = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_Mono|Win32.Build.0 = Debug Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug_Mono|x64.ActiveCfg = Debug Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|Win32.ActiveCfg = Debug|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|Win32.Build.0 = Debug|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Debug|x64.ActiveCfg = Debug|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DirectSound|Win32.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DirectSound|Win32.Build.0 = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DirectSound|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DLL|Win32.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DLL|Win32.Build.0 = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release DLL|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release MS-LDAP|Win32.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release MS-LDAP|Win32.Build.0 = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release MS-LDAP|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Passthrough|Win32.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Passthrough|Win32.Build.0 = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Passthrough|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Static|Win32.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Static|Win32.Build.0 = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release Static|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_CLR|Win32.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_CLR|Win32.Build.0 = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_CLR|x64.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_Mono|Win32.ActiveCfg = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_Mono|Win32.Build.0 = Release Static|Win32 - {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release_Mono|x64.ActiveCfg = Release Static|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|Win32.ActiveCfg = Release|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|Win32.Build.0 = Release|Win32 {E7116F50-2B10-472F-92BD-C8667AA9C1AE}.Release|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DLL|Win32.Build.0 = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Static|Win32.Build.0 = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug Static|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.ActiveCfg = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.Build.0 = Debug|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64.ActiveCfg = Debug|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DirectSound|Win32.Build.0 = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DLL|Win32.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DLL|Win32.Build.0 = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release DLL|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Passthrough|Win32.Build.0 = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Static|Win32.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Static|Win32.Build.0 = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release Static|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_CLR|Win32.Build.0 = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_CLR|x64.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_Mono|Win32.Build.0 = Release|Win32 - {028C7278-05D7-4E18-82FE-BE231B844F41}.Release_Mono|x64.ActiveCfg = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.ActiveCfg = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.Build.0 = Release|Win32 {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DLL|Win32.Build.0 = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Static|Win32.Build.0 = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.ActiveCfg = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.Build.0 = Debug|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.ActiveCfg = Debug|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DirectSound|Win32.Build.0 = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DLL|Win32.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DLL|Win32.Build.0 = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release DLL|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Passthrough|Win32.Build.0 = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Static|Win32.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Static|Win32.Build.0 = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release Static|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_CLR|Win32.Build.0 = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_Mono|Win32.Build.0 = Release|Win32 - {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release_Mono|x64.ActiveCfg = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.ActiveCfg = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.Build.0 = Release|Win32 {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DLL|Win32.Build.0 = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Static|Win32.Build.0 = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.ActiveCfg = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.Build.0 = Debug|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.ActiveCfg = Debug|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DirectSound|Win32.Build.0 = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DLL|Win32.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DLL|Win32.Build.0 = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release DLL|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Passthrough|Win32.Build.0 = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Static|Win32.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Static|Win32.Build.0 = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release Static|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_CLR|Win32.Build.0 = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_Mono|Win32.Build.0 = Release|Win32 - {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release_Mono|x64.ActiveCfg = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.ActiveCfg = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.Build.0 = Release|Win32 {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DLL|Win32.Build.0 = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Static|Win32.Build.0 = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug Static|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.ActiveCfg = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.Build.0 = Debug|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.ActiveCfg = Debug|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DirectSound|Win32.Build.0 = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DLL|Win32.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DLL|Win32.Build.0 = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release DLL|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Passthrough|Win32.Build.0 = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Static|Win32.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Static|Win32.Build.0 = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release Static|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_CLR|Win32.Build.0 = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_CLR|x64.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_Mono|Win32.Build.0 = Release|Win32 - {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release_Mono|x64.ActiveCfg = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.ActiveCfg = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.Build.0 = Release|Win32 {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DLL|Win32.Build.0 = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Static|Win32.Build.0 = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug Static|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.ActiveCfg = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.Build.0 = Debug|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.ActiveCfg = Debug|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DirectSound|Win32.Build.0 = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DLL|Win32.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DLL|Win32.Build.0 = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release DLL|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Passthrough|Win32.Build.0 = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Static|Win32.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Static|Win32.Build.0 = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release Static|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_CLR|Win32.Build.0 = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_CLR|x64.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_Mono|Win32.Build.0 = Release|Win32 - {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release_Mono|x64.ActiveCfg = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.ActiveCfg = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.Build.0 = Release|Win32 {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DLL|Win32.Build.0 = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Static|Win32.Build.0 = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug Static|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.ActiveCfg = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.Build.0 = Debug|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.ActiveCfg = Debug|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DirectSound|Win32.Build.0 = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DLL|Win32.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DLL|Win32.Build.0 = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release DLL|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Passthrough|Win32.Build.0 = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Static|Win32.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Static|Win32.Build.0 = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release Static|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_CLR|Win32.Build.0 = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_CLR|x64.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_Mono|Win32.Build.0 = Release|Win32 - {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release_Mono|x64.ActiveCfg = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.ActiveCfg = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.Build.0 = Release|Win32 {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DLL|Win32.Build.0 = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Static|Win32.Build.0 = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug Static|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.ActiveCfg = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.Build.0 = Debug|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.ActiveCfg = Debug|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DirectSound|Win32.Build.0 = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DLL|Win32.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DLL|Win32.Build.0 = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release DLL|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Passthrough|Win32.Build.0 = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Static|Win32.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Static|Win32.Build.0 = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release Static|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_CLR|Win32.Build.0 = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_CLR|x64.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_Mono|Win32.Build.0 = Release|Win32 - {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release_Mono|x64.ActiveCfg = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.ActiveCfg = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.Build.0 = Release|Win32 {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DLL|Win32.Build.0 = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Static|Win32.Build.0 = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug Static|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.ActiveCfg = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.Build.0 = Debug|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.ActiveCfg = Debug|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DirectSound|Win32.Build.0 = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DLL|Win32.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DLL|Win32.Build.0 = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release DLL|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Passthrough|Win32.Build.0 = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Static|Win32.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Static|Win32.Build.0 = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release Static|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_CLR|Win32.Build.0 = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_CLR|x64.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_Mono|Win32.Build.0 = Release|Win32 - {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release_Mono|x64.ActiveCfg = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.ActiveCfg = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.Build.0 = Release|Win32 {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug DLL|Win32.Build.0 = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug Static|Win32.Build.0 = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug Static|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.ActiveCfg = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.Build.0 = Debug|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.ActiveCfg = Debug|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release DirectSound|Win32.Build.0 = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release DLL|Win32.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release DLL|Win32.Build.0 = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release DLL|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release Passthrough|Win32.Build.0 = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release Static|Win32.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release Static|Win32.Build.0 = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release Static|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release_CLR|Win32.Build.0 = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release_CLR|x64.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release_Mono|Win32.Build.0 = Release|Win32 - {F6A33240-8F29-48BD-98F0-826995911799}.Release_Mono|x64.ActiveCfg = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.ActiveCfg = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.Build.0 = Release|Win32 {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DLL|Win32.Build.0 = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Static|Win32.Build.0 = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug Static|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.ActiveCfg = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.Build.0 = Debug|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.ActiveCfg = Debug|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DirectSound|Win32.Build.0 = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DLL|Win32.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DLL|Win32.Build.0 = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release DLL|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Passthrough|Win32.Build.0 = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Static|Win32.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Static|Win32.Build.0 = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release Static|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_CLR|Win32.Build.0 = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_CLR|x64.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_Mono|Win32.Build.0 = Release|Win32 - {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release_Mono|x64.ActiveCfg = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.ActiveCfg = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.Build.0 = Release|Win32 {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DLL|Win32.Build.0 = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Static|Win32.Build.0 = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug Static|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.ActiveCfg = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.Build.0 = Debug|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.ActiveCfg = Debug|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DirectSound|Win32.Build.0 = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DLL|Win32.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DLL|Win32.Build.0 = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release DLL|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Passthrough|Win32.Build.0 = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Static|Win32.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Static|Win32.Build.0 = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release Static|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_CLR|Win32.Build.0 = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_CLR|x64.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_Mono|Win32.Build.0 = Release|Win32 - {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release_Mono|x64.ActiveCfg = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.ActiveCfg = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.Build.0 = Release|Win32 {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DLL|Win32.Build.0 = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Static|Win32.Build.0 = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.ActiveCfg = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.Build.0 = Debug|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.ActiveCfg = Debug|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DirectSound|Win32.Build.0 = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DLL|Win32.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DLL|Win32.Build.0 = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release DLL|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Passthrough|Win32.Build.0 = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Static|Win32.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Static|Win32.Build.0 = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release Static|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_CLR|Win32.Build.0 = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_Mono|Win32.Build.0 = Release|Win32 - {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release_Mono|x64.ActiveCfg = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.ActiveCfg = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.Build.0 = Release|Win32 {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DLL|Win32.Build.0 = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Static|Win32.Build.0 = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug Static|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.ActiveCfg = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.Build.0 = Debug|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.ActiveCfg = Debug|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DirectSound|Win32.Build.0 = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DLL|Win32.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DLL|Win32.Build.0 = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release DLL|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Passthrough|Win32.Build.0 = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Static|Win32.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Static|Win32.Build.0 = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release Static|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_CLR|Win32.Build.0 = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_CLR|x64.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_Mono|Win32.Build.0 = Release|Win32 - {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release_Mono|x64.ActiveCfg = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.ActiveCfg = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.Build.0 = Release|Win32 {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DLL|Win32.Build.0 = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Static|Win32.Build.0 = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug Static|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.ActiveCfg = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.Build.0 = Debug|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.ActiveCfg = Debug|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DirectSound|Win32.Build.0 = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DLL|Win32.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DLL|Win32.Build.0 = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release DLL|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Passthrough|Win32.Build.0 = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Static|Win32.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Static|Win32.Build.0 = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release Static|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_CLR|Win32.Build.0 = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_CLR|x64.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_Mono|Win32.Build.0 = Release|Win32 - {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release_Mono|x64.ActiveCfg = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.ActiveCfg = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.Build.0 = Release|Win32 {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DLL|Win32.Build.0 = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Static|Win32.Build.0 = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug Static|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.ActiveCfg = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.Build.0 = Debug|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DirectSound|Win32.Build.0 = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DLL|Win32.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DLL|Win32.Build.0 = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release DLL|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Passthrough|Win32.Build.0 = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Static|Win32.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Static|Win32.Build.0 = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release Static|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_CLR|Win32.Build.0 = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_CLR|x64.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_Mono|Win32.Build.0 = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release_Mono|x64.ActiveCfg = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.ActiveCfg = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.Build.0 = Release|Win32 {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DLL|Win32.Build.0 = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Static|Win32.Build.0 = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug Static|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|Win32.ActiveCfg = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|Win32.Build.0 = Debug|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Debug|x64.ActiveCfg = Debug|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DirectSound|Win32.Build.0 = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DLL|Win32.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DLL|Win32.Build.0 = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release DLL|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Passthrough|Win32.Build.0 = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Static|Win32.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Static|Win32.Build.0 = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release Static|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_CLR|Win32.Build.0 = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_CLR|x64.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_Mono|Win32.Build.0 = Release|Win32 - {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release_Mono|x64.ActiveCfg = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|Win32.ActiveCfg = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|Win32.Build.0 = Release|Win32 {42B6C2E3-7D5F-4204-A1F6-C0376B86C315}.Release|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DLL|Win32.Build.0 = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Static|Win32.Build.0 = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug Static|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.ActiveCfg = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.Build.0 = Debug|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DirectSound|Win32.Build.0 = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DLL|Win32.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DLL|Win32.Build.0 = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release DLL|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Passthrough|Win32.Build.0 = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Static|Win32.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Static|Win32.Build.0 = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release Static|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_CLR|Win32.Build.0 = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_CLR|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_Mono|Win32.Build.0 = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release_Mono|x64.ActiveCfg = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.ActiveCfg = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.Build.0 = Release|Win32 {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DLL|Win32.Build.0 = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Static|Win32.Build.0 = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug Static|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.ActiveCfg = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.Build.0 = Debug|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.ActiveCfg = Debug|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DirectSound|Win32.Build.0 = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DLL|Win32.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DLL|Win32.Build.0 = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release DLL|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Passthrough|Win32.Build.0 = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Static|Win32.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Static|Win32.Build.0 = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release Static|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_CLR|Win32.Build.0 = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_CLR|x64.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_Mono|Win32.Build.0 = Release|Win32 - {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release_Mono|x64.ActiveCfg = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.ActiveCfg = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.Build.0 = Release|Win32 {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DLL|Win32.Build.0 = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Static|Win32.Build.0 = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug Static|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.ActiveCfg = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.Build.0 = Debug|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64.ActiveCfg = Debug|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DirectSound|Win32.Build.0 = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DLL|Win32.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DLL|Win32.Build.0 = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release DLL|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Passthrough|Win32.Build.0 = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Static|Win32.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Static|Win32.Build.0 = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release Static|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_CLR|Win32.Build.0 = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_CLR|x64.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_Mono|Win32.Build.0 = Release|Win32 - {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release_Mono|x64.ActiveCfg = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.ActiveCfg = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.Build.0 = Release|Win32 {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DLL|Win32.Build.0 = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Static|Win32.Build.0 = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug Static|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.ActiveCfg = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.Build.0 = Debug|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.ActiveCfg = Debug|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DirectSound|Win32.Build.0 = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DLL|Win32.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DLL|Win32.Build.0 = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release DLL|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Passthrough|Win32.Build.0 = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Static|Win32.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Static|Win32.Build.0 = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release Static|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_CLR|Win32.Build.0 = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_CLR|x64.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_Mono|Win32.Build.0 = Release|Win32 - {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release_Mono|x64.ActiveCfg = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.ActiveCfg = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.Build.0 = Release|Win32 {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DLL|Win32.Build.0 = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Static|Win32.Build.0 = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.ActiveCfg = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.Build.0 = Debug|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.ActiveCfg = Debug|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DirectSound|Win32.Build.0 = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DLL|Win32.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DLL|Win32.Build.0 = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release DLL|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Passthrough|Win32.Build.0 = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Static|Win32.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Static|Win32.Build.0 = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release Static|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_CLR|Win32.Build.0 = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_Mono|Win32.Build.0 = Release|Win32 - {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release_Mono|x64.ActiveCfg = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.ActiveCfg = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.Build.0 = Release|Win32 {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DLL|Win32.Build.0 = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Static|Win32.Build.0 = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug Static|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.ActiveCfg = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.Build.0 = Debug|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.ActiveCfg = Debug|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DirectSound|Win32.Build.0 = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DLL|Win32.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DLL|Win32.Build.0 = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release DLL|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Passthrough|Win32.Build.0 = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Static|Win32.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Static|Win32.Build.0 = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release Static|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_CLR|Win32.Build.0 = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_CLR|x64.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_Mono|Win32.Build.0 = Release|Win32 - {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release_Mono|x64.ActiveCfg = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.ActiveCfg = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.Build.0 = Release|Win32 {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DLL|Win32.Build.0 = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Static|Win32.Build.0 = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.ActiveCfg = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.Build.0 = Debug|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.ActiveCfg = Debug|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DirectSound|Win32.Build.0 = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DLL|Win32.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DLL|Win32.Build.0 = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release DLL|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Passthrough|Win32.Build.0 = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Static|Win32.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Static|Win32.Build.0 = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release Static|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_CLR|Win32.Build.0 = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_Mono|Win32.Build.0 = Release|Win32 - {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release_Mono|x64.ActiveCfg = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.ActiveCfg = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.Build.0 = Release|Win32 {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DLL|Win32.Build.0 = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Static|Win32.Build.0 = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug Static|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.ActiveCfg = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.Build.0 = Debug|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.ActiveCfg = Debug|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release DirectSound|Win32.Build.0 = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release DLL|Win32.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release DLL|Win32.Build.0 = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release DLL|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release Passthrough|Win32.Build.0 = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release Static|Win32.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release Static|Win32.Build.0 = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release Static|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release_CLR|Win32.Build.0 = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release_CLR|x64.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release_Mono|Win32.Build.0 = Release|Win32 - {B535402E-38D2-4D54-8360-423ACBD17192}.Release_Mono|x64.ActiveCfg = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.ActiveCfg = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.Build.0 = Release|Win32 {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DLL|Win32.Build.0 = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Static|Win32.Build.0 = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug Static|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.ActiveCfg = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.Build.0 = Debug|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.ActiveCfg = Debug|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DirectSound|Win32.Build.0 = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DLL|Win32.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DLL|Win32.Build.0 = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release DLL|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Passthrough|Win32.Build.0 = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Static|Win32.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Static|Win32.Build.0 = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release Static|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_CLR|Win32.Build.0 = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_CLR|x64.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_Mono|Win32.Build.0 = Release|Win32 - {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release_Mono|x64.ActiveCfg = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.ActiveCfg = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.Build.0 = Release|Win32 {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug DLL|Win32.Build.0 = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug Static|Win32.Build.0 = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug Static|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.ActiveCfg = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.Build.0 = Debug|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.ActiveCfg = Debug|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release DirectSound|Win32.Build.0 = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release DLL|Win32.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release DLL|Win32.Build.0 = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release DLL|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release Passthrough|Win32.Build.0 = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release Static|Win32.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release Static|Win32.Build.0 = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release Static|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release_CLR|Win32.Build.0 = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release_CLR|x64.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release_Mono|Win32.Build.0 = Release|Win32 - {2DEE4895-1134-439C-B688-52203E57D878}.Release_Mono|x64.ActiveCfg = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.ActiveCfg = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.Build.0 = Release|Win32 {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DLL|Win32.Build.0 = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Static|Win32.Build.0 = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug Static|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.ActiveCfg = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.Build.0 = Debug|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.ActiveCfg = Debug|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DirectSound|Win32.Build.0 = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DLL|Win32.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DLL|Win32.Build.0 = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release DLL|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Passthrough|Win32.Build.0 = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Static|Win32.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Static|Win32.Build.0 = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release Static|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_CLR|Win32.Build.0 = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_CLR|x64.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_Mono|Win32.Build.0 = Release|Win32 - {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release_Mono|x64.ActiveCfg = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.ActiveCfg = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.Build.0 = Release|Win32 {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DLL|Win32.Build.0 = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Static|Win32.Build.0 = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug Static|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.ActiveCfg = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.Build.0 = Debug|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.ActiveCfg = Debug|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DirectSound|Win32.Build.0 = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DLL|Win32.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DLL|Win32.Build.0 = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release DLL|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Passthrough|Win32.Build.0 = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Static|Win32.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Static|Win32.Build.0 = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release Static|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_CLR|Win32.Build.0 = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_CLR|x64.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_Mono|Win32.Build.0 = Release|Win32 - {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release_Mono|x64.ActiveCfg = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.ActiveCfg = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.Build.0 = Release|Win32 {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug DLL|Win32.Build.0 = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug Static|Win32.Build.0 = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug Static|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.ActiveCfg = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.Build.0 = Debug|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.ActiveCfg = Debug|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release DirectSound|Win32.Build.0 = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release DLL|Win32.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release DLL|Win32.Build.0 = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release DLL|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release Passthrough|Win32.Build.0 = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release Static|Win32.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release Static|Win32.Build.0 = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release Static|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release_CLR|Win32.Build.0 = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release_CLR|x64.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release_Mono|Win32.Build.0 = Release|Win32 - {94001A0E-A837-445C-8004-F918F10D0226}.Release_Mono|x64.ActiveCfg = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.ActiveCfg = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.Build.0 = Release|Win32 {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DLL|Win32.Build.0 = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Static|Win32.Build.0 = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug Static|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.ActiveCfg = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.Build.0 = Debug|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.ActiveCfg = Debug|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DirectSound|Win32.Build.0 = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DLL|Win32.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DLL|Win32.Build.0 = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release DLL|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Passthrough|Win32.Build.0 = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Static|Win32.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Static|Win32.Build.0 = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release Static|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_CLR|Win32.Build.0 = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_CLR|x64.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_Mono|Win32.Build.0 = Release|Win32 - {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release_Mono|x64.ActiveCfg = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.ActiveCfg = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.Build.0 = Release|Win32 {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DLL|Win32.Build.0 = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Static|Win32.Build.0 = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug Static|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.ActiveCfg = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.Build.0 = Debug|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.ActiveCfg = Debug|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DirectSound|Win32.Build.0 = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DLL|Win32.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DLL|Win32.Build.0 = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release DLL|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Passthrough|Win32.Build.0 = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Static|Win32.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Static|Win32.Build.0 = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release Static|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_CLR|Win32.Build.0 = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_CLR|x64.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_Mono|Win32.Build.0 = Release|Win32 - {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release_Mono|x64.ActiveCfg = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.ActiveCfg = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.Build.0 = Release|Win32 {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DLL|Win32.Build.0 = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Static|Win32.Build.0 = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug Static|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|Win32.ActiveCfg = Debug|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|x64.ActiveCfg = Debug|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DirectSound|Win32.Build.0 = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DLL|Win32.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DLL|Win32.Build.0 = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release DLL|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Passthrough|Win32.Build.0 = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Static|Win32.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Static|Win32.Build.0 = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release Static|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_CLR|Win32.Build.0 = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_CLR|x64.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_Mono|Win32.Build.0 = Release|Win32 - {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release_Mono|x64.ActiveCfg = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|Win32.ActiveCfg = Release|Win32 {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DLL|Win32.Build.0 = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Static|Win32.Build.0 = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug Static|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.ActiveCfg = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.Build.0 = Debug|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.ActiveCfg = Debug|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DirectSound|Win32.Build.0 = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DLL|Win32.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DLL|Win32.Build.0 = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release DLL|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Passthrough|Win32.Build.0 = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Static|Win32.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Static|Win32.Build.0 = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release Static|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_CLR|Win32.Build.0 = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_CLR|x64.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_Mono|Win32.Build.0 = Release|Win32 - {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release_Mono|x64.ActiveCfg = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.ActiveCfg = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.Build.0 = Release|Win32 {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DLL|Win32.Build.0 = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Static|Win32.Build.0 = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug Static|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Win32.ActiveCfg = Debug|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x64.ActiveCfg = Debug|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DirectSound|Win32.Build.0 = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DLL|Win32.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DLL|Win32.Build.0 = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release DLL|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Passthrough|Win32.Build.0 = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Static|Win32.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Static|Win32.Build.0 = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release Static|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_CLR|Win32.Build.0 = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_CLR|x64.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_Mono|Win32.Build.0 = Release|Win32 - {7EB71250-F002-4ED8-92CA-CA218114537A}.Release_Mono|x64.ActiveCfg = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Win32.ActiveCfg = Release|Win32 {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DLL|Win32.Build.0 = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Static|Win32.Build.0 = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug Static|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Win32.ActiveCfg = Debug|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|x64.ActiveCfg = Debug|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DirectSound|Win32.Build.0 = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DLL|Win32.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DLL|Win32.Build.0 = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release DLL|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Passthrough|Win32.Build.0 = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Static|Win32.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Static|Win32.Build.0 = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release Static|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_CLR|Win32.Build.0 = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_CLR|x64.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_Mono|Win32.Build.0 = Release|Win32 - {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release_Mono|x64.ActiveCfg = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|Win32.ActiveCfg = Release|Win32 {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DLL|Win32.Build.0 = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Static|Win32.Build.0 = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug Static|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Win32.ActiveCfg = Debug|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x64.ActiveCfg = Debug|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release DirectSound|Win32.Build.0 = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release DLL|Win32.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release DLL|Win32.Build.0 = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release DLL|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release Passthrough|Win32.Build.0 = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release Static|Win32.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release Static|Win32.Build.0 = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release Static|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release_CLR|Win32.Build.0 = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release_CLR|x64.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release_Mono|Win32.Build.0 = Release|Win32 - {464AAB78-5489-4916-BE51-BF8D61822311}.Release_Mono|x64.ActiveCfg = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release|Win32.ActiveCfg = Release|Win32 {464AAB78-5489-4916-BE51-BF8D61822311}.Release|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DLL|Win32.Build.0 = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Static|Win32.Build.0 = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.ActiveCfg = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.Build.0 = Debug|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.ActiveCfg = Debug|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release DirectSound|Win32.Build.0 = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release DLL|Win32.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release DLL|Win32.Build.0 = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release DLL|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release Passthrough|Win32.Build.0 = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release Static|Win32.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release Static|Win32.Build.0 = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release Static|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release_CLR|Win32.Build.0 = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release_Mono|Win32.Build.0 = Release|Win32 - {0AD1177E-1FD8-4643-9391-431467A11084}.Release_Mono|x64.ActiveCfg = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.ActiveCfg = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.Build.0 = Release|Win32 {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.ActiveCfg = Release|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DirectSound|Win32.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DirectSound|Win32.Build.0 = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DirectSound|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DLL|Win32.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DLL|Win32.Build.0 = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug DLL|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug MS-LDAP|Win32.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug MS-LDAP|Win32.Build.0 = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug MS-LDAP|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Passthrough|Win32.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Passthrough|Win32.Build.0 = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Passthrough|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Static|Win32.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Static|Win32.Build.0 = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug Static|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_CLR|Win32.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_CLR|Win32.Build.0 = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_CLR|x64.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_Mono|Win32.ActiveCfg = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_Mono|Win32.Build.0 = Debug Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug_Mono|x64.ActiveCfg = Debug Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.ActiveCfg = Debug|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.Build.0 = Debug|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x64.ActiveCfg = Debug|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DirectSound|Win32.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DirectSound|Win32.Build.0 = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DirectSound|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DLL|Win32.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DLL|Win32.Build.0 = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release DLL|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release MS-LDAP|Win32.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release MS-LDAP|Win32.Build.0 = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release MS-LDAP|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Passthrough|Win32.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Passthrough|Win32.Build.0 = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Passthrough|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Static|Win32.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Static|Win32.Build.0 = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release Static|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_CLR|Win32.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_CLR|Win32.Build.0 = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_CLR|x64.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_Mono|Win32.ActiveCfg = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_Mono|Win32.Build.0 = Release Static|Win32 - {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release_Mono|x64.ActiveCfg = Release Static|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.ActiveCfg = Release|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.Build.0 = Release|Win32 {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DLL|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Static|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DirectSound|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DLL|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DLL|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release DLL|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Passthrough|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Static|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Static|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release Static|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_CLR|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_Mono|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release_Mono|x64.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DLL|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Static|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DirectSound|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DLL|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DLL|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release DLL|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Passthrough|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Static|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Static|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release Static|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_CLR|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_Mono|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release_Mono|x64.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DLL|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Static|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DirectSound|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DLL|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DLL|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release DLL|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Passthrough|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Static|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Static|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release Static|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_CLR|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_Mono|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release_Mono|x64.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DLL|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Static|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.Build.0 = Debug|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.ActiveCfg = Debug|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DirectSound|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DLL|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DLL|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release DLL|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Passthrough|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Static|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Static|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release Static|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_CLR|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_Mono|Win32.Build.0 = Release|Win32 - {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release_Mono|x64.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.ActiveCfg = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.Build.0 = Release|Win32 {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DLL|Win32.Build.0 = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Static|Win32.Build.0 = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug Static|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.ActiveCfg = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.Build.0 = Debug|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.ActiveCfg = Debug|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DirectSound|Win32.Build.0 = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DLL|Win32.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DLL|Win32.Build.0 = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release DLL|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Passthrough|Win32.Build.0 = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Static|Win32.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Static|Win32.Build.0 = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release Static|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_CLR|Win32.Build.0 = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_CLR|x64.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_Mono|Win32.Build.0 = Release|Win32 - {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release_Mono|x64.ActiveCfg = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.ActiveCfg = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.Build.0 = Release|Win32 {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DLL|Win32.Build.0 = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Static|Win32.Build.0 = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.ActiveCfg = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.Build.0 = Debug|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.ActiveCfg = Debug|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DirectSound|Win32.Build.0 = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DLL|Win32.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DLL|Win32.Build.0 = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release DLL|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Passthrough|Win32.Build.0 = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Static|Win32.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Static|Win32.Build.0 = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release Static|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_CLR|Win32.Build.0 = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_Mono|Win32.Build.0 = Release|Win32 - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release_Mono|x64.ActiveCfg = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.ActiveCfg = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.Build.0 = Release|Win32 {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DLL|Win32.Build.0 = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Static|Win32.Build.0 = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug Static|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.ActiveCfg = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.Build.0 = Debug|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.ActiveCfg = Debug|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DirectSound|Win32.Build.0 = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DLL|Win32.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DLL|Win32.Build.0 = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release DLL|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Passthrough|Win32.Build.0 = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Static|Win32.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Static|Win32.Build.0 = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release Static|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_CLR|Win32.Build.0 = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_CLR|x64.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_Mono|Win32.Build.0 = Release|Win32 - {38FE0559-9910-43A8-9E45-3E5004C27692}.Release_Mono|x64.ActiveCfg = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.ActiveCfg = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.Build.0 = Release|Win32 {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DLL|Win32.Build.0 = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Static|Win32.Build.0 = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.ActiveCfg = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.Build.0 = Debug|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.ActiveCfg = Debug|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DirectSound|Win32.Build.0 = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DLL|Win32.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DLL|Win32.Build.0 = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release DLL|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Passthrough|Win32.Build.0 = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Static|Win32.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Static|Win32.Build.0 = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release Static|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_CLR|Win32.Build.0 = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_Mono|Win32.Build.0 = Release|Win32 - {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release_Mono|x64.ActiveCfg = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.ActiveCfg = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.Build.0 = Release|Win32 {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DLL|Win32.Build.0 = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Static|Win32.Build.0 = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug Static|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.ActiveCfg = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.Build.0 = Debug|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.ActiveCfg = Debug|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DirectSound|Win32.Build.0 = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DLL|Win32.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DLL|Win32.Build.0 = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release DLL|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Passthrough|Win32.Build.0 = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Static|Win32.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Static|Win32.Build.0 = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release Static|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_CLR|Win32.Build.0 = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_CLR|x64.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_Mono|Win32.Build.0 = Release|Win32 - {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release_Mono|x64.ActiveCfg = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.ActiveCfg = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.Build.0 = Release|Win32 {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DLL|Win32.Build.0 = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Static|Win32.Build.0 = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug Static|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.ActiveCfg = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.Build.0 = Debug|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.ActiveCfg = Debug|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DirectSound|Win32.Build.0 = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DLL|Win32.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DLL|Win32.Build.0 = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release DLL|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Passthrough|Win32.Build.0 = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Static|Win32.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Static|Win32.Build.0 = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release Static|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_CLR|Win32.Build.0 = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_CLR|x64.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_Mono|Win32.Build.0 = Release|Win32 - {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release_Mono|x64.ActiveCfg = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.ActiveCfg = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.Build.0 = Release|Win32 {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.ActiveCfg = Release|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DirectSound|Win32.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DirectSound|Win32.Build.0 = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DirectSound|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DLL|Win32.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DLL|Win32.Build.0 = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug DLL|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug MS-LDAP|Win32.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug MS-LDAP|Win32.Build.0 = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug MS-LDAP|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Passthrough|Win32.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Passthrough|Win32.Build.0 = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Passthrough|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Static|Win32.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Static|Win32.Build.0 = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug Static|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_CLR|Win32.ActiveCfg = Debug_CLR|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_CLR|Win32.Build.0 = Debug_CLR|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_CLR|x64.ActiveCfg = Debug_CLR|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_Mono|Win32.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_Mono|Win32.Build.0 = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug_Mono|x64.ActiveCfg = Debug_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.ActiveCfg = Debug_CLR|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.Build.0 = Debug_CLR|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.ActiveCfg = Debug_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DirectSound|Win32.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DirectSound|Win32.Build.0 = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DirectSound|x64.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DLL|Win32.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DLL|Win32.Build.0 = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release DLL|x64.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release MS-LDAP|Win32.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release MS-LDAP|Win32.Build.0 = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release MS-LDAP|x64.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Passthrough|Win32.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Passthrough|Win32.Build.0 = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Passthrough|x64.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Static|Win32.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Static|Win32.Build.0 = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release Static|x64.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_CLR|Win32.ActiveCfg = Release_CLR|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_CLR|Win32.Build.0 = Release_CLR|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_CLR|x64.ActiveCfg = Release_CLR|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_Mono|Win32.ActiveCfg = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_Mono|Win32.Build.0 = Release_Mono|Win32 - {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release_Mono|x64.ActiveCfg = Release_Mono|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.ActiveCfg = Release_CLR|Win32 {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.ActiveCfg = Release_Mono|Win32 - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug DirectSound|Win32.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug DirectSound|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug DLL|Win32.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug DLL|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug MS-LDAP|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug Passthrough|Win32.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug Passthrough|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug Static|Win32.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug Static|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug_CLR|Win32.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug_CLR|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug_Mono|Win32.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug_Mono|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.Build.0 = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.ActiveCfg = Debug|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release DirectSound|Win32.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release DirectSound|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release DLL|Win32.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release DLL|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release MS-LDAP|Win32.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release MS-LDAP|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release Passthrough|Win32.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release Passthrough|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release Static|Win32.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release Static|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release_CLR|Win32.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release_CLR|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release_Mono|Win32.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release_Mono|x64.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.ActiveCfg = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.Build.0 = Release|Any CPU - {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.ActiveCfg = Release|Any CPU - {E796E337-DE78-4303-8614-9A590862EE95}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug DLL|Win32.Build.0 = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug Static|Win32.Build.0 = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug Static|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.ActiveCfg = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.Build.0 = Debug|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.ActiveCfg = Debug|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release DirectSound|Win32.Build.0 = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release DLL|Win32.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release DLL|Win32.Build.0 = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release DLL|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release Passthrough|Win32.Build.0 = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release Static|Win32.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release Static|Win32.Build.0 = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release Static|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release_CLR|Win32.Build.0 = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release_CLR|x64.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release_Mono|Win32.Build.0 = Release|Win32 - {E796E337-DE78-4303-8614-9A590862EE95}.Release_Mono|x64.ActiveCfg = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.ActiveCfg = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.Build.0 = Release|Win32 {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DLL|Win32.Build.0 = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Static|Win32.Build.0 = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug Static|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.ActiveCfg = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.Build.0 = Debug|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.ActiveCfg = Debug|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release DirectSound|Win32.Build.0 = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release DLL|Win32.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release DLL|Win32.Build.0 = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release DLL|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release Passthrough|Win32.Build.0 = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release Static|Win32.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release Static|Win32.Build.0 = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release Static|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release_CLR|Win32.Build.0 = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release_CLR|x64.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release_Mono|Win32.Build.0 = Release|Win32 - {419C8F80-D858-4B48-A25C-AF4007608137}.Release_Mono|x64.ActiveCfg = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.ActiveCfg = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.Build.0 = Release|Win32 {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DLL|Win32.Build.0 = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Static|Win32.Build.0 = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug Static|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.ActiveCfg = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.Build.0 = Debug|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.ActiveCfg = Debug|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DirectSound|Win32.Build.0 = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DLL|Win32.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DLL|Win32.Build.0 = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release DLL|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Passthrough|Win32.Build.0 = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Static|Win32.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Static|Win32.Build.0 = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release Static|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_CLR|Win32.Build.0 = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_CLR|x64.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_Mono|Win32.Build.0 = Release|Win32 - {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release_Mono|x64.ActiveCfg = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.ActiveCfg = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.Build.0 = Release|Win32 {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DLL|Win32.Build.0 = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Static|Win32.Build.0 = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug Static|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.ActiveCfg = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.Build.0 = Debug|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.ActiveCfg = Debug|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DirectSound|Win32.Build.0 = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DLL|Win32.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DLL|Win32.Build.0 = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release DLL|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Passthrough|Win32.Build.0 = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Static|Win32.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Static|Win32.Build.0 = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release Static|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_CLR|Win32.Build.0 = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_CLR|x64.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_Mono|Win32.Build.0 = Release|Win32 - {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release_Mono|x64.ActiveCfg = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.ActiveCfg = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.Build.0 = Release|Win32 {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DLL|Win32.Build.0 = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Static|Win32.Build.0 = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug Static|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.ActiveCfg = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.Build.0 = Debug|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64.ActiveCfg = Debug|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DirectSound|Win32.Build.0 = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DLL|Win32.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DLL|Win32.Build.0 = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release DLL|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Passthrough|Win32.Build.0 = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Static|Win32.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Static|Win32.Build.0 = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release Static|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_CLR|Win32.Build.0 = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_CLR|x64.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_Mono|Win32.Build.0 = Release|Win32 - {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release_Mono|x64.ActiveCfg = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.ActiveCfg = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.Build.0 = Release|Win32 {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DLL|Win32.Build.0 = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Static|Win32.Build.0 = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug Static|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.ActiveCfg = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.Build.0 = Debug|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64.ActiveCfg = Debug|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DirectSound|Win32.Build.0 = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DLL|Win32.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DLL|Win32.Build.0 = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release DLL|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Passthrough|Win32.Build.0 = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Static|Win32.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Static|Win32.Build.0 = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release Static|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_CLR|Win32.Build.0 = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_CLR|x64.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_Mono|Win32.Build.0 = Release|Win32 - {0B6C905B-142E-4999-B39D-92FF7951E921}.Release_Mono|x64.ActiveCfg = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.ActiveCfg = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.Build.0 = Release|Win32 {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DLL|Win32.Build.0 = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Static|Win32.Build.0 = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug Static|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.ActiveCfg = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.Build.0 = Debug|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64.ActiveCfg = Debug|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DirectSound|Win32.Build.0 = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DLL|Win32.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DLL|Win32.Build.0 = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release DLL|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Passthrough|Win32.Build.0 = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Static|Win32.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Static|Win32.Build.0 = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release Static|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_CLR|Win32.Build.0 = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_CLR|x64.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_Mono|Win32.Build.0 = Release|Win32 - {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release_Mono|x64.ActiveCfg = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.ActiveCfg = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.Build.0 = Release|Win32 {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DirectSound|Win32.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DirectSound|Win32.Build.0 = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DirectSound|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DLL|Win32.Build.0 = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug DLL|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug MS-LDAP|Win32.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug MS-LDAP|Win32.Build.0 = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug MS-LDAP|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Passthrough|Win32.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Passthrough|Win32.Build.0 = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Passthrough|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Static|Win32.Build.0 = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug Static|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_CLR|Win32.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_CLR|Win32.Build.0 = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_CLR|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_Mono|Win32.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_Mono|Win32.Build.0 = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug_Mono|x64.ActiveCfg = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.ActiveCfg = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.Build.0 = Debug|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.ActiveCfg = Debug|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DirectSound|Win32.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DirectSound|Win32.Build.0 = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DirectSound|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DLL|Win32.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DLL|Win32.Build.0 = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release DLL|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release MS-LDAP|Win32.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release MS-LDAP|Win32.Build.0 = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release MS-LDAP|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Passthrough|Win32.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Passthrough|Win32.Build.0 = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Passthrough|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Static|Win32.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Static|Win32.Build.0 = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release Static|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_CLR|Win32.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_CLR|Win32.Build.0 = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_CLR|x64.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_Mono|Win32.ActiveCfg = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_Mono|Win32.Build.0 = Release|Win32 - {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release_Mono|x64.ActiveCfg = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.ActiveCfg = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.ActiveCfg = Release|Win32 From mikej at freeswitch.org Thu Jan 1 19:27:51 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 22:27:51 -0500 Subject: [Freeswitch-svn] [commit] r11051 - freeswitch/branches/1.0 Message-ID: Author: mikej Date: Thu Jan 1 22:27:51 2009 New Revision: 11051 Log: create 1.0 branch from svn trunk revision 11050 Added: freeswitch/branches/1.0/ - copied from r11050, /freeswitch/trunk/ From mikej at freeswitch.org Thu Jan 1 19:30:34 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 22:30:34 -0500 Subject: [Freeswitch-svn] [commit] r11052 - freeswitch/branches/1.1 Message-ID: Author: mikej Date: Thu Jan 1 22:30:34 2009 New Revision: 11052 Log: create 1.1 branch from svn trunk revision 11050 Added: freeswitch/branches/1.1/ - copied from r11051, /freeswitch/trunk/ From silik0n at freeswitch.org Thu Jan 1 20:31:35 2009 From: silik0n at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 23:31:35 -0500 Subject: [Freeswitch-svn] [commit] r11054 - freeswitch/trunk/src/mod/applications/mod_easyroute Message-ID: Author: silik0n Date: Thu Jan 1 23:31:34 2009 New Revision: 11054 Log: even easier Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c (original) +++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c Thu Jan 1 23:31:34 2009 @@ -68,6 +68,7 @@ char *default_techprofile; char *default_gateway; switch_mutex_t *mutex; + char *custom_query; #ifdef SWITCH_HAVE_ODBC switch_odbc_handle_t *master_odbc; #else @@ -84,6 +85,7 @@ SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_db_dsn, globals.db_dsn); SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_default_techprofile, globals.default_techprofile); SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_default_gateway, globals.default_gateway); +SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_custom_query, globals.custom_query); static int route_callback(void *pArg, int argc, char **argv, char **columnNames) { @@ -117,28 +119,30 @@ for (param = switch_xml_child(settings, "param"); param; param = param->next) { char *var = (char *) switch_xml_attr_soft(param, "name"); char *val = (char *) switch_xml_attr_soft(param, "value"); - if (!strcasecmp(var, "db_username")) { + if (!strcasecmp(var, "db-username")) { set_global_db_username(val); - } else if (!strcasecmp(var, "db_password")) { + } else if (!strcasecmp(var, "db-password")) { set_global_db_password(val); - } else if (!strcasecmp(var, "db_dsn")) { + } else if (!strcasecmp(var, "db-dsn")) { set_global_db_dsn(val); } else if (!strcasecmp(var, "default-techprofile")) { set_global_default_techprofile(val); } else if (!strcasecmp(var, "default-gateway")) { set_global_default_gateway(val); + } else if (!strcasecmp(var, "custom-query")) { + set_global_custom_query(val); } } } done: - if (!globals.db_username) { + if (switch_strlen_zero(globals.db_username)) { set_global_db_username("root"); } - if (!globals.db_password) { + if (switch_strlen_zero(globals.db_password)) { set_global_db_password("password"); } - if (!globals.db_dsn) { + if (switch_strlen_zero(globals.db_dsn)) { set_global_db_dsn("easyroute"); } @@ -196,8 +200,13 @@ route_callback_t pdata; memset(&pdata, 0, sizeof(pdata)); - - snprintf(sql, 1025, SQL_LOOKUP, dn); + if (!globals.custom_query){ + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Doing static Query\n[%s]\n", SQL_LOOKUP); + snprintf(sql, 1024, SQL_LOOKUP, dn); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Doing custom Query\n[%s]\n", globals.custom_query); + snprintf(sql, 1024, globals.custom_query, dn); + } if (globals.mutex){ switch_mutex_lock(globals.mutex); @@ -207,7 +216,7 @@ if (switch_odbc_handle_callback_exec(globals.master_odbc, sql, route_callback, &pdata) == SWITCH_ODBC_SUCCESS){ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "SQL Query\n[%s]\n", sql); char tmp_profile[129]; - char tmp_gateway[16]; + char tmp_gateway[129]; if (switch_strlen_zero(pdata.limit)) { switch_set_string(results->limit, "9999" ); @@ -234,7 +243,7 @@ } switch_snprintf(results->dialstring, 256, "%s/%s@%s", tmp_profile , results->translated, tmp_gateway); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "THE ROUTE [%s]", results->dialstring); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "THE ROUTE [%s]\n", results->dialstring); if (switch_strlen_zero(pdata.group)){ switch_set_string(results->group, ""); From silik0n at freeswitch.org Thu Jan 1 20:38:13 2009 From: silik0n at freeswitch.org (FreeSWITCH SVN) Date: Thu, 01 Jan 2009 23:38:13 -0500 Subject: [Freeswitch-svn] [commit] r11055 - freeswitch/trunk/conf/autoload_configs Message-ID: Author: silik0n Date: Thu Jan 1 23:38:12 2009 New Revision: 11055 Log: tweak Modified: freeswitch/trunk/conf/autoload_configs/easyroute.conf.xml Modified: freeswitch/trunk/conf/autoload_configs/easyroute.conf.xml ============================================================================== --- freeswitch/trunk/conf/autoload_configs/easyroute.conf.xml (original) +++ freeswitch/trunk/conf/autoload_configs/easyroute.conf.xml Thu Jan 1 23:38:12 2009 @@ -10,5 +10,16 @@ + + + From anthm at freeswitch.org Fri Jan 2 09:39:32 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Fri, 02 Jan 2009 12:39:32 -0500 Subject: [Freeswitch-svn] [commit] r11056 - freeswitch/trunk/src/mod/event_handlers/mod_event_socket Message-ID: Author: anthm Date: Fri Jan 2 12:39:31 2009 New Revision: 11056 Log: tweak Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c Fri Jan 2 12:39:31 2009 @@ -719,6 +719,7 @@ listener->last_flush = switch_timestamp(NULL); if (events) { + char delim = ','; if (switch_stristr("xml", format)) { listener->format = EVENT_FORMAT_XML; @@ -727,11 +728,15 @@ } edup = strdup(events); - + + if (strchr(edup, ' ')) { + delim = ' '; + } + for (cur = edup; cur; count++) { switch_event_types_t type; - if ((next = strchr(cur, ' '))) { + if ((next = strchr(cur, delim))) { *next++ = '\0'; } From silik0n at freeswitch.org Fri Jan 2 09:40:26 2009 From: silik0n at freeswitch.org (FreeSWITCH SVN) Date: Fri, 02 Jan 2009 12:40:26 -0500 Subject: [Freeswitch-svn] [commit] r11057 - freeswitch/trunk/libs/esl Message-ID: Author: silik0n Date: Fri Jan 2 12:40:26 2009 New Revision: 11057 Log: why didnt we do this earlier Modified: freeswitch/trunk/libs/esl/fs_cli.c Modified: freeswitch/trunk/libs/esl/fs_cli.c ============================================================================== --- freeswitch/trunk/libs/esl/fs_cli.c (original) +++ freeswitch/trunk/libs/esl/fs_cli.c Fri Jan 2 12:40:26 2009 @@ -285,6 +285,17 @@ goto end; } + + if (!strncasecmp(cmd, "debug", 5)){ + int tmp_debug = atoi(cmd+6); + if (tmp_debug > -1 && tmp_debug < 8){ + esl_global_set_default_logger(tmp_debug); + printf("fs_cli debug level set to %d\n", tmp_debug); + } else { + printf("fs_cli debug level must be 0 - 7\n"); + } + goto end; + } printf("Unknown command [%s]\n", cmd); } else { From mcollins at freeswitch.org Fri Jan 2 10:36:00 2009 From: mcollins at freeswitch.org (FreeSWITCH SVN) Date: Fri, 02 Jan 2009 13:36:00 -0500 Subject: [Freeswitch-svn] [commit] r11058 - freeswitch/trunk/docs Message-ID: Author: mcollins Date: Fri Jan 2 13:35:59 2009 New Revision: 11058 Log: Bump Doxygen version to 1.0.2 Modified: freeswitch/trunk/docs/Doxygen.conf Modified: freeswitch/trunk/docs/Doxygen.conf ============================================================================== --- freeswitch/trunk/docs/Doxygen.conf (original) +++ freeswitch/trunk/docs/Doxygen.conf Fri Jan 2 13:35:59 2009 @@ -4,7 +4,7 @@ # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = FreeSWITCH -PROJECT_NUMBER = 1.0.1 +PROJECT_NUMBER = 1.0.2 OUTPUT_DIRECTORY = . CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English From mikej at freeswitch.org Fri Jan 2 11:58:36 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Fri, 02 Jan 2009 14:58:36 -0500 Subject: [Freeswitch-svn] [commit] r11059 - freeswitch/trunk/src/mod/endpoints/mod_sofia Message-ID: Author: mikej Date: Fri Jan 2 14:58:36 2009 New Revision: 11059 Log: better error message Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c Fri Jan 2 14:58:36 2009 @@ -1252,8 +1252,8 @@ break; default: sofia_private->gateway->state = REG_STATE_FAILED; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s Registration Failed with status %d. failure #%d\n", - sofia_private->gateway->name, status, ++sofia_private->gateway->failures); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s Registration Failed with status %s [%d]. failure #%d\n", + sofia_private->gateway->name, switch_str_nil(phrase), status, ++sofia_private->gateway->failures); break; } if (ostate != sofia_private->gateway->state) { From mikej at freeswitch.org Fri Jan 2 12:55:11 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Fri, 02 Jan 2009 15:55:11 -0500 Subject: [Freeswitch-svn] [commit] r11060 - freeswitch/trunk/src/mod/event_handlers/mod_event_socket Message-ID: Author: mikej Date: Fri Jan 2 15:55:09 2009 New Revision: 11060 Log: add debug logs Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c Fri Jan 2 15:55:09 2009 @@ -778,6 +778,7 @@ stream->write_function(stream, " Listener %u Created\n", listener->id); xmlize_listener(listener, stream); stream->write_function(stream, "\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating event-sink listener [%u]\n", listener->id); goto end; } else if (!strcasecmp(wcmd, "destroy-listener")) { @@ -789,6 +790,7 @@ } if ((listener = find_listener(idl))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Destroying event-sink listener [%u]\n", idl); remove_listener(listener); stream->write_function(stream, "\n listener %u destroyed\n", listener->id); xmlize_listener(listener, stream); @@ -796,6 +798,7 @@ expire_listener(&listener); goto end; } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Request to destroy unknown event-sink listener [%u]\n", idl); stream->write_function(stream, "Can't find listener\n"); goto end; } From anthm at freeswitch.org Fri Jan 2 19:10:12 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Fri, 02 Jan 2009 22:10:12 -0500 Subject: [Freeswitch-svn] [commit] r11061 - freeswitch/trunk/src Message-ID: Author: anthm Date: Fri Jan 2 22:10:11 2009 New Revision: 11061 Log: fix issue MODENDP-165 Modified: freeswitch/trunk/src/switch_ivr_bridge.c freeswitch/trunk/src/switch_ivr_originate.c Modified: freeswitch/trunk/src/switch_ivr_bridge.c ============================================================================== --- freeswitch/trunk/src/switch_ivr_bridge.c (original) +++ freeswitch/trunk/src/switch_ivr_bridge.c Fri Jan 2 22:10:11 2009 @@ -829,8 +829,8 @@ switch_channel_set_variable(peer_channel, SWITCH_BRIDGE_VARIABLE, switch_core_session_get_uuid(session)); if (!switch_channel_media_ready(caller_channel) || - !(switch_channel_test_flag(peer_channel, CF_ANSWERED) || switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA))) { - if ((status = switch_ivr_wait_for_answer(session, peer_session)) != SWITCH_STATUS_SUCCESS) { + (!switch_channel_test_flag(peer_channel, CF_ANSWERED) && !switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA))) { + if ((status = switch_ivr_wait_for_answer(session, peer_session)) != SWITCH_STATUS_SUCCESS || !switch_channel_ready(caller_channel)) { switch_channel_state_t w_state = switch_channel_get_state(caller_channel); switch_channel_hangup(peer_channel, SWITCH_CAUSE_ALLOTTED_TIMEOUT); if (w_state < CS_HANGUP && w_state != CS_ROUTING && w_state != CS_PARK && @@ -850,6 +850,7 @@ switch_core_session_rwunlock(peer_session); goto done; } + if (switch_channel_test_flag(peer_channel, CF_ANSWERED) && !switch_channel_test_flag(caller_channel, CF_ANSWERED)) { switch_channel_answer(caller_channel); } Modified: freeswitch/trunk/src/switch_ivr_originate.c ============================================================================== --- freeswitch/trunk/src/switch_ivr_originate.c (original) +++ freeswitch/trunk/src/switch_ivr_originate.c Fri Jan 2 22:10:11 2009 @@ -330,7 +330,7 @@ } if ((switch_channel_test_flag(peer_channel, CF_ANSWERED) || switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA))) { - return SWITCH_STATUS_SUCCESS; + goto end; } switch_zmalloc(write_frame.data, SWITCH_RECOMMENDED_BUFFER_SIZE); @@ -551,7 +551,9 @@ switch_safe_free(write_frame.data); - return status; + end: + + return (!caller_channel || switch_channel_ready(caller_channel)) ? status : SWITCH_STATUS_FALSE; } static void process_import(switch_core_session_t *session, switch_channel_t *peer_channel) From anthm at freeswitch.org Sat Jan 3 10:04:31 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Sat, 03 Jan 2009 13:04:31 -0500 Subject: [Freeswitch-svn] [commit] r11062 - freeswitch/trunk/src/mod/applications/mod_conference Message-ID: Author: anthm Date: Sat Jan 3 13:04:30 2009 New Revision: 11062 Log: add 'conference xml_list' and 'conference myconf xml_list' Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c (original) +++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Sat Jan 3 13:04:30 2009 @@ -3038,6 +3038,142 @@ return ret_status; } + +static void add_x_tag(switch_xml_t x_member, const char *name, const char *value, int off) +{ + switch_size_t dlen = strlen(value) * 3; + char *data; + switch_xml_t x_tag; + + x_tag = switch_xml_add_child_d(x_member, name, off); + switch_assert(x_tag); + + switch_zmalloc(data, dlen); + + switch_url_encode(value, data, dlen); + switch_xml_set_txt_d(x_tag, data); + free(data); +} + +static void conference_xlist(conference_obj_t *conference, switch_xml_t x_conference, int off) +{ + conference_member_t *member = NULL; + switch_xml_t x_member = NULL, x_members = NULL, x_flags; + int moff = 0; + char i[30] = ""; + + switch_assert(conference != NULL); + switch_assert(x_conference != NULL); + + switch_xml_set_attr_d(x_conference, "name", conference->name); + + + switch_snprintf(i, sizeof(i), "%d", conference->count); + switch_xml_set_attr_d(x_conference, "member-count", i); + + if (switch_test_flag(conference, CFLAG_LOCKED)) { + switch_xml_set_attr_d(x_conference, "locked", "true"); + } + + x_members = switch_xml_add_child_d(x_conference, "members", 0); + switch_assert(x_members); + + switch_mutex_lock(conference->member_mutex); + + for (member = conference->members; member; member = member->next) { + switch_channel_t *channel; + switch_caller_profile_t *profile; + char *uuid; + char *name; + uint32_t count = 0; + switch_xml_t x_tag; + int toff = 0; + + if (switch_test_flag(member, MFLAG_NOCHANNEL)) { + continue; + } + + uuid = switch_core_session_get_uuid(member->session); + channel = switch_core_session_get_channel(member->session); + profile = switch_channel_get_caller_profile(channel); + name = switch_channel_get_name(channel); + + + x_member = switch_xml_add_child_d(x_members, "member", moff++); + switch_assert(x_member); + + switch_snprintf(i, sizeof(i), "%d", member->id); + + add_x_tag(x_member, "id", i, toff++); + add_x_tag(x_member, "uuid", uuid, toff++); + add_x_tag(x_member, "caller_id_name", profile->caller_id_name, toff++); + add_x_tag(x_member, "caller_id_number", profile->caller_id_number, toff++); + + + x_flags = switch_xml_add_child_d(x_member, "flags", count++); + switch_assert(x_flags); + + x_tag = switch_xml_add_child_d(x_flags, "can_hear", count++); + switch_xml_set_txt_d(x_tag, switch_test_flag(member, MFLAG_CAN_HEAR) ? "true" : "false"); + + x_tag = switch_xml_add_child_d(x_flags, "can_speak", count++); + switch_xml_set_txt_d(x_tag, switch_test_flag(member, MFLAG_CAN_SPEAK) ? "true" : "false"); + + x_tag = switch_xml_add_child_d(x_flags, "talking", count++); + switch_xml_set_txt_d(x_tag, switch_test_flag(member, MFLAG_TALKING) ? "true" : "false"); + + x_tag = switch_xml_add_child_d(x_flags, "has_video", count++); + switch_xml_set_txt_d(x_tag, switch_channel_test_flag(switch_core_session_get_channel(member->session), CF_VIDEO) ? "true" : "false"); + + x_tag = switch_xml_add_child_d(x_flags, "has_floor", count++); + switch_xml_set_txt_d(x_tag, (member == member->conference->floor_holder) ? "true" : "false"); + + } + + switch_mutex_unlock(conference->member_mutex); +} +static switch_status_t conf_api_sub_xml_list(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv) +{ + int count = 0; + switch_hash_index_t *hi; + void *val; + switch_xml_t x_conference, x_conferences; + int off = 0; + char *ebuf; + + x_conferences = switch_xml_new("conferences"); + switch_assert(x_conferences); + + if (conference == NULL) { + for (hi = switch_hash_first(NULL, globals.conference_hash); hi; hi = switch_hash_next(hi)) { + switch_hash_this(hi, NULL, NULL, &val); + conference = (conference_obj_t *) val; + + x_conference = switch_xml_add_child_d(x_conferences, "conference", off++); + switch_assert(conference); + + count++; + conference_xlist(conference, x_conference, off); + + } + } else { + x_conference = switch_xml_add_child_d(x_conferences, "conference", off++); + switch_assert(conference); + count++; + conference_xlist(conference, x_conference, off); + } + + + ebuf = switch_xml_toxml(x_conferences, SWITCH_TRUE); + + stream->write_function(stream, "%s", ebuf); + + switch_xml_free(x_conferences); + free(ebuf); + + return SWITCH_STATUS_SUCCESS; +} + static switch_status_t conf_api_sub_play(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv) { int ret_status = SWITCH_STATUS_GENERR; @@ -3578,6 +3714,7 @@ /* Entries in this list should be kept in sync with the enum above */ static api_command_t conf_api_sub_commands[] = { {"list", (void_fn_t) &conf_api_sub_list, CONF_API_SUB_ARGS_SPLIT, " list [delim ]"}, + {"xml_list", (void_fn_t) &conf_api_sub_xml_list, CONF_API_SUB_ARGS_SPLIT, " xml_list"}, {"energy", (void_fn_t) &conf_api_sub_energy, CONF_API_SUB_MEMBER_TARGET, " energy []"}, {"volume_in", (void_fn_t) &conf_api_sub_volume_in, CONF_API_SUB_MEMBER_TARGET, @@ -3778,6 +3915,8 @@ /* special case the list command, because it doesn't require a conference argument */ if (strcasecmp(argv[0], "list") == 0) { conf_api_sub_list(NULL, stream, argc, argv); + } else if (strcasecmp(argv[0], "xml_list") == 0) { + conf_api_sub_xml_list(NULL, stream, argc, argv); } else if (strcasecmp(argv[0], "help") == 0 || strcasecmp(argv[0], "commands") == 0) { stream->write_function(stream, "%s\n", api_syntax); } else if (argv[1] && strcasecmp(argv[1], "dial") == 0) { From brian at freeswitch.org Sat Jan 3 10:24:45 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Sat, 03 Jan 2009 13:24:45 -0500 Subject: [Freeswitch-svn] [commit] r11063 - freeswitch/trunk/src/mod/applications/mod_conference Message-ID: Author: brian Date: Sat Jan 3 13:24:45 2009 New Revision: 11063 Log: shush compiler Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c (original) +++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Sat Jan 3 13:24:45 2009 @@ -3061,15 +3061,13 @@ switch_xml_t x_member = NULL, x_members = NULL, x_flags; int moff = 0; char i[30] = ""; - + char *ival = i; switch_assert(conference != NULL); switch_assert(x_conference != NULL); switch_xml_set_attr_d(x_conference, "name", conference->name); - - switch_snprintf(i, sizeof(i), "%d", conference->count); - switch_xml_set_attr_d(x_conference, "member-count", i); + switch_xml_set_attr_d(x_conference, "member-count", ival); if (switch_test_flag(conference, CFLAG_LOCKED)) { switch_xml_set_attr_d(x_conference, "locked", "true"); From brian at freeswitch.org Sat Jan 3 10:57:31 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Sat, 03 Jan 2009 13:57:31 -0500 Subject: [Freeswitch-svn] [commit] r11064 - freeswitch/trunk/src/mod/xml_int/mod_xml_rpc Message-ID: Author: brian Date: Sat Jan 3 13:57:31 2009 New Revision: 11064 Log: TIMMAH!!!!!! Modified: freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c Modified: freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c ============================================================================== --- freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c (original) +++ freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c Sat Jan 3 13:57:31 2009 @@ -178,6 +178,7 @@ if ((dp = strchr(user, '@'))) { *dp++ = '\0'; domain_name = dp; + at++; } if (!domain_name) { From silik0n at freeswitch.org Sat Jan 3 13:39:13 2009 From: silik0n at freeswitch.org (FreeSWITCH SVN) Date: Sat, 03 Jan 2009 16:39:13 -0500 Subject: [Freeswitch-svn] [commit] r11065 - freeswitch/trunk/src/mod/applications/mod_easyroute Message-ID: Author: silik0n Date: Sat Jan 3 16:39:12 2009 New Revision: 11065 Log: Now we\'re really ready Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c (original) +++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c Sat Jan 3 16:39:12 2009 @@ -32,7 +32,7 @@ * Take Incoming DIDs and Lookup where to send them as well as retrieve * the number of channels they are allowed you use * - * Big Thanks to CP, for funding this work. + * Big Thanks to CP and Joseph Watson (Powercode Systems, LLC) for funding this work. * */ From brian at freeswitch.org Sat Jan 3 16:58:51 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Sat, 03 Jan 2009 19:58:51 -0500 Subject: [Freeswitch-svn] [commit] r11066 - freeswitch/trunk/src/mod/applications/mod_conference Message-ID: Author: brian Date: Sat Jan 3 19:58:50 2009 New Revision: 11066 Log: don't add pre tag because its bad to assume Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c (original) +++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Sat Jan 3 19:58:50 2009 @@ -3882,11 +3882,6 @@ http = switch_event_get_header(stream->param_event, "http-host"); } - if (http) { - /* Output must be to a web browser */ - stream->write_function(stream, "
\n");
-	}
-
 	if (!(lbuf = strdup(cmd))) {
 		return status;
 	}


From cypromis at freeswitch.org  Mon Jan  5 07:01:48 2009
From: cypromis at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 05 Jan 2009 10:01:48 -0500
Subject: [Freeswitch-svn] [commit] r11067 -
	freeswitch/trunk/libs/esl/src/include
Message-ID: 

Author: cypromis
Date: Mon Jan  5 10:01:47 2009
New Revision: 11067

Log:
getting rid of freaking DOS file endings


Modified:
   freeswitch/trunk/libs/esl/src/include/esl.h

Modified: freeswitch/trunk/libs/esl/src/include/esl.h
==============================================================================
--- freeswitch/trunk/libs/esl/src/include/esl.h	(original)
+++ freeswitch/trunk/libs/esl/src/include/esl.h	Mon Jan  5 10:01:47 2009
@@ -1,329 +1,329 @@
-/*
- * Copyright (c) 2007, Anthony Minessale II
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 
- * * Neither the name of the original author; nor the names of any contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _ESL_H_
-#define _ESL_H_
-
-#include 
-
-#define esl_copy_string(_x, _y, _z) strncpy(_x, _y, _z - 1)
-#define esl_set_string(_x, _y) esl_copy_string(_x, _y, sizeof(_x))
-
-typedef struct esl_event_header esl_event_header_t;
-typedef struct esl_event esl_event_t;
-
-#ifdef WIN32
-#define ESL_SEQ_FWHITE FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY
-#define ESL_SEQ_FRED FOREGROUND_RED | FOREGROUND_INTENSITY
-#define ESL_SEQ_FMAGEN FOREGROUND_BLUE | FOREGROUND_RED
-#define ESL_SEQ_FCYAN FOREGROUND_GREEN | FOREGROUND_BLUE
-#define ESL_SEQ_FGREEN FOREGROUND_GREEN
-#define ESL_SEQ_FYELLOW FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY
-#define ESL_SEQ_DEFAULT_COLOR ESL_SEQ_FWHITE
-#else
-#define ESL_SEQ_ESC "\033["
-/* Ansi Control character suffixes */
-#define ESL_SEQ_HOME_CHAR 'H'
-#define ESL_SEQ_HOME_CHAR_STR "H"
-#define ESL_SEQ_CLEARLINE_CHAR '1'
-#define ESL_SEQ_CLEARLINE_CHAR_STR "1"
-#define ESL_SEQ_CLEARLINEEND_CHAR "K"
-#define ESL_SEQ_CLEARSCR_CHAR0 '2'
-#define ESL_SEQ_CLEARSCR_CHAR1 'J'
-#define ESL_SEQ_CLEARSCR_CHAR "2J"
-#define ESL_SEQ_DEFAULT_COLOR ESL_SEQ_ESC ESL_SEQ_END_COLOR	/* Reset to Default fg/bg color */
-#define ESL_SEQ_AND_COLOR ";"	/* To add multiple color definitions */
-#define ESL_SEQ_END_COLOR "m"	/* To end color definitions */
-/* Foreground colors values */
-#define ESL_SEQ_F_BLACK "30"
-#define ESL_SEQ_F_RED "31"
-#define ESL_SEQ_F_GREEN "32"
-#define ESL_SEQ_F_YELLOW "33"
-#define ESL_SEQ_F_BLUE "34"
-#define ESL_SEQ_F_MAGEN "35"
-#define ESL_SEQ_F_CYAN "36"
-#define ESL_SEQ_F_WHITE "37"
-/* Background colors values */
-#define ESL_SEQ_B_BLACK "40"
-#define ESL_SEQ_B_RED "41"
-#define ESL_SEQ_B_GREEN "42"
-#define ESL_SEQ_B_YELLOW "43"
-#define ESL_SEQ_B_BLUE "44"
-#define ESL_SEQ_B_MAGEN "45"
-#define ESL_SEQ_B_CYAN "46"
-#define ESL_SEQ_B_WHITE "47"
-/* Preset escape sequences - Change foreground colors only */
-#define ESL_SEQ_FBLACK ESL_SEQ_ESC ESL_SEQ_F_BLACK ESL_SEQ_END_COLOR
-#define ESL_SEQ_FRED ESL_SEQ_ESC ESL_SEQ_F_RED ESL_SEQ_END_COLOR
-#define ESL_SEQ_FGREEN ESL_SEQ_ESC ESL_SEQ_F_GREEN ESL_SEQ_END_COLOR
-#define ESL_SEQ_FYELLOW ESL_SEQ_ESC ESL_SEQ_F_YELLOW ESL_SEQ_END_COLOR
-#define ESL_SEQ_FBLUE ESL_SEQ_ESC ESL_SEQ_F_BLUE ESL_SEQ_END_COLOR
-#define ESL_SEQ_FMAGEN ESL_SEQ_ESC ESL_SEQ_F_MAGEN ESL_SEQ_END_COLOR
-#define ESL_SEQ_FCYAN ESL_SEQ_ESC ESL_SEQ_F_CYAN ESL_SEQ_END_COLOR
-#define ESL_SEQ_FWHITE ESL_SEQ_ESC ESL_SEQ_F_WHITE ESL_SEQ_END_COLOR
-#define ESL_SEQ_BBLACK ESL_SEQ_ESC ESL_SEQ_B_BLACK ESL_SEQ_END_COLOR
-#define ESL_SEQ_BRED ESL_SEQ_ESC ESL_SEQ_B_RED ESL_SEQ_END_COLOR
-#define ESL_SEQ_BGREEN ESL_SEQ_ESC ESL_SEQ_B_GREEN ESL_SEQ_END_COLOR
-#define ESL_SEQ_BYELLOW ESL_SEQ_ESC ESL_SEQ_B_YELLOW ESL_SEQ_END_COLOR
-#define ESL_SEQ_BBLUE ESL_SEQ_ESC ESL_SEQ_B_BLUE ESL_SEQ_END_COLOR
-#define ESL_SEQ_BMAGEN ESL_SEQ_ESC ESL_SEQ_B_MAGEN ESL_SEQ_END_COLOR
-#define ESL_SEQ_BCYAN ESL_SEQ_ESC ESL_SEQ_B_CYAN ESL_SEQ_END_COLOR
-#define ESL_SEQ_BWHITE ESL_SEQ_ESC ESL_SEQ_B_WHITE ESL_SEQ_END_COLOR
-/* Preset escape sequences */
-#define ESL_SEQ_HOME ESL_SEQ_ESC ESL_SEQ_HOME_CHAR_STR
-#define ESL_SEQ_CLEARLINE ESL_SEQ_ESC ESL_SEQ_CLEARLINE_CHAR_STR
-#define ESL_SEQ_CLEARLINEEND ESL_SEQ_ESC ESL_SEQ_CLEARLINEEND_CHAR
-#define ESL_SEQ_CLEARSCR ESL_SEQ_ESC ESL_SEQ_CLEARSCR_CHAR ESL_SEQ_HOME
-#endif
-
-#if !defined(_XOPEN_SOURCE) && !defined(__FreeBSD__) && !defined(__NetBSD__)
-#define _XOPEN_SOURCE 600
-#endif
-
-#ifndef HAVE_STRINGS_H
-#define HAVE_STRINGS_H 1
-#endif
-#ifndef HAVE_SYS_SOCKET_H
-#define HAVE_SYS_SOCKET_H 1
-#endif
-
-#ifndef __WINDOWS__
-#if defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32)
-#define __WINDOWS__
-#endif
-#endif
-
-#ifdef _MSC_VER
-#ifndef __inline__
-#define __inline__ __inline
-#endif
-#if (_MSC_VER >= 1400)			/* VC8+ */
-#ifndef _CRT_SECURE_NO_DEPRECATE
-#define _CRT_SECURE_NO_DEPRECATE
-#endif
-#ifndef _CRT_NONSTDC_NO_DEPRECATE
-#define _CRT_NONSTDC_NO_DEPRECATE
-#endif
-#endif
-#ifndef strcasecmp
-#define strcasecmp(s1, s2) _stricmp(s1, s2)
-#endif
-#ifndef strncasecmp
-#define strncasecmp(s1, s2, n) _strnicmp(s1, s2, n)
-#endif
-#ifndef snprintf
-#define snprintf _snprintf
-#endif
-#ifndef S_IRUSR
-#define S_IRUSR _S_IREAD
-#endif
-#ifndef S_IWUSR
-#define S_IWUSR _S_IWRITE
-#endif
-#undef HAVE_STRINGS_H
-#undef HAVE_SYS_SOCKET_H
-#endif
-
-#include 
-#ifndef WIN32
-#include 
-#endif
-
-#include 
-#include 
-#include 
-#include 
-#ifndef WIN32
-#include 
-#include 
-#include 
-#endif
-
-#ifdef HAVE_STRINGS_H
-#include 
-#endif
-#include 
-
-#if (_MSC_VER >= 1400)			// VC8+
-#define esl_assert(expr) assert(expr);__analysis_assume( expr )
-#endif
-
-#ifndef esl_assert
-#define esl_assert(_x) assert(_x)
-#endif
-
-#define esl_safe_free(_x) if (_x) free(_x); _x = NULL
-#define esl_strlen_zero(s) (!s || *(s) == '\0')
-#define esl_strlen_zero_buf(s) (*(s) == '\0')
-
-#ifdef WIN32
-#include 
-#include 
-typedef SOCKET esl_socket_t;
-typedef unsigned __int64 uint64_t;
-typedef unsigned __int32 uint32_t;
-typedef unsigned __int16 uint16_t;
-typedef unsigned __int8 uint8_t;
-typedef __int64 int64_t;
-typedef __int32 int32_t;
-typedef __int16 int16_t;
-typedef __int8 int8_t;
-typedef intptr_t esl_ssize_t;
-typedef int esl_filehandle_t;
-#define ESL_SOCK_INVALID INVALID_SOCKET
-#define strerror_r(num, buf, size) strerror_s(buf, size, num)
-#if defined(ESL_DECLARE_STATIC)
-#define ESL_DECLARE(type)			type __stdcall
-#define ESL_DECLARE_NONSTD(type)		type __cdecl
-#define ESL_DECLARE_DATA
-#elif defined(ESL_EXPORTS)
-#define ESL_DECLARE(type)			__declspec(dllexport) type __stdcall
-#define ESL_DECLARE_NONSTD(type)		__declspec(dllexport) type __cdecl
-#define ESL_DECLARE_DATA				__declspec(dllexport)
-#else
-#define ESL_DECLARE(type)			__declspec(dllimport) type __stdcall
-#define ESL_DECLARE_NONSTD(type)		__declspec(dllimport) type __cdecl
-#define ESL_DECLARE_DATA				__declspec(dllimport)
-#endif
-#else
-#define ESL_DECLARE(type) type
-#define ESL_DECLARE_NONSTD(type) type
-#define ESL_DECLARE_DATA
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#define ESL_SOCK_INVALID -1
-typedef int esl_socket_t;
-typedef ssize_t esl_ssize_t;
-typedef int esl_filehandle_t;
-#endif
-
-typedef int16_t esl_port_t;
-
-typedef enum {
-	ESL_SUCCESS,
-	ESL_FAIL,
-	ESL_BREAK
-} esl_status_t;
-
-#include 
-
-typedef struct {
-	struct sockaddr_in sockaddr;
-	struct hostent hostent;
-	char hostbuf[256];
-	esl_socket_t sock;
-	char err[256];
-	int errnum;
-	char header_buf[4196];
-	char last_reply[1024];
-	char last_sr_reply[1024];
-	esl_event_t *last_event;
-	esl_event_t *last_sr_event;
-	esl_event_t *last_ievent;
-	esl_event_t *info_event;
-	int connected;
-	struct sockaddr_in addr;
-	esl_mutex_t *mutex;
-} esl_handle_t;
-
-typedef enum {
-	ESL_TRUE = 1,
-	ESL_FALSE = 0
-} esl_bool_t;
-
-#ifndef __FUNCTION__
-#define __FUNCTION__ (const char *)__func__
-#endif
-
-#define ESL_PRE __FILE__, __FUNCTION__, __LINE__
-#define ESL_LOG_LEVEL_DEBUG 7
-#define ESL_LOG_LEVEL_INFO 6
-#define ESL_LOG_LEVEL_NOTICE 5
-#define ESL_LOG_LEVEL_WARNING 4
-#define ESL_LOG_LEVEL_ERROR 3
-#define ESL_LOG_LEVEL_CRIT 2
-#define ESL_LOG_LEVEL_ALERT 1
-#define ESL_LOG_LEVEL_EMERG 0
-
-#define ESL_LOG_DEBUG ESL_PRE, ESL_LOG_LEVEL_DEBUG
-#define ESL_LOG_INFO ESL_PRE, ESL_LOG_LEVEL_INFO
-#define ESL_LOG_NOTICE ESL_PRE, ESL_LOG_LEVEL_NOTICE
-#define ESL_LOG_WARNING ESL_PRE, ESL_LOG_LEVEL_WARNING
-#define ESL_LOG_ERROR ESL_PRE, ESL_LOG_LEVEL_ERROR
-#define ESL_LOG_CRIT ESL_PRE, ESL_LOG_LEVEL_CRIT
-#define ESL_LOG_ALERT ESL_PRE, ESL_LOG_LEVEL_ALERT
-#define ESL_LOG_EMERG ESL_PRE, ESL_LOG_LEVEL_EMERG
-typedef void (*esl_logger_t)(const char *file, const char *func, int line, int level, const char *fmt, ...);
-
-ESL_DECLARE_DATA extern esl_logger_t esl_log;
-
-ESL_DECLARE(void) esl_global_set_logger(esl_logger_t logger);
-ESL_DECLARE(void) esl_global_set_default_logger(int level);
-
-#include "esl_event.h"
-#include "esl_threadmutex.h"
-#include "esl_config.h"
-
-ESL_DECLARE(size_t) esl_url_encode(const char *url, char *buf, size_t len);
-ESL_DECLARE(char *)esl_url_decode(char *s);
-ESL_DECLARE(const char *)esl_stristr(const char *instr, const char *str);
-ESL_DECLARE(int) esl_toupper(int c);
-ESL_DECLARE(int) esl_tolower(int c);
-ESL_DECLARE(int) esl_snprintf(char *buffer, size_t count, const char *fmt, ...);
-
-
-typedef void (*esl_listen_callback_t)(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in addr);
-
-ESL_DECLARE(esl_status_t) esl_attach_handle(esl_handle_t *handle, esl_socket_t socket, struct sockaddr_in addr);
-ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback);
-ESL_DECLARE(esl_status_t) esl_execute(esl_handle_t *handle, const char *app, const char *arg, const char *uuid);
-ESL_DECLARE(esl_status_t) esl_sendevent(esl_handle_t *handle, esl_event_t *event);
-
-ESL_DECLARE(esl_status_t) esl_connect(esl_handle_t *handle, const char *host, esl_port_t port, const char *password);
-ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle);
-ESL_DECLARE(esl_status_t) esl_send(esl_handle_t *handle, const char *cmd);
-ESL_DECLARE(esl_status_t) esl_recv_event(esl_handle_t *handle, esl_event_t **save_event);
-ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms, esl_event_t **save_event);
-ESL_DECLARE(esl_status_t) esl_send_recv(esl_handle_t *handle, const char *cmd);
-#define esl_recv(_h) esl_recv_event(_h, NULL)
-#define esl_recv_timed(_h, _ms) esl_recv_event_timed(_h, _ms, NULL)
-
-#endif
-
-
-
+/*
+ * Copyright (c) 2007, Anthony Minessale II
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 
+ * * Neither the name of the original author; nor the names of any contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ * 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ESL_H_
+#define _ESL_H_
+
+#include 
+
+#define esl_copy_string(_x, _y, _z) strncpy(_x, _y, _z - 1)
+#define esl_set_string(_x, _y) esl_copy_string(_x, _y, sizeof(_x))
+
+typedef struct esl_event_header esl_event_header_t;
+typedef struct esl_event esl_event_t;
+
+#ifdef WIN32
+#define ESL_SEQ_FWHITE FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY
+#define ESL_SEQ_FRED FOREGROUND_RED | FOREGROUND_INTENSITY
+#define ESL_SEQ_FMAGEN FOREGROUND_BLUE | FOREGROUND_RED
+#define ESL_SEQ_FCYAN FOREGROUND_GREEN | FOREGROUND_BLUE
+#define ESL_SEQ_FGREEN FOREGROUND_GREEN
+#define ESL_SEQ_FYELLOW FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY
+#define ESL_SEQ_DEFAULT_COLOR ESL_SEQ_FWHITE
+#else
+#define ESL_SEQ_ESC "\033["
+/* Ansi Control character suffixes */
+#define ESL_SEQ_HOME_CHAR 'H'
+#define ESL_SEQ_HOME_CHAR_STR "H"
+#define ESL_SEQ_CLEARLINE_CHAR '1'
+#define ESL_SEQ_CLEARLINE_CHAR_STR "1"
+#define ESL_SEQ_CLEARLINEEND_CHAR "K"
+#define ESL_SEQ_CLEARSCR_CHAR0 '2'
+#define ESL_SEQ_CLEARSCR_CHAR1 'J'
+#define ESL_SEQ_CLEARSCR_CHAR "2J"
+#define ESL_SEQ_DEFAULT_COLOR ESL_SEQ_ESC ESL_SEQ_END_COLOR	/* Reset to Default fg/bg color */
+#define ESL_SEQ_AND_COLOR ";"	/* To add multiple color definitions */
+#define ESL_SEQ_END_COLOR "m"	/* To end color definitions */
+/* Foreground colors values */
+#define ESL_SEQ_F_BLACK "30"
+#define ESL_SEQ_F_RED "31"
+#define ESL_SEQ_F_GREEN "32"
+#define ESL_SEQ_F_YELLOW "33"
+#define ESL_SEQ_F_BLUE "34"
+#define ESL_SEQ_F_MAGEN "35"
+#define ESL_SEQ_F_CYAN "36"
+#define ESL_SEQ_F_WHITE "37"
+/* Background colors values */
+#define ESL_SEQ_B_BLACK "40"
+#define ESL_SEQ_B_RED "41"
+#define ESL_SEQ_B_GREEN "42"
+#define ESL_SEQ_B_YELLOW "43"
+#define ESL_SEQ_B_BLUE "44"
+#define ESL_SEQ_B_MAGEN "45"
+#define ESL_SEQ_B_CYAN "46"
+#define ESL_SEQ_B_WHITE "47"
+/* Preset escape sequences - Change foreground colors only */
+#define ESL_SEQ_FBLACK ESL_SEQ_ESC ESL_SEQ_F_BLACK ESL_SEQ_END_COLOR
+#define ESL_SEQ_FRED ESL_SEQ_ESC ESL_SEQ_F_RED ESL_SEQ_END_COLOR
+#define ESL_SEQ_FGREEN ESL_SEQ_ESC ESL_SEQ_F_GREEN ESL_SEQ_END_COLOR
+#define ESL_SEQ_FYELLOW ESL_SEQ_ESC ESL_SEQ_F_YELLOW ESL_SEQ_END_COLOR
+#define ESL_SEQ_FBLUE ESL_SEQ_ESC ESL_SEQ_F_BLUE ESL_SEQ_END_COLOR
+#define ESL_SEQ_FMAGEN ESL_SEQ_ESC ESL_SEQ_F_MAGEN ESL_SEQ_END_COLOR
+#define ESL_SEQ_FCYAN ESL_SEQ_ESC ESL_SEQ_F_CYAN ESL_SEQ_END_COLOR
+#define ESL_SEQ_FWHITE ESL_SEQ_ESC ESL_SEQ_F_WHITE ESL_SEQ_END_COLOR
+#define ESL_SEQ_BBLACK ESL_SEQ_ESC ESL_SEQ_B_BLACK ESL_SEQ_END_COLOR
+#define ESL_SEQ_BRED ESL_SEQ_ESC ESL_SEQ_B_RED ESL_SEQ_END_COLOR
+#define ESL_SEQ_BGREEN ESL_SEQ_ESC ESL_SEQ_B_GREEN ESL_SEQ_END_COLOR
+#define ESL_SEQ_BYELLOW ESL_SEQ_ESC ESL_SEQ_B_YELLOW ESL_SEQ_END_COLOR
+#define ESL_SEQ_BBLUE ESL_SEQ_ESC ESL_SEQ_B_BLUE ESL_SEQ_END_COLOR
+#define ESL_SEQ_BMAGEN ESL_SEQ_ESC ESL_SEQ_B_MAGEN ESL_SEQ_END_COLOR
+#define ESL_SEQ_BCYAN ESL_SEQ_ESC ESL_SEQ_B_CYAN ESL_SEQ_END_COLOR
+#define ESL_SEQ_BWHITE ESL_SEQ_ESC ESL_SEQ_B_WHITE ESL_SEQ_END_COLOR
+/* Preset escape sequences */
+#define ESL_SEQ_HOME ESL_SEQ_ESC ESL_SEQ_HOME_CHAR_STR
+#define ESL_SEQ_CLEARLINE ESL_SEQ_ESC ESL_SEQ_CLEARLINE_CHAR_STR
+#define ESL_SEQ_CLEARLINEEND ESL_SEQ_ESC ESL_SEQ_CLEARLINEEND_CHAR
+#define ESL_SEQ_CLEARSCR ESL_SEQ_ESC ESL_SEQ_CLEARSCR_CHAR ESL_SEQ_HOME
+#endif
+
+#if !defined(_XOPEN_SOURCE) && !defined(__FreeBSD__) && !defined(__NetBSD__)
+#define _XOPEN_SOURCE 600
+#endif
+
+#ifndef HAVE_STRINGS_H
+#define HAVE_STRINGS_H 1
+#endif
+#ifndef HAVE_SYS_SOCKET_H
+#define HAVE_SYS_SOCKET_H 1
+#endif
+
+#ifndef __WINDOWS__
+#if defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32)
+#define __WINDOWS__
+#endif
+#endif
+
+#ifdef _MSC_VER
+#ifndef __inline__
+#define __inline__ __inline
+#endif
+#if (_MSC_VER >= 1400)			/* VC8+ */
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE
+#endif
+#ifndef _CRT_NONSTDC_NO_DEPRECATE
+#define _CRT_NONSTDC_NO_DEPRECATE
+#endif
+#endif
+#ifndef strcasecmp
+#define strcasecmp(s1, s2) _stricmp(s1, s2)
+#endif
+#ifndef strncasecmp
+#define strncasecmp(s1, s2, n) _strnicmp(s1, s2, n)
+#endif
+#ifndef snprintf
+#define snprintf _snprintf
+#endif
+#ifndef S_IRUSR
+#define S_IRUSR _S_IREAD
+#endif
+#ifndef S_IWUSR
+#define S_IWUSR _S_IWRITE
+#endif
+#undef HAVE_STRINGS_H
+#undef HAVE_SYS_SOCKET_H
+#endif
+
+#include 
+#ifndef WIN32
+#include 
+#endif
+
+#include 
+#include 
+#include 
+#include 
+#ifndef WIN32
+#include 
+#include 
+#include 
+#endif
+
+#ifdef HAVE_STRINGS_H
+#include 
+#endif
+#include 
+
+#if (_MSC_VER >= 1400)			// VC8+
+#define esl_assert(expr) assert(expr);__analysis_assume( expr )
+#endif
+
+#ifndef esl_assert
+#define esl_assert(_x) assert(_x)
+#endif
+
+#define esl_safe_free(_x) if (_x) free(_x); _x = NULL
+#define esl_strlen_zero(s) (!s || *(s) == '\0')
+#define esl_strlen_zero_buf(s) (*(s) == '\0')
+
+#ifdef WIN32
+#include 
+#include 
+typedef SOCKET esl_socket_t;
+typedef unsigned __int64 uint64_t;
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int16 uint16_t;
+typedef unsigned __int8 uint8_t;
+typedef __int64 int64_t;
+typedef __int32 int32_t;
+typedef __int16 int16_t;
+typedef __int8 int8_t;
+typedef intptr_t esl_ssize_t;
+typedef int esl_filehandle_t;
+#define ESL_SOCK_INVALID INVALID_SOCKET
+#define strerror_r(num, buf, size) strerror_s(buf, size, num)
+#if defined(ESL_DECLARE_STATIC)
+#define ESL_DECLARE(type)			type __stdcall
+#define ESL_DECLARE_NONSTD(type)		type __cdecl
+#define ESL_DECLARE_DATA
+#elif defined(ESL_EXPORTS)
+#define ESL_DECLARE(type)			__declspec(dllexport) type __stdcall
+#define ESL_DECLARE_NONSTD(type)		__declspec(dllexport) type __cdecl
+#define ESL_DECLARE_DATA				__declspec(dllexport)
+#else
+#define ESL_DECLARE(type)			__declspec(dllimport) type __stdcall
+#define ESL_DECLARE_NONSTD(type)		__declspec(dllimport) type __cdecl
+#define ESL_DECLARE_DATA				__declspec(dllimport)
+#endif
+#else
+#define ESL_DECLARE(type) type
+#define ESL_DECLARE_NONSTD(type) type
+#define ESL_DECLARE_DATA
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#define ESL_SOCK_INVALID -1
+typedef int esl_socket_t;
+typedef ssize_t esl_ssize_t;
+typedef int esl_filehandle_t;
+#endif
+
+typedef int16_t esl_port_t;
+
+typedef enum {
+	ESL_SUCCESS,
+	ESL_FAIL,
+	ESL_BREAK
+} esl_status_t;
+
+#include 
+
+typedef struct {
+	struct sockaddr_in sockaddr;
+	struct hostent hostent;
+	char hostbuf[256];
+	esl_socket_t sock;
+	char err[256];
+	int errnum;
+	char header_buf[4196];
+	char last_reply[1024];
+	char last_sr_reply[1024];
+	esl_event_t *last_event;
+	esl_event_t *last_sr_event;
+	esl_event_t *last_ievent;
+	esl_event_t *info_event;
+	int connected;
+	struct sockaddr_in addr;
+	esl_mutex_t *mutex;
+} esl_handle_t;
+
+typedef enum {
+	ESL_TRUE = 1,
+	ESL_FALSE = 0
+} esl_bool_t;
+
+#ifndef __FUNCTION__
+#define __FUNCTION__ (const char *)__func__
+#endif
+
+#define ESL_PRE __FILE__, __FUNCTION__, __LINE__
+#define ESL_LOG_LEVEL_DEBUG 7
+#define ESL_LOG_LEVEL_INFO 6
+#define ESL_LOG_LEVEL_NOTICE 5
+#define ESL_LOG_LEVEL_WARNING 4
+#define ESL_LOG_LEVEL_ERROR 3
+#define ESL_LOG_LEVEL_CRIT 2
+#define ESL_LOG_LEVEL_ALERT 1
+#define ESL_LOG_LEVEL_EMERG 0
+
+#define ESL_LOG_DEBUG ESL_PRE, ESL_LOG_LEVEL_DEBUG
+#define ESL_LOG_INFO ESL_PRE, ESL_LOG_LEVEL_INFO
+#define ESL_LOG_NOTICE ESL_PRE, ESL_LOG_LEVEL_NOTICE
+#define ESL_LOG_WARNING ESL_PRE, ESL_LOG_LEVEL_WARNING
+#define ESL_LOG_ERROR ESL_PRE, ESL_LOG_LEVEL_ERROR
+#define ESL_LOG_CRIT ESL_PRE, ESL_LOG_LEVEL_CRIT
+#define ESL_LOG_ALERT ESL_PRE, ESL_LOG_LEVEL_ALERT
+#define ESL_LOG_EMERG ESL_PRE, ESL_LOG_LEVEL_EMERG
+typedef void (*esl_logger_t)(const char *file, const char *func, int line, int level, const char *fmt, ...);
+
+ESL_DECLARE_DATA extern esl_logger_t esl_log;
+
+ESL_DECLARE(void) esl_global_set_logger(esl_logger_t logger);
+ESL_DECLARE(void) esl_global_set_default_logger(int level);
+
+#include "esl_event.h"
+#include "esl_threadmutex.h"
+#include "esl_config.h"
+
+ESL_DECLARE(size_t) esl_url_encode(const char *url, char *buf, size_t len);
+ESL_DECLARE(char *)esl_url_decode(char *s);
+ESL_DECLARE(const char *)esl_stristr(const char *instr, const char *str);
+ESL_DECLARE(int) esl_toupper(int c);
+ESL_DECLARE(int) esl_tolower(int c);
+ESL_DECLARE(int) esl_snprintf(char *buffer, size_t count, const char *fmt, ...);
+
+
+typedef void (*esl_listen_callback_t)(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in addr);
+
+ESL_DECLARE(esl_status_t) esl_attach_handle(esl_handle_t *handle, esl_socket_t socket, struct sockaddr_in addr);
+ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback);
+ESL_DECLARE(esl_status_t) esl_execute(esl_handle_t *handle, const char *app, const char *arg, const char *uuid);
+ESL_DECLARE(esl_status_t) esl_sendevent(esl_handle_t *handle, esl_event_t *event);
+
+ESL_DECLARE(esl_status_t) esl_connect(esl_handle_t *handle, const char *host, esl_port_t port, const char *password);
+ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle);
+ESL_DECLARE(esl_status_t) esl_send(esl_handle_t *handle, const char *cmd);
+ESL_DECLARE(esl_status_t) esl_recv_event(esl_handle_t *handle, esl_event_t **save_event);
+ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms, esl_event_t **save_event);
+ESL_DECLARE(esl_status_t) esl_send_recv(esl_handle_t *handle, const char *cmd);
+#define esl_recv(_h) esl_recv_event(_h, NULL)
+#define esl_recv_timed(_h, _ms) esl_recv_event_timed(_h, _ms, NULL)
+
+#endif
+
+
+


From cypromis at freeswitch.org  Mon Jan  5 07:23:07 2009
From: cypromis at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 05 Jan 2009 10:23:07 -0500
Subject: [Freeswitch-svn] [commit] r11068 - freeswitch/trunk/libs/esl/src
Message-ID: 

Author: cypromis
Date: Mon Jan  5 10:23:06 2009
New Revision: 11068

Log:
vasprintf does not exist in solaris, so adding another ifndef


Modified:
   freeswitch/trunk/libs/esl/src/esl_event.c

Modified: freeswitch/trunk/libs/esl/src/esl_event.c
==============================================================================
--- freeswitch/trunk/libs/esl/src/esl_event.c	(original)
+++ freeswitch/trunk/libs/esl/src/esl_event.c	Mon Jan  5 10:23:06 2009
@@ -315,7 +315,7 @@
 
 static int esl_vasprintf(char **ret, const char *fmt, va_list ap)
 {
-#ifndef WIN32
+#if !defined(WIN32) && !defined(__sun)
 	return vasprintf(ret, fmt, ap);
 #else
 	char *buf;


From brian at freeswitch.org  Mon Jan  5 08:33:43 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 05 Jan 2009 10:33:43 -0600
Subject: [Freeswitch-svn] [commit] r11069 -
	freeswitch/trunk/src/mod/endpoints/mod_sofia
Message-ID: 

Author: brian
Date: Mon Jan  5 10:22:09 2009
New Revision: 11069

Log:
auto_answer isn't set on a bridge

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	Mon Jan  5 10:22:09 2009
@@ -2528,7 +2528,13 @@
 
 	if (session) {
 		switch_channel_t *o_channel = switch_core_session_get_channel(session);
+		const char *vval = NULL;
 
+		if ((vval = switch_channel_get_variable(o_channel, "sip_auto_answer")) && switch_true(vval)) {
+			switch_channel_set_variable_printf(nchannel, "sip_h_Call-Info", ";answer-after=0", profile->sipip);
+			switch_channel_set_variable(nchannel, "sip_invite_params", "intercom=true");
+		}
+		
 		switch_ivr_transfer_variable(session, nsession, SOFIA_REPLACES_HEADER);
 		switch_ivr_transfer_variable(session, nsession, "sip_auto_answer");
 		switch_ivr_transfer_variable(session, nsession, SOFIA_SIP_HEADER_PREFIX_T);


From mrene at freeswitch.org  Mon Jan  5 08:42:46 2009
From: mrene at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 05 Jan 2009 10:42:46 -0600
Subject: [Freeswitch-svn] [commit] r11070 -
	freeswitch/trunk/src/mod/applications/mod_limit
Message-ID: 

Author: mrene
Date: Mon Jan  5 10:42:46 2009
New Revision: 11070

Log:
doh

Modified:
   freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c

Modified: freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c	Mon Jan  5 10:42:46 2009
@@ -300,7 +300,7 @@
 	/* The call is either hung up, or is going back into the dialplan, decrement appropriate couters */
 	if (state == CS_HANGUP || state == CS_ROUTING) {	
 		switch_hash_index_t *hi;
-		switch_mutex_lock(globals.mutex);
+		switch_mutex_lock(globals.limit_hash_mutex);
 
 		/* Loop through the channel's hashtable which contains mapping to all the limit_hash_item_t referenced by that channel */
 		for(hi = switch_hash_first(NULL, channel_hash); hi; hi = switch_hash_next(hi))


From mrene at freeswitch.org  Mon Jan  5 08:43:16 2009
From: mrene at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 05 Jan 2009 10:43:16 -0600
Subject: [Freeswitch-svn] [commit] r11071 -
	freeswitch/trunk/src/mod/applications/mod_limit
Message-ID: 

Author: mrene
Date: Mon Jan  5 10:43:16 2009
New Revision: 11071

Log:
doh

Modified:
   freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c

Modified: freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c	Mon Jan  5 10:43:16 2009
@@ -319,7 +319,7 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Usage for %s is now %d\n", (const char*)key, item->total_usage);	
 		}
 		switch_core_event_hook_remove_state_change(session, hash_state_handler);
-		switch_mutex_unlock(globals.mutex);
+		switch_mutex_unlock(globals.limit_hash_mutex);
 	}
 	
 	return SWITCH_STATUS_SUCCESS;


From brian at freeswitch.org  Mon Jan  5 08:54:15 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 05 Jan 2009 10:54:15 -0600
Subject: [Freeswitch-svn] [commit] r11072 -
	freeswitch/trunk/src/mod/applications/mod_conference
Message-ID: 

Author: brian
Date: Mon Jan  5 10:54:15 2009
New Revision: 11072

Log:
Revert my change

Modified:
   freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c

Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	Mon Jan  5 10:54:15 2009
@@ -3882,6 +3882,11 @@
 		http = switch_event_get_header(stream->param_event, "http-host");
 	}
 
+	if (http) {
+		/* Output must be to a web browser */
+		stream->write_function(stream, "
\n");
+	}
+
 	if (!(lbuf = strdup(cmd))) {
 		return status;
 	}


From anthm at freeswitch.org  Mon Jan  5 12:25:02 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 05 Jan 2009 14:25:02 -0600
Subject: [Freeswitch-svn] [commit] r11073 -
	freeswitch/trunk/src/mod/applications/mod_conference
Message-ID: 

Author: anthm
Date: Mon Jan  5 14:25:02 2009
New Revision: 11073

Log:
make conference verbose-events param to control if events have all the channel data or not

Modified:
   freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c

Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	Mon Jan  5 14:25:02 2009
@@ -264,6 +264,7 @@
 	int comfort_noise_level;
 	int video_running;
 	uint32_t eflags;
+	uint32_t verbose_events;
 } conference_obj_t;
 
 /* Relationship with another member */
@@ -401,13 +402,13 @@
 	if (!member)
 		return status;
 
-	if (member->session) {
-		switch_channel_t *channel = switch_core_session_get_channel(member->session);
-		switch_channel_event_set_data(channel, event);
-	}
-
 	if (member->conference) {
 		status = conference_add_event_data(member->conference, event);
+
+		if (member->conference->verbose_events && member->session) {
+			switch_channel_t *channel = switch_core_session_get_channel(member->session);
+			switch_channel_event_set_data(channel, event);
+		}
 	}
 
 	switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
@@ -5018,6 +5019,7 @@
 	switch_status_t status;
 	int comfort_noise_level = 0;
 	char *suppress_events = NULL;
+	char *verbose_events = NULL;
 	char *auto_record = NULL;
 
 	/* Validate the conference name */
@@ -5137,6 +5139,8 @@
 			}
 		} else if (!strcasecmp(var, "suppress-events") && !switch_strlen_zero(val)) {
 			suppress_events = val;
+		} else if (!strcasecmp(var, "verbose-events") && !switch_strlen_zero(val)) {
+			verbose_events = val;
 		} else if (!strcasecmp(var, "auto-record") && !switch_strlen_zero(val)) {
 			auto_record = val;
 		}
@@ -5296,6 +5300,10 @@
 	if (!switch_strlen_zero(auto_record)) {
 		conference->auto_record = switch_core_strdup(conference->pool, auto_record);
 	}
+
+	if (!switch_strlen_zero(verbose_events) && switch_true(verbose_events)) {
+		conference->verbose_events = 1;
+	}
 	
 	/* caller control configuration chores */
 	if (switch_ivr_digit_stream_parser_new(conference->pool, &conference->dtmf_parser) == SWITCH_STATUS_SUCCESS) {


From anthm at freeswitch.org  Mon Jan  5 12:43:53 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 05 Jan 2009 14:43:53 -0600
Subject: [Freeswitch-svn] [commit] r11074 - in freeswitch/trunk/src: .
	include
Message-ID: 

Author: anthm
Date: Mon Jan  5 14:43:53 2009
New Revision: 11074

Log:
make conference verbose-events param to control if events have all the channel data or not

Modified:
   freeswitch/trunk/src/include/switch_channel.h
   freeswitch/trunk/src/switch_channel.c

Modified: freeswitch/trunk/src/include/switch_channel.h
==============================================================================
--- freeswitch/trunk/src/include/switch_channel.h	(original)
+++ freeswitch/trunk/src/include/switch_channel.h	Mon Jan  5 14:43:53 2009
@@ -472,6 +472,9 @@
 */
 SWITCH_DECLARE(void) switch_channel_event_set_data(_In_ switch_channel_t *channel, _In_ switch_event_t *event);
 
+SWITCH_DECLARE(void) switch_channel_event_set_basic_data(_In_ switch_channel_t *channel, _In_ switch_event_t *event);
+SWITCH_DECLARE(void) switch_channel_event_set_extended_data(_In_ switch_channel_t *channel, _In_ switch_event_t *event);
+
 /*!
   \brief Expand varaibles in a string based on the variables in a paticular channel
   \param channel channel to expand the variables from

Modified: freeswitch/trunk/src/switch_channel.c
==============================================================================
--- freeswitch/trunk/src/switch_channel.c	(original)
+++ freeswitch/trunk/src/switch_channel.c	Mon Jan  5 14:43:53 2009
@@ -1140,13 +1140,12 @@
 	return channel->state;
 }
 
-SWITCH_DECLARE(void) switch_channel_event_set_data(switch_channel_t *channel, switch_event_t *event)
+SWITCH_DECLARE(void) switch_channel_event_set_basic_data(switch_channel_t *channel, switch_event_t *event)
 {
 	switch_caller_profile_t *caller_profile, *originator_caller_profile = NULL, *originatee_caller_profile = NULL;
-	switch_event_header_t *hi;
 	switch_codec_t *codec;
 	char state_num[25];
-	int x;
+
 	switch_mutex_lock(channel->profile_mutex);
 
 	if ((caller_profile = switch_channel_get_caller_profile(channel))) {
@@ -1178,7 +1177,7 @@
 		switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Write-Codec-Name", switch_str_nil(codec->implementation->iananame));
 		switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Channel-Write-Codec-Rate", "%u", codec->implementation->actual_samples_per_second);
 	}
-	
+
 	/* Index Caller's Profile */
 	if (caller_profile) {
 		switch_caller_profile_event_set_data(caller_profile, "Caller", event);
@@ -1199,7 +1198,15 @@
 		}
 	}
 
+}
 
+SWITCH_DECLARE(void) switch_channel_event_set_extended_data(switch_channel_t *channel, switch_event_t *event)
+{
+	switch_event_header_t *hi;
+	int x;
+
+	switch_channel_event_set_basic_data(channel, event);
+	
 	if (switch_channel_test_flag(channel, CF_VERBOSE_EVENTS) || 
 		event->event_id == SWITCH_EVENT_CHANNEL_ORIGINATE ||
 		event->event_id == SWITCH_EVENT_CHANNEL_UUID ||
@@ -1235,6 +1242,15 @@
 	switch_mutex_unlock(channel->profile_mutex);
 }
 
+
+SWITCH_DECLARE(void) switch_channel_event_set_data(switch_channel_t *channel, switch_event_t *event)
+{
+	switch_channel_event_set_basic_data(channel, event);
+	switch_channel_event_set_extended_data(channel, event);
+}
+
+
+
 SWITCH_DECLARE(void) switch_channel_set_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile)
 {
 	char *uuid = NULL;


From anthm at freeswitch.org  Mon Jan  5 12:44:45 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 05 Jan 2009 14:44:45 -0600
Subject: [Freeswitch-svn] [commit] r11075 -
	freeswitch/trunk/src/mod/applications/mod_conference
Message-ID: 

Author: anthm
Date: Mon Jan  5 14:44:45 2009
New Revision: 11075

Log:
make conference verbose-events param to control if events have all the channel data or not

Modified:
   freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c

Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	Mon Jan  5 14:44:45 2009
@@ -405,9 +405,15 @@
 	if (member->conference) {
 		status = conference_add_event_data(member->conference, event);
 
-		if (member->conference->verbose_events && member->session) {
+		if (member->session) {
 			switch_channel_t *channel = switch_core_session_get_channel(member->session);
-			switch_channel_event_set_data(channel, event);
+
+			if (member->conference->verbose_events) {
+				switch_channel_event_set_data(channel, event);
+			} else {
+				switch_channel_event_set_basic_data(channel, event);
+			}
+
 		}
 	}
 


From brian at freeswitch.org  Mon Jan  5 12:51:45 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 05 Jan 2009 14:51:45 -0600
Subject: [Freeswitch-svn] [commit] r11076 - in freeswitch/trunk:
	libs/libg722_1/src src
Message-ID: 

Author: brian
Date: Mon Jan  5 14:51:45 2009
New Revision: 11076

Log:
doh

Modified:
   freeswitch/trunk/libs/libg722_1/src/dct4.h
   freeswitch/trunk/src/switch_channel.c

Modified: freeswitch/trunk/libs/libg722_1/src/dct4.h
==============================================================================
--- freeswitch/trunk/libs/libg722_1/src/dct4.h	(original)
+++ freeswitch/trunk/libs/libg722_1/src/dct4.h	Mon Jan  5 14:51:45 2009
@@ -1,1515 +1,1515 @@
 static const float max_dct_core_a[] =
 {
-     5.572937315437795e-02f,
-     5.435713103213160e-02f,
-     5.164643594289910e-02f,
-     4.766403419605858e-02f,
-     4.250798573945089e-02f,
-     3.630524959802148e-02f,
-     2.920855772127337e-02f,
-     2.139265421578210e-02f,
-     1.304999256534943e-02f,
-     4.385996787515619e-03f,
-     5.435713103213160e-02f,
-     4.250798573945089e-02f,
-     2.139265421578210e-02f,
-    -4.385996787515612e-03f,
-    -2.920855772127336e-02f,
-    -4.766403419605858e-02f,
-    -5.572937315437795e-02f,
-    -5.164643594289911e-02f,
-    -3.630524959802151e-02f,
-    -1.304999256534941e-02f,
-     5.164643594289910e-02f,
-     2.139265421578210e-02f,
-    -2.139265421578209e-02f,
-    -5.164643594289910e-02f,
-    -5.164643594289911e-02f,
-    -2.139265421578213e-02f,
-     2.139265421578211e-02f,
-     5.164643594289909e-02f,
-     5.164643594289910e-02f,
-     2.139265421578213e-02f,
-     4.766403419605858e-02f,
-    -4.385996787515612e-03f,
-    -5.164643594289910e-02f,
-    -4.250798573945090e-02f,
-     1.304999256534939e-02f,
-     5.435713103213161e-02f,
-     3.630524959802152e-02f,
-    -2.139265421578210e-02f,
-    -5.572937315437795e-02f,
-    -2.920855772127336e-02f,
-     4.250798573945089e-02f,
-    -2.920855772127336e-02f,
-    -5.164643594289911e-02f,
-     1.304999256534939e-02f,
-     5.572937315437795e-02f,
-     4.385996787515657e-03f,
-    -5.435713103213161e-02f,
-    -2.139265421578214e-02f,
-     4.766403419605858e-02f,
-     3.630524959802153e-02f,
-     3.630524959802148e-02f,
-    -4.766403419605858e-02f,
-    -2.139265421578213e-02f,
-     5.435713103213161e-02f,
-     4.385996787515657e-03f,
-    -5.572937315437795e-02f,
-     1.304999256534937e-02f,
-     5.164643594289910e-02f,
-    -2.920855772127332e-02f,
-    -4.250798573945090e-02f,
-     2.920855772127337e-02f,
-    -5.572937315437795e-02f,
-     2.139265421578211e-02f,
-     3.630524959802152e-02f,
-    -5.435713103213161e-02f,
-     1.304999256534937e-02f,
-     4.250798573945089e-02f,
-    -5.164643594289908e-02f,
-     4.385996787515504e-03f,
-     4.766403419605861e-02f,
-     2.139265421578210e-02f,
-    -5.164643594289911e-02f,
-     5.164643594289909e-02f,
-    -2.139265421578210e-02f,
-    -2.139265421578214e-02f,
-     5.164643594289910e-02f,
-    -5.164643594289908e-02f,
-     2.139265421578208e-02f,
-     2.139265421578216e-02f,
-    -5.164643594289915e-02f,
-     1.304999256534943e-02f,
-    -3.630524959802151e-02f,
-     5.164643594289910e-02f,
-    -5.572937315437795e-02f,
-     4.766403419605858e-02f,
-    -2.920855772127332e-02f,
-     4.385996787515504e-03f,
-     2.139265421578216e-02f,
-    -4.250798573945092e-02f,
-     5.435713103213160e-02f,
-     4.385996787515619e-03f,
-    -1.304999256534941e-02f,
-     2.139265421578213e-02f,
-    -2.920855772127336e-02f,
-     3.630524959802153e-02f,
-    -4.250798573945090e-02f,
-     4.766403419605861e-02f,
-    -5.164643594289915e-02f,
-     5.435713103213160e-02f,
-    -5.572937315437796e-02f
+     5.572937315437795e-02,
+     5.435713103213160e-02,
+     5.164643594289910e-02,
+     4.766403419605858e-02,
+     4.250798573945089e-02,
+     3.630524959802148e-02,
+     2.920855772127337e-02,
+     2.139265421578210e-02,
+     1.304999256534943e-02,
+     4.385996787515619e-03,
+     5.435713103213160e-02,
+     4.250798573945089e-02,
+     2.139265421578210e-02,
+    -4.385996787515612e-03,
+    -2.920855772127336e-02,
+    -4.766403419605858e-02,
+    -5.572937315437795e-02,
+    -5.164643594289911e-02,
+    -3.630524959802151e-02,
+    -1.304999256534941e-02,
+     5.164643594289910e-02,
+     2.139265421578210e-02,
+    -2.139265421578209e-02,
+    -5.164643594289910e-02,
+    -5.164643594289911e-02,
+    -2.139265421578213e-02,
+     2.139265421578211e-02,
+     5.164643594289909e-02,
+     5.164643594289910e-02,
+     2.139265421578213e-02,
+     4.766403419605858e-02,
+    -4.385996787515612e-03,
+    -5.164643594289910e-02,
+    -4.250798573945090e-02,
+     1.304999256534939e-02,
+     5.435713103213161e-02,
+     3.630524959802152e-02,
+    -2.139265421578210e-02,
+    -5.572937315437795e-02,
+    -2.920855772127336e-02,
+     4.250798573945089e-02,
+    -2.920855772127336e-02,
+    -5.164643594289911e-02,
+     1.304999256534939e-02,
+     5.572937315437795e-02,
+     4.385996787515657e-03,
+    -5.435713103213161e-02,
+    -2.139265421578214e-02,
+     4.766403419605858e-02,
+     3.630524959802153e-02,
+     3.630524959802148e-02,
+    -4.766403419605858e-02,
+    -2.139265421578213e-02,
+     5.435713103213161e-02,
+     4.385996787515657e-03,
+    -5.572937315437795e-02,
+     1.304999256534937e-02,
+     5.164643594289910e-02,
+    -2.920855772127332e-02,
+    -4.250798573945090e-02,
+     2.920855772127337e-02,
+    -5.572937315437795e-02,
+     2.139265421578211e-02,
+     3.630524959802152e-02,
+    -5.435713103213161e-02,
+     1.304999256534937e-02,
+     4.250798573945089e-02,
+    -5.164643594289908e-02,
+     4.385996787515504e-03,
+     4.766403419605861e-02,
+     2.139265421578210e-02,
+    -5.164643594289911e-02,
+     5.164643594289909e-02,
+    -2.139265421578210e-02,
+    -2.139265421578214e-02,
+     5.164643594289910e-02,
+    -5.164643594289908e-02,
+     2.139265421578208e-02,
+     2.139265421578216e-02,
+    -5.164643594289915e-02,
+     1.304999256534943e-02,
+    -3.630524959802151e-02,
+     5.164643594289910e-02,
+    -5.572937315437795e-02,
+     4.766403419605858e-02,
+    -2.920855772127332e-02,
+     4.385996787515504e-03,
+     2.139265421578216e-02,
+    -4.250798573945092e-02,
+     5.435713103213160e-02,
+     4.385996787515619e-03,
+    -1.304999256534941e-02,
+     2.139265421578213e-02,
+    -2.920855772127336e-02,
+     3.630524959802153e-02,
+    -4.250798573945090e-02,
+     4.766403419605861e-02,
+    -5.164643594289915e-02,
+     5.435713103213160e-02,
+    -5.572937315437796e-02
 };
 
 static const float dct_core_a[] =
 {
-     7.881323533747238e-02f,
-     7.687259191733195e-02f,
-     7.303909015868119e-02f,
-     6.740712359748102e-02f,
-     6.011536994189358e-02f,
-     5.134337636686234e-02f,
-     4.130713846678219e-02f,
-     3.025378172711701e-02f,
-     1.845547647478522e-02f,
-     6.202736141429415e-03f,
-     7.687259191733195e-02f,
-     6.011536994189358e-02f,
-     3.025378172711701e-02f,
-    -6.202736141429404e-03f,
-    -4.130713846678218e-02f,
-    -6.740712359748102e-02f,
-    -7.881323533747238e-02f,
-    -7.303909015868121e-02f,
-    -5.134337636686238e-02f,
-    -1.845547647478519e-02f,
-     7.303909015868119e-02f,
-     3.025378172711701e-02f,
-    -3.025378172711701e-02f,
-    -7.303909015868119e-02f,
-    -7.303909015868121e-02f,
-    -3.025378172711705e-02f,
-     3.025378172711703e-02f,
-     7.303909015868118e-02f,
-     7.303909015868119e-02f,
-     3.025378172711706e-02f,
-     6.740712359748102e-02f,
-    -6.202736141429404e-03f,
-    -7.303909015868119e-02f,
-    -6.011536994189359e-02f,
-     1.845547647478516e-02f,
-     7.687259191733196e-02f,
-     5.134337636686239e-02f,
-    -3.025378172711702e-02f,
-    -7.881323533747238e-02f,
-    -4.130713846678218e-02f,
-     6.011536994189358e-02f,
-    -4.130713846678218e-02f,
-    -7.303909015868121e-02f,
-     1.845547647478516e-02f,
-     7.881323533747238e-02f,
-     6.202736141429469e-03f,
-    -7.687259191733196e-02f,
-    -3.025378172711707e-02f,
-     6.740712359748102e-02f,
-     5.134337636686240e-02f,
-     5.134337636686234e-02f,
-    -6.740712359748102e-02f,
-    -3.025378172711705e-02f,
-     7.687259191733196e-02f,
-     6.202736141429469e-03f,
-    -7.881323533747238e-02f,
-     1.845547647478515e-02f,
-     7.303909015868119e-02f,
-    -4.130713846678212e-02f,
-    -6.011536994189359e-02f,
-     4.130713846678219e-02f,
-    -7.881323533747238e-02f,
-     3.025378172711703e-02f,
-     5.134337636686239e-02f,
-    -7.687259191733196e-02f,
-     1.845547647478515e-02f,
-     6.011536994189358e-02f,
-    -7.303909015868118e-02f,
-     6.202736141429252e-03f,
-     6.740712359748108e-02f,
-     3.025378172711701e-02f,
-    -7.303909015868121e-02f,
-     7.303909015868118e-02f,
-    -3.025378172711702e-02f,
-    -3.025378172711707e-02f,
-     7.303909015868119e-02f,
-    -7.303909015868118e-02f,
-     3.025378172711699e-02f,
-     3.025378172711710e-02f,
-    -7.303909015868128e-02f,
-     1.845547647478522e-02f,
-    -5.134337636686238e-02f,
-     7.303909015868119e-02f,
-    -7.881323533747238e-02f,
-     6.740712359748102e-02f,
-    -4.130713846678212e-02f,
-     6.202736141429252e-03f,
-     3.025378172711710e-02f,
-    -6.011536994189360e-02f,
-     7.687259191733195e-02f,
-     6.202736141429415e-03f,
-    -1.845547647478519e-02f,
-     3.025378172711706e-02f,
-    -4.130713846678218e-02f,
-     5.134337636686240e-02f,
-    -6.011536994189359e-02f,
-     6.740712359748108e-02f,
-    -7.303909015868128e-02f,
-     7.687259191733195e-02f,
-    -7.881323533747239e-02f
+     7.881323533747238e-02,
+     7.687259191733195e-02,
+     7.303909015868119e-02,
+     6.740712359748102e-02,
+     6.011536994189358e-02,
+     5.134337636686234e-02,
+     4.130713846678219e-02,
+     3.025378172711701e-02,
+     1.845547647478522e-02,
+     6.202736141429415e-03,
+     7.687259191733195e-02,
+     6.011536994189358e-02,
+     3.025378172711701e-02,
+    -6.202736141429404e-03,
+    -4.130713846678218e-02,
+    -6.740712359748102e-02,
+    -7.881323533747238e-02,
+    -7.303909015868121e-02,
+    -5.134337636686238e-02,
+    -1.845547647478519e-02,
+     7.303909015868119e-02,
+     3.025378172711701e-02,
+    -3.025378172711701e-02,
+    -7.303909015868119e-02,
+    -7.303909015868121e-02,
+    -3.025378172711705e-02,
+     3.025378172711703e-02,
+     7.303909015868118e-02,
+     7.303909015868119e-02,
+     3.025378172711706e-02,
+     6.740712359748102e-02,
+    -6.202736141429404e-03,
+    -7.303909015868119e-02,
+    -6.011536994189359e-02,
+     1.845547647478516e-02,
+     7.687259191733196e-02,
+     5.134337636686239e-02,
+    -3.025378172711702e-02,
+    -7.881323533747238e-02,
+    -4.130713846678218e-02,
+     6.011536994189358e-02,
+    -4.130713846678218e-02,
+    -7.303909015868121e-02,
+     1.845547647478516e-02,
+     7.881323533747238e-02,
+     6.202736141429469e-03,
+    -7.687259191733196e-02,
+    -3.025378172711707e-02,
+     6.740712359748102e-02,
+     5.134337636686240e-02,
+     5.134337636686234e-02,
+    -6.740712359748102e-02,
+    -3.025378172711705e-02,
+     7.687259191733196e-02,
+     6.202736141429469e-03,
+    -7.881323533747238e-02,
+     1.845547647478515e-02,
+     7.303909015868119e-02,
+    -4.130713846678212e-02,
+    -6.011536994189359e-02,
+     4.130713846678219e-02,
+    -7.881323533747238e-02,
+     3.025378172711703e-02,
+     5.134337636686239e-02,
+    -7.687259191733196e-02,
+     1.845547647478515e-02,
+     6.011536994189358e-02,
+    -7.303909015868118e-02,
+     6.202736141429252e-03,
+     6.740712359748108e-02,
+     3.025378172711701e-02,
+    -7.303909015868121e-02,
+     7.303909015868118e-02,
+    -3.025378172711702e-02,
+    -3.025378172711707e-02,
+     7.303909015868119e-02,
+    -7.303909015868118e-02,
+     3.025378172711699e-02,
+     3.025378172711710e-02,
+    -7.303909015868128e-02,
+     1.845547647478522e-02,
+    -5.134337636686238e-02,
+     7.303909015868119e-02,
+    -7.881323533747238e-02,
+     6.740712359748102e-02,
+    -4.130713846678212e-02,
+     6.202736141429252e-03,
+     3.025378172711710e-02,
+    -6.011536994189360e-02,
+     7.687259191733195e-02,
+     6.202736141429415e-03,
+    -1.845547647478519e-02,
+     3.025378172711706e-02,
+    -4.130713846678218e-02,
+     5.134337636686240e-02,
+    -6.011536994189359e-02,
+     6.740712359748108e-02,
+    -7.303909015868128e-02,
+     7.687259191733195e-02,
+    -7.881323533747239e-02
 };
 
 static const cos_msin_t cos_msin_5[5] =
 {
-    {9.969173337331280e-01f, -7.845909572784494e-02f},
-    {9.723699203976766e-01f, -2.334453638559054e-01f},
-    {9.238795325112867e-01f, -3.826834323650898e-01f},
-    {8.526401643540922e-01f, -5.224985647159488e-01f},
-    {7.604059656000309e-01f, -6.494480483301837e-01f}
+    {9.969173337331280e-01, -7.845909572784494e-02},
+    {9.723699203976766e-01, -2.334453638559054e-01},
+    {9.238795325112867e-01, -3.826834323650898e-01},
+    {8.526401643540922e-01, -5.224985647159488e-01},
+    {7.604059656000309e-01, -6.494480483301837e-01}
 };
 
 static const cos_msin_t cos_msin_10[10] =
 {
-    {9.992290362407229e-01f, -3.925981575906861e-02f},
-    {9.930684569549263e-01f, -1.175373974578376e-01f},
-    {9.807852804032304e-01f, -1.950903220161282e-01f},
-    {9.624552364536473e-01f, -2.714404498650743e-01f},
-    {9.381913359224842e-01f, -3.461170570774930e-01f},
-    {9.081431738250813e-01f, -4.186597375374281e-01f},
-    {8.724960070727972e-01f, -4.886212414969549e-01f},
-    {8.314696123025452e-01f, -5.555702330196022e-01f},
-    {7.853169308807449e-01f, -6.190939493098340e-01f},
-    {7.343225094356856e-01f, -6.788007455329417e-01f}
+    {9.992290362407229e-01, -3.925981575906861e-02},
+    {9.930684569549263e-01, -1.175373974578376e-01},
+    {9.807852804032304e-01, -1.950903220161282e-01},
+    {9.624552364536473e-01, -2.714404498650743e-01},
+    {9.381913359224842e-01, -3.461170570774930e-01},
+    {9.081431738250813e-01, -4.186597375374281e-01},
+    {8.724960070727972e-01, -4.886212414969549e-01},
+    {8.314696123025452e-01, -5.555702330196022e-01},
+    {7.853169308807449e-01, -6.190939493098340e-01},
+    {7.343225094356856e-01, -6.788007455329417e-01}
 };
 
 static const cos_msin_t cos_msin_20[20] =
 {
-    {9.998072404820648e-01f, -1.963369246062830e-02f},
-    {9.982656101847159e-01f, -5.887080365118903e-02f},
-    {9.951847266721969e-01f, -9.801714032956060e-02f},
-    {9.905693404435773e-01f, -1.370123416819680e-01f},
-    {9.844265680898916e-01f, -1.757962799343545e-01f},
-    {9.767658813208724e-01f, -2.143091530650507e-01f},
-    {9.675990923602598e-01f, -2.524915770151580e-01f},
-    {9.569403357322088e-01f, -2.902846772544623e-01f},
-    {9.448060464668780e-01f, -3.276301795616935e-01f},
-    {9.312149347588036e-01f, -3.644704998791496e-01f},
-    {9.161879571171360e-01f, -4.007488331031410e-01f},
-    {8.997482840522215e-01f, -4.364092406733421e-01f},
-    {8.819212643483550e-01f, -4.713967368259976e-01f},
-    {8.627343859777918e-01f, -5.056573733779846e-01f},
-    {8.422172337162865e-01f, -5.391383229110002e-01f},
-    {8.204014435255136e-01f, -5.717879602276122e-01f},
-    {7.973206537727071e-01f, -6.035559419535714e-01f},
-    {7.730104533627370e-01f, -6.343932841636455e-01f},
-    {7.475083268625968e-01f, -6.642524379112817e-01f},
-    {7.208535967029188e-01f, -6.930873625456359e-01f}
+    {9.998072404820648e-01, -1.963369246062830e-02},
+    {9.982656101847159e-01, -5.887080365118903e-02},
+    {9.951847266721969e-01, -9.801714032956060e-02},
+    {9.905693404435773e-01, -1.370123416819680e-01},
+    {9.844265680898916e-01, -1.757962799343545e-01},
+    {9.767658813208724e-01, -2.143091530650507e-01},
+    {9.675990923602598e-01, -2.524915770151580e-01},
+    {9.569403357322088e-01, -2.902846772544623e-01},
+    {9.448060464668780e-01, -3.276301795616935e-01},
+    {9.312149347588036e-01, -3.644704998791496e-01},
+    {9.161879571171360e-01, -4.007488331031410e-01},
+    {8.997482840522215e-01, -4.364092406733421e-01},
+    {8.819212643483550e-01, -4.713967368259976e-01},
+    {8.627343859777918e-01, -5.056573733779846e-01},
+    {8.422172337162865e-01, -5.391383229110002e-01},
+    {8.204014435255136e-01, -5.717879602276122e-01},
+    {7.973206537727071e-01, -6.035559419535714e-01},
+    {7.730104533627370e-01, -6.343932841636455e-01},
+    {7.475083268625968e-01, -6.642524379112817e-01},
+    {7.208535967029188e-01, -6.930873625456359e-01}
 };
 
 static const cos_msin_t cos_msin_40[40] =
 {
-    {9.999518089593280e-01f, -9.817319337149617e-03f},
-    {9.995663085020212e-01f, -2.944817324796316e-02f},
-    {9.987954562051724e-01f, -4.906767432741801e-02f},
-    {9.976395492470157e-01f, -6.866825888437376e-02f},
-    {9.960990332516871e-01f, -8.824237052036951e-02f},
-    {9.941745021174282e-01f, -1.077824630427593e-01f},
-    {9.918666977876260e-01f, -1.272810033739132e-01f},
-    {9.891765099647810e-01f, -1.467304744553617e-01f},
-    {9.861049757675088e-01f, -1.661233781457655e-01f},
-    {9.826532793307118e-01f, -1.854522381115909e-01f},
-    {9.788227513490724e-01f, -2.047096027093796e-01f},
-    {9.746148685640450e-01f, -2.238880478584984e-01f},
-    {9.700312531945440e-01f, -2.429801799032639e-01f},
-    {9.650736723115474e-01f, -2.619786384633375e-01f},
-    {9.597440371568574e-01f, -2.808760992712921e-01f},
-    {9.540444024062804e-01f, -2.996652769962566e-01f},
-    {9.479769653775104e-01f, -3.183389280525497e-01f},
-    {9.415440651830208e-01f, -3.368898533922201e-01f},
-    {9.347481818282924e-01f, -3.553109012804161e-01f},
-    {9.275919352557240e-01f, -3.735949700525164e-01f},
-    {9.200780843345949e-01f, -3.917350108519559e-01f},
-    {9.122095257974677e-01f, -4.097240303476953e-01f},
-    {9.039892931234433e-01f, -4.275550934302821e-01f},
-    {8.954205553686970e-01f, -4.452213258854682e-01f},
-    {8.865066159447464e-01f, -4.627159170443501e-01f},
-    {8.772509113449243e-01f, -4.800321224090111e-01f},
-    {8.676570098195440e-01f, -4.971632662526544e-01f},
-    {8.577286100002721e-01f, -5.141027441932217e-01f},
-    {8.474695394742344e-01f, -5.308440257395095e-01f},
-    {8.368837533084094e-01f, -5.473806568087964e-01f},
-    {8.259753325248732e-01f, -5.637062622150167e-01f},
-    {8.147484825274894e-01f, -5.798145481265136e-01f},
-    {8.032075314806449e-01f, -5.956993044924334e-01f},
-    {7.913569286406602e-01f, -6.113544074368165e-01f},
-    {7.792012426405167e-01f, -6.267738216194696e-01f},
-    {7.667451597285615e-01f, -6.419516025627030e-01f},
-    {7.539934819618694e-01f, -6.568818989430414e-01f},
-    {7.409511253549591e-01f, -6.715589548470183e-01f},
-    {7.276231179845748e-01f, -6.859771119901928e-01f},
-    {7.140145980512683e-01f, -7.001308118985236e-01f}
+    {9.999518089593280e-01, -9.817319337149617e-03},
+    {9.995663085020212e-01, -2.944817324796316e-02},
+    {9.987954562051724e-01, -4.906767432741801e-02},
+    {9.976395492470157e-01, -6.866825888437376e-02},
+    {9.960990332516871e-01, -8.824237052036951e-02},
+    {9.941745021174282e-01, -1.077824630427593e-01},
+    {9.918666977876260e-01, -1.272810033739132e-01},
+    {9.891765099647810e-01, -1.467304744553617e-01},
+    {9.861049757675088e-01, -1.661233781457655e-01},
+    {9.826532793307118e-01, -1.854522381115909e-01},
+    {9.788227513490724e-01, -2.047096027093796e-01},
+    {9.746148685640450e-01, -2.238880478584984e-01},
+    {9.700312531945440e-01, -2.429801799032639e-01},
+    {9.650736723115474e-01, -2.619786384633375e-01},
+    {9.597440371568574e-01, -2.808760992712921e-01},
+    {9.540444024062804e-01, -2.996652769962566e-01},
+    {9.479769653775104e-01, -3.183389280525497e-01},
+    {9.415440651830208e-01, -3.368898533922201e-01},
+    {9.347481818282924e-01, -3.553109012804161e-01},
+    {9.275919352557240e-01, -3.735949700525164e-01},
+    {9.200780843345949e-01, -3.917350108519559e-01},
+    {9.122095257974677e-01, -4.097240303476953e-01},
+    {9.039892931234433e-01, -4.275550934302821e-01},
+    {8.954205553686970e-01, -4.452213258854682e-01},
+    {8.865066159447464e-01, -4.627159170443501e-01},
+    {8.772509113449243e-01, -4.800321224090111e-01},
+    {8.676570098195440e-01, -4.971632662526544e-01},
+    {8.577286100002721e-01, -5.141027441932217e-01},
+    {8.474695394742344e-01, -5.308440257395095e-01},
+    {8.368837533084094e-01, -5.473806568087964e-01},
+    {8.259753325248732e-01, -5.637062622150167e-01},
+    {8.147484825274894e-01, -5.798145481265136e-01},
+    {8.032075314806449e-01, -5.956993044924334e-01},
+    {7.913569286406602e-01, -6.113544074368165e-01},
+    {7.792012426405167e-01, -6.267738216194696e-01},
+    {7.667451597285615e-01, -6.419516025627030e-01},
+    {7.539934819618694e-01, -6.568818989430414e-01},
+    {7.409511253549591e-01, -6.715589548470183e-01},
+    {7.276231179845748e-01, -6.859771119901928e-01},
+    {7.140145980512683e-01, -7.001308118985236e-01}
 };
 
 static const cos_msin_t cos_msin_80[80] =
 {
-    {9.999879521672569e-01f, -4.908718807997990e-03f},
-    {9.998915712471080e-01f, -1.472568331145852e-02f},
-    {9.996988186962042e-01f, -2.454122852291229e-02f},
-    {9.994097130924373e-01f, -3.435440839968228e-02f},
-    {9.990242823004072e-01f, -4.416427712706736e-02f},
-    {9.985425634687357e-01f, -5.396988920950188e-02f},
-    {9.979646030264866e-01f, -6.377029956168449e-02f},
-    {9.972904566786902e-01f, -7.356456359966743e-02f},
-    {9.965201894009746e-01f, -8.335173733189745e-02f},
-    {9.956538754333033e-01f, -9.313087745019979e-02f},
-    {9.946915982728195e-01f, -1.029010414206961e-01f},
-    {9.936334506657989e-01f, -1.126612875746478e-01f},
-    {9.924795345987100e-01f, -1.224106751992162e-01f},
-    {9.912299612883853e-01f, -1.321482646281301e-01f},
-    {9.898848511713010e-01f, -1.418731173322532e-01f},
-    {9.884443338919700e-01f, -1.515842960100411e-01f},
-    {9.869085482904458e-01f, -1.612808646778805e-01f},
-    {9.852776423889412e-01f, -1.709618887603012e-01f},
-    {9.835517733775615e-01f, -1.806264351800528e-01f},
-    {9.817311075991542e-01f, -1.902735724480359e-01f},
-    {9.798158205332763e-01f, -1.999023707530817e-01f},
-    {9.778060967792817e-01f, -2.095119020515688e-01f},
-    {9.757021300385286e-01f, -2.191012401568698e-01f},
-    {9.735041230957107e-01f, -2.286694608286194e-01f},
-    {9.712122877993118e-01f, -2.382156418617946e-01f},
-    {9.688268450411880e-01f, -2.477388631755984e-01f},
-    {9.663480247352773e-01f, -2.572382069021397e-01f},
-    {9.637760657954398e-01f, -2.667127574748984e-01f},
-    {9.611112161124317e-01f, -2.761616017169707e-01f},
-    {9.583537325300114e-01f, -2.855838289290823e-01f},
-    {9.555038808201862e-01f, -2.949785309773635e-01f},
-    {9.525619356575953e-01f, -3.043448023808773e-01f},
-    {9.495281805930367e-01f, -3.136817403988915e-01f},
-    {9.464029080261377e-01f, -3.229884451178863e-01f},
-    {9.431864191771733e-01f, -3.322640195382908e-01f},
-    {9.398790240580331e-01f, -3.415075696609363e-01f},
-    {9.364810414423427e-01f, -3.507182045732232e-01f},
-    {9.329927988347390e-01f, -3.598950365349881e-01f},
-    {9.294146324393044e-01f, -3.690371810640665e-01f},
-    {9.257468871271640e-01f, -3.781437570215405e-01f},
-    {9.219899164032445e-01f, -3.872138866966656e-01f},
-    {9.181440823722039e-01f, -3.962466958914656e-01f},
-    {9.142097557035307e-01f, -4.052413140049899e-01f},
-    {9.101873155958178e-01f, -4.141968741172237e-01f},
-    {9.060771497402148e-01f, -4.231125130726441e-01f},
-    {9.018796542830616e-01f, -4.319873715634118e-01f},
-    {8.975952337877069e-01f, -4.408205942121939e-01f},
-    {8.932243011955153e-01f, -4.496113296546065e-01f},
-    {8.887672777860675e-01f, -4.583587306212713e-01f},
-    {8.842245931365562e-01f, -4.670619540194765e-01f},
-    {8.795966850803829e-01f, -4.757201610144369e-01f},
-    {8.748839996649583e-01f, -4.843325171101412e-01f},
-    {8.700869911087115e-01f, -4.928981922297840e-01f},
-    {8.652061217573113e-01f, -5.014163607957690e-01f},
-    {8.602418620391045e-01f, -5.098862018092806e-01f},
-    {8.551946904197751e-01f, -5.183068989294132e-01f},
-    {8.500650933562288e-01f, -5.266776405518521e-01f},
-    {8.448535652497071e-01f, -5.349976198870972e-01f},
-    {8.395606083981356e-01f, -5.432660350382236e-01f},
-    {8.341867329477124e-01f, -5.514820890781694e-01f},
-    {8.287324568437381e-01f, -5.596449901265460e-01f},
-    {8.231983057806959e-01f, -5.677539514259605e-01f},
-    {8.175848131515837e-01f, -5.758081914178453e-01f},
-    {8.118925199965048e-01f, -5.838069338177863e-01f},
-    {8.061219749505210e-01f, -5.917494076903429e-01f},
-    {8.002737341907743e-01f, -5.996348475233523e-01f},
-    {7.943483613828813e-01f, -6.074624933017110e-01f},
-    {7.883464276266063e-01f, -6.152315905806268e-01f},
-    {7.822685114008164e-01f, -6.229413905583340e-01f},
-    {7.761151985077279e-01f, -6.305911501482637e-01f},
-    {7.698870820164444e-01f, -6.381801320506653e-01f},
-    {7.635847622057965e-01f, -6.457076048236672e-01f},
-    {7.572088465064846e-01f, -6.531728429537768e-01f},
-    {7.507599494425343e-01f, -6.605751269258050e-01f},
-    {7.442386925720670e-01f, -6.679137432922161e-01f},
-    {7.376457044273930e-01f, -6.751879847418903e-01f},
-    {7.309816204544317e-01f, -6.823971501682968e-01f},
-    {7.242470829514670e-01f, -6.895405447370668e-01f},
-    {7.174427410072399e-01f, -6.966174799529642e-01f},
-    {7.105692504383896e-01f, -7.036272737262429e-01f}
+    {9.999879521672569e-01, -4.908718807997990e-03},
+    {9.998915712471080e-01, -1.472568331145852e-02},
+    {9.996988186962042e-01, -2.454122852291229e-02},
+    {9.994097130924373e-01, -3.435440839968228e-02},
+    {9.990242823004072e-01, -4.416427712706736e-02},
+    {9.985425634687357e-01, -5.396988920950188e-02},
+    {9.979646030264866e-01, -6.377029956168449e-02},
+    {9.972904566786902e-01, -7.356456359966743e-02},
+    {9.965201894009746e-01, -8.335173733189745e-02},
+    {9.956538754333033e-01, -9.313087745019979e-02},
+    {9.946915982728195e-01, -1.029010414206961e-01},
+    {9.936334506657989e-01, -1.126612875746478e-01},
+    {9.924795345987100e-01, -1.224106751992162e-01},
+    {9.912299612883853e-01, -1.321482646281301e-01},
+    {9.898848511713010e-01, -1.418731173322532e-01},
+    {9.884443338919700e-01, -1.515842960100411e-01},
+    {9.869085482904458e-01, -1.612808646778805e-01},
+    {9.852776423889412e-01, -1.709618887603012e-01},
+    {9.835517733775615e-01, -1.806264351800528e-01},
+    {9.817311075991542e-01, -1.902735724480359e-01},
+    {9.798158205332763e-01, -1.999023707530817e-01},
+    {9.778060967792817e-01, -2.095119020515688e-01},
+    {9.757021300385286e-01, -2.191012401568698e-01},
+    {9.735041230957107e-01, -2.286694608286194e-01},
+    {9.712122877993118e-01, -2.382156418617946e-01},
+    {9.688268450411880e-01, -2.477388631755984e-01},
+    {9.663480247352773e-01, -2.572382069021397e-01},
+    {9.637760657954398e-01, -2.667127574748984e-01},
+    {9.611112161124317e-01, -2.761616017169707e-01},
+    {9.583537325300114e-01, -2.855838289290823e-01},
+    {9.555038808201862e-01, -2.949785309773635e-01},
+    {9.525619356575953e-01, -3.043448023808773e-01},
+    {9.495281805930367e-01, -3.136817403988915e-01},
+    {9.464029080261377e-01, -3.229884451178863e-01},
+    {9.431864191771733e-01, -3.322640195382908e-01},
+    {9.398790240580331e-01, -3.415075696609363e-01},
+    {9.364810414423427e-01, -3.507182045732232e-01},
+    {9.329927988347390e-01, -3.598950365349881e-01},
+    {9.294146324393044e-01, -3.690371810640665e-01},
+    {9.257468871271640e-01, -3.781437570215405e-01},
+    {9.219899164032445e-01, -3.872138866966656e-01},
+    {9.181440823722039e-01, -3.962466958914656e-01},
+    {9.142097557035307e-01, -4.052413140049899e-01},
+    {9.101873155958178e-01, -4.141968741172237e-01},
+    {9.060771497402148e-01, -4.231125130726441e-01},
+    {9.018796542830616e-01, -4.319873715634118e-01},
+    {8.975952337877069e-01, -4.408205942121939e-01},
+    {8.932243011955153e-01, -4.496113296546065e-01},
+    {8.887672777860675e-01, -4.583587306212713e-01},
+    {8.842245931365562e-01, -4.670619540194765e-01},
+    {8.795966850803829e-01, -4.757201610144369e-01},
+    {8.748839996649583e-01, -4.843325171101412e-01},
+    {8.700869911087115e-01, -4.928981922297840e-01},
+    {8.652061217573113e-01, -5.014163607957690e-01},
+    {8.602418620391045e-01, -5.098862018092806e-01},
+    {8.551946904197751e-01, -5.183068989294132e-01},
+    {8.500650933562288e-01, -5.266776405518521e-01},
+    {8.448535652497071e-01, -5.349976198870972e-01},
+    {8.395606083981356e-01, -5.432660350382236e-01},
+    {8.341867329477124e-01, -5.514820890781694e-01},
+    {8.287324568437381e-01, -5.596449901265460e-01},
+    {8.231983057806959e-01, -5.677539514259605e-01},
+    {8.175848131515837e-01, -5.758081914178453e-01},
+    {8.118925199965048e-01, -5.838069338177863e-01},
+    {8.061219749505210e-01, -5.917494076903429e-01},
+    {8.002737341907743e-01, -5.996348475233523e-01},
+    {7.943483613828813e-01, -6.074624933017110e-01},
+    {7.883464276266063e-01, -6.152315905806268e-01},
+    {7.822685114008164e-01, -6.229413905583340e-01},
+    {7.761151985077279e-01, -6.305911501482637e-01},
+    {7.698870820164444e-01, -6.381801320506653e-01},
+    {7.635847622057965e-01, -6.457076048236672e-01},
+    {7.572088465064846e-01, -6.531728429537768e-01},
+    {7.507599494425343e-01, -6.605751269258050e-01},
+    {7.442386925720670e-01, -6.679137432922161e-01},
+    {7.376457044273930e-01, -6.751879847418903e-01},
+    {7.309816204544317e-01, -6.823971501682968e-01},
+    {7.242470829514670e-01, -6.895405447370668e-01},
+    {7.174427410072399e-01, -6.966174799529642e-01},
+    {7.105692504383896e-01, -7.036272737262429e-01}
 };
 
 static const cos_msin_t cos_msin_160[160] =
 {
-    {9.999969880372782e-01f, -2.454366796460292e-03f},
-    {9.999728924443673e-01f, -7.363041249779567e-03f},
-    {9.999247018391445e-01f, -1.227153828571993e-02f},
-    {9.998524173827948e-01f, -1.717973963077875e-02f},
-    {9.997560408170603e-01f, -2.208752701857829e-02f},
-    {9.996355744641984e-01f, -2.699478219271537e-02f},
-    {9.994910212269259e-01f, -3.190138690961086e-02f},
-    {9.993223845883495e-01f, -3.680722294135883e-02f},
-    {9.991296686118811e-01f, -4.171217207857533e-02f},
-    {9.989128779411404e-01f, -4.661611613324671e-02f},
-    {9.986720177998429e-01f, -5.151893694157748e-02f},
-    {9.984070939916740e-01f, -5.642051636683749e-02f},
-    {9.981181129001492e-01f, -6.132073630220858e-02f},
-    {9.978050814884601e-01f, -6.621947867363034e-02f},
-    {9.974680072993071e-01f, -7.111662544264533e-02f},
-    {9.971068984547168e-01f, -7.601205860924312e-02f},
-    {9.967217636558474e-01f, -8.090566021470375e-02f},
-    {9.963126121827780e-01f, -8.579731234443989e-02f},
-    {9.958794538942858e-01f, -9.068689713083816e-02f},
-    {9.954222992276077e-01f, -9.557429675609919e-02f},
-    {9.949411591981900e-01f, -1.004593934550765e-01f},
-    {9.944360453994218e-01f, -1.053420695181141e-01f},
-    {9.939069700023561e-01f, -1.102222072938831e-01f},
-    {9.933539457554167e-01f, -1.150996891922159e-01f},
-    {9.927769859840909e-01f, -1.199743976869403e-01f},
-    {9.921761045906085e-01f, -1.248462153187112e-01f},
-    {9.915513160536062e-01f, -1.297150246978405e-01f},
-    {9.909026354277800e-01f, -1.345807085071262e-01f},
-    {9.902300783435211e-01f, -1.394431495046788e-01f},
-    {9.895336610065398e-01f, -1.443022305267465e-01f},
-    {9.888134001974757e-01f, -1.491578344905386e-01f},
-    {9.880693132714919e-01f, -1.540098443970461e-01f},
-    {9.873014181578584e-01f, -1.588581433338614e-01f},
-    {9.865097333595187e-01f, -1.637026144779952e-01f},
-    {9.856942779526452e-01f, -1.685431410986913e-01f},
-    {9.848550715861784e-01f, -1.733796065602395e-01f},
-    {9.839921344813541e-01f, -1.782118943247859e-01f},
-    {9.831054874312163e-01f, -1.830398879551410e-01f},
-    {9.821951518001156e-01f, -1.878634711175852e-01f},
-    {9.812611495231950e-01f, -1.926825275846723e-01f},
-    {9.803035031058607e-01f, -1.974969412380297e-01f},
-    {9.793222356232406e-01f, -2.023065960711564e-01f},
-    {9.783173707196277e-01f, -2.071113761922186e-01f},
-    {9.772889326079104e-01f, -2.119111658268416e-01f},
-    {9.762369460689896e-01f, -2.167058493209000e-01f},
-    {9.751614364511810e-01f, -2.214953111433043e-01f},
-    {9.740624296696047e-01f, -2.262794358887845e-01f},
-    {9.729399522055602e-01f, -2.310581082806711e-01f},
-    {9.717940311058891e-01f, -2.358312131736727e-01f},
-    {9.706246939823230e-01f, -2.405986355566504e-01f},
-    {9.694319690108180e-01f, -2.453602605553894e-01f},
-    {9.682158849308760e-01f, -2.501159734353663e-01f},
-    {9.669764710448521e-01f, -2.548656596045146e-01f},
-    {9.657137572172489e-01f, -2.596092046159851e-01f},
-    {9.644277738739964e-01f, -2.643464941709040e-01f},
-    {9.631185520017188e-01f, -2.690774141211269e-01f},
-    {9.617861231469886e-01f, -2.738018504719892e-01f},
-    {9.604305194155658e-01f, -2.785196893850531e-01f},
-    {9.590517734716243e-01f, -2.832308171808502e-01f},
-    {9.576499185369652e-01f, -2.879351203416211e-01f},
-    {9.562249883902162e-01f, -2.926324855140505e-01f},
-    {9.547770173660172e-01f, -2.973227995119985e-01f},
-    {9.533060403541939e-01f, -3.020059493192281e-01f},
-    {9.518120927989161e-01f, -3.066818220921279e-01f},
-    {9.502952106978444e-01f, -3.113503051624320e-01f},
-    {9.487554306012626e-01f, -3.160112860399338e-01f},
-    {9.471927896111967e-01f, -3.206646524151973e-01f},
-    {9.456073253805213e-01f, -3.253102921622629e-01f},
-    {9.439990761120522e-01f, -3.299480933413494e-01f},
-    {9.423680805576258e-01f, -3.345779442015508e-01f},
-    {9.407143780171653e-01f, -3.391997331835298e-01f},
-    {9.390380083377340e-01f, -3.438133489222048e-01f},
-    {9.373390119125750e-01f, -3.484186802494346e-01f},
-    {9.356174296801376e-01f, -3.530156161966958e-01f},
-    {9.338733031230915e-01f, -3.576040459977578e-01f},
-    {9.321066742673269e-01f, -3.621838590913509e-01f},
-    {9.303175856809415e-01f, -3.667549451238308e-01f},
-    {9.285060804732156e-01f, -3.713171939518375e-01f},
-    {9.266722022935726e-01f, -3.758704956449495e-01f},
-    {9.248159953305278e-01f, -3.804147404883323e-01f},
-    {9.229375043106232e-01f, -3.849498189853822e-01f},
-    {9.210367744973499e-01f, -3.894756218603648e-01f},
-    {9.191138516900578e-01f, -3.939920400610481e-01f},
-    {9.171687822228516e-01f, -3.984989647613298e-01f},
-    {9.152016129634744e-01f, -4.029962873638600e-01f},
-    {9.132123913121788e-01f, -4.074838995026576e-01f},
-    {9.112011652005843e-01f, -4.119616930457218e-01f},
-    {9.091679830905224e-01f, -4.164295600976372e-01f},
-    {9.071128939728691e-01f, -4.208873930021739e-01f},
-    {9.050359473663644e-01f, -4.253350843448814e-01f},
-    {9.029371933164189e-01f, -4.297725269556770e-01f},
-    {9.008166823939081e-01f, -4.341996139114278e-01f},
-    {8.986744656939538e-01f, -4.386162385385277e-01f},
-    {8.965105948346932e-01f, -4.430222944154668e-01f},
-    {8.943251219560346e-01f, -4.474176753753967e-01f},
-    {8.921180997184014e-01f, -4.518022755086881e-01f},
-    {8.898895813014630e-01f, -4.561759891654830e-01f},
-    {8.876396204028539e-01f, -4.605387109582400e-01f},
-    {8.853682712368793e-01f, -4.648903357642744e-01f},
-    {8.830755885332088e-01f, -4.692307587282903e-01f},
-    {8.807616275355579e-01f, -4.735598752649081e-01f},
-    {8.784264440003567e-01f, -4.778775810611837e-01f},
-    {8.760700941954066e-01f, -4.821837720791227e-01f},
-    {8.736926348985243e-01f, -4.864783445581868e-01f},
-    {8.712941233961736e-01f, -4.907611950177941e-01f},
-    {8.688746174820854e-01f, -4.950322202598127e-01f},
-    {8.664341754558650e-01f, -4.992913173710469e-01f},
-    {8.639728561215868e-01f, -5.035383837257176e-01f},
-    {8.614907187863783e-01f, -5.077733169879345e-01f},
-    {8.589878232589904e-01f, -5.119960151141624e-01f},
-    {8.564642298483565e-01f, -5.162063763556797e-01f},
-    {8.539199993621391e-01f, -5.204042992610306e-01f},
-    {8.513551931052652e-01f, -5.245896826784689e-01f},
-    {8.487698728784481e-01f, -5.287624257583958e-01f},
-    {8.461641009766995e-01f, -5.329224279557898e-01f},
-    {8.435379401878270e-01f, -5.370695890326298e-01f},
-    {8.408914537909229e-01f, -5.412038090603096e-01f},
-    {8.382247055548381e-01f, -5.453249884220465e-01f},
-    {8.355377597366458e-01f, -5.494330278152808e-01f},
-    {8.328306810800937e-01f, -5.535278282540700e-01f},
-    {8.301035348140438e-01f, -5.576092910714722e-01f},
-    {8.273563866508998e-01f, -5.616773179219247e-01f},
-    {8.245893027850253e-01f, -5.657318107836131e-01f},
-    {8.218023498911473e-01f, -5.697726719608341e-01f},
-    {8.189955951227504e-01f, -5.737998040863485e-01f},
-    {8.161691061104588e-01f, -5.778131101237274e-01f},
-    {8.133229509604062e-01f, -5.818124933696910e-01f},
-    {8.104571982525948e-01f, -5.857978574564389e-01f},
-    {8.075719170392435e-01f, -5.897691063539708e-01f},
-    {8.046671768431229e-01f, -5.937261443724019e-01f},
-    {8.017430476558816e-01f, -5.976688761642677e-01f},
-    {7.987995999363579e-01f, -6.015972067268220e-01f},
-    {7.958369046088836e-01f, -6.055110414043255e-01f},
-    {7.928550330615741e-01f, -6.094102858903271e-01f},
-    {7.898540571446090e-01f, -6.132948462299359e-01f},
-    {7.868340491684999e-01f, -6.171646288220856e-01f},
-    {7.837950819023488e-01f, -6.210195404217892e-01f},
-    {7.807372285720945e-01f, -6.248594881423863e-01f},
-    {7.776605628587479e-01f, -6.286843794577813e-01f},
-    {7.745651588966166e-01f, -6.324941222046724e-01f},
-    {7.714510912715192e-01f, -6.362886245847729e-01f},
-    {7.683184350189877e-01f, -6.400677951670226e-01f},
-    {7.651672656224590e-01f, -6.438315428897914e-01f},
-    {7.619976590114568e-01f, -6.475797770630733e-01f},
-    {7.588096915597616e-01f, -6.513124073706714e-01f},
-    {7.556034400835709e-01f, -6.550293438723744e-01f},
-    {7.523789818396478e-01f, -6.587304970061237e-01f},
-    {7.491363945234594e-01f, -6.624157775901718e-01f},
-    {7.458757562673048e-01f, -6.660850968252301e-01f},
-    {7.425971456384329e-01f, -6.697383662966099e-01f},
-    {7.393006416371488e-01f, -6.733754979763520e-01f},
-    {7.359863236949099e-01f, -6.769964042253483e-01f},
-    {7.326542716724128e-01f, -6.806009977954530e-01f},
-    {7.293045658576685e-01f, -6.841891918315852e-01f},
-    {7.259372869640676e-01f, -6.877608998738217e-01f},
-    {7.225525161284360e-01f, -6.913160358594803e-01f},
-    {7.191503349090794e-01f, -6.948545141251936e-01f},
-    {7.157308252838186e-01f, -6.983762494089729e-01f},
-    {7.122940696480137e-01f, -7.018811568522627e-01f},
-    {7.088401508125785e-01f, -7.053691520019861e-01f}
+    {9.999969880372782e-01, -2.454366796460292e-03},
+    {9.999728924443673e-01, -7.363041249779567e-03},
+    {9.999247018391445e-01, -1.227153828571993e-02},
+    {9.998524173827948e-01, -1.717973963077875e-02},
+    {9.997560408170603e-01, -2.208752701857829e-02},
+    {9.996355744641984e-01, -2.699478219271537e-02},
+    {9.994910212269259e-01, -3.190138690961086e-02},
+    {9.993223845883495e-01, -3.680722294135883e-02},
+    {9.991296686118811e-01, -4.171217207857533e-02},
+    {9.989128779411404e-01, -4.661611613324671e-02},
+    {9.986720177998429e-01, -5.151893694157748e-02},
+    {9.984070939916740e-01, -5.642051636683749e-02},
+    {9.981181129001492e-01, -6.132073630220858e-02},
+    {9.978050814884601e-01, -6.621947867363034e-02},
+    {9.974680072993071e-01, -7.111662544264533e-02},
+    {9.971068984547168e-01, -7.601205860924312e-02},
+    {9.967217636558474e-01, -8.090566021470375e-02},
+    {9.963126121827780e-01, -8.579731234443989e-02},
+    {9.958794538942858e-01, -9.068689713083816e-02},
+    {9.954222992276077e-01, -9.557429675609919e-02},
+    {9.949411591981900e-01, -1.004593934550765e-01},
+    {9.944360453994218e-01, -1.053420695181141e-01},
+    {9.939069700023561e-01, -1.102222072938831e-01},
+    {9.933539457554167e-01, -1.150996891922159e-01},
+    {9.927769859840909e-01, -1.199743976869403e-01},
+    {9.921761045906085e-01, -1.248462153187112e-01},
+    {9.915513160536062e-01, -1.297150246978405e-01},
+    {9.909026354277800e-01, -1.345807085071262e-01},
+    {9.902300783435211e-01, -1.394431495046788e-01},
+    {9.895336610065398e-01, -1.443022305267465e-01},
+    {9.888134001974757e-01, -1.491578344905386e-01},
+    {9.880693132714919e-01, -1.540098443970461e-01},
+    {9.873014181578584e-01, -1.588581433338614e-01},
+    {9.865097333595187e-01, -1.637026144779952e-01},
+    {9.856942779526452e-01, -1.685431410986913e-01},
+    {9.848550715861784e-01, -1.733796065602395e-01},
+    {9.839921344813541e-01, -1.782118943247859e-01},
+    {9.831054874312163e-01, -1.830398879551410e-01},
+    {9.821951518001156e-01, -1.878634711175852e-01},
+    {9.812611495231950e-01, -1.926825275846723e-01},
+    {9.803035031058607e-01, -1.974969412380297e-01},
+    {9.793222356232406e-01, -2.023065960711564e-01},
+    {9.783173707196277e-01, -2.071113761922186e-01},
+    {9.772889326079104e-01, -2.119111658268416e-01},
+    {9.762369460689896e-01, -2.167058493209000e-01},
+    {9.751614364511810e-01, -2.214953111433043e-01},
+    {9.740624296696047e-01, -2.262794358887845e-01},
+    {9.729399522055602e-01, -2.310581082806711e-01},
+    {9.717940311058891e-01, -2.358312131736727e-01},
+    {9.706246939823230e-01, -2.405986355566504e-01},
+    {9.694319690108180e-01, -2.453602605553894e-01},
+    {9.682158849308760e-01, -2.501159734353663e-01},
+    {9.669764710448521e-01, -2.548656596045146e-01},
+    {9.657137572172489e-01, -2.596092046159851e-01},
+    {9.644277738739964e-01, -2.643464941709040e-01},
+    {9.631185520017188e-01, -2.690774141211269e-01},
+    {9.617861231469886e-01, -2.738018504719892e-01},
+    {9.604305194155658e-01, -2.785196893850531e-01},
+    {9.590517734716243e-01, -2.832308171808502e-01},
+    {9.576499185369652e-01, -2.879351203416211e-01},
+    {9.562249883902162e-01, -2.926324855140505e-01},
+    {9.547770173660172e-01, -2.973227995119985e-01},
+    {9.533060403541939e-01, -3.020059493192281e-01},
+    {9.518120927989161e-01, -3.066818220921279e-01},
+    {9.502952106978444e-01, -3.113503051624320e-01},
+    {9.487554306012626e-01, -3.160112860399338e-01},
+    {9.471927896111967e-01, -3.206646524151973e-01},
+    {9.456073253805213e-01, -3.253102921622629e-01},
+    {9.439990761120522e-01, -3.299480933413494e-01},
+    {9.423680805576258e-01, -3.345779442015508e-01},
+    {9.407143780171653e-01, -3.391997331835298e-01},
+    {9.390380083377340e-01, -3.438133489222048e-01},
+    {9.373390119125750e-01, -3.484186802494346e-01},
+    {9.356174296801376e-01, -3.530156161966958e-01},
+    {9.338733031230915e-01, -3.576040459977578e-01},
+    {9.321066742673269e-01, -3.621838590913509e-01},
+    {9.303175856809415e-01, -3.667549451238308e-01},
+    {9.285060804732156e-01, -3.713171939518375e-01},
+    {9.266722022935726e-01, -3.758704956449495e-01},
+    {9.248159953305278e-01, -3.804147404883323e-01},
+    {9.229375043106232e-01, -3.849498189853822e-01},
+    {9.210367744973499e-01, -3.894756218603648e-01},
+    {9.191138516900578e-01, -3.939920400610481e-01},
+    {9.171687822228516e-01, -3.984989647613298e-01},
+    {9.152016129634744e-01, -4.029962873638600e-01},
+    {9.132123913121788e-01, -4.074838995026576e-01},
+    {9.112011652005843e-01, -4.119616930457218e-01},
+    {9.091679830905224e-01, -4.164295600976372e-01},
+    {9.071128939728691e-01, -4.208873930021739e-01},
+    {9.050359473663644e-01, -4.253350843448814e-01},
+    {9.029371933164189e-01, -4.297725269556770e-01},
+    {9.008166823939081e-01, -4.341996139114278e-01},
+    {8.986744656939538e-01, -4.386162385385277e-01},
+    {8.965105948346932e-01, -4.430222944154668e-01},
+    {8.943251219560346e-01, -4.474176753753967e-01},
+    {8.921180997184014e-01, -4.518022755086881e-01},
+    {8.898895813014630e-01, -4.561759891654830e-01},
+    {8.876396204028539e-01, -4.605387109582400e-01},
+    {8.853682712368793e-01, -4.648903357642744e-01},
+    {8.830755885332088e-01, -4.692307587282903e-01},
+    {8.807616275355579e-01, -4.735598752649081e-01},
+    {8.784264440003567e-01, -4.778775810611837e-01},
+    {8.760700941954066e-01, -4.821837720791227e-01},
+    {8.736926348985243e-01, -4.864783445581868e-01},
+    {8.712941233961736e-01, -4.907611950177941e-01},
+    {8.688746174820854e-01, -4.950322202598127e-01},
+    {8.664341754558650e-01, -4.992913173710469e-01},
+    {8.639728561215868e-01, -5.035383837257176e-01},
+    {8.614907187863783e-01, -5.077733169879345e-01},
+    {8.589878232589904e-01, -5.119960151141624e-01},
+    {8.564642298483565e-01, -5.162063763556797e-01},
+    {8.539199993621391e-01, -5.204042992610306e-01},
+    {8.513551931052652e-01, -5.245896826784689e-01},
+    {8.487698728784481e-01, -5.287624257583958e-01},
+    {8.461641009766995e-01, -5.329224279557898e-01},
+    {8.435379401878270e-01, -5.370695890326298e-01},
+    {8.408914537909229e-01, -5.412038090603096e-01},
+    {8.382247055548381e-01, -5.453249884220465e-01},
+    {8.355377597366458e-01, -5.494330278152808e-01},
+    {8.328306810800937e-01, -5.535278282540700e-01},
+    {8.301035348140438e-01, -5.576092910714722e-01},
+    {8.273563866508998e-01, -5.616773179219247e-01},
+    {8.245893027850253e-01, -5.657318107836131e-01},
+    {8.218023498911473e-01, -5.697726719608341e-01},
+    {8.189955951227504e-01, -5.737998040863485e-01},
+    {8.161691061104588e-01, -5.778131101237274e-01},
+    {8.133229509604062e-01, -5.818124933696910e-01},
+    {8.104571982525948e-01, -5.857978574564389e-01},
+    {8.075719170392435e-01, -5.897691063539708e-01},
+    {8.046671768431229e-01, -5.937261443724019e-01},
+    {8.017430476558816e-01, -5.976688761642677e-01},
+    {7.987995999363579e-01, -6.015972067268220e-01},
+    {7.958369046088836e-01, -6.055110414043255e-01},
+    {7.928550330615741e-01, -6.094102858903271e-01},
+    {7.898540571446090e-01, -6.132948462299359e-01},
+    {7.868340491684999e-01, -6.171646288220856e-01},
+    {7.837950819023488e-01, -6.210195404217892e-01},
+    {7.807372285720945e-01, -6.248594881423863e-01},
+    {7.776605628587479e-01, -6.286843794577813e-01},
+    {7.745651588966166e-01, -6.324941222046724e-01},
+    {7.714510912715192e-01, -6.362886245847729e-01},
+    {7.683184350189877e-01, -6.400677951670226e-01},
+    {7.651672656224590e-01, -6.438315428897914e-01},
+    {7.619976590114568e-01, -6.475797770630733e-01},
+    {7.588096915597616e-01, -6.513124073706714e-01},
+    {7.556034400835709e-01, -6.550293438723744e-01},
+    {7.523789818396478e-01, -6.587304970061237e-01},
+    {7.491363945234594e-01, -6.624157775901718e-01},
+    {7.458757562673048e-01, -6.660850968252301e-01},
+    {7.425971456384329e-01, -6.697383662966099e-01},
+    {7.393006416371488e-01, -6.733754979763520e-01},
+    {7.359863236949099e-01, -6.769964042253483e-01},
+    {7.326542716724128e-01, -6.806009977954530e-01},
+    {7.293045658576685e-01, -6.841891918315852e-01},
+    {7.259372869640676e-01, -6.877608998738217e-01},
+    {7.225525161284360e-01, -6.913160358594803e-01},
+    {7.191503349090794e-01, -6.948545141251936e-01},
+    {7.157308252838186e-01, -6.983762494089729e-01},
+    {7.122940696480137e-01, -7.018811568522627e-01},
+    {7.088401508125785e-01, -7.053691520019861e-01}
 };
 
 static const cos_msin_t cos_msin_320[320] =
 {
-    {9.999992470090361e-01f, -1.227184322288852e-03f},
-    {9.999932230881285e-01f, -3.681545574399692e-03f},
-    {9.999811752826011e-01f, -6.135884649154475e-03f},
-    {9.999631036650289e-01f, -8.590186761797602e-03f},
-    {9.999390083442741e-01f, -1.104443712779613e-02f},
-    {9.999088894654848e-01f, -1.349862096292883e-02f},
-    {9.998727472100952e-01f, -1.595272348337527e-02f},
-    {9.998305817958234e-01f, -1.840672990580482e-02f},
-    {9.997823934766707e-01f, -2.086062544746576e-02f},
-    {9.997281825429201e-01f, -2.331439532627430e-02f},
-    {9.996679493211340e-01f, -2.576802476090363e-02f},
-    {9.996016941741530e-01f, -2.822149897087298e-02f},
-    {9.995294175010931e-01f, -3.067480317663663e-02f},
-    {9.994511197373437e-01f, -3.312792259967294e-02f},
-    {9.993668013545645e-01f, -3.558084246257342e-02f},
-    {9.992764628606833e-01f, -3.803354798913168e-02f},
-    {9.991801047998923e-01f, -4.048602440443251e-02f},
-    {9.990777277526454e-01f, -4.293825693494082e-02f},
-    {9.989693323356542e-01f, -4.539023080859068e-02f},
-    {9.988549192018848e-01f, -4.784193125487429e-02f},
-    {9.987344890405533e-01f, -5.029334350493095e-02f},
-    {9.986080425771219e-01f, -5.274445279163603e-02f},
-    {9.984755805732948e-01f, -5.519524434968993e-02f},
-    {9.983371038270131e-01f, -5.764570341570704e-02f},
-    {9.981926131724506e-01f, -6.009581522830464e-02f},
-    {9.980421094800079e-01f, -6.254556502819182e-02f},
-    {9.978855936563085e-01f, -6.499493805825848e-02f},
-    {9.977230666441916e-01f, -6.744391956366405e-02f},
-    {9.975545294227081e-01f, -6.989249479192657e-02f},
-    {9.973799830071135e-01f, -7.234064899301137e-02f},
-    {9.971994284488623e-01f, -7.478836741942015e-02f},
-    {9.970128668356021e-01f, -7.723563532627951e-02f},
-    {9.968202992911657e-01f, -7.968243797143013e-02f},
-    {9.966217269755658e-01f, -8.212876061551522e-02f},
-    {9.964171510849874e-01f, -8.457458852206962e-02f},
-    {9.962065728517802e-01f, -8.701990695760831e-02f},
-    {9.959899935444517e-01f, -8.946470119171543e-02f},
-    {9.957674144676598e-01f, -9.190895649713272e-02f},
-    {9.955388369622040e-01f, -9.435265814984850e-02f},
-    {9.953042624050182e-01f, -9.679579142918618e-02f},
-    {9.950636922091622e-01f, -9.923834161789306e-02f},
-    {9.948171278238128e-01f, -1.016802940022289e-01f},
-    {9.945645707342554e-01f, -1.041216338720546e-01f},
-    {9.943060224618753e-01f, -1.065623465209208e-01f},
-    {9.940414845641478e-01f, -1.090024172461564e-01f},
-    {9.937709586346295e-01f, -1.114418313489574e-01f},
-    {9.934944463029486e-01f, -1.138805741344751e-01f},
-    {9.932119492347945e-01f, -1.163186309119048e-01f},
-    {9.929234691319088e-01f, -1.187559869945741e-01f},
-    {9.926290077320739e-01f, -1.211926277000318e-01f},
-    {9.923285668091033e-01f, -1.236285383501360e-01f},
-    {9.920221481728309e-01f, -1.260637042711424e-01f},
-    {9.917097536690995e-01f, -1.284981107937932e-01f},
-    {9.913913851797506e-01f, -1.309317432534049e-01f},
-    {9.910670446226119e-01f, -1.333645869899571e-01f},
-    {9.907367339514870e-01f, -1.357966273481804e-01f},
-    {9.904004551561425e-01f, -1.382278496776452e-01f},
-    {9.900582102622971e-01f, -1.406582393328492e-01f},
-    {9.897100013316084e-01f, -1.430877816733065e-01f},
-    {9.893558304616609e-01f, -1.455164620636352e-01f},
-    {9.889956997859536e-01f, -1.479442658736455e-01f},
-    {9.886296114738869e-01f, -1.503711784784285e-01f},
-    {9.882575677307495e-01f, -1.527971852584434e-01f},
-    {9.878795707977051e-01f, -1.552222715996064e-01f},
-    {9.874956229517791e-01f, -1.576464228933781e-01f},
-    {9.871057265058446e-01f, -1.600696245368518e-01f},
-    {9.867098838086088e-01f, -1.624918619328416e-01f},
-    {9.863080972445987e-01f, -1.649131204899699e-01f},
-    {9.859003692341464e-01f, -1.673333856227558e-01f},
-    {9.854867022333751e-01f, -1.697526427517024e-01f},
-    {9.850670987341841e-01f, -1.721708773033852e-01f},
-    {9.846415612642334e-01f, -1.745880747105397e-01f},
-    {9.842100923869290e-01f, -1.770042204121487e-01f},
-    {9.837726947014075e-01f, -1.794192998535309e-01f},
-    {9.833293708425197e-01f, -1.818332984864276e-01f},
-    {9.828801234808157e-01f, -1.842462017690910e-01f},
-    {9.824249553225278e-01f, -1.866579951663718e-01f},
-    {9.819638691095552e-01f, -1.890686641498062e-01f},
-    {9.814968676194470e-01f, -1.914781941977041e-01f},
-    {9.810239536653852e-01f, -1.938865707952361e-01f},
-    {9.805451300961683e-01f, -1.962937794345212e-01f},
-    {9.800603997961936e-01f, -1.986998056147138e-01f},
-    {9.795697656854405e-01f, -2.011046348420919e-01f},
-    {9.790732307194523e-01f, -2.035082526301433e-01f},
-    {9.785707978893183e-01f, -2.059106444996538e-01f},
-    {9.780624702216568e-01f, -2.083117959787937e-01f},
-    {9.775482507785956e-01f, -2.107116926032057e-01f},
-    {9.770281426577544e-01f, -2.131103199160914e-01f},
-    {9.765021489922255e-01f, -2.155076634682986e-01f},
-    {9.759702729505557e-01f, -2.179037088184086e-01f},
-    {9.754325177367266e-01f, -2.202984415328229e-01f},
-    {9.748888865901355e-01f, -2.226918471858500e-01f},
-    {9.743393827855759e-01f, -2.250839113597928e-01f},
-    {9.737840096332177e-01f, -2.274746196450351e-01f},
-    {9.732227704785874e-01f, -2.298639576401283e-01f},
-    {9.726556687025479e-01f, -2.322519109518786e-01f},
-    {9.720827077212779e-01f, -2.346384651954331e-01f},
-    {9.715038909862518e-01f, -2.370236059943672e-01f},
-    {9.709192219842182e-01f, -2.394073189807704e-01f},
-    {9.703287042371799e-01f, -2.417895897953334e-01f},
-    {9.697323413023714e-01f, -2.441704040874346e-01f},
-    {9.691301367722388e-01f, -2.465497475152259e-01f},
-    {9.685220942744174e-01f, -2.489276057457201e-01f},
-    {9.679082174717095e-01f, -2.513039644548766e-01f},
-    {9.672885100620635e-01f, -2.536788093276874e-01f},
-    {9.666629757785506e-01f, -2.560521260582643e-01f},
-    {9.660316183893426e-01f, -2.584239003499241e-01f},
-    {9.653944416976894e-01f, -2.607941179152755e-01f},
-    {9.647514495418958e-01f, -2.631627644763044e-01f},
-    {9.641026457952987e-01f, -2.655298257644607e-01f},
-    {9.634480343662435e-01f, -2.678952875207434e-01f},
-    {9.627876191980606e-01f, -2.702591354957875e-01f},
-    {9.621214042690416e-01f, -2.726213554499490e-01f},
-    {9.614493935924158e-01f, -2.749819331533909e-01f},
-    {9.607715912163253e-01f, -2.773408543861692e-01f},
-    {9.600880012238011e-01f, -2.796981049383182e-01f},
-    {9.593986277327383e-01f, -2.820536706099365e-01f},
-    {9.587034748958716e-01f, -2.844075372112719e-01f},
-    {9.580025469007496e-01f, -2.867596905628075e-01f},
-    {9.572958479697103e-01f, -2.891101164953470e-01f},
-    {9.565833823598556e-01f, -2.914588008500998e-01f},
-    {9.558651543630251e-01f, -2.938057294787664e-01f},
-    {9.551411683057708e-01f, -2.961508882436238e-01f},
-    {9.544114285493304e-01f, -2.984942630176104e-01f},
-    {9.536759394896021e-01f, -3.008358396844112e-01f},
-    {9.529347055571170e-01f, -3.031756041385431e-01f},
-    {9.521877312170133e-01f, -3.055135422854393e-01f},
-    {9.514350209690083e-01f, -3.078496400415349e-01f},
-    {9.506765793473728e-01f, -3.101838833343510e-01f},
-    {9.499124109209025e-01f, -3.125162581025802e-01f},
-    {9.491425202928909e-01f, -3.148467502961706e-01f},
-    {9.483669121011018e-01f, -3.171753458764112e-01f},
-    {9.475855910177411e-01f, -3.195020308160157e-01f},
-    {9.467985617494289e-01f, -3.218267910992075e-01f},
-    {9.460058290371707e-01f, -3.241496127218040e-01f},
-    {9.452073976563291e-01f, -3.264704816913009e-01f},
-    {9.444032724165956e-01f, -3.287893840269567e-01f},
-    {9.435934581619604e-01f, -3.311063057598764e-01f},
-    {9.427779597706842e-01f, -3.334212329330963e-01f},
-    {9.419567821552687e-01f, -3.357341516016679e-01f},
-    {9.411299302624264e-01f, -3.380450478327413e-01f},
-    {9.402974090730516e-01f, -3.403539077056500e-01f},
-    {9.394592236021899e-01f, -3.426607173119944e-01f},
-    {9.386153788990080e-01f, -3.449654627557252e-01f},
-    {9.377658800467635e-01f, -3.472681301532278e-01f},
-    {9.369107321627741e-01f, -3.495687056334055e-01f},
-    {9.360499403983871e-01f, -3.518671753377630e-01f},
-    {9.351835099389476e-01f, -3.541635254204903e-01f},
-    {9.343114460037683e-01f, -3.564577420485457e-01f},
-    {9.334337538460973e-01f, -3.587498114017393e-01f},
-    {9.325504387530866e-01f, -3.610397196728160e-01f},
-    {9.316615060457607e-01f, -3.633274530675394e-01f},
-    {9.307669610789837e-01f, -3.656129978047739e-01f},
-    {9.298668092414279e-01f, -3.678963401165684e-01f},
-    {9.289610559555410e-01f, -3.701774662482391e-01f},
-    {9.280497066775131e-01f, -3.724563624584523e-01f},
-    {9.271327668972442e-01f, -3.747330150193071e-01f},
-    {9.262102421383114e-01f, -3.770074102164183e-01f},
-    {9.252821379579349e-01f, -3.792795343489985e-01f},
-    {9.243484599469451e-01f, -3.815493737299417e-01f},
-    {9.234092137297489e-01f, -3.838169146859046e-01f},
-    {9.224644049642953e-01f, -3.860821435573893e-01f},
-    {9.215140393420420e-01f, -3.883450466988262e-01f},
-    {9.205581225879205e-01f, -3.906056104786556e-01f},
-    {9.195966604603021e-01f, -3.928638212794095e-01f},
-    {9.186296587509630e-01f, -3.951196654977946e-01f},
-    {9.176571232850496e-01f, -3.973731295447735e-01f},
-    {9.166790599210427e-01f, -3.996241998456468e-01f},
-    {9.156954745507232e-01f, -4.018728628401348e-01f},
-    {9.147063730991362e-01f, -4.041191049824593e-01f},
-    {9.137117615245548e-01f, -4.063629127414251e-01f},
-    {9.127116458184452e-01f, -4.086042726005015e-01f},
-    {9.117060320054299e-01f, -4.108431710579039e-01f},
-    {9.106949261432513e-01f, -4.130795946266749e-01f},
-    {9.096783343227359e-01f, -4.153135298347656e-01f},
-    {9.086562626677570e-01f, -4.175449632251170e-01f},
-    {9.076287173351980e-01f, -4.197738813557405e-01f},
-    {9.065957045149153e-01f, -4.220002707997997e-01f},
-    {9.055572304297014e-01f, -4.242241181456904e-01f},
-    {9.045133013352465e-01f, -4.264454099971220e-01f},
-    {9.034639235201017e-01f, -4.286641329731982e-01f},
-    {9.024091033056408e-01f, -4.308802737084970e-01f},
-    {9.013488470460220e-01f, -4.330938188531520e-01f},
-    {9.002831611281501e-01f, -4.353047550729321e-01f},
-    {8.992120519716374e-01f, -4.375130690493225e-01f},
-    {8.981355260287659e-01f, -4.397187474796043e-01f},
-    {8.970535897844474e-01f, -4.419217770769352e-01f},
-    {8.959662497561852e-01f, -4.441221445704292e-01f},
-    {8.948735124940346e-01f, -4.463198367052365e-01f},
-    {8.937753845805634e-01f, -4.485148402426236e-01f},
-    {8.926718726308122e-01f, -4.507071419600526e-01f},
-    {8.915629832922548e-01f, -4.528967286512617e-01f},
-    {8.904487232447579e-01f, -4.550835871263438e-01f},
-    {8.893290992005409e-01f, -4.572677042118265e-01f},
-    {8.882041179041357e-01f, -4.594490667507513e-01f},
-    {8.870737861323454e-01f, -4.616276616027529e-01f},
-    {8.859381106942048e-01f, -4.638034756441384e-01f},
-    {8.847970984309378e-01f, -4.659764957679662e-01f},
-    {8.836507562159172e-01f, -4.681467088841250e-01f},
-    {8.824990909546231e-01f, -4.703141019194129e-01f},
-    {8.813421095846011e-01f, -4.724786618176158e-01f},
-    {8.801798190754208e-01f, -4.746403755395864e-01f},
-    {8.790122264286335e-01f, -4.767992300633221e-01f},
-    {8.778393386777302e-01f, -4.789552123840445e-01f},
-    {8.766611628880995e-01f, -4.811083095142767e-01f},
-    {8.754777061569843e-01f, -4.832585084839222e-01f},
-    {8.742889756134398e-01f, -4.854057963403425e-01f},
-    {8.730949784182901e-01f, -4.875501601484360e-01f},
-    {8.718957217640854e-01f, -4.896915869907146e-01f},
-    {8.706912128750582e-01f, -4.918300639673830e-01f},
-    {8.694814590070804e-01f, -4.939655781964152e-01f},
-    {8.682664674476190e-01f, -4.960981168136327e-01f},
-    {8.670462455156926e-01f, -4.982276669727819e-01f},
-    {8.658208005618273e-01f, -5.003542158456112e-01f},
-    {8.645901399680118e-01f, -5.024777506219491e-01f},
-    {8.633542711476541e-01f, -5.045982585097801e-01f},
-    {8.621132015455357e-01f, -5.067157267353229e-01f},
-    {8.608669386377673e-01f, -5.088301425431070e-01f},
-    {8.596154899317437e-01f, -5.109414931960489e-01f},
-    {8.583588629660989e-01f, -5.130497659755299e-01f},
-    {8.570970653106597e-01f, -5.151549481814718e-01f},
-    {8.558301045664012e-01f, -5.172570271324139e-01f},
-    {8.545579883654005e-01f, -5.193559901655896e-01f},
-    {8.532807243707908e-01f, -5.214518246370019e-01f},
-    {8.519983202767152e-01f, -5.235445179215000e-01f},
-    {8.507107838082801e-01f, -5.256340574128560e-01f},
-    {8.494181227215095e-01f, -5.277204305238395e-01f},
-    {8.481203448032972e-01f, -5.298036246862946e-01f},
-    {8.468174578713608e-01f, -5.318836273512150e-01f},
-    {8.455094697741939e-01f, -5.339604259888194e-01f},
-    {8.441963883910193e-01f, -5.360340080886280e-01f},
-    {8.428782216317413e-01f, -5.381043611595366e-01f},
-    {8.415549774368984e-01f, -5.401714727298929e-01f},
-    {8.402266637776148e-01f, -5.422353303475707e-01f},
-    {8.388932886555529e-01f, -5.442959215800456e-01f},
-    {8.375548601028652e-01f, -5.463532340144698e-01f},
-    {8.362113861821453e-01f, -5.484072552577465e-01f},
-    {8.348628749863800e-01f, -5.504579729366048e-01f},
-    {8.335093346389004e-01f, -5.525053746976744e-01f},
-    {8.321507732933324e-01f, -5.545494482075597e-01f},
-    {8.307871991335484e-01f, -5.565901811529141e-01f},
-    {8.294186203736174e-01f, -5.586275612405148e-01f},
-    {8.280450452577558e-01f, -5.606615761973360e-01f},
-    {8.266664820602777e-01f, -5.626922137706231e-01f},
-    {8.252829390855451e-01f, -5.647194617279668e-01f},
-    {8.238944246679176e-01f, -5.667433078573766e-01f},
-    {8.225009471717026e-01f, -5.687637399673542e-01f},
-    {8.211025149911046e-01f, -5.707807458869673e-01f},
-    {8.196991365501750e-01f, -5.727943134659226e-01f},
-    {8.182908203027607e-01f, -5.748044305746390e-01f},
-    {8.168775747324537e-01f, -5.768110851043212e-01f},
-    {8.154594083525400e-01f, -5.788142649670318e-01f},
-    {8.140363297059484e-01f, -5.808139580957645e-01f},
-    {8.126083473651983e-01f, -5.828101524445172e-01f},
-    {8.111754699323488e-01f, -5.848028359883638e-01f},
-    {8.097377060389469e-01f, -5.867919967235272e-01f},
-    {8.082950643459751e-01f, -5.887776226674516e-01f},
-    {8.068475535437993e-01f, -5.907597018588742e-01f},
-    {8.053951823521167e-01f, -5.927382223578977e-01f},
-    {8.039379595199031e-01f, -5.947131722460625e-01f},
-    {8.024758938253601e-01f, -5.966845396264172e-01f},
-    {8.010089940758625e-01f, -5.986523126235920e-01f},
-    {7.995372691079050e-01f, -6.006164793838690e-01f},
-    {7.980607277870492e-01f, -6.025770280752539e-01f},
-    {7.965793790078698e-01f, -6.045339468875478e-01f},
-    {7.950932316939014e-01f, -6.064872240324176e-01f},
-    {7.936022947975847e-01f, -6.084368477434675e-01f},
-    {7.921065773002124e-01f, -6.103828062763095e-01f},
-    {7.906060882118751e-01f, -6.123250879086344e-01f},
-    {7.891008365714072e-01f, -6.142636809402826e-01f},
-    {7.875908314463325e-01f, -6.161985736933142e-01f},
-    {7.860760819328091e-01f, -6.181297545120795e-01f},
-    {7.845565971555752e-01f, -6.200572117632891e-01f},
-    {7.830323862678940e-01f, -6.219809338360844e-01f},
-    {7.815034584514979e-01f, -6.239009091421072e-01f},
-    {7.799698229165344e-01f, -6.258171261155689e-01f},
-    {7.784314889015095e-01f, -6.277295732133219e-01f},
-    {7.768884656732324e-01f, -6.296382389149270e-01f},
-    {7.753407625267603e-01f, -6.315431117227246e-01f},
-    {7.737883887853415e-01f, -6.334441801619028e-01f},
-    {7.722313538003597e-01f, -6.353414327805670e-01f},
-    {7.706696669512773e-01f, -6.372348581498091e-01f},
-    {7.691033376455797e-01f, -6.391244448637757e-01f},
-    {7.675323753187178e-01f, -6.410101815397373e-01f},
-    {7.659567894340514e-01f, -6.428920568181569e-01f},
-    {7.643765894827926e-01f, -6.447700593627579e-01f},
-    {7.627917849839481e-01f, -6.466441778605931e-01f},
-    {7.612023854842618e-01f, -6.485144010221124e-01f},
-    {7.596084005581580e-01f, -6.503807175812309e-01f},
-    {7.580098398076831e-01f, -6.522431162953969e-01f},
-    {7.564067128624476e-01f, -6.541015859456593e-01f},
-    {7.547990293795690e-01f, -6.559561153367355e-01f},
-    {7.531867990436125e-01f, -6.578066932970786e-01f},
-    {7.515700315665336e-01f, -6.596533086789452e-01f},
-    {7.499487366876190e-01f, -6.614959503584616e-01f},
-    {7.483229241734281e-01f, -6.633346072356920e-01f},
-    {7.466926038177344e-01f, -6.651692682347043e-01f},
-    {7.450577854414661e-01f, -6.669999223036375e-01f},
-    {7.434184788926470e-01f, -6.688265584147679e-01f},
-    {7.417746940463380e-01f, -6.706491655645758e-01f},
-    {7.401264408045760e-01f, -6.724677327738116e-01f},
-    {7.384737290963160e-01f, -6.742822490875620e-01f},
-    {7.368165688773699e-01f, -6.760927035753159e-01f},
-    {7.351549701303474e-01f, -6.778990853310308e-01f},
-    {7.334889428645953e-01f, -6.797013834731973e-01f},
-    {7.318184971161379e-01f, -6.814995871449060e-01f},
-    {7.301436429476156e-01f, -6.832936855139119e-01f},
-    {7.284643904482252e-01f, -6.850836677727004e-01f},
-    {7.267807497336585e-01f, -6.868695231385515e-01f},
-    {7.250927309460417e-01f, -6.886512408536060e-01f},
-    {7.234003442538740e-01f, -6.904288101849290e-01f},
-    {7.217035998519666e-01f, -6.922022204245754e-01f},
-    {7.200025079613817e-01f, -6.939714608896540e-01f},
-    {7.182970788293696e-01f, -6.957365209223924e-01f},
-    {7.165873227293083e-01f, -6.974973898902004e-01f},
-    {7.148732499606411e-01f, -6.992540571857347e-01f},
-    {7.131548708488146e-01f, -7.010065122269625e-01f},
-    {7.114321957452164e-01f, -7.027547444572253e-01f},
-    {7.097052350271130e-01f, -7.044987433453024e-01f},
-    {7.079739990975870e-01f, -7.062384983854745e-01f}
+    {9.999992470090361e-01, -1.227184322288852e-03},
+    {9.999932230881285e-01, -3.681545574399692e-03},
+    {9.999811752826011e-01, -6.135884649154475e-03},
+    {9.999631036650289e-01, -8.590186761797602e-03},
+    {9.999390083442741e-01, -1.104443712779613e-02},
+    {9.999088894654848e-01, -1.349862096292883e-02},
+    {9.998727472100952e-01, -1.595272348337527e-02},
+    {9.998305817958234e-01, -1.840672990580482e-02},
+    {9.997823934766707e-01, -2.086062544746576e-02},
+    {9.997281825429201e-01, -2.331439532627430e-02},
+    {9.996679493211340e-01, -2.576802476090363e-02},
+    {9.996016941741530e-01, -2.822149897087298e-02},
+    {9.995294175010931e-01, -3.067480317663663e-02},
+    {9.994511197373437e-01, -3.312792259967294e-02},
+    {9.993668013545645e-01, -3.558084246257342e-02},
+    {9.992764628606833e-01, -3.803354798913168e-02},
+    {9.991801047998923e-01, -4.048602440443251e-02},
+    {9.990777277526454e-01, -4.293825693494082e-02},
+    {9.989693323356542e-01, -4.539023080859068e-02},
+    {9.988549192018848e-01, -4.784193125487429e-02},
+    {9.987344890405533e-01, -5.029334350493095e-02},
+    {9.986080425771219e-01, -5.274445279163603e-02},
+    {9.984755805732948e-01, -5.519524434968993e-02},
+    {9.983371038270131e-01, -5.764570341570704e-02},
+    {9.981926131724506e-01, -6.009581522830464e-02},
+    {9.980421094800079e-01, -6.254556502819182e-02},
+    {9.978855936563085e-01, -6.499493805825848e-02},
+    {9.977230666441916e-01, -6.744391956366405e-02},
+    {9.975545294227081e-01, -6.989249479192657e-02},
+    {9.973799830071135e-01, -7.234064899301137e-02},
+    {9.971994284488623e-01, -7.478836741942015e-02},
+    {9.970128668356021e-01, -7.723563532627951e-02},
+    {9.968202992911657e-01, -7.968243797143013e-02},
+    {9.966217269755658e-01, -8.212876061551522e-02},
+    {9.964171510849874e-01, -8.457458852206962e-02},
+    {9.962065728517802e-01, -8.701990695760831e-02},
+    {9.959899935444517e-01, -8.946470119171543e-02},
+    {9.957674144676598e-01, -9.190895649713272e-02},
+    {9.955388369622040e-01, -9.435265814984850e-02},
+    {9.953042624050182e-01, -9.679579142918618e-02},
+    {9.950636922091622e-01, -9.923834161789306e-02},
+    {9.948171278238128e-01, -1.016802940022289e-01},
+    {9.945645707342554e-01, -1.041216338720546e-01},
+    {9.943060224618753e-01, -1.065623465209208e-01},
+    {9.940414845641478e-01, -1.090024172461564e-01},
+    {9.937709586346295e-01, -1.114418313489574e-01},
+    {9.934944463029486e-01, -1.138805741344751e-01},
+    {9.932119492347945e-01, -1.163186309119048e-01},
+    {9.929234691319088e-01, -1.187559869945741e-01},
+    {9.926290077320739e-01, -1.211926277000318e-01},
+    {9.923285668091033e-01, -1.236285383501360e-01},
+    {9.920221481728309e-01, -1.260637042711424e-01},
+    {9.917097536690995e-01, -1.284981107937932e-01},
+    {9.913913851797506e-01, -1.309317432534049e-01},
+    {9.910670446226119e-01, -1.333645869899571e-01},
+    {9.907367339514870e-01, -1.357966273481804e-01},
+    {9.904004551561425e-01, -1.382278496776452e-01},
+    {9.900582102622971e-01, -1.406582393328492e-01},
+    {9.897100013316084e-01, -1.430877816733065e-01},
+    {9.893558304616609e-01, -1.455164620636352e-01},
+    {9.889956997859536e-01, -1.479442658736455e-01},
+    {9.886296114738869e-01, -1.503711784784285e-01},
+    {9.882575677307495e-01, -1.527971852584434e-01},
+    {9.878795707977051e-01, -1.552222715996064e-01},
+    {9.874956229517791e-01, -1.576464228933781e-01},
+    {9.871057265058446e-01, -1.600696245368518e-01},
+    {9.867098838086088e-01, -1.624918619328416e-01},
+    {9.863080972445987e-01, -1.649131204899699e-01},
+    {9.859003692341464e-01, -1.673333856227558e-01},
+    {9.854867022333751e-01, -1.697526427517024e-01},
+    {9.850670987341841e-01, -1.721708773033852e-01},
+    {9.846415612642334e-01, -1.745880747105397e-01},
+    {9.842100923869290e-01, -1.770042204121487e-01},
+    {9.837726947014075e-01, -1.794192998535309e-01},
+    {9.833293708425197e-01, -1.818332984864276e-01},
+    {9.828801234808157e-01, -1.842462017690910e-01},
+    {9.824249553225278e-01, -1.866579951663718e-01},
+    {9.819638691095552e-01, -1.890686641498062e-01},
+    {9.814968676194470e-01, -1.914781941977041e-01},
+    {9.810239536653852e-01, -1.938865707952361e-01},
+    {9.805451300961683e-01, -1.962937794345212e-01},
+    {9.800603997961936e-01, -1.986998056147138e-01},
+    {9.795697656854405e-01, -2.011046348420919e-01},
+    {9.790732307194523e-01, -2.035082526301433e-01},
+    {9.785707978893183e-01, -2.059106444996538e-01},
+    {9.780624702216568e-01, -2.083117959787937e-01},
+    {9.775482507785956e-01, -2.107116926032057e-01},
+    {9.770281426577544e-01, -2.131103199160914e-01},
+    {9.765021489922255e-01, -2.155076634682986e-01},
+    {9.759702729505557e-01, -2.179037088184086e-01},
+    {9.754325177367266e-01, -2.202984415328229e-01},
+    {9.748888865901355e-01, -2.226918471858500e-01},
+    {9.743393827855759e-01, -2.250839113597928e-01},
+    {9.737840096332177e-01, -2.274746196450351e-01},
+    {9.732227704785874e-01, -2.298639576401283e-01},
+    {9.726556687025479e-01, -2.322519109518786e-01},
+    {9.720827077212779e-01, -2.346384651954331e-01},
+    {9.715038909862518e-01, -2.370236059943672e-01},
+    {9.709192219842182e-01, -2.394073189807704e-01},
+    {9.703287042371799e-01, -2.417895897953334e-01},
+    {9.697323413023714e-01, -2.441704040874346e-01},
+    {9.691301367722388e-01, -2.465497475152259e-01},
+    {9.685220942744174e-01, -2.489276057457201e-01},
+    {9.679082174717095e-01, -2.513039644548766e-01},
+    {9.672885100620635e-01, -2.536788093276874e-01},
+    {9.666629757785506e-01, -2.560521260582643e-01},
+    {9.660316183893426e-01, -2.584239003499241e-01},
+    {9.653944416976894e-01, -2.607941179152755e-01},
+    {9.647514495418958e-01, -2.631627644763044e-01},
+    {9.641026457952987e-01, -2.655298257644607e-01},
+    {9.634480343662435e-01, -2.678952875207434e-01},
+    {9.627876191980606e-01, -2.702591354957875e-01},
+    {9.621214042690416e-01, -2.726213554499490e-01},
+    {9.614493935924158e-01, -2.749819331533909e-01},
+    {9.607715912163253e-01, -2.773408543861692e-01},
+    {9.600880012238011e-01, -2.796981049383182e-01},
+    {9.593986277327383e-01, -2.820536706099365e-01},
+    {9.587034748958716e-01, -2.844075372112719e-01},
+    {9.580025469007496e-01, -2.867596905628075e-01},
+    {9.572958479697103e-01, -2.891101164953470e-01},
+    {9.565833823598556e-01, -2.914588008500998e-01},
+    {9.558651543630251e-01, -2.938057294787664e-01},
+    {9.551411683057708e-01, -2.961508882436238e-01},
+    {9.544114285493304e-01, -2.984942630176104e-01},
+    {9.536759394896021e-01, -3.008358396844112e-01},
+    {9.529347055571170e-01, -3.031756041385431e-01},
+    {9.521877312170133e-01, -3.055135422854393e-01},
+    {9.514350209690083e-01, -3.078496400415349e-01},
+    {9.506765793473728e-01, -3.101838833343510e-01},
+    {9.499124109209025e-01, -3.125162581025802e-01},
+    {9.491425202928909e-01, -3.148467502961706e-01},
+    {9.483669121011018e-01, -3.171753458764112e-01},
+    {9.475855910177411e-01, -3.195020308160157e-01},
+    {9.467985617494289e-01, -3.218267910992075e-01},
+    {9.460058290371707e-01, -3.241496127218040e-01},
+    {9.452073976563291e-01, -3.264704816913009e-01},
+    {9.444032724165956e-01, -3.287893840269567e-01},
+    {9.435934581619604e-01, -3.311063057598764e-01},
+    {9.427779597706842e-01, -3.334212329330963e-01},
+    {9.419567821552687e-01, -3.357341516016679e-01},
+    {9.411299302624264e-01, -3.380450478327413e-01},
+    {9.402974090730516e-01, -3.403539077056500e-01},
+    {9.394592236021899e-01, -3.426607173119944e-01},
+    {9.386153788990080e-01, -3.449654627557252e-01},
+    {9.377658800467635e-01, -3.472681301532278e-01},
+    {9.369107321627741e-01, -3.495687056334055e-01},
+    {9.360499403983871e-01, -3.518671753377630e-01},
+    {9.351835099389476e-01, -3.541635254204903e-01},
+    {9.343114460037683e-01, -3.564577420485457e-01},
+    {9.334337538460973e-01, -3.587498114017393e-01},
+    {9.325504387530866e-01, -3.610397196728160e-01},
+    {9.316615060457607e-01, -3.633274530675394e-01},
+    {9.307669610789837e-01, -3.656129978047739e-01},
+    {9.298668092414279e-01, -3.678963401165684e-01},
+    {9.289610559555410e-01, -3.701774662482391e-01},
+    {9.280497066775131e-01, -3.724563624584523e-01},
+    {9.271327668972442e-01, -3.747330150193071e-01},
+    {9.262102421383114e-01, -3.770074102164183e-01},
+    {9.252821379579349e-01, -3.792795343489985e-01},
+    {9.243484599469451e-01, -3.815493737299417e-01},
+    {9.234092137297489e-01, -3.838169146859046e-01},
+    {9.224644049642953e-01, -3.860821435573893e-01},
+    {9.215140393420420e-01, -3.883450466988262e-01},
+    {9.205581225879205e-01, -3.906056104786556e-01},
+    {9.195966604603021e-01, -3.928638212794095e-01},
+    {9.186296587509630e-01, -3.951196654977946e-01},
+    {9.176571232850496e-01, -3.973731295447735e-01},
+    {9.166790599210427e-01, -3.996241998456468e-01},
+    {9.156954745507232e-01, -4.018728628401348e-01},
+    {9.147063730991362e-01, -4.041191049824593e-01},
+    {9.137117615245548e-01, -4.063629127414251e-01},
+    {9.127116458184452e-01, -4.086042726005015e-01},
+    {9.117060320054299e-01, -4.108431710579039e-01},
+    {9.106949261432513e-01, -4.130795946266749e-01},
+    {9.096783343227359e-01, -4.153135298347656e-01},
+    {9.086562626677570e-01, -4.175449632251170e-01},
+    {9.076287173351980e-01, -4.197738813557405e-01},
+    {9.065957045149153e-01, -4.220002707997997e-01},
+    {9.055572304297014e-01, -4.242241181456904e-01},
+    {9.045133013352465e-01, -4.264454099971220e-01},
+    {9.034639235201017e-01, -4.286641329731982e-01},
+    {9.024091033056408e-01, -4.308802737084970e-01},
+    {9.013488470460220e-01, -4.330938188531520e-01},
+    {9.002831611281501e-01, -4.353047550729321e-01},
+    {8.992120519716374e-01, -4.375130690493225e-01},
+    {8.981355260287659e-01, -4.397187474796043e-01},
+    {8.970535897844474e-01, -4.419217770769352e-01},
+    {8.959662497561852e-01, -4.441221445704292e-01},
+    {8.948735124940346e-01, -4.463198367052365e-01},
+    {8.937753845805634e-01, -4.485148402426236e-01},
+    {8.926718726308122e-01, -4.507071419600526e-01},
+    {8.915629832922548e-01, -4.528967286512617e-01},
+    {8.904487232447579e-01, -4.550835871263438e-01},
+    {8.893290992005409e-01, -4.572677042118265e-01},
+    {8.882041179041357e-01, -4.594490667507513e-01},
+    {8.870737861323454e-01, -4.616276616027529e-01},
+    {8.859381106942048e-01, -4.638034756441384e-01},
+    {8.847970984309378e-01, -4.659764957679662e-01},
+    {8.836507562159172e-01, -4.681467088841250e-01},
+    {8.824990909546231e-01, -4.703141019194129e-01},
+    {8.813421095846011e-01, -4.724786618176158e-01},
+    {8.801798190754208e-01, -4.746403755395864e-01},
+    {8.790122264286335e-01, -4.767992300633221e-01},
+    {8.778393386777302e-01, -4.789552123840445e-01},
+    {8.766611628880995e-01, -4.811083095142767e-01},
+    {8.754777061569843e-01, -4.832585084839222e-01},
+    {8.742889756134398e-01, -4.854057963403425e-01},
+    {8.730949784182901e-01, -4.875501601484360e-01},
+    {8.718957217640854e-01, -4.896915869907146e-01},
+    {8.706912128750582e-01, -4.918300639673830e-01},
+    {8.694814590070804e-01, -4.939655781964152e-01},
+    {8.682664674476190e-01, -4.960981168136327e-01},
+    {8.670462455156926e-01, -4.982276669727819e-01},
+    {8.658208005618273e-01, -5.003542158456112e-01},
+    {8.645901399680118e-01, -5.024777506219491e-01},
+    {8.633542711476541e-01, -5.045982585097801e-01},
+    {8.621132015455357e-01, -5.067157267353229e-01},
+    {8.608669386377673e-01, -5.088301425431070e-01},
+    {8.596154899317437e-01, -5.109414931960489e-01},
+    {8.583588629660989e-01, -5.130497659755299e-01},
+    {8.570970653106597e-01, -5.151549481814718e-01},
+    {8.558301045664012e-01, -5.172570271324139e-01},
+    {8.545579883654005e-01, -5.193559901655896e-01},
+    {8.532807243707908e-01, -5.214518246370019e-01},
+    {8.519983202767152e-01, -5.235445179215000e-01},
+    {8.507107838082801e-01, -5.256340574128560e-01},
+    {8.494181227215095e-01, -5.277204305238395e-01},
+    {8.481203448032972e-01, -5.298036246862946e-01},
+    {8.468174578713608e-01, -5.318836273512150e-01},
+    {8.455094697741939e-01, -5.339604259888194e-01},
+    {8.441963883910193e-01, -5.360340080886280e-01},
+    {8.428782216317413e-01, -5.381043611595366e-01},
+    {8.415549774368984e-01, -5.401714727298929e-01},
+    {8.402266637776148e-01, -5.422353303475707e-01},
+    {8.388932886555529e-01, -5.442959215800456e-01},
+    {8.375548601028652e-01, -5.463532340144698e-01},
+    {8.362113861821453e-01, -5.484072552577465e-01},
+    {8.348628749863800e-01, -5.504579729366048e-01},
+    {8.335093346389004e-01, -5.525053746976744e-01},
+    {8.321507732933324e-01, -5.545494482075597e-01},
+    {8.307871991335484e-01, -5.565901811529141e-01},
+    {8.294186203736174e-01, -5.586275612405148e-01},
+    {8.280450452577558e-01, -5.606615761973360e-01},
+    {8.266664820602777e-01, -5.626922137706231e-01},
+    {8.252829390855451e-01, -5.647194617279668e-01},
+    {8.238944246679176e-01, -5.667433078573766e-01},
+    {8.225009471717026e-01, -5.687637399673542e-01},
+    {8.211025149911046e-01, -5.707807458869673e-01},
+    {8.196991365501750e-01, -5.727943134659226e-01},
+    {8.182908203027607e-01, -5.748044305746390e-01},
+    {8.168775747324537e-01, -5.768110851043212e-01},
+    {8.154594083525400e-01, -5.788142649670318e-01},
+    {8.140363297059484e-01, -5.808139580957645e-01},
+    {8.126083473651983e-01, -5.828101524445172e-01},
+    {8.111754699323488e-01, -5.848028359883638e-01},
+    {8.097377060389469e-01, -5.867919967235272e-01},
+    {8.082950643459751e-01, -5.887776226674516e-01},
+    {8.068475535437993e-01, -5.907597018588742e-01},
+    {8.053951823521167e-01, -5.927382223578977e-01},
+    {8.039379595199031e-01, -5.947131722460625e-01},
+    {8.024758938253601e-01, -5.966845396264172e-01},
+    {8.010089940758625e-01, -5.986523126235920e-01},
+    {7.995372691079050e-01, -6.006164793838690e-01},
+    {7.980607277870492e-01, -6.025770280752539e-01},
+    {7.965793790078698e-01, -6.045339468875478e-01},
+    {7.950932316939014e-01, -6.064872240324176e-01},
+    {7.936022947975847e-01, -6.084368477434675e-01},
+    {7.921065773002124e-01, -6.103828062763095e-01},
+    {7.906060882118751e-01, -6.123250879086344e-01},
+    {7.891008365714072e-01, -6.142636809402826e-01},
+    {7.875908314463325e-01, -6.161985736933142e-01},
+    {7.860760819328091e-01, -6.181297545120795e-01},
+    {7.845565971555752e-01, -6.200572117632891e-01},
+    {7.830323862678940e-01, -6.219809338360844e-01},
+    {7.815034584514979e-01, -6.239009091421072e-01},
+    {7.799698229165344e-01, -6.258171261155689e-01},
+    {7.784314889015095e-01, -6.277295732133219e-01},
+    {7.768884656732324e-01, -6.296382389149270e-01},
+    {7.753407625267603e-01, -6.315431117227246e-01},
+    {7.737883887853415e-01, -6.334441801619028e-01},
+    {7.722313538003597e-01, -6.353414327805670e-01},
+    {7.706696669512773e-01, -6.372348581498091e-01},
+    {7.691033376455797e-01, -6.391244448637757e-01},
+    {7.675323753187178e-01, -6.410101815397373e-01},
+    {7.659567894340514e-01, -6.428920568181569e-01},
+    {7.643765894827926e-01, -6.447700593627579e-01},
+    {7.627917849839481e-01, -6.466441778605931e-01},
+    {7.612023854842618e-01, -6.485144010221124e-01},
+    {7.596084005581580e-01, -6.503807175812309e-01},
+    {7.580098398076831e-01, -6.522431162953969e-01},
+    {7.564067128624476e-01, -6.541015859456593e-01},
+    {7.547990293795690e-01, -6.559561153367355e-01},
+    {7.531867990436125e-01, -6.578066932970786e-01},
+    {7.515700315665336e-01, -6.596533086789452e-01},
+    {7.499487366876190e-01, -6.614959503584616e-01},
+    {7.483229241734281e-01, -6.633346072356920e-01},
+    {7.466926038177344e-01, -6.651692682347043e-01},
+    {7.450577854414661e-01, -6.669999223036375e-01},
+    {7.434184788926470e-01, -6.688265584147679e-01},
+    {7.417746940463380e-01, -6.706491655645758e-01},
+    {7.401264408045760e-01, -6.724677327738116e-01},
+    {7.384737290963160e-01, -6.742822490875620e-01},
+    {7.368165688773699e-01, -6.760927035753159e-01},
+    {7.351549701303474e-01, -6.778990853310308e-01},
+    {7.334889428645953e-01, -6.797013834731973e-01},
+    {7.318184971161379e-01, -6.814995871449060e-01},
+    {7.301436429476156e-01, -6.832936855139119e-01},
+    {7.284643904482252e-01, -6.850836677727004e-01},
+    {7.267807497336585e-01, -6.868695231385515e-01},
+    {7.250927309460417e-01, -6.886512408536060e-01},
+    {7.234003442538740e-01, -6.904288101849290e-01},
+    {7.217035998519666e-01, -6.922022204245754e-01},
+    {7.200025079613817e-01, -6.939714608896540e-01},
+    {7.182970788293696e-01, -6.957365209223924e-01},
+    {7.165873227293083e-01, -6.974973898902004e-01},
+    {7.148732499606411e-01, -6.992540571857347e-01},
+    {7.131548708488146e-01, -7.010065122269625e-01},
+    {7.114321957452164e-01, -7.027547444572253e-01},
+    {7.097052350271130e-01, -7.044987433453024e-01},
+    {7.079739990975870e-01, -7.062384983854745e-01}
 };
 
 static const cos_msin_t cos_msin_640[640] =
 {
-    {9.999998117522413e-01f, -6.135922766517967e-04f},
-    {9.999983057705969e-01f, -1.840775905896510e-03f},
-    {9.999952938095762e-01f, -3.067956762965976e-03f},
-    {9.999907758737150e-01f, -4.295132999748002e-03f},
-    {9.999847519698173e-01f, -5.522302768137352e-03f},
-    {9.999772221069551e-01f, -6.749464220038533e-03f},
-    {9.999681862964679e-01f, -7.976615507368575e-03f},
-    {9.999576445519639e-01f, -9.203754782059819e-03f},
-    {9.999455968893185e-01f, -1.043088019606269e-02f},
-    {9.999320433266753e-01f, -1.165798990134850e-02f},
-    {9.999169838844458e-01f, -1.288508204991220e-02f},
-    {9.999004185853092e-01f, -1.411215479377519e-02f},
-    {9.998823474542126e-01f, -1.533920628498810e-02f},
-    {9.998627705183706e-01f, -1.656623467563356e-02f},
-    {9.998416878072659e-01f, -1.779323811782898e-02f},
-    {9.998190993526487e-01f, -1.902021476372936e-02f},
-    {9.997950051885367e-01f, -2.024716276553004e-02f},
-    {9.997694053512153e-01f, -2.147408027546951e-02f},
-    {9.997422998792375e-01f, -2.270096544583216e-02f},
-    {9.997136888134235e-01f, -2.392781642895110e-02f},
-    {9.996835721968610e-01f, -2.515463137721094e-02f},
-    {9.996519500749053e-01f, -2.638140844305051e-02f},
-    {9.996188224951786e-01f, -2.760814577896574e-02f},
-    {9.995841895075704e-01f, -2.883484153751236e-02f},
-    {9.995480511642375e-01f, -3.006149387130874e-02f},
-    {9.995104075196035e-01f, -3.128810093303862e-02f},
-    {9.994712586303591e-01f, -3.251466087545394e-02f},
-    {9.994306045554617e-01f, -3.374117185137758e-02f},
-    {9.993884453561358e-01f, -3.496763201370620e-02f},
-    {9.993447810958722e-01f, -3.619403951541294e-02f},
-    {9.992996118404286e-01f, -3.742039250955028e-02f},
-    {9.992529376578290e-01f, -3.864668914925275e-02f},
-    {9.992047586183639e-01f, -3.987292758773981e-02f},
-    {9.991550747945901e-01f, -4.109910597831850e-02f},
-    {9.991038862613305e-01f, -4.232522247438635e-02f},
-    {9.990511930956741e-01f, -4.355127522943403e-02f},
-    {9.989969953769761e-01f, -4.477726239704831e-02f},
-    {9.989412931868569e-01f, -4.600318213091462e-02f},
-    {9.988840866092031e-01f, -4.722903258482004e-02f},
-    {9.988253757301669e-01f, -4.845481191265589e-02f},
-    {9.987651606381658e-01f, -4.968051826842070e-02f},
-    {9.987034414238826e-01f, -5.090614980622282e-02f},
-    {9.986402181802653e-01f, -5.213170468028332e-02f},
-    {9.985754910025268e-01f, -5.335718104493870e-02f},
-    {9.985092599881454e-01f, -5.458257705464371e-02f},
-    {9.984415252368637e-01f, -5.580789086397409e-02f},
-    {9.983722868506889e-01f, -5.703312062762941e-02f},
-    {9.983015449338929e-01f, -5.825826450043575e-02f},
-    {9.982292995930115e-01f, -5.948332063734863e-02f},
-    {9.981555509368452e-01f, -6.070828719345561e-02f},
-    {9.980802990764579e-01f, -6.193316232397920e-02f},
-    {9.980035441251777e-01f, -6.315794418427960e-02f},
-    {9.979252861985960e-01f, -6.438263092985747e-02f},
-    {9.978455254145679e-01f, -6.560722071635666e-02f},
-    {9.977642618932119e-01f, -6.683171169956714e-02f},
-    {9.976814957569091e-01f, -6.805610203542757e-02f},
-    {9.975972271303040e-01f, -6.928038988002828e-02f},
-    {9.975114561403035e-01f, -7.050457338961386e-02f},
-    {9.974241829160772e-01f, -7.172865072058610e-02f},
-    {9.973354075890570e-01f, -7.295262002950662e-02f},
-    {9.972451302929369e-01f, -7.417647947309980e-02f},
-    {9.971533511636731e-01f, -7.540022720825540e-02f},
-    {9.970600703394830e-01f, -7.662386139203149e-02f},
-    {9.969652879608459e-01f, -7.784738018165707e-02f},
-    {9.968690041705026e-01f, -7.907078173453497e-02f},
-    {9.967712191134545e-01f, -8.029406420824454e-02f},
-    {9.966719329369642e-01f, -8.151722576054453e-02f},
-    {9.965711457905548e-01f, -8.274026454937569e-02f},
-    {9.964688578260101e-01f, -8.396317873286374e-02f},
-    {9.963650691973739e-01f, -8.518596646932200e-02f},
-    {9.962597800609497e-01f, -8.640862591725426e-02f},
-    {9.961529905753015e-01f, -8.763115523535747e-02f},
-    {9.960447009012520e-01f, -8.885355258252460e-02f},
-    {9.959349112018836e-01f, -9.007581611784729e-02f},
-    {9.958236216425376e-01f, -9.129794400061877e-02f},
-    {9.957108323908140e-01f, -9.251993439033654e-02f},
-    {9.955965436165716e-01f, -9.374178544670515e-02f},
-    {9.954807554919269e-01f, -9.496349532963899e-02f},
-    {9.953634681912550e-01f, -9.618506219926506e-02f},
-    {9.952446818911883e-01f, -9.740648421592572e-02f},
-    {9.951243967706169e-01f, -9.862775954018151e-02f},
-    {9.950026130106879e-01f, -9.984888633281383e-02f},
-    {9.948793307948056e-01f, -1.010698627548278e-01f},
-    {9.947545503086307e-01f, -1.022906869674551e-01f},
-    {9.946282717400804e-01f, -1.035113571321563e-01f},
-    {9.945004952793278e-01f, -1.047318714106244e-01f},
-    {9.943712211188022e-01f, -1.059522279647869e-01f},
-    {9.942404494531879e-01f, -1.071724249568088e-01f},
-    {9.941081804794248e-01f, -1.083924605490956e-01f},
-    {9.939744143967076e-01f, -1.096123329042957e-01f},
-    {9.938391514064855e-01f, -1.108320401853034e-01f},
-    {9.937023917124622e-01f, -1.120515805552615e-01f},
-    {9.935641355205953e-01f, -1.132709521775643e-01f},
-    {9.934243830390962e-01f, -1.144901532158602e-01f},
-    {9.932831344784294e-01f, -1.157091818340545e-01f},
-    {9.931403900513129e-01f, -1.169280361963119e-01f},
-    {9.929961499727171e-01f, -1.181467144670601e-01f},
-    {9.928504144598651e-01f, -1.193652148109914e-01f},
-    {9.927031837322318e-01f, -1.205835353930663e-01f},
-    {9.925544580115441e-01f, -1.218016743785162e-01f},
-    {9.924042375217801e-01f, -1.230196299328457e-01f},
-    {9.922525224891693e-01f, -1.242374002218357e-01f},
-    {9.920993131421918e-01f, -1.254549834115462e-01f},
-    {9.919446097115779e-01f, -1.266723776683190e-01f},
-    {9.917884124303086e-01f, -1.278895811587802e-01f},
-    {9.916307215336136e-01f, -1.291065920498434e-01f},
-    {9.914715372589731e-01f, -1.303234085087122e-01f},
-    {9.913108598461154e-01f, -1.315400287028831e-01f},
-    {9.911486895370180e-01f, -1.327564508001479e-01f},
-    {9.909850265759061e-01f, -1.339726729685971e-01f},
-    {9.908198712092535e-01f, -1.351886933766218e-01f},
-    {9.906532236857811e-01f, -1.364045101929175e-01f},
-    {9.904850842564571e-01f, -1.376201215864860e-01f},
-    {9.903154531744962e-01f, -1.388355257266385e-01f},
-    {9.901443306953601e-01f, -1.400507207829983e-01f},
-    {9.899717170767560e-01f, -1.412657049255036e-01f},
-    {9.897976125786367e-01f, -1.424804763244102e-01f},
-    {9.896220174632009e-01f, -1.436950331502945e-01f},
-    {9.894449319948911e-01f, -1.449093735740556e-01f},
-    {9.892663564403953e-01f, -1.461234957669190e-01f},
-    {9.890862910686448e-01f, -1.473373979004386e-01f},
-    {9.889047361508148e-01f, -1.485510781464996e-01f},
-    {9.887216919603238e-01f, -1.497645346773215e-01f},
-    {9.885371587728330e-01f, -1.509777656654608e-01f},
-    {9.883511368662461e-01f, -1.521907692838135e-01f},
-    {9.881636265207087e-01f, -1.534035437056180e-01f},
-    {9.879746280186079e-01f, -1.546160871044581e-01f},
-    {9.877841416445722e-01f, -1.558283976542652e-01f},
-    {9.875921676854704e-01f, -1.570404735293217e-01f},
-    {9.873987064304122e-01f, -1.582523129042630e-01f},
-    {9.872037581707463e-01f, -1.594639139540810e-01f},
-    {9.870073232000616e-01f, -1.606752748541265e-01f},
-    {9.868094018141855e-01f, -1.618863937801118e-01f},
-    {9.866099943111839e-01f, -1.630972689081137e-01f},
-    {9.864091009913611e-01f, -1.643078984145762e-01f},
-    {9.862067221572588e-01f, -1.655182804763130e-01f},
-    {9.860028581136556e-01f, -1.667284132705107e-01f},
-    {9.857975091675675e-01f, -1.679382949747312e-01f},
-    {9.855906756282459e-01f, -1.691479237669144e-01f},
-    {9.853823578071785e-01f, -1.703572978253813e-01f},
-    {9.851725560180883e-01f, -1.715664153288364e-01f},
-    {9.849612705769328e-01f, -1.727752744563706e-01f},
-    {9.847485018019042e-01f, -1.739838733874638e-01f},
-    {9.845342500134284e-01f, -1.751922103019880e-01f},
-    {9.843185155341647e-01f, -1.764002833802096e-01f},
-    {9.841012986890054e-01f, -1.776080908027924e-01f},
-    {9.838825998050751e-01f, -1.788156307508001e-01f},
-    {9.836624192117303e-01f, -1.800229014056995e-01f},
-    {9.834407572405590e-01f, -1.812299009493628e-01f},
-    {9.832176142253802e-01f, -1.824366275640705e-01f},
-    {9.829929905022433e-01f, -1.836430794325141e-01f},
-    {9.827668864094273e-01f, -1.848492547377989e-01f},
-    {9.825393022874412e-01f, -1.860551516634466e-01f},
-    {9.823102384790224e-01f, -1.872607683933984e-01f},
-    {9.820796953291370e-01f, -1.884661031120172e-01f},
-    {9.818476731849786e-01f, -1.896711540040907e-01f},
-    {9.816141723959685e-01f, -1.908759192548340e-01f},
-    {9.813791933137546e-01f, -1.920803970498924e-01f},
-    {9.811427362922112e-01f, -1.932845855753442e-01f},
-    {9.809048016874382e-01f, -1.944884830177032e-01f},
-    {9.806653898577611e-01f, -1.956920875639216e-01f},
-    {9.804245011637294e-01f, -1.968953974013927e-01f},
-    {9.801821359681174e-01f, -1.980984107179536e-01f},
-    {9.799382946359226e-01f, -1.993011257018880e-01f},
-    {9.796929775343657e-01f, -2.005035405419289e-01f},
-    {9.794461850328897e-01f, -2.017056534272613e-01f},
-    {9.791979175031598e-01f, -2.029074625475249e-01f},
-    {9.789481753190622e-01f, -2.041089660928169e-01f},
-    {9.786969588567044e-01f, -2.053101622536946e-01f},
-    {9.784442684944136e-01f, -2.065110492211783e-01f},
-    {9.781901046127370e-01f, -2.077116251867540e-01f},
-    {9.779344675944409e-01f, -2.089118883423760e-01f},
-    {9.776773578245099e-01f, -2.101118368804696e-01f},
-    {9.774187756901469e-01f, -2.113114689939341e-01f},
-    {9.771587215807717e-01f, -2.125107828761450e-01f},
-    {9.768971958880210e-01f, -2.137097767209575e-01f},
-    {9.766341990057480e-01f, -2.149084487227085e-01f},
-    {9.763697313300211e-01f, -2.161067970762195e-01f},
-    {9.761037932591240e-01f, -2.173048199767996e-01f},
-    {9.758363851935545e-01f, -2.185025156202481e-01f},
-    {9.755675075360243e-01f, -2.196998822028567e-01f},
-    {9.752971606914583e-01f, -2.208969179214133e-01f},
-    {9.750253450669941e-01f, -2.220936209732035e-01f},
-    {9.747520610719810e-01f, -2.232899895560143e-01f},
-    {9.744773091179798e-01f, -2.244860218681361e-01f},
-    {9.742010896187618e-01f, -2.256817161083659e-01f},
-    {9.739234029903089e-01f, -2.268770704760098e-01f},
-    {9.736442496508120e-01f, -2.280720831708857e-01f},
-    {9.733636300206708e-01f, -2.292667523933261e-01f},
-    {9.730815445224936e-01f, -2.304610763441808e-01f},
-    {9.727979935810960e-01f, -2.316550532248194e-01f},
-    {9.725129776235006e-01f, -2.328486812371343e-01f},
-    {9.722264970789363e-01f, -2.340419585835434e-01f},
-    {9.719385523788376e-01f, -2.352348834669925e-01f},
-    {9.716491439568440e-01f, -2.364274540909583e-01f},
-    {9.713582722487994e-01f, -2.376196686594509e-01f},
-    {9.710659376927513e-01f, -2.388115253770169e-01f},
-    {9.707721407289504e-01f, -2.400030224487415e-01f},
-    {9.704768817998493e-01f, -2.411941580802516e-01f},
-    {9.701801613501028e-01f, -2.423849304777186e-01f},
-    {9.698819798265667e-01f, -2.435753378478606e-01f},
-    {9.695823376782966e-01f, -2.447653783979458e-01f},
-    {9.692812353565485e-01f, -2.459550503357946e-01f},
-    {9.689786733147769e-01f, -2.471443518697825e-01f},
-    {9.686746520086348e-01f, -2.483332812088429e-01f},
-    {9.683691718959728e-01f, -2.495218365624697e-01f},
-    {9.680622334368384e-01f, -2.507100161407201e-01f},
-    {9.677538370934755e-01f, -2.518978181542170e-01f},
-    {9.674439833303232e-01f, -2.530852408141520e-01f},
-    {9.671326726140158e-01f, -2.542722823322882e-01f},
-    {9.668199054133816e-01f, -2.554589409209625e-01f},
-    {9.665056821994423e-01f, -2.566452147930884e-01f},
-    {9.661900034454125e-01f, -2.578311021621590e-01f},
-    {9.658728696266987e-01f, -2.590166012422493e-01f},
-    {9.655542812208985e-01f, -2.602017102480191e-01f},
-    {9.652342387078005e-01f, -2.613864273947156e-01f},
-    {9.649127425693828e-01f, -2.625707508981763e-01f},
-    {9.645897932898128e-01f, -2.637546789748313e-01f},
-    {9.642653913554462e-01f, -2.649382098417065e-01f},
-    {9.639395372548267e-01f, -2.661213417164257e-01f},
-    {9.636122314786845e-01f, -2.673040728172135e-01f},
-    {9.632834745199362e-01f, -2.684864013628985e-01f},
-    {9.629532668736839e-01f, -2.696683255729151e-01f},
-    {9.626216090372143e-01f, -2.708498436673069e-01f},
-    {9.622885015099981e-01f, -2.720309538667289e-01f},
-    {9.619539447936892e-01f, -2.732116543924507e-01f},
-    {9.616179393921240e-01f, -2.743919434663584e-01f},
-    {9.612804858113206e-01f, -2.755718193109581e-01f},
-    {9.609415845594780e-01f, -2.767512801493782e-01f},
-    {9.606012361469752e-01f, -2.779303242053718e-01f},
-    {9.602594410863711e-01f, -2.791089497033199e-01f},
-    {9.599161998924024e-01f, -2.802871548682339e-01f},
-    {9.595715130819845e-01f, -2.814649379257579e-01f},
-    {9.592253811742094e-01f, -2.826422971021723e-01f},
-    {9.588778046903456e-01f, -2.838192306243950e-01f},
-    {9.585287841538368e-01f, -2.849957367199857e-01f},
-    {9.581783200903017e-01f, -2.861718136171474e-01f},
-    {9.578264130275329e-01f, -2.873474595447295e-01f},
-    {9.574730634954960e-01f, -2.885226727322305e-01f},
-    {9.571182720263292e-01f, -2.896974514098006e-01f},
-    {9.567620391543418e-01f, -2.908717938082443e-01f},
-    {9.564043654160141e-01f, -2.920456981590233e-01f},
-    {9.560452513499964e-01f, -2.932191626942586e-01f},
-    {9.556846974971080e-01f, -2.943921856467341e-01f},
-    {9.553227044003364e-01f, -2.955647652498983e-01f},
-    {9.549592726048367e-01f, -2.967368997378675e-01f},
-    {9.545944026579306e-01f, -2.979085873454284e-01f},
-    {9.542280951091057e-01f, -2.990798263080405e-01f},
-    {9.538603505100144e-01f, -3.002506148618392e-01f},
-    {9.534911694144735e-01f, -3.014209512436381e-01f},
-    {9.531205523784633e-01f, -3.025908336909318e-01f},
-    {9.527484999601259e-01f, -3.037602604418984e-01f},
-    {9.523750127197659e-01f, -3.049292297354024e-01f},
-    {9.520000912198481e-01f, -3.060977398109971e-01f},
-    {9.516237360249976e-01f, -3.072657889089275e-01f},
-    {9.512459477019986e-01f, -3.084333752701328e-01f},
-    {9.508667268197933e-01f, -3.096004971362489e-01f},
-    {9.504860739494817e-01f, -3.107671527496115e-01f},
-    {9.501039896643201e-01f, -3.119333403532583e-01f},
-    {9.497204745397203e-01f, -3.130990581909318e-01f},
-    {9.493355291532494e-01f, -3.142643045070820e-01f},
-    {9.489491540846281e-01f, -3.154290775468691e-01f},
-    {9.485613499157303e-01f, -3.165933755561658e-01f},
-    {9.481721172305820e-01f, -3.177571967815606e-01f},
-    {9.477814566153607e-01f, -3.189205394703594e-01f},
-    {9.473893686583942e-01f, -3.200834018705895e-01f},
-    {9.469958539501598e-01f, -3.212457822310009e-01f},
-    {9.466009130832835e-01f, -3.224076788010699e-01f},
-    {9.462045466525394e-01f, -3.235690898310011e-01f},
-    {9.458067552548478e-01f, -3.247300135717307e-01f},
-    {9.454075394892756e-01f, -3.258904482749284e-01f},
-    {9.450068999570345e-01f, -3.270503921930005e-01f},
-    {9.446048372614803e-01f, -3.282098435790925e-01f},
-    {9.442013520081122e-01f, -3.293688006870915e-01f},
-    {9.437964448045717e-01f, -3.305272617716291e-01f},
-    {9.433901162606417e-01f, -3.316852250880838e-01f},
-    {9.429823669882458e-01f, -3.328426888925837e-01f},
-    {9.425731976014469e-01f, -3.339996514420094e-01f},
-    {9.421626087164466e-01f, -3.351561109939961e-01f},
-    {9.417506009515846e-01f, -3.363120658069366e-01f},
-    {9.413371749273369e-01f, -3.374675141399838e-01f},
-    {9.409223312663159e-01f, -3.386224542530535e-01f},
-    {9.405060705932683e-01f, -3.397768844068269e-01f},
-    {9.400883935350755e-01f, -3.409308028627527e-01f},
-    {9.396693007207513e-01f, -3.420842078830508e-01f},
-    {9.392487927814420e-01f, -3.432370977307140e-01f},
-    {9.388268703504251e-01f, -3.443894706695110e-01f},
-    {9.384035340631081e-01f, -3.455413249639891e-01f},
-    {9.379787845570278e-01f, -3.466926588794764e-01f},
-    {9.375526224718491e-01f, -3.478434706820849e-01f},
-    {9.371250484493645e-01f, -3.489937586387129e-01f},
-    {9.366960631334929e-01f, -3.501435210170474e-01f},
-    {9.362656671702783e-01f, -3.512927560855671e-01f},
-    {9.358338612078891e-01f, -3.524414621135448e-01f},
-    {9.354006458966176e-01f, -3.535896373710499e-01f},
-    {9.349660218888781e-01f, -3.547372801289512e-01f},
-    {9.345299898392064e-01f, -3.558843886589194e-01f},
-    {9.340925504042590e-01f, -3.570309612334300e-01f},
-    {9.336537042428116e-01f, -3.581769961257653e-01f},
-    {9.332134520157588e-01f, -3.593224916100174e-01f},
-    {9.327717943861125e-01f, -3.604674459610909e-01f},
-    {9.323287320190009e-01f, -3.616118574547051e-01f},
-    {9.318842655816681e-01f, -3.627557243673972e-01f},
-    {9.314383957434725e-01f, -3.638990449765241e-01f},
-    {9.309911231758859e-01f, -3.650418175602657e-01f},
-    {9.305424485524929e-01f, -3.661840403976272e-01f},
-    {9.300923725489892e-01f, -3.673257117684415e-01f},
-    {9.296408958431813e-01f, -3.684668299533723e-01f},
-    {9.291880191149847e-01f, -3.696073932339162e-01f},
-    {9.287337430464239e-01f, -3.707473998924054e-01f},
-    {9.282780683216301e-01f, -3.718868482120106e-01f},
-    {9.278209956268415e-01f, -3.730257364767432e-01f},
-    {9.273625256504011e-01f, -3.741640629714579e-01f},
-    {9.269026590827565e-01f, -3.753018259818559e-01f},
-    {9.264413966164585e-01f, -3.764390237944864e-01f},
-    {9.259787389461599e-01f, -3.775756546967501e-01f},
-    {9.255146867686148e-01f, -3.787117169769015e-01f},
-    {9.250492407826776e-01f, -3.798472089240512e-01f},
-    {9.245824016893013e-01f, -3.809821288281689e-01f},
-    {9.241141701915373e-01f, -3.821164749800858e-01f},
-    {9.236445469945337e-01f, -3.832502456714969e-01f},
-    {9.231735328055345e-01f, -3.843834391949643e-01f},
-    {9.227011283338786e-01f, -3.855160538439188e-01f},
-    {9.222273342909986e-01f, -3.866480879126634e-01f},
-    {9.217521513904198e-01f, -3.877795396963752e-01f},
-    {9.212755803477590e-01f, -3.889104074911081e-01f},
-    {9.207976218807237e-01f, -3.900406895937958e-01f},
-    {9.203182767091106e-01f, -3.911703843022539e-01f},
-    {9.198375455548048e-01f, -3.922994899151824e-01f},
-    {9.193554291417789e-01f, -3.934280047321689e-01f},
-    {9.188719281960914e-01f, -3.945559270536903e-01f},
-    {9.183870434458861e-01f, -3.956832551811160e-01f},
-    {9.179007756213905e-01f, -3.968099874167103e-01f},
-    {9.174131254549152e-01f, -3.979361220636348e-01f},
-    {9.169240936808526e-01f, -3.990616574259509e-01f},
-    {9.164336810356757e-01f, -4.001865918086229e-01f},
-    {9.159418882579371e-01f, -4.013109235175197e-01f},
-    {9.154487160882678e-01f, -4.024346508594184e-01f},
-    {9.149541652693762e-01f, -4.035577721420057e-01f},
-    {9.144582365460469e-01f, -4.046802856738814e-01f},
-    {9.139609306651395e-01f, -4.058021897645602e-01f},
-    {9.134622483755878e-01f, -4.069234827244749e-01f},
-    {9.129621904283982e-01f, -4.080441628649787e-01f},
-    {9.124607575766490e-01f, -4.091642284983474e-01f},
-    {9.119579505754890e-01f, -4.102836779377824e-01f},
-    {9.114537701821365e-01f, -4.114025094974132e-01f},
-    {9.109482171558779e-01f, -4.125207214922996e-01f},
-    {9.104412922580672e-01f, -4.136383122384345e-01f},
-    {9.099329962521239e-01f, -4.147552800527466e-01f},
-    {9.094233299035327e-01f, -4.158716232531024e-01f},
-    {9.089122939798419e-01f, -4.169873401583093e-01f},
-    {9.083998892506623e-01f, -4.181024290881177e-01f},
-    {9.078861164876663e-01f, -4.192168883632239e-01f},
-    {9.073709764645862e-01f, -4.203307163052724e-01f},
-    {9.068544699572136e-01f, -4.214439112368585e-01f},
-    {9.063365977433983e-01f, -4.225564714815306e-01f},
-    {9.058173606030460e-01f, -4.236683953637931e-01f},
-    {9.052967593181188e-01f, -4.247796812091088e-01f},
-    {9.047747946726327e-01f, -4.258903273439013e-01f},
-    {9.042514674526569e-01f, -4.270003320955576e-01f},
-    {9.037267784463131e-01f, -4.281096937924305e-01f},
-    {9.032007284437731e-01f, -4.292184107638414e-01f},
-    {9.026733182372588e-01f, -4.303264813400826e-01f},
-    {9.021445486210405e-01f, -4.314339038524199e-01f},
-    {9.016144203914357e-01f, -4.325406766330948e-01f},
-    {9.010829343468079e-01f, -4.336467980153277e-01f},
-    {9.005500912875654e-01f, -4.347522663333197e-01f},
-    {9.000158920161603e-01f, -4.358570799222555e-01f},
-    {8.994803373370870e-01f, -4.369612371183058e-01f},
-    {8.989434280568812e-01f, -4.380647362586298e-01f},
-    {8.984051649841186e-01f, -4.391675756813778e-01f},
-    {8.978655489294136e-01f, -4.402697537256935e-01f},
-    {8.973245807054183e-01f, -4.413712687317167e-01f},
-    {8.967822611268210e-01f, -4.424721190405857e-01f},
-    {8.962385910103452e-01f, -4.435723029944398e-01f},
-    {8.956935711747483e-01f, -4.446718189364220e-01f},
-    {8.951472024408204e-01f, -4.457706652106809e-01f},
-    {8.945994856313827e-01f, -4.468688401623742e-01f},
-    {8.940504215712870e-01f, -4.479663421376699e-01f},
-    {8.935000110874138e-01f, -4.490631694837502e-01f},
-    {8.929482550086714e-01f, -4.501593205488127e-01f},
-    {8.923951541659944e-01f, -4.512547936820739e-01f},
-    {8.918407093923427e-01f, -4.523495872337709e-01f},
-    {8.912849215227001e-01f, -4.534436995551644e-01f},
-    {8.907277913940732e-01f, -4.545371289985410e-01f},
-    {8.901693198454897e-01f, -4.556298739172159e-01f},
-    {8.896095077179980e-01f, -4.567219326655349e-01f},
-    {8.890483558546646e-01f, -4.578133035988772e-01f},
-    {8.884858651005743e-01f, -4.589039850736579e-01f},
-    {8.879220363028281e-01f, -4.599939754473306e-01f},
-    {8.873568703105417e-01f, -4.610832730783892e-01f},
-    {8.867903679748451e-01f, -4.621718763263714e-01f},
-    {8.862225301488806e-01f, -4.632597835518601e-01f},
-    {8.856533576878016e-01f, -4.643469931164871e-01f},
-    {8.850828514487716e-01f, -4.654335033829341e-01f},
-    {8.845110122909626e-01f, -4.665193127149364e-01f},
-    {8.839378410755541e-01f, -4.676044194772847e-01f},
-    {8.833633386657316e-01f, -4.686888220358279e-01f},
-    {8.827875059266853e-01f, -4.697725187574754e-01f},
-    {8.822103437256089e-01f, -4.708555080101994e-01f},
-    {8.816318529316984e-01f, -4.719377881630376e-01f},
-    {8.810520344161502e-01f, -4.730193575860958e-01f},
-    {8.804708890521608e-01f, -4.741002146505500e-01f},
-    {8.798884177149244e-01f, -4.751803577286489e-01f},
-    {8.793046212816323e-01f, -4.762597851937166e-01f},
-    {8.787195006314716e-01f, -4.773384954201548e-01f},
-    {8.781330566456232e-01f, -4.784164867834454e-01f},
-    {8.775452902072614e-01f, -4.794937576601530e-01f},
-    {8.769562022015515e-01f, -4.805703064279270e-01f},
-    {8.763657935156495e-01f, -4.816461314655044e-01f},
-    {8.757740650387004e-01f, -4.827212311527123e-01f},
-    {8.751810176618363e-01f, -4.837956038704698e-01f},
-    {8.745866522781761e-01f, -4.848692480007911e-01f},
-    {8.739909697828232e-01f, -4.859421619267875e-01f},
-    {8.733939710728648e-01f, -4.870143440326701e-01f},
-    {8.727956570473698e-01f, -4.880857927037520e-01f},
-    {8.721960286073888e-01f, -4.891565063264507e-01f},
-    {8.715950866559510e-01f, -4.902264832882912e-01f},
-    {8.709928320980644e-01f, -4.912957219779071e-01f},
-    {8.703892658407133e-01f, -4.923642207850446e-01f},
-    {8.697843887928577e-01f, -4.934319781005636e-01f},
-    {8.691782018654314e-01f, -4.944989923164409e-01f},
-    {8.685707059713409e-01f, -4.955652618257725e-01f},
-    {8.679619020254642e-01f, -4.966307850227757e-01f},
-    {8.673517909446490e-01f, -4.976955603027919e-01f},
-    {8.667403736477115e-01f, -4.987595860622885e-01f},
-    {8.661276510554351e-01f, -4.998228606988624e-01f},
-    {8.655136240905691e-01f, -5.008853826112407e-01f},
-    {8.648982936778269e-01f, -5.019471501992850e-01f},
-    {8.642816607438848e-01f, -5.030081618639924e-01f},
-    {8.636637262173812e-01f, -5.040684160074983e-01f},
-    {8.630444910289141e-01f, -5.051279110330795e-01f},
-    {8.624239561110406e-01f, -5.061866453451552e-01f},
-    {8.618021223982749e-01f, -5.072446173492910e-01f},
-    {8.611789908270876e-01f, -5.083018254522002e-01f},
-    {8.605545623359034e-01f, -5.093582680617462e-01f},
-    {8.599288378651004e-01f, -5.104139435869457e-01f},
-    {8.593018183570085e-01f, -5.114688504379703e-01f},
-    {8.586735047559073e-01f, -5.125229870261497e-01f},
-    {8.580438980080262e-01f, -5.135763517639729e-01f},
-    {8.574129990615412e-01f, -5.146289430650919e-01f},
-    {8.567808088665750e-01f, -5.156807593443229e-01f},
-    {8.561473283751945e-01f, -5.167317990176499e-01f},
-    {8.555125585414098e-01f, -5.177820605022260e-01f},
-    {8.548765003211730e-01f, -5.188315422163763e-01f},
-    {8.542391546723761e-01f, -5.198802425796005e-01f},
-    {8.536005225548502e-01f, -5.209281600125748e-01f},
-    {8.529606049303636e-01f, -5.219752929371544e-01f},
-    {8.523194027626210e-01f, -5.230216397763758e-01f},
-    {8.516769170172609e-01f, -5.240671989544601e-01f},
-    {8.510331486618554e-01f, -5.251119688968137e-01f},
-    {8.503880986659081e-01f, -5.261559480300321e-01f},
-    {8.497417680008525e-01f, -5.271991347819013e-01f},
-    {8.490941576400509e-01f, -5.282415275814013e-01f},
-    {8.484452685587929e-01f, -5.292831248587072e-01f},
-    {8.477951017342936e-01f, -5.303239250451923e-01f},
-    {8.471436581456926e-01f, -5.313639265734305e-01f},
-    {8.464909387740521e-01f, -5.324031278771979e-01f},
-    {8.458369446023557e-01f, -5.334415273914767e-01f},
-    {8.451816766155068e-01f, -5.344791235524554e-01f},
-    {8.445251358003272e-01f, -5.355159147975332e-01f},
-    {8.438673231455553e-01f, -5.365518995653215e-01f},
-    {8.432082396418454e-01f, -5.375870762956454e-01f},
-    {8.425478862817651e-01f, -5.386214434295480e-01f},
-    {8.418862640597948e-01f, -5.396549994092906e-01f},
-    {8.412233739723254e-01f, -5.406877426783570e-01f},
-    {8.405592170176576e-01f, -5.417196716814542e-01f},
-    {8.398937941959995e-01f, -5.427507848645159e-01f},
-    {8.392271065094661e-01f, -5.437810806747042e-01f},
-    {8.385591549620770e-01f, -5.448105575604123e-01f},
-    {8.378899405597550e-01f, -5.458392139712668e-01f},
-    {8.372194643103249e-01f, -5.468670483581293e-01f},
-    {8.365477272235120e-01f, -5.478940591731002e-01f},
-    {8.358747303109401e-01f, -5.489202448695194e-01f},
-    {8.352004745861303e-01f, -5.499456039019702e-01f},
-    {8.345249610644997e-01f, -5.509701347262801e-01f},
-    {8.338481907633595e-01f, -5.519938357995242e-01f},
-    {8.331701647019132e-01f, -5.530167055800275e-01f},
-    {8.324908839012561e-01f, -5.540387425273663e-01f},
-    {8.318103493843727e-01f, -5.550599451023716e-01f},
-    {8.311285621761358e-01f, -5.560803117671306e-01f},
-    {8.304455233033046e-01f, -5.570998409849897e-01f},
-    {8.297612337945230e-01f, -5.581185312205561e-01f},
-    {8.290756946803191e-01f, -5.591363809397010e-01f},
-    {8.283889069931020e-01f, -5.601533886095610e-01f},
-    {8.277008717671618e-01f, -5.611695526985409e-01f},
-    {8.270115900386670e-01f, -5.621848716763159e-01f},
-    {8.263210628456635e-01f, -5.631993440138341e-01f},
-    {8.256292912280727e-01f, -5.642129681833185e-01f},
-    {8.249362762276903e-01f, -5.652257426582692e-01f},
-    {8.242420188881840e-01f, -5.662376659134664e-01f},
-    {8.235465202550933e-01f, -5.672487364249718e-01f},
-    {8.228497813758264e-01f, -5.682589526701315e-01f},
-    {8.221518032996592e-01f, -5.692683131275782e-01f},
-    {8.214525870777344e-01f, -5.702768162772331e-01f},
-    {8.207521337630588e-01f, -5.712844606003090e-01f},
-    {8.200504444105025e-01f, -5.722912445793115e-01f},
-    {8.193475200767969e-01f, -5.732971666980422e-01f},
-    {8.186433618205335e-01f, -5.743022254416005e-01f},
-    {8.179379707021619e-01f, -5.753064192963863e-01f},
-    {8.172313477839882e-01f, -5.763097467501014e-01f},
-    {8.165234941301740e-01f, -5.773122062917532e-01f},
-    {8.158144108067338e-01f, -5.783137964116556e-01f},
-    {8.151040988815345e-01f, -5.793145156014319e-01f},
-    {8.143925594242929e-01f, -5.803143623540171e-01f},
-    {8.136797935065747e-01f, -5.813133351636602e-01f},
-    {8.129658022017924e-01f, -5.823114325259262e-01f},
-    {8.122505865852039e-01f, -5.833086529376983e-01f},
-    {8.115341477339112e-01f, -5.843049948971807e-01f},
-    {8.108164867268581e-01f, -5.853004569039005e-01f},
-    {8.100976046448293e-01f, -5.862950374587097e-01f},
-    {8.093775025704479e-01f, -5.872887350637883e-01f},
-    {8.086561815881750e-01f, -5.882815482226452e-01f},
-    {8.079336427843067e-01f, -5.892734754401222e-01f},
-    {8.072098872469734e-01f, -5.902645152223945e-01f},
-    {8.064849160661379e-01f, -5.912546660769743e-01f},
-    {8.057587303335938e-01f, -5.922439265127122e-01f},
-    {8.050313311429637e-01f, -5.932322950397998e-01f},
-    {8.043027195896973e-01f, -5.942197701697721e-01f},
-    {8.035728967710708e-01f, -5.952063504155093e-01f},
-    {8.028418637861839e-01f, -5.961920342912395e-01f},
-    {8.021096217359593e-01f, -5.971768203125404e-01f},
-    {8.013761717231402e-01f, -5.981607069963423e-01f},
-    {8.006415148522891e-01f, -5.991436928609294e-01f},
-    {7.999056522297859e-01f, -6.001257764259429e-01f},
-    {7.991685849638264e-01f, -6.011069562123827e-01f},
-    {7.984303141644207e-01f, -6.020872307426096e-01f},
-    {7.976908409433912e-01f, -6.030665985403482e-01f},
-    {7.969501664143711e-01f, -6.040450581306880e-01f},
-    {7.962082916928030e-01f, -6.050226080400867e-01f},
-    {7.954652178959369e-01f, -6.059992467963715e-01f},
-    {7.947209461428283e-01f, -6.069749729287426e-01f},
-    {7.939754775543372e-01f, -6.079497849677736e-01f},
-    {7.932288132531257e-01f, -6.089236814454155e-01f},
-    {7.924809543636567e-01f, -6.098966608949977e-01f},
-    {7.917319020121923e-01f, -6.108687218512306e-01f},
-    {7.909816573267918e-01f, -6.118398628502083e-01f},
-    {7.902302214373100e-01f, -6.128100824294097e-01f},
-    {7.894775954753960e-01f, -6.137793791277018e-01f},
-    {7.887237805744907e-01f, -6.147477514853411e-01f},
-    {7.879687778698258e-01f, -6.157151980439765e-01f},
-    {7.872125884984216e-01f, -6.166817173466510e-01f},
-    {7.864552135990858e-01f, -6.176473079378039e-01f},
-    {7.856966543124112e-01f, -6.186119683632733e-01f},
-    {7.849369117807745e-01f, -6.195756971702979e-01f},
-    {7.841759871483340e-01f, -6.205384929075197e-01f},
-    {7.834138815610288e-01f, -6.215003541249855e-01f},
-    {7.826505961665757e-01f, -6.224612793741500e-01f},
-    {7.818861321144691e-01f, -6.234212672078768e-01f},
-    {7.811204905559779e-01f, -6.243803161804418e-01f},
-    {7.803536726441443e-01f, -6.253384248475345e-01f},
-    {7.795856795337824e-01f, -6.262955917662607e-01f},
-    {7.788165123814760e-01f, -6.272518154951441e-01f},
-    {7.780461723455767e-01f, -6.282070945941292e-01f},
-    {7.772746605862029e-01f, -6.291614276245828e-01f},
-    {7.765019782652373e-01f, -6.301148131492967e-01f},
-    {7.757281265463254e-01f, -6.310672497324895e-01f},
-    {7.749531065948739e-01f, -6.320187359398091e-01f},
-    {7.741769195780490e-01f, -6.329692703383341e-01f},
-    {7.733995666647743e-01f, -6.339188514965771e-01f},
-    {7.726210490257291e-01f, -6.348674779844861e-01f},
-    {7.718413678333470e-01f, -6.358151483734467e-01f},
-    {7.710605242618138e-01f, -6.367618612362842e-01f},
-    {7.702785194870657e-01f, -6.377076151472665e-01f},
-    {7.694953546867879e-01f, -6.386524086821050e-01f},
-    {7.687110310404124e-01f, -6.395962404179578e-01f},
-    {7.679255497291163e-01f, -6.405391089334316e-01f},
-    {7.671389119358204e-01f, -6.414810128085832e-01f},
-    {7.663511188451869e-01f, -6.424219506249224e-01f},
-    {7.655621716436182e-01f, -6.433619209654138e-01f},
-    {7.647720715192542e-01f, -6.443009224144792e-01f},
-    {7.639808196619715e-01f, -6.452389535579994e-01f},
-    {7.631884172633813e-01f, -6.461760129833163e-01f},
-    {7.623948655168271e-01f, -6.471120992792355e-01f},
-    {7.616001656173835e-01f, -6.480472110360278e-01f},
-    {7.608043187618542e-01f, -6.489813468454321e-01f},
-    {7.600073261487703e-01f, -6.499145053006563e-01f},
-    {7.592091889783881e-01f, -6.508466849963809e-01f},
-    {7.584099084526877e-01f, -6.517778845287601e-01f},
-    {7.576094857753715e-01f, -6.527081024954242e-01f},
-    {7.568079221518612e-01f, -6.536373374954818e-01f},
-    {7.560052187892974e-01f, -6.545655881295217e-01f},
-    {7.552013768965365e-01f, -6.554928529996153e-01f},
-    {7.543963976841503e-01f, -6.564191307093185e-01f},
-    {7.535902823644226e-01f, -6.573444198636738e-01f},
-    {7.527830321513488e-01f, -6.582687190692122e-01f},
-    {7.519746482606328e-01f, -6.591920269339562e-01f},
-    {7.511651319096865e-01f, -6.601143420674205e-01f},
-    {7.503544843176265e-01f, -6.610356630806152e-01f},
-    {7.495427067052737e-01f, -6.619559885860479e-01f},
-    {7.487298002951505e-01f, -6.628753171977246e-01f},
-    {7.479157663114792e-01f, -6.637936475311532e-01f},
-    {7.471006059801801e-01f, -6.647109782033448e-01f},
-    {7.462843205288703e-01f, -6.656273078328160e-01f},
-    {7.454669111868606e-01f, -6.665426350395909e-01f},
-    {7.446483791851549e-01f, -6.674569584452033e-01f},
-    {7.438287257564475e-01f, -6.683702766726985e-01f},
-    {7.430079521351217e-01f, -6.692825883466360e-01f},
-    {7.421860595572477e-01f, -6.701938920930909e-01f},
-    {7.413630492605809e-01f, -6.711041865396560e-01f},
-    {7.405389224845600e-01f, -6.720134703154446e-01f},
-    {7.397136804703048e-01f, -6.729217420510915e-01f},
-    {7.388873244606151e-01f, -6.738290003787560e-01f},
-    {7.380598556999681e-01f, -6.747352439321236e-01f},
-    {7.372312754345167e-01f, -6.756404713464076e-01f},
-    {7.364015849120877e-01f, -6.765446812583521e-01f},
-    {7.355707853821803e-01f, -6.774478723062332e-01f},
-    {7.347388780959635e-01f, -6.783500431298615e-01f},
-    {7.339058643062745e-01f, -6.792511923705841e-01f},
-    {7.330717452676171e-01f, -6.801513186712865e-01f},
-    {7.322365222361595e-01f, -6.810504206763948e-01f},
-    {7.314001964697324e-01f, -6.819484970318775e-01f},
-    {7.305627692278276e-01f, -6.828455463852481e-01f},
-    {7.297242417715950e-01f, -6.837415673855661e-01f},
-    {7.288846153638420e-01f, -6.846365586834405e-01f},
-    {7.280438912690308e-01f, -6.855305189310302e-01f},
-    {7.272020707532766e-01f, -6.864234467820476e-01f},
-    {7.263591550843460e-01f, -6.873153408917591e-01f},
-    {7.255151455316546e-01f, -6.882061999169885e-01f},
-    {7.246700433662657e-01f, -6.890960225161182e-01f},
-    {7.238238498608879e-01f, -6.899848073490914e-01f},
-    {7.229765662898732e-01f, -6.908725530774144e-01f},
-    {7.221281939292153e-01f, -6.917592583641577e-01f},
-    {7.212787340565479e-01f, -6.926449218739597e-01f},
-    {7.204281879511419e-01f, -6.935295422730269e-01f},
-    {7.195765568939045e-01f, -6.944131182291369e-01f},
-    {7.187238421673769e-01f, -6.952956484116404e-01f},
-    {7.178700450557317e-01f, -6.961771314914630e-01f},
-    {7.170151668447722e-01f, -6.970575661411068e-01f},
-    {7.161592088219294e-01f, -6.979369510346534e-01f},
-    {7.153021722762606e-01f, -6.988152848477649e-01f},
-    {7.144440584984474e-01f, -6.996925662576865e-01f},
-    {7.135848687807936e-01f, -7.005687939432483e-01f},
-    {7.127246044172235e-01f, -7.014439665848672e-01f},
-    {7.118632667032795e-01f, -7.023180828645491e-01f},
-    {7.110008569361208e-01f, -7.031911414658905e-01f},
-    {7.101373764145209e-01f, -7.040631410740809e-01f},
-    {7.092728264388657e-01f, -7.049340803759049e-01f},
-    {7.084072083111520e-01f, -7.058039580597435e-01f},
-    {7.075405233349850e-01f, -7.066727728155766e-01f}
+    {9.999998117522413e-01, -6.135922766517967e-04},
+    {9.999983057705969e-01, -1.840775905896510e-03},
+    {9.999952938095762e-01, -3.067956762965976e-03},
+    {9.999907758737150e-01, -4.295132999748002e-03},
+    {9.999847519698173e-01, -5.522302768137352e-03},
+    {9.999772221069551e-01, -6.749464220038533e-03},
+    {9.999681862964679e-01, -7.976615507368575e-03},
+    {9.999576445519639e-01, -9.203754782059819e-03},
+    {9.999455968893185e-01, -1.043088019606269e-02},
+    {9.999320433266753e-01, -1.165798990134850e-02},
+    {9.999169838844458e-01, -1.288508204991220e-02},
+    {9.999004185853092e-01, -1.411215479377519e-02},
+    {9.998823474542126e-01, -1.533920628498810e-02},
+    {9.998627705183706e-01, -1.656623467563356e-02},
+    {9.998416878072659e-01, -1.779323811782898e-02},
+    {9.998190993526487e-01, -1.902021476372936e-02},
+    {9.997950051885367e-01, -2.024716276553004e-02},
+    {9.997694053512153e-01, -2.147408027546951e-02},
+    {9.997422998792375e-01, -2.270096544583216e-02},
+    {9.997136888134235e-01, -2.392781642895110e-02},
+    {9.996835721968610e-01, -2.515463137721094e-02},
+    {9.996519500749053e-01, -2.638140844305051e-02},
+    {9.996188224951786e-01, -2.760814577896574e-02},
+    {9.995841895075704e-01, -2.883484153751236e-02},
+    {9.995480511642375e-01, -3.006149387130874e-02},
+    {9.995104075196035e-01, -3.128810093303862e-02},
+    {9.994712586303591e-01, -3.251466087545394e-02},
+    {9.994306045554617e-01, -3.374117185137758e-02},
+    {9.993884453561358e-01, -3.496763201370620e-02},
+    {9.993447810958722e-01, -3.619403951541294e-02},
+    {9.992996118404286e-01, -3.742039250955028e-02},
+    {9.992529376578290e-01, -3.864668914925275e-02},
+    {9.992047586183639e-01, -3.987292758773981e-02},
+    {9.991550747945901e-01, -4.109910597831850e-02},
+    {9.991038862613305e-01, -4.232522247438635e-02},
+    {9.990511930956741e-01, -4.355127522943403e-02},
+    {9.989969953769761e-01, -4.477726239704831e-02},
+    {9.989412931868569e-01, -4.600318213091462e-02},
+    {9.988840866092031e-01, -4.722903258482004e-02},
+    {9.988253757301669e-01, -4.845481191265589e-02},
+    {9.987651606381658e-01, -4.968051826842070e-02},
+    {9.987034414238826e-01, -5.090614980622282e-02},
+    {9.986402181802653e-01, -5.213170468028332e-02},
+    {9.985754910025268e-01, -5.335718104493870e-02},
+    {9.985092599881454e-01, -5.458257705464371e-02},
+    {9.984415252368637e-01, -5.580789086397409e-02},
+    {9.983722868506889e-01, -5.703312062762941e-02},
+    {9.983015449338929e-01, -5.825826450043575e-02},
+    {9.982292995930115e-01, -5.948332063734863e-02},
+    {9.981555509368452e-01, -6.070828719345561e-02},
+    {9.980802990764579e-01, -6.193316232397920e-02},
+    {9.980035441251777e-01, -6.315794418427960e-02},
+    {9.979252861985960e-01, -6.438263092985747e-02},
+    {9.978455254145679e-01, -6.560722071635666e-02},
+    {9.977642618932119e-01, -6.683171169956714e-02},
+    {9.976814957569091e-01, -6.805610203542757e-02},
+    {9.975972271303040e-01, -6.928038988002828e-02},
+    {9.975114561403035e-01, -7.050457338961386e-02},
+    {9.974241829160772e-01, -7.172865072058610e-02},
+    {9.973354075890570e-01, -7.295262002950662e-02},
+    {9.972451302929369e-01, -7.417647947309980e-02},
+    {9.971533511636731e-01, -7.540022720825540e-02},
+    {9.970600703394830e-01, -7.662386139203149e-02},
+    {9.969652879608459e-01, -7.784738018165707e-02},
+    {9.968690041705026e-01, -7.907078173453497e-02},
+    {9.967712191134545e-01, -8.029406420824454e-02},
+    {9.966719329369642e-01, -8.151722576054453e-02},
+    {9.965711457905548e-01, -8.274026454937569e-02},
+    {9.964688578260101e-01, -8.396317873286374e-02},
+    {9.963650691973739e-01, -8.518596646932200e-02},
+    {9.962597800609497e-01, -8.640862591725426e-02},
+    {9.961529905753015e-01, -8.763115523535747e-02},
+    {9.960447009012520e-01, -8.885355258252460e-02},
+    {9.959349112018836e-01, -9.007581611784729e-02},
+    {9.958236216425376e-01, -9.129794400061877e-02},
+    {9.957108323908140e-01, -9.251993439033654e-02},
+    {9.955965436165716e-01, -9.374178544670515e-02},
+    {9.954807554919269e-01, -9.496349532963899e-02},
+    {9.953634681912550e-01, -9.618506219926506e-02},
+    {9.952446818911883e-01, -9.740648421592572e-02},
+    {9.951243967706169e-01, -9.862775954018151e-02},
+    {9.950026130106879e-01, -9.984888633281383e-02},
+    {9.948793307948056e-01, -1.010698627548278e-01},
+    {9.947545503086307e-01, -1.022906869674551e-01},
+    {9.946282717400804e-01, -1.035113571321563e-01},
+    {9.945004952793278e-01, -1.047318714106244e-01},
+    {9.943712211188022e-01, -1.059522279647869e-01},
+    {9.942404494531879e-01, -1.071724249568088e-01},
+    {9.941081804794248e-01, -1.083924605490956e-01},
+    {9.939744143967076e-01, -1.096123329042957e-01},
+    {9.938391514064855e-01, -1.108320401853034e-01},
+    {9.937023917124622e-01, -1.120515805552615e-01},
+    {9.935641355205953e-01, -1.132709521775643e-01},
+    {9.934243830390962e-01, -1.144901532158602e-01},
+    {9.932831344784294e-01, -1.157091818340545e-01},
+    {9.931403900513129e-01, -1.169280361963119e-01},
+    {9.929961499727171e-01, -1.181467144670601e-01},
+    {9.928504144598651e-01, -1.193652148109914e-01},
+    {9.927031837322318e-01, -1.205835353930663e-01},
+    {9.925544580115441e-01, -1.218016743785162e-01},
+    {9.924042375217801e-01, -1.230196299328457e-01},
+    {9.922525224891693e-01, -1.242374002218357e-01},
+    {9.920993131421918e-01, -1.254549834115462e-01},
+    {9.919446097115779e-01, -1.266723776683190e-01},
+    {9.917884124303086e-01, -1.278895811587802e-01},
+    {9.916307215336136e-01, -1.291065920498434e-01},
+    {9.914715372589731e-01, -1.303234085087122e-01},
+    {9.913108598461154e-01, -1.315400287028831e-01},
+    {9.911486895370180e-01, -1.327564508001479e-01},
+    {9.909850265759061e-01, -1.339726729685971e-01},
+    {9.908198712092535e-01, -1.351886933766218e-01},
+    {9.906532236857811e-01, -1.364045101929175e-01},
+    {9.904850842564571e-01, -1.376201215864860e-01},
+    {9.903154531744962e-01, -1.388355257266385e-01},
+    {9.901443306953601e-01, -1.400507207829983e-01},
+    {9.899717170767560e-01, -1.412657049255036e-01},
+    {9.897976125786367e-01, -1.424804763244102e-01},
+    {9.896220174632009e-01, -1.436950331502945e-01},
+    {9.894449319948911e-01, -1.449093735740556e-01},
+    {9.892663564403953e-01, -1.461234957669190e-01},
+    {9.890862910686448e-01, -1.473373979004386e-01},
+    {9.889047361508148e-01, -1.485510781464996e-01},
+    {9.887216919603238e-01, -1.497645346773215e-01},
+    {9.885371587728330e-01, -1.509777656654608e-01},
+    {9.883511368662461e-01, -1.521907692838135e-01},
+    {9.881636265207087e-01, -1.534035437056180e-01},
+    {9.879746280186079e-01, -1.546160871044581e-01},
+    {9.877841416445722e-01, -1.558283976542652e-01},
+    {9.875921676854704e-01, -1.570404735293217e-01},
+    {9.873987064304122e-01, -1.582523129042630e-01},
+    {9.872037581707463e-01, -1.594639139540810e-01},
+    {9.870073232000616e-01, -1.606752748541265e-01},
+    {9.868094018141855e-01, -1.618863937801118e-01},
+    {9.866099943111839e-01, -1.630972689081137e-01},
+    {9.864091009913611e-01, -1.643078984145762e-01},
+    {9.862067221572588e-01, -1.655182804763130e-01},
+    {9.860028581136556e-01, -1.667284132705107e-01},
+    {9.857975091675675e-01, -1.679382949747312e-01},
+    {9.855906756282459e-01, -1.691479237669144e-01},
+    {9.853823578071785e-01, -1.703572978253813e-01},
+    {9.851725560180883e-01, -1.715664153288364e-01},
+    {9.849612705769328e-01, -1.727752744563706e-01},
+    {9.847485018019042e-01, -1.739838733874638e-01},
+    {9.845342500134284e-01, -1.751922103019880e-01},
+    {9.843185155341647e-01, -1.764002833802096e-01},
+    {9.841012986890054e-01, -1.776080908027924e-01},
+    {9.838825998050751e-01, -1.788156307508001e-01},
+    {9.836624192117303e-01, -1.800229014056995e-01},
+    {9.834407572405590e-01, -1.812299009493628e-01},
+    {9.832176142253802e-01, -1.824366275640705e-01},
+    {9.829929905022433e-01, -1.836430794325141e-01},
+    {9.827668864094273e-01, -1.848492547377989e-01},
+    {9.825393022874412e-01, -1.860551516634466e-01},
+    {9.823102384790224e-01, -1.872607683933984e-01},
+    {9.820796953291370e-01, -1.884661031120172e-01},
+    {9.818476731849786e-01, -1.896711540040907e-01},
+    {9.816141723959685e-01, -1.908759192548340e-01},
+    {9.813791933137546e-01, -1.920803970498924e-01},
+    {9.811427362922112e-01, -1.932845855753442e-01},
+    {9.809048016874382e-01, -1.944884830177032e-01},
+    {9.806653898577611e-01, -1.956920875639216e-01},
+    {9.804245011637294e-01, -1.968953974013927e-01},
+    {9.801821359681174e-01, -1.980984107179536e-01},
+    {9.799382946359226e-01, -1.993011257018880e-01},
+    {9.796929775343657e-01, -2.005035405419289e-01},
+    {9.794461850328897e-01, -2.017056534272613e-01},
+    {9.791979175031598e-01, -2.029074625475249e-01},
+    {9.789481753190622e-01, -2.041089660928169e-01},
+    {9.786969588567044e-01, -2.053101622536946e-01},
+    {9.784442684944136e-01, -2.065110492211783e-01},
+    {9.781901046127370e-01, -2.077116251867540e-01},
+    {9.779344675944409e-01, -2.089118883423760e-01},
+    {9.776773578245099e-01, -2.101118368804696e-01},
+    {9.774187756901469e-01, -2.113114689939341e-01},
+    {9.771587215807717e-01, -2.125107828761450e-01},
+    {9.768971958880210e-01, -2.137097767209575e-01},
+    {9.766341990057480e-01, -2.149084487227085e-01},
+    {9.763697313300211e-01, -2.161067970762195e-01},
+    {9.761037932591240e-01, -2.173048199767996e-01},
+    {9.758363851935545e-01, -2.185025156202481e-01},
+    {9.755675075360243e-01, -2.196998822028567e-01},
+    {9.752971606914583e-01, -2.208969179214133e-01},
+    {9.750253450669941e-01, -2.220936209732035e-01},
+    {9.747520610719810e-01, -2.232899895560143e-01},
+    {9.744773091179798e-01, -2.244860218681361e-01},
+    {9.742010896187618e-01, -2.256817161083659e-01},
+    {9.739234029903089e-01, -2.268770704760098e-01},
+    {9.736442496508120e-01, -2.280720831708857e-01},
+    {9.733636300206708e-01, -2.292667523933261e-01},
+    {9.730815445224936e-01, -2.304610763441808e-01},
+    {9.727979935810960e-01, -2.316550532248194e-01},
+    {9.725129776235006e-01, -2.328486812371343e-01},
+    {9.722264970789363e-01, -2.340419585835434e-01},
+    {9.719385523788376e-01, -2.352348834669925e-01},
+    {9.716491439568440e-01, -2.364274540909583e-01},
+    {9.713582722487994e-01, -2.376196686594509e-01},
+    {9.710659376927513e-01, -2.388115253770169e-01},
+    {9.707721407289504e-01, -2.400030224487415e-01},
+    {9.704768817998493e-01, -2.411941580802516e-01},
+    {9.701801613501028e-01, -2.423849304777186e-01},
+    {9.698819798265667e-01, -2.435753378478606e-01},
+    {9.695823376782966e-01, -2.447653783979458e-01},
+    {9.692812353565485e-01, -2.459550503357946e-01},
+    {9.689786733147769e-01, -2.471443518697825e-01},
+    {9.686746520086348e-01, -2.483332812088429e-01},
+    {9.683691718959728e-01, -2.495218365624697e-01},
+    {9.680622334368384e-01, -2.507100161407201e-01},
+    {9.677538370934755e-01, -2.518978181542170e-01},
+    {9.674439833303232e-01, -2.530852408141520e-01},
+    {9.671326726140158e-01, -2.542722823322882e-01},
+    {9.668199054133816e-01, -2.554589409209625e-01},
+    {9.665056821994423e-01, -2.566452147930884e-01},
+    {9.661900034454125e-01, -2.578311021621590e-01},
+    {9.658728696266987e-01, -2.590166012422493e-01},
+    {9.655542812208985e-01, -2.602017102480191e-01},
+    {9.652342387078005e-01, -2.613864273947156e-01},
+    {9.649127425693828e-01, -2.625707508981763e-01},
+    {9.645897932898128e-01, -2.637546789748313e-01},
+    {9.642653913554462e-01, -2.649382098417065e-01},
+    {9.639395372548267e-01, -2.661213417164257e-01},
+    {9.636122314786845e-01, -2.673040728172135e-01},
+    {9.632834745199362e-01, -2.684864013628985e-01},
+    {9.629532668736839e-01, -2.696683255729151e-01},
+    {9.626216090372143e-01, -2.708498436673069e-01},
+    {9.622885015099981e-01, -2.720309538667289e-01},
+    {9.619539447936892e-01, -2.732116543924507e-01},
+    {9.616179393921240e-01, -2.743919434663584e-01},
+    {9.612804858113206e-01, -2.755718193109581e-01},
+    {9.609415845594780e-01, -2.767512801493782e-01},
+    {9.606012361469752e-01, -2.779303242053718e-01},
+    {9.602594410863711e-01, -2.791089497033199e-01},
+    {9.599161998924024e-01, -2.802871548682339e-01},
+    {9.595715130819845e-01, -2.814649379257579e-01},
+    {9.592253811742094e-01, -2.826422971021723e-01},
+    {9.588778046903456e-01, -2.838192306243950e-01},
+    {9.585287841538368e-01, -2.849957367199857e-01},
+    {9.581783200903017e-01, -2.861718136171474e-01},
+    {9.578264130275329e-01, -2.873474595447295e-01},
+    {9.574730634954960e-01, -2.885226727322305e-01},
+    {9.571182720263292e-01, -2.896974514098006e-01},
+    {9.567620391543418e-01, -2.908717938082443e-01},
+    {9.564043654160141e-01, -2.920456981590233e-01},
+    {9.560452513499964e-01, -2.932191626942586e-01},
+    {9.556846974971080e-01, -2.943921856467341e-01},
+    {9.553227044003364e-01, -2.955647652498983e-01},
+    {9.549592726048367e-01, -2.967368997378675e-01},
+    {9.545944026579306e-01, -2.979085873454284e-01},
+    {9.542280951091057e-01, -2.990798263080405e-01},
+    {9.538603505100144e-01, -3.002506148618392e-01},
+    {9.534911694144735e-01, -3.014209512436381e-01},
+    {9.531205523784633e-01, -3.025908336909318e-01},
+    {9.527484999601259e-01, -3.037602604418984e-01},
+    {9.523750127197659e-01, -3.049292297354024e-01},
+    {9.520000912198481e-01, -3.060977398109971e-01},
+    {9.516237360249976e-01, -3.072657889089275e-01},
+    {9.512459477019986e-01, -3.084333752701328e-01},
+    {9.508667268197933e-01, -3.096004971362489e-01},
+    {9.504860739494817e-01, -3.107671527496115e-01},
+    {9.501039896643201e-01, -3.119333403532583e-01},
+    {9.497204745397203e-01, -3.130990581909318e-01},
+    {9.493355291532494e-01, -3.142643045070820e-01},
+    {9.489491540846281e-01, -3.154290775468691e-01},
+    {9.485613499157303e-01, -3.165933755561658e-01},
+    {9.481721172305820e-01, -3.177571967815606e-01},
+    {9.477814566153607e-01, -3.189205394703594e-01},
+    {9.473893686583942e-01, -3.200834018705895e-01},
+    {9.469958539501598e-01, -3.212457822310009e-01},
+    {9.466009130832835e-01, -3.224076788010699e-01},
+    {9.462045466525394e-01, -3.235690898310011e-01},
+    {9.458067552548478e-01, -3.247300135717307e-01},
+    {9.454075394892756e-01, -3.258904482749284e-01},
+    {9.450068999570345e-01, -3.270503921930005e-01},
+    {9.446048372614803e-01, -3.282098435790925e-01},
+    {9.442013520081122e-01, -3.293688006870915e-01},
+    {9.437964448045717e-01, -3.305272617716291e-01},
+    {9.433901162606417e-01, -3.316852250880838e-01},
+    {9.429823669882458e-01, -3.328426888925837e-01},
+    {9.425731976014469e-01, -3.339996514420094e-01},
+    {9.421626087164466e-01, -3.351561109939961e-01},
+    {9.417506009515846e-01, -3.363120658069366e-01},
+    {9.413371749273369e-01, -3.374675141399838e-01},
+    {9.409223312663159e-01, -3.386224542530535e-01},
+    {9.405060705932683e-01, -3.397768844068269e-01},
+    {9.400883935350755e-01, -3.409308028627527e-01},
+    {9.396693007207513e-01, -3.420842078830508e-01},
+    {9.392487927814420e-01, -3.432370977307140e-01},
+    {9.388268703504251e-01, -3.443894706695110e-01},
+    {9.384035340631081e-01, -3.455413249639891e-01},
+    {9.379787845570278e-01, -3.466926588794764e-01},
+    {9.375526224718491e-01, -3.478434706820849e-01},
+    {9.371250484493645e-01, -3.489937586387129e-01},
+    {9.366960631334929e-01, -3.501435210170474e-01},
+    {9.362656671702783e-01, -3.512927560855671e-01},
+    {9.358338612078891e-01, -3.524414621135448e-01},
+    {9.354006458966176e-01, -3.535896373710499e-01},
+    {9.349660218888781e-01, -3.547372801289512e-01},
+    {9.345299898392064e-01, -3.558843886589194e-01},
+    {9.340925504042590e-01, -3.570309612334300e-01},
+    {9.336537042428116e-01, -3.581769961257653e-01},
+    {9.332134520157588e-01, -3.593224916100174e-01},
+    {9.327717943861125e-01, -3.604674459610909e-01},
+    {9.323287320190009e-01, -3.616118574547051e-01},
+    {9.318842655816681e-01, -3.627557243673972e-01},
+    {9.314383957434725e-01, -3.638990449765241e-01},
+    {9.309911231758859e-01, -3.650418175602657e-01},
+    {9.305424485524929e-01, -3.661840403976272e-01},
+    {9.300923725489892e-01, -3.673257117684415e-01},
+    {9.296408958431813e-01, -3.684668299533723e-01},
+    {9.291880191149847e-01, -3.696073932339162e-01},
+    {9.287337430464239e-01, -3.707473998924054e-01},
+    {9.282780683216301e-01, -3.718868482120106e-01},
+    {9.278209956268415e-01, -3.730257364767432e-01},
+    {9.273625256504011e-01, -3.741640629714579e-01},
+    {9.269026590827565e-01, -3.753018259818559e-01},
+    {9.264413966164585e-01, -3.764390237944864e-01},
+    {9.259787389461599e-01, -3.775756546967501e-01},
+    {9.255146867686148e-01, -3.787117169769015e-01},
+    {9.250492407826776e-01, -3.798472089240512e-01},
+    {9.245824016893013e-01, -3.809821288281689e-01},
+    {9.241141701915373e-01, -3.821164749800858e-01},
+    {9.236445469945337e-01, -3.832502456714969e-01},
+    {9.231735328055345e-01, -3.843834391949643e-01},
+    {9.227011283338786e-01, -3.855160538439188e-01},
+    {9.222273342909986e-01, -3.866480879126634e-01},
+    {9.217521513904198e-01, -3.877795396963752e-01},
+    {9.212755803477590e-01, -3.889104074911081e-01},
+    {9.207976218807237e-01, -3.900406895937958e-01},
+    {9.203182767091106e-01, -3.911703843022539e-01},
+    {9.198375455548048e-01, -3.922994899151824e-01},
+    {9.193554291417789e-01, -3.934280047321689e-01},
+    {9.188719281960914e-01, -3.945559270536903e-01},
+    {9.183870434458861e-01, -3.956832551811160e-01},
+    {9.179007756213905e-01, -3.968099874167103e-01},
+    {9.174131254549152e-01, -3.979361220636348e-01},
+    {9.169240936808526e-01, -3.990616574259509e-01},
+    {9.164336810356757e-01, -4.001865918086229e-01},
+    {9.159418882579371e-01, -4.013109235175197e-01},
+    {9.154487160882678e-01, -4.024346508594184e-01},
+    {9.149541652693762e-01, -4.035577721420057e-01},
+    {9.144582365460469e-01, -4.046802856738814e-01},
+    {9.139609306651395e-01, -4.058021897645602e-01},
+    {9.134622483755878e-01, -4.069234827244749e-01},
+    {9.129621904283982e-01, -4.080441628649787e-01},
+    {9.124607575766490e-01, -4.091642284983474e-01},
+    {9.119579505754890e-01, -4.102836779377824e-01},
+    {9.114537701821365e-01, -4.114025094974132e-01},
+    {9.109482171558779e-01, -4.125207214922996e-01},
+    {9.104412922580672e-01, -4.136383122384345e-01},
+    {9.099329962521239e-01, -4.147552800527466e-01},
+    {9.094233299035327e-01, -4.158716232531024e-01},
+    {9.089122939798419e-01, -4.169873401583093e-01},
+    {9.083998892506623e-01, -4.181024290881177e-01},
+    {9.078861164876663e-01, -4.192168883632239e-01},
+    {9.073709764645862e-01, -4.203307163052724e-01},
+    {9.068544699572136e-01, -4.214439112368585e-01},
+    {9.063365977433983e-01, -4.225564714815306e-01},
+    {9.058173606030460e-01, -4.236683953637931e-01},
+    {9.052967593181188e-01, -4.247796812091088e-01},
+    {9.047747946726327e-01, -4.258903273439013e-01},
+    {9.042514674526569e-01, -4.270003320955576e-01},
+    {9.037267784463131e-01, -4.281096937924305e-01},
+    {9.032007284437731e-01, -4.292184107638414e-01},
+    {9.026733182372588e-01, -4.303264813400826e-01},
+    {9.021445486210405e-01, -4.314339038524199e-01},
+    {9.016144203914357e-01, -4.325406766330948e-01},
+    {9.010829343468079e-01, -4.336467980153277e-01},
+    {9.005500912875654e-01, -4.347522663333197e-01},
+    {9.000158920161603e-01, -4.358570799222555e-01},
+    {8.994803373370870e-01, -4.369612371183058e-01},
+    {8.989434280568812e-01, -4.380647362586298e-01},
+    {8.984051649841186e-01, -4.391675756813778e-01},
+    {8.978655489294136e-01, -4.402697537256935e-01},
+    {8.973245807054183e-01, -4.413712687317167e-01},
+    {8.967822611268210e-01, -4.424721190405857e-01},
+    {8.962385910103452e-01, -4.435723029944398e-01},
+    {8.956935711747483e-01, -4.446718189364220e-01},
+    {8.951472024408204e-01, -4.457706652106809e-01},
+    {8.945994856313827e-01, -4.468688401623742e-01},
+    {8.940504215712870e-01, -4.479663421376699e-01},
+    {8.935000110874138e-01, -4.490631694837502e-01},
+    {8.929482550086714e-01, -4.501593205488127e-01},
+    {8.923951541659944e-01, -4.512547936820739e-01},
+    {8.918407093923427e-01, -4.523495872337709e-01},
+    {8.912849215227001e-01, -4.534436995551644e-01},
+    {8.907277913940732e-01, -4.545371289985410e-01},
+    {8.901693198454897e-01, -4.556298739172159e-01},
+    {8.896095077179980e-01, -4.567219326655349e-01},
+    {8.890483558546646e-01, -4.578133035988772e-01},
+    {8.884858651005743e-01, -4.589039850736579e-01},
+    {8.879220363028281e-01, -4.599939754473306e-01},
+    {8.873568703105417e-01, -4.610832730783892e-01},
+    {8.867903679748451e-01, -4.621718763263714e-01},
+    {8.862225301488806e-01, -4.632597835518601e-01},
+    {8.856533576878016e-01, -4.643469931164871e-01},
+    {8.850828514487716e-01, -4.654335033829341e-01},
+    {8.845110122909626e-01, -4.665193127149364e-01},
+    {8.839378410755541e-01, -4.676044194772847e-01},
+    {8.833633386657316e-01, -4.686888220358279e-01},
+    {8.827875059266853e-01, -4.697725187574754e-01},
+    {8.822103437256089e-01, -4.708555080101994e-01},
+    {8.816318529316984e-01, -4.719377881630376e-01},
+    {8.810520344161502e-01, -4.730193575860958e-01},
+    {8.804708890521608e-01, -4.741002146505500e-01},
+    {8.798884177149244e-01, -4.751803577286489e-01},
+    {8.793046212816323e-01, -4.762597851937166e-01},
+    {8.787195006314716e-01, -4.773384954201548e-01},
+    {8.781330566456232e-01, -4.784164867834454e-01},
+    {8.775452902072614e-01, -4.794937576601530e-01},
+    {8.769562022015515e-01, -4.805703064279270e-01},
+    {8.763657935156495e-01, -4.816461314655044e-01},
+    {8.757740650387004e-01, -4.827212311527123e-01},
+    {8.751810176618363e-01, -4.837956038704698e-01},
+    {8.745866522781761e-01, -4.848692480007911e-01},
+    {8.739909697828232e-01, -4.859421619267875e-01},
+    {8.733939710728648e-01, -4.870143440326701e-01},
+    {8.727956570473698e-01, -4.880857927037520e-01},
+    {8.721960286073888e-01, -4.891565063264507e-01},
+    {8.715950866559510e-01, -4.902264832882912e-01},
+    {8.709928320980644e-01, -4.912957219779071e-01},
+    {8.703892658407133e-01, -4.923642207850446e-01},
+    {8.697843887928577e-01, -4.934319781005636e-01},
+    {8.691782018654314e-01, -4.944989923164409e-01},
+    {8.685707059713409e-01, -4.955652618257725e-01},
+    {8.679619020254642e-01, -4.966307850227757e-01},
+    {8.673517909446490e-01, -4.976955603027919e-01},
+    {8.667403736477115e-01, -4.987595860622885e-01},
+    {8.661276510554351e-01, -4.998228606988624e-01},
+    {8.655136240905691e-01, -5.008853826112407e-01},
+    {8.648982936778269e-01, -5.019471501992850e-01},
+    {8.642816607438848e-01, -5.030081618639924e-01},
+    {8.636637262173812e-01, -5.040684160074983e-01},
+    {8.630444910289141e-01, -5.051279110330795e-01},
+    {8.624239561110406e-01, -5.061866453451552e-01},
+    {8.618021223982749e-01, -5.072446173492910e-01},
+    {8.611789908270876e-01, -5.083018254522002e-01},
+    {8.605545623359034e-01, -5.093582680617462e-01},
+    {8.599288378651004e-01, -5.104139435869457e-01},
+    {8.593018183570085e-01, -5.114688504379703e-01},
+    {8.586735047559073e-01, -5.125229870261497e-01},
+    {8.580438980080262e-01, -5.135763517639729e-01},
+    {8.574129990615412e-01, -5.146289430650919e-01},
+    {8.567808088665750e-01, -5.156807593443229e-01},
+    {8.561473283751945e-01, -5.167317990176499e-01},
+    {8.555125585414098e-01, -5.177820605022260e-01},
+    {8.548765003211730e-01, -5.188315422163763e-01},
+    {8.542391546723761e-01, -5.198802425796005e-01},
+    {8.536005225548502e-01, -5.209281600125748e-01},
+    {8.529606049303636e-01, -5.219752929371544e-01},
+    {8.523194027626210e-01, -5.230216397763758e-01},
+    {8.516769170172609e-01, -5.240671989544601e-01},
+    {8.510331486618554e-01, -5.251119688968137e-01},
+    {8.503880986659081e-01, -5.261559480300321e-01},
+    {8.497417680008525e-01, -5.271991347819013e-01},
+    {8.490941576400509e-01, -5.282415275814013e-01},
+    {8.484452685587929e-01, -5.292831248587072e-01},
+    {8.477951017342936e-01, -5.303239250451923e-01},
+    {8.471436581456926e-01, -5.313639265734305e-01},
+    {8.464909387740521e-01, -5.324031278771979e-01},
+    {8.458369446023557e-01, -5.334415273914767e-01},
+    {8.451816766155068e-01, -5.344791235524554e-01},
+    {8.445251358003272e-01, -5.355159147975332e-01},
+    {8.438673231455553e-01, -5.365518995653215e-01},
+    {8.432082396418454e-01, -5.375870762956454e-01},
+    {8.425478862817651e-01, -5.386214434295480e-01},
+    {8.418862640597948e-01, -5.396549994092906e-01},
+    {8.412233739723254e-01, -5.406877426783570e-01},
+    {8.405592170176576e-01, -5.417196716814542e-01},
+    {8.398937941959995e-01, -5.427507848645159e-01},
+    {8.392271065094661e-01, -5.437810806747042e-01},
+    {8.385591549620770e-01, -5.448105575604123e-01},
+    {8.378899405597550e-01, -5.458392139712668e-01},
+    {8.372194643103249e-01, -5.468670483581293e-01},
+    {8.365477272235120e-01, -5.478940591731002e-01},
+    {8.358747303109401e-01, -5.489202448695194e-01},
+    {8.352004745861303e-01, -5.499456039019702e-01},
+    {8.345249610644997e-01, -5.509701347262801e-01},
+    {8.338481907633595e-01, -5.519938357995242e-01},
+    {8.331701647019132e-01, -5.530167055800275e-01},
+    {8.324908839012561e-01, -5.540387425273663e-01},
+    {8.318103493843727e-01, -5.550599451023716e-01},
+    {8.311285621761358e-01, -5.560803117671306e-01},
+    {8.304455233033046e-01, -5.570998409849897e-01},
+    {8.297612337945230e-01, -5.581185312205561e-01},
+    {8.290756946803191e-01, -5.591363809397010e-01},
+    {8.283889069931020e-01, -5.601533886095610e-01},
+    {8.277008717671618e-01, -5.611695526985409e-01},
+    {8.270115900386670e-01, -5.621848716763159e-01},
+    {8.263210628456635e-01, -5.631993440138341e-01},
+    {8.256292912280727e-01, -5.642129681833185e-01},
+    {8.249362762276903e-01, -5.652257426582692e-01},
+    {8.242420188881840e-01, -5.662376659134664e-01},
+    {8.235465202550933e-01, -5.672487364249718e-01},
+    {8.228497813758264e-01, -5.682589526701315e-01},
+    {8.221518032996592e-01, -5.692683131275782e-01},
+    {8.214525870777344e-01, -5.702768162772331e-01},
+    {8.207521337630588e-01, -5.712844606003090e-01},
+    {8.200504444105025e-01, -5.722912445793115e-01},
+    {8.193475200767969e-01, -5.732971666980422e-01},
+    {8.186433618205335e-01, -5.743022254416005e-01},
+    {8.179379707021619e-01, -5.753064192963863e-01},
+    {8.172313477839882e-01, -5.763097467501014e-01},
+    {8.165234941301740e-01, -5.773122062917532e-01},
+    {8.158144108067338e-01, -5.783137964116556e-01},
+    {8.151040988815345e-01, -5.793145156014319e-01},
+    {8.143925594242929e-01, -5.803143623540171e-01},
+    {8.136797935065747e-01, -5.813133351636602e-01},
+    {8.129658022017924e-01, -5.823114325259262e-01},
+    {8.122505865852039e-01, -5.833086529376983e-01},
+    {8.115341477339112e-01, -5.843049948971807e-01},
+    {8.108164867268581e-01, -5.853004569039005e-01},
+    {8.100976046448293e-01, -5.862950374587097e-01},
+    {8.093775025704479e-01, -5.872887350637883e-01},
+    {8.086561815881750e-01, -5.882815482226452e-01},
+    {8.079336427843067e-01, -5.892734754401222e-01},
+    {8.072098872469734e-01, -5.902645152223945e-01},
+    {8.064849160661379e-01, -5.912546660769743e-01},
+    {8.057587303335938e-01, -5.922439265127122e-01},
+    {8.050313311429637e-01, -5.932322950397998e-01},
+    {8.043027195896973e-01, -5.942197701697721e-01},
+    {8.035728967710708e-01, -5.952063504155093e-01},
+    {8.028418637861839e-01, -5.961920342912395e-01},
+    {8.021096217359593e-01, -5.971768203125404e-01},
+    {8.013761717231402e-01, -5.981607069963423e-01},
+    {8.006415148522891e-01, -5.991436928609294e-01},
+    {7.999056522297859e-01, -6.001257764259429e-01},
+    {7.991685849638264e-01, -6.011069562123827e-01},
+    {7.984303141644207e-01, -6.020872307426096e-01},
+    {7.976908409433912e-01, -6.030665985403482e-01},
+    {7.969501664143711e-01, -6.040450581306880e-01},
+    {7.962082916928030e-01, -6.050226080400867e-01},
+    {7.954652178959369e-01, -6.059992467963715e-01},
+    {7.947209461428283e-01, -6.069749729287426e-01},
+    {7.939754775543372e-01, -6.079497849677736e-01},
+    {7.932288132531257e-01, -6.089236814454155e-01},
+    {7.924809543636567e-01, -6.098966608949977e-01},
+    {7.917319020121923e-01, -6.108687218512306e-01},
+    {7.909816573267918e-01, -6.118398628502083e-01},
+    {7.902302214373100e-01, -6.128100824294097e-01},
+    {7.894775954753960e-01, -6.137793791277018e-01},
+    {7.887237805744907e-01, -6.147477514853411e-01},
+    {7.879687778698258e-01, -6.157151980439765e-01},
+    {7.872125884984216e-01, -6.166817173466510e-01},
+    {7.864552135990858e-01, -6.176473079378039e-01},
+    {7.856966543124112e-01, -6.186119683632733e-01},
+    {7.849369117807745e-01, -6.195756971702979e-01},
+    {7.841759871483340e-01, -6.205384929075197e-01},
+    {7.834138815610288e-01, -6.215003541249855e-01},
+    {7.826505961665757e-01, -6.224612793741500e-01},
+    {7.818861321144691e-01, -6.234212672078768e-01},
+    {7.811204905559779e-01, -6.243803161804418e-01},
+    {7.803536726441443e-01, -6.253384248475345e-01},
+    {7.795856795337824e-01, -6.262955917662607e-01},
+    {7.788165123814760e-01, -6.272518154951441e-01},
+    {7.780461723455767e-01, -6.282070945941292e-01},
+    {7.772746605862029e-01, -6.291614276245828e-01},
+    {7.765019782652373e-01, -6.301148131492967e-01},
+    {7.757281265463254e-01, -6.310672497324895e-01},
+    {7.749531065948739e-01, -6.320187359398091e-01},
+    {7.741769195780490e-01, -6.329692703383341e-01},
+    {7.733995666647743e-01, -6.339188514965771e-01},
+    {7.726210490257291e-01, -6.348674779844861e-01},
+    {7.718413678333470e-01, -6.358151483734467e-01},
+    {7.710605242618138e-01, -6.367618612362842e-01},
+    {7.702785194870657e-01, -6.377076151472665e-01},
+    {7.694953546867879e-01, -6.386524086821050e-01},
+    {7.687110310404124e-01, -6.395962404179578e-01},
+    {7.679255497291163e-01, -6.405391089334316e-01},
+    {7.671389119358204e-01, -6.414810128085832e-01},
+    {7.663511188451869e-01, -6.424219506249224e-01},
+    {7.655621716436182e-01, -6.433619209654138e-01},
+    {7.647720715192542e-01, -6.443009224144792e-01},
+    {7.639808196619715e-01, -6.452389535579994e-01},
+    {7.631884172633813e-01, -6.461760129833163e-01},
+    {7.623948655168271e-01, -6.471120992792355e-01},
+    {7.616001656173835e-01, -6.480472110360278e-01},
+    {7.608043187618542e-01, -6.489813468454321e-01},
+    {7.600073261487703e-01, -6.499145053006563e-01},
+    {7.592091889783881e-01, -6.508466849963809e-01},
+    {7.584099084526877e-01, -6.517778845287601e-01},
+    {7.576094857753715e-01, -6.527081024954242e-01},
+    {7.568079221518612e-01, -6.536373374954818e-01},
+    {7.560052187892974e-01, -6.545655881295217e-01},
+    {7.552013768965365e-01, -6.554928529996153e-01},
+    {7.543963976841503e-01, -6.564191307093185e-01},
+    {7.535902823644226e-01, -6.573444198636738e-01},
+    {7.527830321513488e-01, -6.582687190692122e-01},
+    {7.519746482606328e-01, -6.591920269339562e-01},
+    {7.511651319096865e-01, -6.601143420674205e-01},
+    {7.503544843176265e-01, -6.610356630806152e-01},
+    {7.495427067052737e-01, -6.619559885860479e-01},
+    {7.487298002951505e-01, -6.628753171977246e-01},
+    {7.479157663114792e-01, -6.637936475311532e-01},
+    {7.471006059801801e-01, -6.647109782033448e-01},
+    {7.462843205288703e-01, -6.656273078328160e-01},
+    {7.454669111868606e-01, -6.665426350395909e-01},
+    {7.446483791851549e-01, -6.674569584452033e-01},
+    {7.438287257564475e-01, -6.683702766726985e-01},
+    {7.430079521351217e-01, -6.692825883466360e-01},
+    {7.421860595572477e-01, -6.701938920930909e-01},
+    {7.413630492605809e-01, -6.711041865396560e-01},
+    {7.405389224845600e-01, -6.720134703154446e-01},
+    {7.397136804703048e-01, -6.729217420510915e-01},
+    {7.388873244606151e-01, -6.738290003787560e-01},
+    {7.380598556999681e-01, -6.747352439321236e-01},
+    {7.372312754345167e-01, -6.756404713464076e-01},
+    {7.364015849120877e-01, -6.765446812583521e-01},
+    {7.355707853821803e-01, -6.774478723062332e-01},
+    {7.347388780959635e-01, -6.783500431298615e-01},
+    {7.339058643062745e-01, -6.792511923705841e-01},
+    {7.330717452676171e-01, -6.801513186712865e-01},
+    {7.322365222361595e-01, -6.810504206763948e-01},
+    {7.314001964697324e-01, -6.819484970318775e-01},
+    {7.305627692278276e-01, -6.828455463852481e-01},
+    {7.297242417715950e-01, -6.837415673855661e-01},
+    {7.288846153638420e-01, -6.846365586834405e-01},
+    {7.280438912690308e-01, -6.855305189310302e-01},
+    {7.272020707532766e-01, -6.864234467820476e-01},
+    {7.263591550843460e-01, -6.873153408917591e-01},
+    {7.255151455316546e-01, -6.882061999169885e-01},
+    {7.246700433662657e-01, -6.890960225161182e-01},
+    {7.238238498608879e-01, -6.899848073490914e-01},
+    {7.229765662898732e-01, -6.908725530774144e-01},
+    {7.221281939292153e-01, -6.917592583641577e-01},
+    {7.212787340565479e-01, -6.926449218739597e-01},
+    {7.204281879511419e-01, -6.935295422730269e-01},
+    {7.195765568939045e-01, -6.944131182291369e-01},
+    {7.187238421673769e-01, -6.952956484116404e-01},
+    {7.178700450557317e-01, -6.961771314914630e-01},
+    {7.170151668447722e-01, -6.970575661411068e-01},
+    {7.161592088219294e-01, -6.979369510346534e-01},
+    {7.153021722762606e-01, -6.988152848477649e-01},
+    {7.144440584984474e-01, -6.996925662576865e-01},
+    {7.135848687807936e-01, -7.005687939432483e-01},
+    {7.127246044172235e-01, -7.014439665848672e-01},
+    {7.118632667032795e-01, -7.023180828645491e-01},
+    {7.110008569361208e-01, -7.031911414658905e-01},
+    {7.101373764145209e-01, -7.040631410740809e-01},
+    {7.092728264388657e-01, -7.049340803759049e-01},
+    {7.084072083111520e-01, -7.058039580597435e-01},
+    {7.075405233349850e-01, -7.066727728155766e-01}
 };
 

Modified: freeswitch/trunk/src/switch_channel.c
==============================================================================
--- freeswitch/trunk/src/switch_channel.c	(original)
+++ freeswitch/trunk/src/switch_channel.c	Mon Jan  5 14:51:45 2009
@@ -1198,6 +1198,7 @@
 		}
 	}
 
+	switch_mutex_unlock(channel->profile_mutex);
 }
 
 SWITCH_DECLARE(void) switch_channel_event_set_extended_data(switch_channel_t *channel, switch_event_t *event)
@@ -1205,7 +1206,7 @@
 	switch_event_header_t *hi;
 	int x;
 
-	switch_channel_event_set_basic_data(channel, event);
+	switch_mutex_lock(channel->profile_mutex);
 	
 	if (switch_channel_test_flag(channel, CF_VERBOSE_EVENTS) || 
 		event->event_id == SWITCH_EVENT_CHANNEL_ORIGINATE ||
@@ -1245,8 +1246,10 @@
 
 SWITCH_DECLARE(void) switch_channel_event_set_data(switch_channel_t *channel, switch_event_t *event)
 {
+	switch_mutex_lock(channel->profile_mutex);
 	switch_channel_event_set_basic_data(channel, event);
 	switch_channel_event_set_extended_data(channel, event);
+	switch_mutex_unlock(channel->profile_mutex);
 }
 
 


From brian at freeswitch.org  Mon Jan  5 13:49:29 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 05 Jan 2009 15:49:29 -0600
Subject: [Freeswitch-svn] [commit] r11077 -
	freeswitch/trunk/src/mod/applications/mod_conference
Message-ID: 

Author: brian
Date: Mon Jan  5 15:49:28 2009
New Revision: 11077

Log:
sigh

Modified:
   freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c

Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	Mon Jan  5 15:49:28 2009
@@ -309,6 +309,7 @@
 	switch_ivr_digit_stream_t *digit_stream;
 	switch_speech_handle_t lsh;
 	switch_speech_handle_t *sh;
+	uint32_t verbose_events;
 	struct conference_member *next;
 };
 
@@ -404,17 +405,17 @@
 
 	if (member->conference) {
 		status = conference_add_event_data(member->conference, event);
+	}
 
-		if (member->session) {
-			switch_channel_t *channel = switch_core_session_get_channel(member->session);
-
-			if (member->conference->verbose_events) {
-				switch_channel_event_set_data(channel, event);
-			} else {
-				switch_channel_event_set_basic_data(channel, event);
-			}
-
+	if (member->session) {
+		switch_channel_t *channel = switch_core_session_get_channel(member->session);
+		
+		if (member->verbose_events) {
+			switch_channel_event_set_data(channel, event);
+		} else {
+			switch_channel_event_set_basic_data(channel, event);
 		}
+		
 	}
 
 	switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
@@ -579,6 +580,7 @@
 	member->conference = conference;
 	member->next = conference->members;
 	member->energy_level = conference->energy_level;
+	member->verbose_events = conference->verbose_events;
 	conference->members = member;
 	switch_set_flag(member, MFLAG_INTREE);
 	switch_mutex_unlock(conference->member_mutex);


From anthm at freeswitch.org  Mon Jan  5 16:18:57 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 05 Jan 2009 18:18:57 -0600
Subject: [Freeswitch-svn] [commit] r11078 - in freeswitch/trunk/libs/esl: .
	src
Message-ID: 

Author: anthm
Date: Mon Jan  5 18:18:57 2009
New Revision: 11078

Log:
cleanup and fix disconnect race

Modified:
   freeswitch/trunk/libs/esl/fs_cli.c
   freeswitch/trunk/libs/esl/src/esl.c

Modified: freeswitch/trunk/libs/esl/fs_cli.c
==============================================================================
--- freeswitch/trunk/libs/esl/fs_cli.c	(original)
+++ freeswitch/trunk/libs/esl/fs_cli.c	Mon Jan  5 18:18:57 2009
@@ -618,6 +618,7 @@
 	}
 
 	if (esl_connect(&handle, profile->host, profile->port, profile->pass)) {
+		esl_global_set_default_logger(3);
 		esl_log(ESL_LOG_ERROR, "Error Connecting [%s]\n", handle.err);
 		return -1;
 	}

Modified: freeswitch/trunk/libs/esl/src/esl.c
==============================================================================
--- freeswitch/trunk/libs/esl/src/esl.c	(original)
+++ freeswitch/trunk/libs/esl/src/esl.c	Mon Jan  5 18:18:57 2009
@@ -570,24 +570,32 @@
 
 ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle)
 {
+	esl_mutex_t *mutex = handle->mutex;
+	esl_status_t status = ESL_SUCCESS;
+	
+	if (mutex) {
+		esl_mutex_lock(mutex);
+	}
+
 	esl_event_safe_destroy(&handle->last_event);
 	esl_event_safe_destroy(&handle->last_sr_event);
 	esl_event_safe_destroy(&handle->last_ievent);
 	esl_event_safe_destroy(&handle->info_event);
 
-	if (handle->mutex) {
-		esl_mutex_destroy(&handle->mutex);
-	}
-
 	if (handle->sock != ESL_SOCK_INVALID) {
 		closesocket(handle->sock);
 		handle->sock = ESL_SOCK_INVALID;
-		return ESL_SUCCESS;
 	}
 	
 	handle->connected = 0;
 
-	return ESL_FAIL;
+	if (mutex) {
+		esl_mutex_unlock(mutex);
+		esl_mutex_destroy(&mutex);
+	}
+
+
+	return status;
 }
 
 ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms, esl_event_t **save_event)


From anthm at freeswitch.org  Tue Jan  6 13:07:58 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 06 Jan 2009 15:07:58 -0600
Subject: [Freeswitch-svn] [commit] r11079 - in freeswitch/trunk/src: .
	mod/applications/mod_conference mod/endpoints/mod_sofia
Message-ID: 

Author: anthm
Date: Tue Jan  6 15:07:58 2009
New Revision: 11079

Log:
fix some media issues (shoud go into the 1.0 branch)

Modified:
   freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
   freeswitch/trunk/src/switch_core_io.c
   freeswitch/trunk/src/switch_ivr.c
   freeswitch/trunk/src/switch_ivr_async.c

Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	Tue Jan  6 15:07:58 2009
@@ -1552,6 +1552,13 @@
 	   and mux it with any audio from other channels. */
 
 	while (switch_test_flag(member, MFLAG_RUNNING) && switch_channel_ready(channel)) {
+
+		if (switch_channel_test_flag(channel, CF_SERVICE)) {
+			switch_yield(100000);
+			continue;
+		}
+
+
 		/* Read a frame. */
 		status = switch_core_session_read_frame(member->session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
 
@@ -2037,9 +2044,18 @@
 			}
 			switch_clear_flag_locked(member, MFLAG_FLUSH_BUFFER);
 		}
-
+		
 		switch_mutex_unlock(member->flag_mutex);
 
+
+		if (switch_core_session_private_event_count(member->session)) {
+			switch_channel_set_flag(channel, CF_SERVICE);
+			switch_ivr_parse_all_events(member->session);
+			switch_channel_clear_flag(channel, CF_SERVICE);
+			switch_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
+			switch_core_session_set_read_codec(member->session, &member->read_codec);
+		}
+		
 		if (use_timer) {
 			switch_core_timer_next(&timer);
 		} else {

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	Tue Jan  6 15:07:58 2009
@@ -3562,6 +3562,22 @@
 
 				/* print debug info */
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "INFO DTMF(%c)\n", dtmf.digit);
+				
+				if (switch_channel_test_flag(channel, CF_PROXY_MODE)) {
+					const char *uuid;
+					switch_core_session_t *session_b;
+					
+					if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (session_b = switch_core_session_locate(uuid))) {
+						while (switch_channel_has_dtmf(channel)) {
+							switch_dtmf_t idtmf = { 0, 0 };
+							if (switch_channel_dequeue_dtmf(channel, &idtmf) == SWITCH_STATUS_SUCCESS) {
+								switch_core_session_send_dtmf(session_b, &idtmf);
+							}
+						}
+
+						switch_core_session_rwunlock(session_b);
+					}
+				}
 
 				/* Send 200 OK response */
 				nua_respond(nh, SIP_200_OK, NUTAG_WITH_THIS(nua), TAG_END());

Modified: freeswitch/trunk/src/switch_core_io.c
==============================================================================
--- freeswitch/trunk/src/switch_core_io.c	(original)
+++ freeswitch/trunk/src/switch_core_io.c	Tue Jan  6 15:07:58 2009
@@ -539,10 +539,6 @@
 	switch_mutex_unlock(session->read_codec->mutex);
 	switch_mutex_unlock(session->codec_read_mutex);
 
-	if (switch_core_session_private_event_count(session)) {
-		switch_ivr_parse_all_events(session);
-	}
-
 	return status;
 }
 

Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c	(original)
+++ freeswitch/trunk/src/switch_ivr.c	Tue Jan  6 15:07:58 2009
@@ -54,9 +54,10 @@
 	int sval = 0;
 	const char *var;
 	
-	if ((var = switch_channel_get_variable(channel, SWITCH_SEND_SILENCE_WHEN_IDLE_VARIABLE)) && (sval = atoi(var))) {
+	if (switch_channel_media_ready(channel) && (var = switch_channel_get_variable(channel, SWITCH_SEND_SILENCE_WHEN_IDLE_VARIABLE)) && (sval = atoi(var))) {
+		switch_channel_pre_answer(channel);
 		switch_core_session_get_read_impl(session, &imp);
-	
+		
 		if (switch_core_codec_init(&codec,
 								   "L16",
 								   NULL,

Modified: freeswitch/trunk/src/switch_ivr_async.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_async.c	(original)
+++ freeswitch/trunk/src/switch_ivr_async.c	Tue Jan  6 15:07:58 2009
@@ -1445,6 +1445,44 @@
 
 #define SWITCH_META_VAR_KEY "__dtmf_meta"
 
+typedef struct {
+	switch_core_session_t *session;
+	const char *app;
+	int flags;
+} bch_t;
+
+static void *SWITCH_THREAD_FUNC bcast_thread(switch_thread_t *thread, void *obj)
+{
+	bch_t *bch = (bch_t *) obj;
+
+	switch_ivr_broadcast(switch_core_session_get_uuid(bch->session), bch->app, bch->flags);
+
+	return NULL;
+
+}
+static void broadcast_in_thread(switch_core_session_t *session, const char *app, int flags)
+{
+	switch_thread_t *thread;
+	switch_threadattr_t *thd_attr = NULL;
+	switch_memory_pool_t *pool;
+	bch_t *bch;
+	
+	switch_assert(session);
+
+	pool = switch_core_session_get_pool(session);
+	
+	bch = switch_core_session_alloc(session, sizeof(*bch));
+	bch->session = session;
+	bch->app = app;
+	bch->flags = flags;
+	
+	
+	switch_threadattr_create(&thd_attr, pool);
+	switch_threadattr_detach_set(thd_attr, 1);
+	switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
+	switch_thread_create(&thread, thd_attr, bcast_thread, bch, pool);
+}
+
 static switch_status_t meta_on_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf, switch_dtmf_direction_t direction)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
@@ -1497,7 +1535,7 @@
 
 			if (ok && md->sr[direction].map[dval].app) {
 				uint32_t flags = md->sr[direction].map[dval].flags;
-
+				
 				if ((md->sr[direction].map[dval].bind_flags & SBF_EXEC_OPPOSITE)) {
 					if (direction == SWITCH_DTMF_SEND) {
 						flags |= SMF_ECHO_ALEG;
@@ -1520,7 +1558,12 @@
 
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Processing meta digit '%c' [%s]\n",
 								  switch_channel_get_name(channel), dtmf->digit, md->sr[direction].map[dval].app);
-				switch_ivr_broadcast(switch_core_session_get_uuid(session), md->sr[direction].map[dval].app, flags);
+
+				if (switch_channel_test_flag(channel, CF_PROXY_MODE)) {
+					broadcast_in_thread(session, md->sr[direction].map[dval].app, flags | SMF_REBRIDGE);
+				} else {
+					switch_ivr_broadcast(switch_core_session_get_uuid(session), md->sr[direction].map[dval].app, flags);
+				}
 
 				if ((md->sr[direction].map[dval].bind_flags & SBF_ONCE)) {
 					memset(&md->sr[direction].map[dval], 0, sizeof(md->sr[direction].map[dval]));
@@ -1589,7 +1632,7 @@
 			md->sr[SWITCH_DTMF_RECV].map[key].app = switch_core_session_strdup(session, app);
 			md->sr[SWITCH_DTMF_RECV].map[key].flags |= SMF_HOLD_BLEG;
 			md->sr[SWITCH_DTMF_RECV].map[key].bind_flags = bind_flags;
-
+			
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Bound A-Leg: %d %s\n", key, app);
 		}
 		if ((bind_flags & SBF_DIAL_BLEG)) {
@@ -2157,6 +2200,10 @@
 		other_session = NULL;
 	}
 
+	if (switch_stristr("record", app)) {
+		nomedia = 0;
+	}
+
 	if ((flags & SMF_ECHO_ALEG)) {
 		if (switch_event_create(&event, SWITCH_EVENT_COMMAND) == SWITCH_STATUS_SUCCESS) {
 			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-command", "execute");


From anthm at freeswitch.org  Tue Jan  6 13:22:01 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 06 Jan 2009 15:22:01 -0600
Subject: [Freeswitch-svn] [commit] r11080 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Tue Jan  6 15:22:01 2009
New Revision: 11080

Log:
fix some media issues (shoud go into the 1.0 branch)

Modified:
   freeswitch/trunk/src/switch_ivr.c

Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c	(original)
+++ freeswitch/trunk/src/switch_ivr.c	Tue Jan  6 15:22:01 2009
@@ -54,8 +54,9 @@
 	int sval = 0;
 	const char *var;
 	
-	if (switch_channel_media_ready(channel) && (var = switch_channel_get_variable(channel, SWITCH_SEND_SILENCE_WHEN_IDLE_VARIABLE)) && (sval = atoi(var))) {
-		switch_channel_pre_answer(channel);
+	if (switch_channel_media_ready(channel) && 
+		(var = switch_channel_get_variable(channel, SWITCH_SEND_SILENCE_WHEN_IDLE_VARIABLE)) && 
+		(sval = atoi(var)) && sval >= 1000) {
 		switch_core_session_get_read_impl(session, &imp);
 		
 		if (switch_core_codec_init(&codec,


From anthm at freeswitch.org  Tue Jan  6 14:39:48 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 06 Jan 2009 16:39:48 -0600
Subject: [Freeswitch-svn] [commit] r11081 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Tue Jan  6 16:39:48 2009
New Revision: 11081

Log:
fix some media issues (shoud go into the 1.0 branch)

Modified:
   freeswitch/trunk/src/switch_ivr.c

Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c	(original)
+++ freeswitch/trunk/src/switch_ivr.c	Tue Jan  6 16:39:48 2009
@@ -41,6 +41,7 @@
 SWITCH_DECLARE(switch_status_t) switch_ivr_sleep(switch_core_session_t *session, uint32_t ms, switch_bool_t sync, switch_input_args_t *args)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
+	int media_ready = 0;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
 	switch_time_t start = switch_timestamp_now(), now, done = switch_timestamp_now() + (ms * 1000);
 	switch_frame_t *read_frame, cng_frame = { 0 };
@@ -53,10 +54,18 @@
 	switch_codec_t codec = { 0 };
 	int sval = 0;
 	const char *var;
+
+	if (!switch_channel_test_flag(channel, CF_PROXY_MODE) && !switch_channel_media_ready(channel) && !switch_channel_test_flag(channel, CF_SERVICE)) {
+		if ((status = switch_channel_pre_answer(channel)) != SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot establish media.\n");
+			return SWITCH_STATUS_FALSE;
+		}
+	}
+
+	media_ready = (switch_channel_media_ready(channel) && !switch_channel_test_flag(channel, CF_SERVICE));
 	
-	if (switch_channel_media_ready(channel) && 
-		(var = switch_channel_get_variable(channel, SWITCH_SEND_SILENCE_WHEN_IDLE_VARIABLE)) && 
-		(sval = atoi(var)) && sval >= 1000) {
+
+	if (media_ready && (var = switch_channel_get_variable(channel, SWITCH_SEND_SILENCE_WHEN_IDLE_VARIABLE)) && (sval = atoi(var)) && sval >= 100) {
 		switch_core_session_get_read_impl(session, &imp);
 		
 		if (switch_core_codec_init(&codec,
@@ -83,12 +92,6 @@
 		write_frame.datalen = imp.decoded_bytes_per_packet;
 		write_frame.samples = write_frame.datalen / sizeof(int16_t);
 
-		if (!switch_channel_media_ready(channel)) {
-			if ((status = switch_channel_pre_answer(channel)) != SWITCH_STATUS_SUCCESS) {
-				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot establish media.\n");
-				return SWITCH_STATUS_FALSE;
-			}
-		}
 	}
 
 	cng_frame.data = data;
@@ -96,7 +99,7 @@
 	cng_frame.buflen = 2;
 	switch_set_flag((&cng_frame), SFF_CNG);
 
-	if (sync && !switch_channel_test_flag(channel, CF_PROXY_MODE)) {
+	if (sync && media_ready) {
 		switch_channel_audio_sync(channel);
 	}
 	
@@ -163,19 +166,15 @@
 			}
 		}
 
-		if (switch_channel_test_flag(channel, CF_PROXY_MODE)) {
+		if (!media_ready) {
 			switch_cond_next();
 			continue;
 		}
 
-		if (switch_channel_test_flag(channel, CF_SERVICE) ||
-			(!switch_channel_test_flag(channel, CF_ANSWERED) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA))) {
-			switch_cond_next();
-		} else {
-			status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
-			if (!SWITCH_READ_ACCEPTABLE(status)) {
-				break;
-			}
+		status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
+
+		if (!SWITCH_READ_ACCEPTABLE(status)) {
+			break;
 		}
 
 		if (sval) {
@@ -185,7 +184,7 @@
 			switch_core_session_write_frame(session, &cng_frame, SWITCH_IO_FLAG_NONE, 0);
 		}
 	}
-
+	
 	if (write_frame.codec) {
 		switch_core_codec_destroy(&codec);
 	}


From anthm at freeswitch.org  Tue Jan  6 15:26:49 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 06 Jan 2009 17:26:49 -0600
Subject: [Freeswitch-svn] [commit] r11082 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Tue Jan  6 17:26:49 2009
New Revision: 11082

Log:
ditto

Modified:
   freeswitch/trunk/src/switch_apr.c
   freeswitch/trunk/src/switch_channel.c
   freeswitch/trunk/src/switch_ivr.c
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/switch_apr.c
==============================================================================
--- freeswitch/trunk/src/switch_apr.c	(original)
+++ freeswitch/trunk/src/switch_apr.c	Tue Jan  6 17:26:49 2009
@@ -761,9 +761,9 @@
 
 SWITCH_DECLARE(switch_status_t) switch_socket_recvfrom(switch_sockaddr_t *from, switch_socket_t *sock, int32_t flags, char *buf, size_t *len)
 {
-	apr_status_t r;
+	apr_status_t r = SWITCH_STATUS_GENERR;
 
-	if ((r = apr_socket_recvfrom(from, sock, flags, buf, len)) == APR_SUCCESS) {
+	if (from && sock && (r = apr_socket_recvfrom(from, sock, flags, buf, len)) == APR_SUCCESS) {
 		from->port = ntohs(from->sa.sin.sin_port);
 		/* from->ipaddr_ptr = &(from->sa.sin.sin_addr);
 		 * from->ipaddr_ptr = inet_ntoa(from->sa.sin.sin_addr);

Modified: freeswitch/trunk/src/switch_channel.c
==============================================================================
--- freeswitch/trunk/src/switch_channel.c	(original)
+++ freeswitch/trunk/src/switch_channel.c	Tue Jan  6 17:26:49 2009
@@ -1647,8 +1647,8 @@
 
 	msg.message_id = SWITCH_MESSAGE_INDICATE_PROGRESS;
 	msg.from = channel->name;
-	status = switch_core_session_receive_message(channel->session, &msg);
-
+	status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
+	
 	if (status == SWITCH_STATUS_SUCCESS) {
 		switch_channel_perform_mark_pre_answered(channel, file, func, line);
 	} else {
@@ -1679,7 +1679,7 @@
 
 	msg.message_id = SWITCH_MESSAGE_INDICATE_RINGING;
 	msg.from = channel->name;
-	status = switch_core_session_receive_message(channel->session, &msg);
+	status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
 
 	if (status == SWITCH_STATUS_SUCCESS) {
 		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_NOTICE, "Ring Ready %s!\n", channel->name);
@@ -1784,7 +1784,7 @@
 
 	msg.message_id = SWITCH_MESSAGE_INDICATE_ANSWER;
 	msg.from = channel->name;
-	status = switch_core_session_receive_message(channel->session, &msg);
+	status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
 
 	if (status == SWITCH_STATUS_SUCCESS) {
 		switch_channel_perform_mark_answered(channel, file, func, line);

Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c	(original)
+++ freeswitch/trunk/src/switch_ivr.c	Tue Jan  6 17:26:49 2009
@@ -64,8 +64,7 @@
 
 	media_ready = (switch_channel_media_ready(channel) && !switch_channel_test_flag(channel, CF_SERVICE));
 	
-
-	if (media_ready && (var = switch_channel_get_variable(channel, SWITCH_SEND_SILENCE_WHEN_IDLE_VARIABLE)) && (sval = atoi(var)) && sval >= 100) {
+	if (ms > 100 && media_ready && (var = switch_channel_get_variable(channel, SWITCH_SEND_SILENCE_WHEN_IDLE_VARIABLE)) && (sval = atoi(var))) {
 		switch_core_session_get_read_impl(session, &imp);
 		
 		if (switch_core_codec_init(&codec,
@@ -94,6 +93,10 @@
 
 	}
 
+	if (!write_frame.datalen) {
+		sval = 0;
+	}
+
 	cng_frame.data = data;
 	cng_frame.datalen = 2;
 	cng_frame.buflen = 2;
@@ -177,7 +180,7 @@
 			break;
 		}
 
-		if (sval) {
+		if (sval && write_frame.datalen) {
 			switch_generate_sln_silence((int16_t *) write_frame.data, write_frame.samples, sval);
 			switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0);
 		} else {

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Tue Jan  6 17:26:49 2009
@@ -41,7 +41,11 @@
 
 	if (!switch_channel_test_flag(channel, CF_PROXY_MODE)) {
 		while (switch_channel_get_state(channel) == CS_CONSUME_MEDIA && !switch_channel_test_flag(channel, CF_TAGGED)) {
-			switch_ivr_sleep(session, 10, SWITCH_FALSE, NULL);
+			if (!switch_channel_media_ready(channel)) {
+				switch_yield(10000);
+			} else {
+				switch_ivr_sleep(session, 10, SWITCH_FALSE, NULL);
+			}
 		}
 	}
 


From anthm at freeswitch.org  Tue Jan  6 15:40:28 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 06 Jan 2009 17:40:28 -0600
Subject: [Freeswitch-svn] [commit] r11083 - freeswitch/trunk/libs/esl/src
Message-ID: 

Author: anthm
Date: Tue Jan  6 17:40:28 2009
New Revision: 11083

Log:
add more sanity checks

Modified:
   freeswitch/trunk/libs/esl/src/esl.c

Modified: freeswitch/trunk/libs/esl/src/esl.c
==============================================================================
--- freeswitch/trunk/libs/esl/src/esl.c	(original)
+++ freeswitch/trunk/libs/esl/src/esl.c	Tue Jan  6 17:40:28 2009
@@ -368,6 +368,10 @@
 {
 	char *txt;
 
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
 	esl_event_serialize(handle->last_ievent, &txt, ESL_TRUE);
 
 	esl_log(ESL_LOG_DEBUG, "SEND EVENT\n%s\n", txt);
@@ -388,6 +392,10 @@
 	char arg_buf[512] = "";
 	char send_buf[1292] = "";
 	
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
 	if (uuid) {
 		snprintf(cmd_buf, sizeof(cmd_buf), "sendmsg %s", uuid);
 	}
@@ -571,7 +579,7 @@
 ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle)
 {
 	esl_mutex_t *mutex = handle->mutex;
-	esl_status_t status = ESL_SUCCESS;
+	esl_status_t status = ESL_FAIL;
 	
 	if (mutex) {
 		esl_mutex_lock(mutex);
@@ -585,6 +593,7 @@
 	if (handle->sock != ESL_SOCK_INVALID) {
 		closesocket(handle->sock);
 		handle->sock = ESL_SOCK_INVALID;
+		status = ESL_SUCCESS;
 	}
 	
 	handle->connected = 0;
@@ -605,6 +614,10 @@
 	int max, activity;
 	esl_status_t status = ESL_SUCCESS;
 
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
 	tv.tv_usec = ms * 1000;
 
 	esl_mutex_lock(handle->mutex);
@@ -660,6 +673,11 @@
 	esl_ssize_t len;
 	int zc = 0;
 	
+
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
 	esl_mutex_lock(handle->mutex);
 
 	esl_event_safe_destroy(&handle->last_event);
@@ -858,6 +876,10 @@
 {
 	const char *e = cmd + strlen(cmd) -1;
 	
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
 	esl_log(ESL_LOG_DEBUG, "SEND\n%s\n", cmd);
 	
 	if (send(handle->sock, cmd, strlen(cmd), 0) != (int)strlen(cmd)) {
@@ -882,6 +904,10 @@
 	const char *hval;
 	esl_status_t status;
 	
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
 	esl_mutex_lock(handle->mutex);
 
 	if ((status = esl_send(handle, cmd))) {


From anthm at freeswitch.org  Tue Jan  6 16:43:26 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 06 Jan 2009 18:43:26 -0600
Subject: [Freeswitch-svn] [commit] r11084 -
	freeswitch/trunk/src/mod/languages/mod_spidermonkey
Message-ID: 

Author: anthm
Date: Tue Jan  6 18:43:25 2009
New Revision: 11084

Log:
load global symbols in spidemonkey and change to new dso code (add to 1.0 branch)

Modified:
   freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c

Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c	(original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c	Tue Jan  6 18:43:25 2009
@@ -42,7 +42,7 @@
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_spidermonkey_load);
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_spidermonkey_shutdown);
-SWITCH_MODULE_DEFINITION(mod_spidermonkey, mod_spidermonkey_load, mod_spidermonkey_shutdown, NULL);
+SWITCH_MODULE_DEFINITION_EX(mod_spidermonkey, mod_spidermonkey_load, mod_spidermonkey_shutdown, NULL, SMODF_GLOBAL_SYMBOLS);
 
 #define METHOD_SANITY_CHECK()  if (!jss || !jss->session) {				\
 		eval_some_js("~throw new Error(\"You must call the session.originate method before calling this method!\");", cx, obj, rval); \
@@ -882,50 +882,54 @@
 static switch_status_t sm_load_file(char *filename)
 {
 	sm_loadable_module_t *module = NULL;
-	switch_dso_handle_t *dso = NULL;
+	switch_dso_lib_t dso = NULL;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
-	switch_dso_handle_sym_t function_handle = NULL;
+	switch_loadable_module_function_table_t *function_handle = NULL;
 	spidermonkey_init_t spidermonkey_init = NULL;
 	const sm_module_interface_t *module_interface = NULL, *mp;
-
-	int loading = 1;
+	char *derr = NULL;
 	const char *err = NULL;
-	char derr[512] = "";
 
 	switch_assert(filename != NULL);
 
-	status = switch_dso_load(&dso, filename, module_manager.pool);
+	if (!(dso = switch_dso_open(filename, 1, &derr))) {
+		status = SWITCH_STATUS_FALSE;
+	}
 
-	while (loading) {
-		if (status != SWITCH_STATUS_SUCCESS) {
-			switch_dso_error(dso, derr, sizeof(derr));
-			err = derr;
-			break;
-		}
+	if (derr || status != SWITCH_STATUS_SUCCESS) {
+		err = derr;
+		goto err;
+	}
 
-		status = switch_dso_sym(&function_handle, dso, "spidermonkey_init");
-		spidermonkey_init = (spidermonkey_init_t) (intptr_t) function_handle;
+	function_handle = switch_dso_data_sym(dso, "spidermonkey_init", &derr);
 
-		if (spidermonkey_init == NULL) {
-			err = "Cannot Load";
-			break;
-		}
+	if (!function_handle || derr) {
+		status = SWITCH_STATUS_FALSE;
+		err = derr;
+		goto err;
+	}
 
-		if (spidermonkey_init(&module_interface) != SWITCH_STATUS_SUCCESS) {
-			err = "Module load routine returned an error";
-			break;
-		}
+	spidermonkey_init = (spidermonkey_init_t) (intptr_t) function_handle;
 
-		if (!(module = (sm_loadable_module_t *) switch_core_permanent_alloc(sizeof(*module)))) {
-			err = "Could not allocate memory\n";
-			break;
-		}
+	if (spidermonkey_init == NULL) {
+		err = "Cannot Load";
+		goto err;
+	}
+
+	if (spidermonkey_init(&module_interface) != SWITCH_STATUS_SUCCESS) {
+		err = "Module load routine returned an error";
+		goto err;
+	}
 
-		loading = 0;
+	if (!(module = (sm_loadable_module_t *) switch_core_permanent_alloc(sizeof(*module)))) {
+		err = "Could not allocate memory\n";
 	}
 
+ err:
+
 	if (err) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Loading module %s\n**%s**\n", filename, err);
+		switch_safe_free(derr);
 		return SWITCH_STATUS_GENERR;
 	}
 


From mikej at freeswitch.org  Wed Jan  7 06:25:08 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 07 Jan 2009 08:25:08 -0600
Subject: [Freeswitch-svn] [commit] r11085 - in freeswitch/trunk/src: .
	include mod/languages/mod_spidermonkey
Message-ID: 

Author: mikej
Date: Wed Jan  7 08:25:08 2009
New Revision: 11085

Log:
fix windows build breakage from svn rev 11084

Modified:
   freeswitch/trunk/src/include/switch_dso.h
   freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
   freeswitch/trunk/src/switch_dso.c

Modified: freeswitch/trunk/src/include/switch_dso.h
==============================================================================
--- freeswitch/trunk/src/include/switch_dso.h	(original)
+++ freeswitch/trunk/src/include/switch_dso.h	Wed Jan  7 08:25:08 2009
@@ -30,10 +30,10 @@
 
 typedef void * switch_dso_data_t;
 
-void switch_dso_destroy(switch_dso_lib_t *lib);
-switch_dso_lib_t switch_dso_open(const char *path, int global, char **err);
-switch_dso_func_t switch_dso_func_sym(switch_dso_lib_t lib, const char *sym, char **err);
-void *switch_dso_data_sym(switch_dso_lib_t lib, const char *sym, char **err);
+SWITCH_DECLARE(void) switch_dso_destroy(switch_dso_lib_t *lib);
+SWITCH_DECLARE(switch_dso_lib_t) switch_dso_open(const char *path, int global, char **err);
+SWITCH_DECLARE(switch_dso_func_t) switch_dso_func_sym(switch_dso_lib_t lib, const char *sym, char **err);
+SWITCH_DECLARE(void *) switch_dso_data_sym(switch_dso_lib_t lib, const char *sym, char **err);
 
 
 #endif

Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c	(original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c	Wed Jan  7 08:25:08 2009
@@ -927,8 +927,8 @@
 
  err:
 
-	if (err) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Loading module %s\n**%s**\n", filename, err);
+	if (err || !module) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Loading module %s\n**%s**\n", filename, switch_str_nil(err));
 		switch_safe_free(derr);
 		return SWITCH_STATUS_GENERR;
 	}

Modified: freeswitch/trunk/src/switch_dso.c
==============================================================================
--- freeswitch/trunk/src/switch_dso.c	(original)
+++ freeswitch/trunk/src/switch_dso.c	Wed Jan  7 08:25:08 2009
@@ -24,14 +24,14 @@
 
 #ifdef WIN32
 
-void switch_dso_destroy(switch_dso_lib_t *lib) {
+SWITCH_DECLARE(void) switch_dso_destroy(switch_dso_lib_t *lib) {
 	if (lib && *lib) {
 		FreeLibrary(*lib);
 		*lib = NULL;
 	}
 }
 
-switch_dso_lib_t switch_dso_open(const char *path, int global, char **err) {
+SWITCH_DECLARE(switch_dso_lib_t) switch_dso_open(const char *path, int global, char **err) {
     HINSTANCE lib;
 	
 	lib = LoadLibraryEx(path, NULL, 0);
@@ -48,7 +48,7 @@
 	return lib;
 }
 
-switch_dso_func_t switch_dso_func_sym(switch_dso_lib_t lib, const char *sym, char **err) {
+SWITCH_DECLARE(switch_dso_func_t) switch_dso_func_sym(switch_dso_lib_t lib, const char *sym, char **err) {
 	FARPROC func = GetProcAddress(lib, sym);
 	if (!func) {
 		DWORD error = GetLastError();
@@ -57,7 +57,7 @@
 	return (switch_dso_func_t)func;
 }
 
-void *switch_dso_data_sym(switch_dso_lib_t lib, const char *sym, char **err) {
+SWITCH_DECLARE(void *) switch_dso_data_sym(switch_dso_lib_t lib, const char *sym, char **err) {
 	FARPROC addr = GetProcAddress(lib, sym);
 	if (!addr) {
 		DWORD error = GetLastError();


From gmaruzz at freeswitch.org  Wed Jan  7 08:17:01 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 07 Jan 2009 10:17:01 -0600
Subject: [Freeswitch-svn] [commit] r11086 - in freeswitch/branches/gmaruzz:
	. build conf conf/autoload_configs conf/dialplan
	conf/directory conf/directory/default conf/sip_profiles
	debian docs libs/esl libs/esl/getopt libs/esl/src
	libs/esl/src/include libs/libg722_1/src
	libs/portaudio/src/os/win libs/sofia-sip/libsofia-sip-ua/su
	libs/win32 libs/win32/flite libs/win32/pocketsphinx
	libs/win32/sphinxbase scripts src src/include
	src/mod/applications/mod_commands
	src/mod/applications/mod_conference src/mod/applications/mod_dptools
	src/mod/applications/mod_easyroute src/mod/applications/mod_limit
	src/mod/applications/mod_voicemail src/mod/endpoints/mod_iax
	src/mod/endpoints/mod_sofia src/mod/event_handlers/mod_erlang_event
	src/mod/event_handlers/mod_event_multicast
	src/mod/event_handlers/mod_event_socket
	src/mod/formats/mod_shout src/mod/languages/mod_managed
	src/mod/languages/mod_managed/managed
	src/mod/languages/mod_spidermonkey
	src/mod/xml_int/mod_xml_rpc support-d
Message-ID: 

Author: gmaruzz
Date: Wed Jan  7 10:17:00 2009
New Revision: 11086

Log:
Merge of trunk revisions 10915:11043 into gmaruzz branch

Added:
   freeswitch/branches/gmaruzz/Freeswitch.2008.express.sln
      - copied unchanged from r11085, /freeswitch/trunk/Freeswitch.2008.express.sln
   freeswitch/branches/gmaruzz/conf/autoload_configs/easyroute.conf.xml
      - copied unchanged from r11085, /freeswitch/trunk/conf/autoload_configs/easyroute.conf.xml
   freeswitch/branches/gmaruzz/libs/esl/fs_cli.conf
      - copied unchanged from r11085, /freeswitch/trunk/libs/esl/fs_cli.conf
   freeswitch/branches/gmaruzz/libs/esl/getopt/
      - copied from r11085, /freeswitch/trunk/libs/esl/getopt/
   freeswitch/branches/gmaruzz/libs/esl/getopt/getopt.h
      - copied unchanged from r11085, /freeswitch/trunk/libs/esl/getopt/getopt.h
   freeswitch/branches/gmaruzz/libs/esl/getopt/getopt_long.c
      - copied unchanged from r11085, /freeswitch/trunk/libs/esl/getopt/getopt_long.c
   freeswitch/branches/gmaruzz/scripts/easyroute_mysql.sql
      - copied unchanged from r11085, /freeswitch/trunk/scripts/easyroute_mysql.sql
   freeswitch/branches/gmaruzz/scripts/m4a-to-wav.sh
      - copied unchanged from r11085, /freeswitch/trunk/scripts/m4a-to-wav.sh
   freeswitch/branches/gmaruzz/src/mod/applications/mod_easyroute/
      - copied from r11085, /freeswitch/trunk/src/mod/applications/mod_easyroute/
   freeswitch/branches/gmaruzz/src/mod/applications/mod_easyroute/Makefile
      - copied unchanged from r11085, /freeswitch/trunk/src/mod/applications/mod_easyroute/Makefile
   freeswitch/branches/gmaruzz/src/mod/applications/mod_easyroute/mod_easyroute.c
      - copied unchanged from r11085, /freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c
Modified:
   freeswitch/branches/gmaruzz/Freeswitch.2008.sln
   freeswitch/branches/gmaruzz/Makefile.am
   freeswitch/branches/gmaruzz/build/modules.conf.in
   freeswitch/branches/gmaruzz/build/sounds_version.txt
   freeswitch/branches/gmaruzz/conf/autoload_configs/conference.conf.xml
   freeswitch/branches/gmaruzz/conf/dialplan/default.xml
   freeswitch/branches/gmaruzz/conf/directory/default.xml
   freeswitch/branches/gmaruzz/conf/directory/default/brian.xml
   freeswitch/branches/gmaruzz/conf/sip_profiles/internal-ipv6.xml
   freeswitch/branches/gmaruzz/conf/vars.xml
   freeswitch/branches/gmaruzz/debian/changelog
   freeswitch/branches/gmaruzz/debian/freeswitch.install
   freeswitch/branches/gmaruzz/docs/ChangeLog
   freeswitch/branches/gmaruzz/docs/Doxygen.conf
   freeswitch/branches/gmaruzz/libs/esl/Makefile
   freeswitch/branches/gmaruzz/libs/esl/fs_cli.2008.vcproj
   freeswitch/branches/gmaruzz/libs/esl/fs_cli.c
   freeswitch/branches/gmaruzz/libs/esl/src/esl.2008.vcproj
   freeswitch/branches/gmaruzz/libs/esl/src/esl.c
   freeswitch/branches/gmaruzz/libs/esl/src/esl_event.c
   freeswitch/branches/gmaruzz/libs/esl/src/include/esl.h
   freeswitch/branches/gmaruzz/libs/esl/src/include/esl_config.h
   freeswitch/branches/gmaruzz/libs/esl/testclient.c
   freeswitch/branches/gmaruzz/libs/esl/testserver.c
   freeswitch/branches/gmaruzz/libs/libg722_1/src/dct4.h
   freeswitch/branches/gmaruzz/libs/portaudio/src/os/win/pa_win_wdmks_utils.c
   freeswitch/branches/gmaruzz/libs/portaudio/src/os/win/pa_x86_plain_converters.c
   freeswitch/branches/gmaruzz/libs/sofia-sip/libsofia-sip-ua/su/su_kqueue_port.c
   freeswitch/branches/gmaruzz/libs/win32/Dowload 32khz Sounds.2008.vcproj
   freeswitch/branches/gmaruzz/libs/win32/Download 16khz Sounds.2008.vcproj
   freeswitch/branches/gmaruzz/libs/win32/Download 8khz Sounds.2008.vcproj
   freeswitch/branches/gmaruzz/libs/win32/flite/flite.2008.vcproj
   freeswitch/branches/gmaruzz/libs/win32/pocketsphinx/pocketsphinx.2008.vcproj
   freeswitch/branches/gmaruzz/libs/win32/sphinxbase/sphinxbase.2008.vcproj
   freeswitch/branches/gmaruzz/src/include/switch_channel.h
   freeswitch/branches/gmaruzz/src/include/switch_dso.h
   freeswitch/branches/gmaruzz/src/include/switch_ivr.h
   freeswitch/branches/gmaruzz/src/include/switch_rtp.h
   freeswitch/branches/gmaruzz/src/include/switch_types.h
   freeswitch/branches/gmaruzz/src/include/switch_xml.h
   freeswitch/branches/gmaruzz/src/mod/applications/mod_commands/mod_commands.c
   freeswitch/branches/gmaruzz/src/mod/applications/mod_conference/mod_conference.c
   freeswitch/branches/gmaruzz/src/mod/applications/mod_dptools/mod_dptools.c
   freeswitch/branches/gmaruzz/src/mod/applications/mod_limit/mod_limit.c
   freeswitch/branches/gmaruzz/src/mod/applications/mod_voicemail/mod_voicemail.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_iax/mod_iax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/mod_sofia.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/mod_sofia.h
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/sofia.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/sofia_glue.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/sofia_reg.c
   freeswitch/branches/gmaruzz/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
   freeswitch/branches/gmaruzz/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c
   freeswitch/branches/gmaruzz/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
   freeswitch/branches/gmaruzz/src/mod/formats/mod_shout/Makefile
   freeswitch/branches/gmaruzz/src/mod/languages/mod_managed/freeswitch_wrap.cxx
   freeswitch/branches/gmaruzz/src/mod/languages/mod_managed/managed/swig.cs
   freeswitch/branches/gmaruzz/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
   freeswitch/branches/gmaruzz/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
   freeswitch/branches/gmaruzz/src/switch_apr.c
   freeswitch/branches/gmaruzz/src/switch_channel.c
   freeswitch/branches/gmaruzz/src/switch_console.c
   freeswitch/branches/gmaruzz/src/switch_core.c
   freeswitch/branches/gmaruzz/src/switch_core_io.c
   freeswitch/branches/gmaruzz/src/switch_core_session.c
   freeswitch/branches/gmaruzz/src/switch_core_state_machine.c
   freeswitch/branches/gmaruzz/src/switch_dso.c
   freeswitch/branches/gmaruzz/src/switch_event.c
   freeswitch/branches/gmaruzz/src/switch_ivr.c
   freeswitch/branches/gmaruzz/src/switch_ivr_async.c
   freeswitch/branches/gmaruzz/src/switch_ivr_bridge.c
   freeswitch/branches/gmaruzz/src/switch_ivr_originate.c
   freeswitch/branches/gmaruzz/src/switch_log.c
   freeswitch/branches/gmaruzz/src/switch_rtp.c
   freeswitch/branches/gmaruzz/src/switch_xml.c
   freeswitch/branches/gmaruzz/support-d/.screenrc

Modified: freeswitch/branches/gmaruzz/Freeswitch.2008.sln
==============================================================================
--- freeswitch/branches/gmaruzz/Freeswitch.2008.sln	(original)
+++ freeswitch/branches/gmaruzz/Freeswitch.2008.sln	Wed Jan  7 10:17:00 2009
@@ -831,6 +831,10 @@
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aprtoolkit", "libs\openmrcp\aprtoolkit\aprtoolkit.2008.vcproj", "{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+		{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fsv", "src\mod\applications\mod_fsv\mod_fsv.2008.vcproj", "{E3246D17-E29B-4AB5-962A-C69B0C5837BB}"
 	ProjectSection(ProjectDependencies) = postProject
@@ -1726,6 +1730,7 @@
 		{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.Build.0 = Debug|Any CPU
 		{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.ActiveCfg = Release|Any CPU
+		{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.Build.0 = Release|Any CPU
 		{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.ActiveCfg = Release|Any CPU
 		{E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.ActiveCfg = Debug|Win32
 		{E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.Build.0 = Debug|Win32
@@ -1770,8 +1775,10 @@
 		{CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.Build.0 = Release|Win32
 		{CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.ActiveCfg = Release|Win32
 		{D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.ActiveCfg = Debug|Win32
+		{D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.Build.0 = Debug|Win32
 		{D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.ActiveCfg = Debug|Win32
 		{D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.ActiveCfg = Release|Win32
+		{D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.Build.0 = Release|Win32
 		{D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.ActiveCfg = Release|Win32
 		{C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|Win32.ActiveCfg = Debug|Win32
 		{C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|Win32.Build.0 = Debug|Win32

Modified: freeswitch/branches/gmaruzz/Makefile.am
==============================================================================
--- freeswitch/branches/gmaruzz/Makefile.am	(original)
+++ freeswitch/branches/gmaruzz/Makefile.am	Wed Jan  7 10:17:00 2009
@@ -158,13 +158,18 @@
 CLEANFILES     = src/include/switch_version.h src/include/switch_swigable_cpp.h
 BUILT_SOURCES  = src/include/switch_version.h src/include/switch_swigable_cpp.h
 
-bin_PROGRAMS = freeswitch
+bin_PROGRAMS = freeswitch fs_cli
+fs_cli_SOURCES = libs/esl/src/esl.c libs/esl/src/esl_config.c libs/esl/src/esl_event.c libs/esl/src/esl_threadmutex.c libs/esl/fs_cli.c
 freeswitch_SOURCES = src/switch.c
-nodist_freeswitch_SOURCES = src/include/switch_version.h 
+nodist_freeswitch_SOURCES = src/include/switch_version.h
+fs_cli_CFLAGS = $(AM_CFLAGS) -Ilibs/esl/src/include 
+fs_cli_LDFLAGS = $(AM_LDFLAGS) -lpthread
 freeswitch_CFLAGS = $(AM_CFLAGS) $(CORE_CFLAGS)
 freeswitch_LDFLAGS = $(AM_LDFLAGS) -rpath $(libdir)
 freeswitch_LDADD = libfreeswitch.la libs/apr/libapr-1.la
 if ADD_LIBEDIT
+fs_cli_CFLAGS += -DHAVE_EDITLINE -Ilibs/libedit/src
+fs_cli_LDADD = libs/libedit/src/.libs/libedit.a
 freeswitch_CFLAGS    += -Ilibs/libedit/src -DSWITCH_HAVE_LIBEDIT
 freeswitch_LDADD      += libs/libedit/src/.libs/libedit.a
 endif

Modified: freeswitch/branches/gmaruzz/build/modules.conf.in
==============================================================================
--- freeswitch/branches/gmaruzz/build/modules.conf.in	(original)
+++ freeswitch/branches/gmaruzz/build/modules.conf.in	Wed Jan  7 10:17:00 2009
@@ -11,6 +11,7 @@
 applications/mod_limit
 applications/mod_expr
 applications/mod_esf
+#applications/mod_easyroute
 applications/mod_fsv
 #applications/mod_soundtouch
 #applications/mod_rss

Modified: freeswitch/branches/gmaruzz/build/sounds_version.txt
==============================================================================
--- freeswitch/branches/gmaruzz/build/sounds_version.txt	(original)
+++ freeswitch/branches/gmaruzz/build/sounds_version.txt	Wed Jan  7 10:17:00 2009
@@ -1 +1 @@
-1.0.6
+1.0.7

Modified: freeswitch/branches/gmaruzz/conf/autoload_configs/conference.conf.xml
==============================================================================
--- freeswitch/branches/gmaruzz/conf/autoload_configs/conference.conf.xml	(original)
+++ freeswitch/branches/gmaruzz/conf/autoload_configs/conference.conf.xml	Wed Jan  7 10:17:00 2009
@@ -150,7 +150,7 @@
       
       
     
-    
+
   
 

Modified: freeswitch/branches/gmaruzz/conf/dialplan/default.xml
==============================================================================
--- freeswitch/branches/gmaruzz/conf/dialplan/default.xml	(original)
+++ freeswitch/branches/gmaruzz/conf/dialplan/default.xml	Wed Jan  7 10:17:00 2009
@@ -188,13 +188,8 @@
     
 
     
-      
       
 	
-	
-	
-	;answer-after=0]]>
-	
 	
 	
       
@@ -240,6 +235,24 @@
       
     
 
+    
+      
+	
+      
+    
+
+    
+      
+	
+      
+    
+
+    
+      
+	
+      
+    
+
     
     
       
@@ -287,30 +300,69 @@
 	
       
     
+    
+    
+      
+	
+	
+      
+    
     
     
     
-      
+      
 	
       
     
 
-    
-    
+    
+    
       
+	
+	
+	
+	
+	
+	
+	
+	
+      
+    
 
+    
+    
+      
+	
+	
+	
+	
+	
+	
+	
+	
+      
+    
+
+    
+    
+      
 	
 	
 	
 	
 	
 	
-
 	
-	
-	
-
-	
+	
+	
       
     
 

Modified: freeswitch/branches/gmaruzz/conf/directory/default.xml
==============================================================================
--- freeswitch/branches/gmaruzz/conf/directory/default.xml	(original)
+++ freeswitch/branches/gmaruzz/conf/directory/default.xml	Wed Jan  7 10:17:00 2009
@@ -31,7 +31,48 @@
       
     
 
-    
+    
+      
+	
+	  
+	
+      
+
+      
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	
+      
+
+      
+	
+	  
+	  
+	  
+	  
+	  
+	
+      
+
+      
+	
+	  
+	  
+	  
+	  
+	  
+	
+      
+    
 
   
 

Modified: freeswitch/branches/gmaruzz/conf/directory/default/brian.xml
==============================================================================
--- freeswitch/branches/gmaruzz/conf/directory/default/brian.xml	(original)
+++ freeswitch/branches/gmaruzz/conf/directory/default/brian.xml	Wed Jan  7 10:17:00 2009
@@ -1,7 +1,7 @@
 
   
   
-   
+  
     
     
       

Modified: freeswitch/branches/gmaruzz/conf/sip_profiles/internal-ipv6.xml
==============================================================================
--- freeswitch/branches/gmaruzz/conf/sip_profiles/internal-ipv6.xml	(original)
+++ freeswitch/branches/gmaruzz/conf/sip_profiles/internal-ipv6.xml	Wed Jan  7 10:17:00 2009
@@ -115,17 +115,6 @@
     
     
 
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-
   
 
 

Modified: freeswitch/branches/gmaruzz/conf/vars.xml
==============================================================================
--- freeswitch/branches/gmaruzz/conf/vars.xml	(original)
+++ freeswitch/branches/gmaruzz/conf/vars.xml	Wed Jan  7 10:17:00 2009
@@ -80,6 +80,12 @@
   -->
   
 
+  
+
   
+
+
+
+
+  
+
+    
+      
+      
+	
+      
+    
+    
+    
+    
+      
+      
+      
+	
+	
+      
+    
+
+    
+    
+      
+      
+	
+      
+    
+
+    
+    
+      
+      
+      
+	
+      
+    
+
+    
+      
+	
+	
+	
+      
+    
+
+    
+      
+	
+	
+	
+      
+    
+
+    
+      
+	
+	
+	
+      
+    
+
+    
+      
+	
+      
+    
+
+    
+      
+	
+	
+      
+      
+      
+	
+      
+      
+	
+      
+      
+	
+	
+	
+      
+      
+	
+	
+	
+      
+    
+
+    
+    
+    
+
+    
+      
+	
+	
+      
+    
+    
+    
+      
+	
+	
+	
+      
+    
+
+    
+      
+	
+	
+      
+    
+
+    
+      
+	
+	
+	
+	
+	
+      
+    
+
+    
+      
+	
+      
+    
+
+    
+      
+	
+	
+	
+      
+    
+
+    
+      
+	
+	
+	
+      
+    
+
+    
+      
+	
+      
+    
+
+    
+      
+	
+	
+      
+    
+
+    
+      
+      
+	
+	
+	
+	;answer-after=0]]>
+	
+	
+	
+      
+    
+
+    
+    
+      
+	
+	
+      
+      
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+      
+    
+
+    
+    
+      
+	
+	
+      
+    
+
+    
+    
+      
+	
+	
+	  
+      
+    
+
+    
+    
+      
+	
+      
+    
+
+    
+    
+      
+	
+      
+    
+    
+    
+      
+	
+      
+    
+
+
+
+                                                                                                                                                           
+    
+      
+	
+	
+      
+    
+
+    
+      
+	
+	
+      
+    
+
+    
+      
+	
+	
+      
+    
+    
+    
+    
+      
+	
+      
+    
+
+    
+    
+      
+
+	
+	
+	
+	
+	
+	
+
+	
+	
+	
+
+	
+      
+    
+
+    
+    
+      
+        
+        
+	
+      
+    
+
+     
+    
+      
+	
+      
+    
+
+    
+      
+	
+	
+      
+    
+
+    
+    
+      
+	
+	
+      
+    
+
+    
+    
+      
+	
+	
+      
+    
+
+    
+    
+      
+      
+	
+      
+     
+    
+    
+      
+      
+      
+	
+	
+      
+    
+
+    
+    
+      
+      
+      
+	]]>
+	
+      
+    
+    
+    
+    
+      
+      
+      
+	
+	
+       
+    
+
+    
+
+    
+    
+      
+	
+	
+	
+	
+	
+	
+      
+    
+    
+    
+    
+      
+	
+	
+	
+	
+	
+	
+      
+    
+
+    
+    
+      
+	
+	
+      
+    
+
+    
+    
+      
+	
+	
+      
+    
+
+    
+    
+      
+	
+	
+	
+      
+    
+
+    
+    
+      
+	
+	
+	
+      
+    
+
+    
+      
+	
+	
+	
+	
+      
+    
+
+    
+      
+	
+	
+      
+    
+
+    
+      
+	
+	
+      
+    
+
+    
+      
+	
+	
+      
+    
+
+    
+      
+	
+	
+      
+    
+
+    
+      
+	
+	
+      
+    
+
+    
+      
+	
+	
+      
+    
+
+    
+
+    
+      
+      
+	
+	
+	
+	
+	
+      
+    
+
+    
+    
+    
+    
+
+    
+    
+
+    
+
+  
+

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml	Thu Jan  8 05:29:20 2009
@@ -4,7 +4,8 @@
     
     
     
-    
+    
+    
     
     
     
@@ -14,7 +15,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -24,7 +25,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -35,7 +36,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -46,7 +47,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -57,7 +58,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -67,7 +68,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -77,7 +78,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -88,7 +89,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -99,7 +100,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -110,7 +111,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -121,7 +122,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -132,7 +133,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -143,7 +144,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -154,7 +155,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -165,7 +166,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -176,7 +177,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -187,7 +188,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -198,7 +199,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -209,7 +210,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -220,7 +221,7 @@
     
 	
 	
-	
+	
 	
 	
 	
@@ -237,7 +238,7 @@
       
       
       
-      
+      
       
 	   
 	  
@@ -249,7 +250,7 @@
       
       
       
-      
+      
       
 	   
 	  
@@ -260,7 +261,7 @@
       
       
       
-      
+      
       
 	   
 	  
@@ -272,7 +273,7 @@
       
       
       
-      
+      
       
 	   
 	  
@@ -284,7 +285,7 @@
       
       
       
-      
+      
       
 	   
 	  

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh	Thu Jan  8 05:29:20 2009
@@ -3,7 +3,7 @@
 
 # you need three dummy soundcard for 20 Skype client instances, because each dummy soundcard can handle a max of 8 Skype instances
 # the enable= module parameter tells how many cards to start. For each additional card, add a comma and a 1
-# configure the first 8 Skype client instances to use the hw:Dummy_0, the next 8 instances to use hw:Dummy_1, etc for all three devices (Play, Capture, Ring)
+# manually configure the first 8 Skype client instances to use the hw:Dummy_0, the next 8 instances to use hw:Dummy_1, etc for all three devices (Play, Capture, Ring)
 modprobe snd-dummy enable=1,1,1
 sleep 5
 


From gmaruzz at freeswitch.org  Thu Jan  8 04:10:51 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 08 Jan 2009 06:10:51 -0600
Subject: [Freeswitch-svn] [commit] r11093 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Thu Jan  8 06:10:51 2009
New Revision: 11093

Log:
skypiax: compiles on win32

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Thu Jan  8 06:10:51 2009
@@ -91,12 +91,12 @@
 #ifdef WIN32
       unsigned int fdselect;
 #else
+      int received = 0;
       int fdselect;
 #endif /* WIN32 */
       int rt;
       fd_set fs;
       struct timeval to;
-      int received = 0;
 
       if (!running)
         break;
@@ -184,12 +184,12 @@
               /****************************************************************/
           if (len > 0) {
             if (len == SAMPLES_PER_FRAME * sizeof(short)) {
-              //unsigned int howmany;
-              //howmany = len;
+#ifdef WIN32
+              unsigned int howmany;
+              howmany = len;
 
               //WARNINGA("SRV recv %d\n", SKYPIAX_P_LOG, len);
 
-#ifdef WIN32
               switch_file_write(p->audiopipe[1], srv_in, &howmany);
 #else /* WIN32 */
               len = write(p->audiopipe[1], srv_in, len);


From gmaruzz at freeswitch.org  Thu Jan  8 04:32:05 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 08 Jan 2009 06:32:05 -0600
Subject: [Freeswitch-svn] [commit] r11094 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs
Message-ID: 

Author: gmaruzz
Date: Thu Jan  8 06:32:05 2009
New Revision: 11094

Log:
skypiax: added conf/dialplan/public.xml to configs dir

Added:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/public.xml   (contents, props changed)

Added: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/public.xml
==============================================================================
--- (empty file)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/public.xml	Thu Jan  8 06:32:05 2009
@@ -0,0 +1,84 @@
+
+
+
+
+  
+
+    
+      
+      
+	
+      
+    
+    
+    
+      
+	
+      
+    
+
+    
+      
+	
+      
+    
+
+    
+    
+      
+      
+      
+	
+	
+	
+      
+    
+
+    
+      
+	
+      
+    
+
+     
+      
+	
+      
+    
+   
+    
+    
+    
+    
+  
+


From gmaruzz at freeswitch.org  Thu Jan  8 06:49:45 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 08 Jan 2009 08:49:45 -0600
Subject: [Freeswitch-svn] [commit] r11095 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs
Message-ID: 

Author: gmaruzz
Date: Thu Jan  8 08:49:45 2009
New Revision: 11095

Log:
skypiax: added startskype.bat and wait.bat to configs dir

Added:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/wait.bat

Added: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat
==============================================================================
--- (empty file)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat	Thu Jan  8 08:49:45 2009
@@ -0,0 +1,45 @@
+echo off
+REM you have to adjust MYPATH to where the Skype executable is
+set MYPATH=%PATH%;C:\Program Files\Skype\Phone
+
+echo %MYPATH%
+
+start Skype.exe /secondary /username:skypiax1 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax2 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax3 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax4 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax5 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax6 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax7 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax8 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax9 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax10 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax11 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax12 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax13 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax14 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax15 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax16 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax17 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax18 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax19 /password:xxx
+call wait 5
+start Skype.exe /secondary /username:skypiax20 /password:xxx

Added: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/wait.bat
==============================================================================
--- (empty file)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/wait.bat	Thu Jan  8 08:49:45 2009
@@ -0,0 +1,4 @@
+echo off
+ at ping 127.0.0.1 -n 2 -w 1000 > nul
+ at ping 127.0.0.1 -n %1% -w 1000> nul
+


From gmaruzz at freeswitch.org  Thu Jan  8 08:18:56 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 08 Jan 2009 10:18:56 -0600
Subject: [Freeswitch-svn] [commit] r11096 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Thu Jan  8 10:18:56 2009
New Revision: 11096

Log:
skypiax: for win32, no more LaunchSkype, use startskype.bat for this. Wait for each interface to have its own API connection active

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Thu Jan  8 10:18:56 2009
@@ -967,6 +967,9 @@
 
         skypiax_skypeaudio_init(&globals.SKYPIAX_INTERFACES[interface_id]);
 
+
+        while(globals.SKYPIAX_INTERFACES[interface_id].AsteriskHandlesAst.api_connected == 0)
+            switch_sleep(1000);
         NOTICA(
                           "STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
 

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Thu Jan  8 10:18:56 2009
@@ -588,6 +588,7 @@
 }
 
 #ifdef WIN32
+#if 0
 int LaunchSkype(struct skypiax_interface *p)
 {
   LPTSTR pszMessage;
@@ -613,6 +614,7 @@
   return 1;
 
 }
+#endif
 
 enum {
   SKYPECONTROLAPI_ATTACH_SUCCESS = 0,   /*  Client is successfully 
@@ -708,9 +710,7 @@
           }
           break;
         case SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION:
-          WARNINGA
-            ("\n\n\tIf I do not (almost) immediately connect to Skype API,\n\tplease give the Skype client authorization to be connected \n\tby Asterisk and to not ask you again.\n\n",
-             SKYPIAX_P_LOG);
+          //WARNINGA ("\n\n\tIf I do not (almost) immediately connect to Skype API,\n\tplease give the Skype client authorization to be connected \n\tby Asterisk and to not ask you again.\n\n", SKYPIAX_P_LOG);
           switch_sleep(5000);
           if (!p->AsteriskHandlesAst.api_connected) {
             SendMessage(HWND_BROADCAST,
@@ -843,7 +843,7 @@
   p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover =
     RegisterWindowMessage("SkypeControlAPIDiscover");
 
-  LaunchSkype(p);
+  //LaunchSkype(p);
   switch_sleep(2000000);
 
   if (p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0


From anthm at freeswitch.org  Thu Jan  8 08:41:32 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 08 Jan 2009 10:41:32 -0600
Subject: [Freeswitch-svn] [commit] r11097 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Thu Jan  8 10:41:32 2009
New Revision: 11097

Log:
add park/unpark to verbose event list

Modified:
   freeswitch/trunk/src/switch_channel.c

Modified: freeswitch/trunk/src/switch_channel.c
==============================================================================
--- freeswitch/trunk/src/switch_channel.c	(original)
+++ freeswitch/trunk/src/switch_channel.c	Thu Jan  8 10:41:32 2009
@@ -1212,6 +1212,8 @@
 		event->event_id == SWITCH_EVENT_CHANNEL_ORIGINATE ||
 		event->event_id == SWITCH_EVENT_CHANNEL_UUID ||
 		event->event_id == SWITCH_EVENT_CHANNEL_ANSWER ||
+		event->event_id == SWITCH_EVENT_CHANNEL_PARK ||
+		event->event_id == SWITCH_EVENT_CHANNEL_UNPARK ||
 		event->event_id == SWITCH_EVENT_CHANNEL_PROGRESS ||
 		event->event_id == SWITCH_EVENT_CHANNEL_PROGRESS_MEDIA ||
 		event->event_id == SWITCH_EVENT_CHANNEL_HANGUP ||


From anthm at freeswitch.org  Thu Jan  8 08:43:07 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 08 Jan 2009 10:43:07 -0600
Subject: [Freeswitch-svn] [commit] r11098 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Thu Jan  8 10:43:07 2009
New Revision: 11098

Log:
add bridge/unbridge too

Modified:
   freeswitch/trunk/src/switch_channel.c

Modified: freeswitch/trunk/src/switch_channel.c
==============================================================================
--- freeswitch/trunk/src/switch_channel.c	(original)
+++ freeswitch/trunk/src/switch_channel.c	Thu Jan  8 10:43:07 2009
@@ -1214,6 +1214,8 @@
 		event->event_id == SWITCH_EVENT_CHANNEL_ANSWER ||
 		event->event_id == SWITCH_EVENT_CHANNEL_PARK ||
 		event->event_id == SWITCH_EVENT_CHANNEL_UNPARK ||
+		event->event_id == SWITCH_EVENT_CHANNEL_BRIDGE ||
+		event->event_id == SWITCH_EVENT_CHANNEL_UNBRIDGE ||
 		event->event_id == SWITCH_EVENT_CHANNEL_PROGRESS ||
 		event->event_id == SWITCH_EVENT_CHANNEL_PROGRESS_MEDIA ||
 		event->event_id == SWITCH_EVENT_CHANNEL_HANGUP ||


From brian at freeswitch.org  Thu Jan  8 09:36:32 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 08 Jan 2009 11:36:32 -0600
Subject: [Freeswitch-svn] [commit] r11099 - in freeswitch/trunk/src/mod:
	applications/mod_conference xml_int/mod_xml_rpc
Message-ID: 

Author: brian
Date: Thu Jan  8 11:36:32 2009
New Revision: 11099

Log:
update

Modified:
   freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
   freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c

Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	Thu Jan  8 11:36:32 2009
@@ -3895,7 +3895,7 @@
 {
 	char *lbuf = NULL;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
-	char *http = NULL;
+	char *http = NULL, *type = NULL;
 	int argc;
 	char *argv[25] = { 0 };
 
@@ -3905,11 +3905,14 @@
 
 	if (stream->param_event) {
 		http = switch_event_get_header(stream->param_event, "http-host");
+		type = switch_event_get_header(stream->param_event, "content-type");
 	}
 
 	if (http) {
 		/* Output must be to a web browser */
-		stream->write_function(stream, "
\n");
+		if (type && !strcasecmp(type, "text/html")) {
+			stream->write_function(stream, "
\n");
+		}
 	}
 
 	if (!(lbuf = strdup(cmd))) {

Modified: freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
==============================================================================
--- freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	(original)
+++ freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	Thu Jan  8 11:36:32 2009
@@ -449,7 +449,7 @@
 	char *fs_user = NULL, *fs_domain = NULL;
 	char *path_info = NULL;
 	abyss_bool ret = TRUE;
-	int html = 0, text = 0;
+	int html = 0, text = 0, xml = 0;
 
 	stream.data = r;
 	stream.write_function = http_stream_write;
@@ -467,6 +467,9 @@
 	} else if ((command = strstr(r->requestInfo.uri, "/txtapi/"))) {
 		command += 8;
 		text++;
+	} else if ((command = strstr(r->requestInfo.uri, "/xmlapi/"))) {
+		command += 8;
+		xml++;
 	} else {
 		return FALSE;
 	}
@@ -529,6 +532,8 @@
 			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/html");
 		else if (text)
 			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/plain");
+		else if (xml)
+			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/xml");
 		if (fs_user)
 			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "FreeSWITCH-User", fs_user);
 		if (fs_domain)


From anthm at freeswitch.org  Thu Jan  8 11:45:44 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 08 Jan 2009 13:45:44 -0600
Subject: [Freeswitch-svn] [commit] r11100 -
	freeswitch/trunk/src/mod/endpoints/mod_sofia
Message-ID: 

Author: anthm
Date: Thu Jan  8 13:45:44 2009
New Revision: 11100

Log:
comment out incomplete code

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	Thu Jan  8 13:45:44 2009
@@ -2351,8 +2351,8 @@
 			switch_channel_set_variable(tech_pvt->channel, "has_t38", "true");
 			switch_channel_set_private(tech_pvt->channel, "t38_options", t38_options);
 
-			switch_channel_set_flag(tech_pvt->channel, CF_PROXY_MEDIA);
-			switch_rtp_set_flag(tech_pvt->rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA);
+			//switch_channel_set_flag(tech_pvt->channel, CF_PROXY_MEDIA);
+			//switch_rtp_set_flag(tech_pvt->rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA);
 
 		} else if (m->m_type == sdp_media_audio && m->m_port && !got_audio) {
 			sdp_rtpmap_t *map;


From brian at freeswitch.org  Thu Jan  8 19:28:52 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 08 Jan 2009 21:28:52 -0600
Subject: [Freeswitch-svn] [commit] r11101 - freeswitch/trunk/src
Message-ID: 

Author: brian
Date: Thu Jan  8 21:28:52 2009
New Revision: 11101

Log:
avoid segfault when playing a 48k wav as a transfer ringback to an 8k ulaw channel

Modified:
   freeswitch/trunk/src/switch_core_file.c

Modified: freeswitch/trunk/src/switch_core_file.c
==============================================================================
--- freeswitch/trunk/src/switch_core_file.c	(original)
+++ freeswitch/trunk/src/switch_core_file.c	Thu Jan  8 21:28:52 2009
@@ -165,7 +165,7 @@
 				switch_assert(fh->buffer);
 			}
 			if (!fh->dbuf) {
-				fh->dbuflen = fh->resampler->to_len * 8;
+				fh->dbuflen = fh->resampler->to_len * 10;
 				fh->dbuf = switch_core_alloc(fh->memory_pool, fh->dbuflen);
 			}
 			switch_assert(fh->resampler->to_len <= fh->dbuflen);


From brian at freeswitch.org  Thu Jan  8 19:30:25 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 08 Jan 2009 21:30:25 -0600
Subject: [Freeswitch-svn] [commit] r11102 - freeswitch/trunk/conf/dialplan
Message-ID: 

Author: brian
Date: Thu Jan  8 21:30:25 2009
New Revision: 11102

Log:
doh this is wrong

Modified:
   freeswitch/trunk/conf/dialplan/public.xml

Modified: freeswitch/trunk/conf/dialplan/public.xml
==============================================================================
--- freeswitch/trunk/conf/dialplan/public.xml	(original)
+++ freeswitch/trunk/conf/dialplan/public.xml	Thu Jan  8 21:30:25 2009
@@ -31,7 +31,7 @@
     
 
     
-      
+      
 	
       
     


From anthm at freeswitch.org  Fri Jan  9 07:34:35 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 09 Jan 2009 09:34:35 -0600
Subject: [Freeswitch-svn] [commit] r11103 -
	freeswitch/trunk/src/mod/endpoints/mod_sofia
Message-ID: 

Author: anthm
Date: Fri Jan  9 09:34:34 2009
New Revision: 11103

Log:
MODENDP-166

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	Fri Jan  9 09:34:34 2009
@@ -2252,7 +2252,7 @@
 	sdp_media_t *m;
 	sdp_attribute_t *attr;
 	int first = 0, last = 0;
-	int ptime = 0, dptime = 0;
+	int ptime = 0, dptime = 0, maxptime = 0, dmaxptime = 0;
 	int sendonly = 0;
 	int greedy = 0, x = 0, skip = 0, mine = 0;
 	switch_channel_t *channel = switch_core_session_get_channel(session);
@@ -2302,6 +2302,8 @@
 			sendonly = 0;
 		} else if (!strcasecmp(attr->a_name, "ptime")) {
 			dptime = atoi(attr->a_value);
+		} else if (!strcasecmp(attr->a_name, "maxptime")) {
+			dmaxptime = atoi(attr->a_value);
 		}
 	}
 
@@ -2314,6 +2316,7 @@
 		sdp_connection_t *connection;
 
 		ptime = dptime;
+		maxptime = dmaxptime;
 
 		if (m->m_proto == sdp_proto_srtp) {
 			got_savp++;
@@ -2360,6 +2363,8 @@
 			for (attr = m->m_attributes; attr; attr = attr->a_next) {
 				if (!strcasecmp(attr->a_name, "ptime") && attr->a_value) {
 					ptime = atoi(attr->a_value);
+				} else if (!strcasecmp(attr->a_name, "maxptime") && attr->a_value) {
+					maxptime = atoi(attr->a_value);
 				} else if (!got_crypto && !strcasecmp(attr->a_name, "crypto") && !switch_strlen_zero(attr->a_value)) {
 					int crypto_tag;
 
@@ -2498,6 +2503,10 @@
 					first = 0;
 					last = tech_pvt->num_codecs;
 				}
+				
+				if (maxptime && (!ptime || ptime > maxptime)) {
+					ptime = maxptime;
+				}
 
 				for (i = first; i < last && i < tech_pvt->num_codecs; i++) {
 					const switch_codec_implementation_t *imp = tech_pvt->codecs[i];
@@ -2515,7 +2524,8 @@
 					}
 
 					if (match) {
-						if ((ptime && ptime * 1000 != imp->microseconds_per_packet) || map->rm_rate != codec_rate) {
+						if ((ptime && ptime * 1000 != imp->microseconds_per_packet) || 
+							map->rm_rate != codec_rate) {
 							near_rate = map->rm_rate;
 							near_match = imp;
 							match = 0;
@@ -2545,9 +2555,14 @@
 						mimp = near_match;
 					}
 
-					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Substituting codec %s@%ui@%uh\n",
-									  mimp->iananame, mimp->microseconds_per_packet / 1000, mimp->samples_per_second);
-					match = 1;
+					if (!maxptime || mimp->microseconds_per_packet / 1000 <= maxptime) {
+						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Substituting codec %s@%ui@%uh\n",
+										  mimp->iananame, mimp->microseconds_per_packet / 1000, mimp->samples_per_second);
+						match = 1;
+					} else {
+						mimp = NULL;
+						match = 0;
+					}
 				}
 
 				if (!match && greedy) {


From anthm at freeswitch.org  Fri Jan  9 12:34:01 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 09 Jan 2009 14:34:01 -0600
Subject: [Freeswitch-svn] [commit] r11104 - in freeswitch/trunk/src: .
	include mod/applications/mod_conference
	mod/applications/mod_rss mod/endpoints/mod_loopback
	mod/endpoints/mod_sofia mod/event_handlers/mod_erlang_event
	mod/event_handlers/mod_event_socket mod/formats/mod_local_stream
Message-ID: 

Author: anthm
Date: Fri Jan  9 14:34:01 2009
New Revision: 11104

Log:
numerous fixes from regression testing

Modified:
   freeswitch/trunk/src/include/switch_core.h
   freeswitch/trunk/src/include/switch_module_interfaces.h
   freeswitch/trunk/src/include/switch_types.h
   freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
   freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c
   freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
   freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
   freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c
   freeswitch/trunk/src/switch_core.c
   freeswitch/trunk/src/switch_core_file.c
   freeswitch/trunk/src/switch_core_io.c
   freeswitch/trunk/src/switch_core_session.c
   freeswitch/trunk/src/switch_core_state_machine.c
   freeswitch/trunk/src/switch_ivr.c
   freeswitch/trunk/src/switch_ivr_async.c
   freeswitch/trunk/src/switch_ivr_bridge.c
   freeswitch/trunk/src/switch_ivr_originate.c
   freeswitch/trunk/src/switch_ivr_play_say.c

Modified: freeswitch/trunk/src/include/switch_core.h
==============================================================================
--- freeswitch/trunk/src/include/switch_core.h	(original)
+++ freeswitch/trunk/src/include/switch_core.h	Fri Jan  9 14:34:01 2009
@@ -330,7 +330,7 @@
   \return success if it is safe to read from the session
 */
 #ifdef SWITCH_DEBUG_RWLOCKS
-#define switch_core_session_read_lock(session) switch_core_session_perform_read_lock_hangup(session, __FILE__, __SWITCH_FUNC__, __LINE__)
+#define switch_core_session_read_lock_hangup(session) switch_core_session_perform_read_lock_hangup(session, __FILE__, __SWITCH_FUNC__, __LINE__)
 #else
 SWITCH_DECLARE(switch_status_t) switch_core_session_read_lock_hangup(_In_ switch_core_session_t *session);
 #endif
@@ -901,7 +901,7 @@
   \param session the session to reset
   \param flush_dtmf flush all queued dtmf events too
 */
-SWITCH_DECLARE(void) switch_core_session_reset(_In_ switch_core_session_t *session, switch_bool_t flush_dtmf);
+SWITCH_DECLARE(void) switch_core_session_reset(_In_ switch_core_session_t *session, switch_bool_t flush_dtmf, switch_bool_t reset_read_codec);
 
 /*! 
   \brief Write a frame to a session

Modified: freeswitch/trunk/src/include/switch_module_interfaces.h
==============================================================================
--- freeswitch/trunk/src/include/switch_module_interfaces.h	(original)
+++ freeswitch/trunk/src/include/switch_module_interfaces.h	Fri Jan  9 14:34:01 2009
@@ -320,6 +320,9 @@
 	switch_buffer_t *buffer;
 	switch_byte_t *dbuf;
 	switch_size_t dbuflen;
+	switch_buffer_t *pre_buffer;
+	unsigned char *pre_buffer_data;
+	switch_size_t pre_buffer_datalen;
 	const char *file;
 	const char *func;
 	int line;

Modified: freeswitch/trunk/src/include/switch_types.h
==============================================================================
--- freeswitch/trunk/src/include/switch_types.h	(original)
+++ freeswitch/trunk/src/include/switch_types.h	Fri Jan  9 14:34:01 2009
@@ -166,7 +166,9 @@
 #define SWITCH_SPEECH_KEY "speech"
 #define SWITCH_UUID_BRIDGE "uuid_bridge"
 #define SWITCH_BITS_PER_BYTE 8
-	typedef uint8_t switch_byte_t;
+#define SWITCH_DEFAULT_FILE_BUFFER_LEN 65536
+
+typedef uint8_t switch_byte_t;
 
 typedef struct {
 	char digit;
@@ -1061,7 +1063,9 @@
 	SWITCH_FILE_NATIVE = (1 << 9),
 	SWITCH_FILE_SEEK = (1 << 10),
 	SWITCH_FILE_OPEN = (1 << 11),
-	SWITCH_FILE_CALLBACK = (1 << 12)
+	SWITCH_FILE_CALLBACK = (1 << 12),
+	SWITCH_FILE_DONE = (1 << 13),
+	SWITCH_FILE_BUFFER_DONE = (1 << 14)
 } switch_file_flag_enum_t;
 typedef uint32_t switch_file_flag_t;
 

Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	Fri Jan  9 14:34:01 2009
@@ -1,4 +1,4 @@
-/* 
+/*
  * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
  * Copyright (C) 2005/2006, Anthony Minessale II 
  *
@@ -139,7 +139,8 @@
 	MFLAG_FLUSH_BUFFER = (1 << 8),
 	MFLAG_ENDCONF = (1 << 9),
 	MFLAG_HAS_AUDIO = (1 << 10),
-	MFLAG_TALKING = (1 << 11)
+	MFLAG_TALKING = (1 << 11),
+	MFLAG_RESTART = (1 << 12)
 } member_flag_t;
 
 typedef enum {
@@ -337,6 +338,7 @@
 } api_command_t;
 
 /* Function Prototypes */
+static int setup_media(conference_member_t *member, conference_obj_t *conference);
 static uint32_t next_member_id(void);
 static conference_relationship_t *member_get_relationship(conference_member_t *member, conference_member_t *other_member);
 static conference_member_t *conference_member_get(conference_obj_t *conference, uint32_t id);
@@ -1758,18 +1760,43 @@
 /* NB. this starts the input thread after some initial setup for the call leg */
 static void conference_loop_output(conference_member_t *member)
 {
-	switch_channel_t *channel = switch_core_session_get_channel(member->session);
+	switch_channel_t *channel;
 	switch_frame_t write_frame = { 0 };
-	uint8_t *data;
+	uint8_t *data = NULL;
 	switch_timer_t timer = { 0 };
-	switch_codec_t *read_codec = switch_core_session_get_read_codec(member->session);
-	uint32_t interval = read_codec->implementation->microseconds_per_packet / 1000;
-	uint32_t samples = switch_samples_per_packet(member->conference->rate, interval);
-	uint32_t csamples = samples;
-	uint32_t tsamples = member->orig_read_codec->implementation->samples_per_packet;
-	uint32_t flush_len = 0;
-	uint32_t low_count = 0, bytes = samples * 2;
-	call_list_t *call_list = NULL, *cp = NULL;
+	switch_codec_t *read_codec;
+	uint32_t interval;
+	uint32_t samples;
+	uint32_t csamples;
+	uint32_t tsamples;
+	uint32_t flush_len;
+	uint32_t low_count, bytes;
+	call_list_t *call_list, *cp;
+	int restarting = -1;
+
+ top:
+
+	restarting++;
+	
+	if (switch_test_flag(member, MFLAG_RESTART)) {
+		switch_clear_flag(member, MFLAG_RESTART);
+		switch_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
+		switch_core_timer_destroy(&timer);
+	}
+
+	channel = switch_core_session_get_channel(member->session);
+	read_codec = switch_core_session_get_read_codec(member->session);
+	interval = read_codec->implementation->microseconds_per_packet / 1000;
+	samples = switch_samples_per_packet(member->conference->rate, interval);
+	csamples = samples;
+	tsamples = member->orig_read_codec->implementation->samples_per_packet;
+	flush_len = 0;
+	low_count = 0;
+	bytes = samples * 2;
+	call_list = NULL;
+	cp = NULL;
+
+
 
 	switch_assert(member->conference != NULL);
 
@@ -1783,62 +1810,72 @@
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Setup timer %s success interval: %u  samples: %u\n",
 					  member->conference->timer_name, interval, tsamples);
 
-	write_frame.data = data = switch_core_session_alloc(member->session, SWITCH_RECOMMENDED_BUFFER_SIZE);
-	write_frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE;
+	if (!restarting) {
+		write_frame.data = data = switch_core_session_alloc(member->session, SWITCH_RECOMMENDED_BUFFER_SIZE);
+		write_frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE;
+	}
+
 	write_frame.codec = &member->write_codec;
 
 	if (!switch_test_flag(member->conference, CFLAG_ANSWERED)) {
 		switch_channel_answer(channel);
 	}
 
-	/* Start the input thread */
-	launch_conference_loop_input(member, switch_core_session_get_pool(member->session));
-
-	/* build a digit stream object */
-	if (member->conference->dtmf_parser != NULL
-		&& switch_ivr_digit_stream_new(member->conference->dtmf_parser, &member->digit_stream) != SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Danger Will Robinson, there is no digit parser stream object\n");
-	}
-
-	if ((call_list = switch_channel_get_private(channel, "_conference_autocall_list_"))) {
-		const char *cid_name = switch_channel_get_variable(channel, "conference_auto_outcall_caller_id_name");
-		const char *cid_num = switch_channel_get_variable(channel, "conference_auto_outcall_caller_id_number");
-		const char *toval = switch_channel_get_variable(channel, "conference_auto_outcall_timeout");
-		const char *flags = switch_channel_get_variable(channel, "conference_auto_outcall_flags");
-		const char *ann = switch_channel_get_variable(channel, "conference_auto_outcall_announce");
-		const char *prefix = switch_channel_get_variable(channel, "conference_auto_outcall_prefix");
-		int to = 60;
+	if (!restarting) {
+		/* Start the input thread */
+		launch_conference_loop_input(member, switch_core_session_get_pool(member->session));
 		
-		if (ann) {
-			member->conference->special_announce = switch_core_strdup(member->conference->pool, ann);
+		/* build a digit stream object */
+		if (member->conference->dtmf_parser != NULL
+			&& switch_ivr_digit_stream_new(member->conference->dtmf_parser, &member->digit_stream) != SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Danger Will Robinson, there is no digit parser stream object\n");
 		}
 
-		switch_channel_set_private(channel, "_conference_autocall_list_", NULL);
+		if ((call_list = switch_channel_get_private(channel, "_conference_autocall_list_"))) {
+			const char *cid_name = switch_channel_get_variable(channel, "conference_auto_outcall_caller_id_name");
+			const char *cid_num = switch_channel_get_variable(channel, "conference_auto_outcall_caller_id_number");
+			const char *toval = switch_channel_get_variable(channel, "conference_auto_outcall_timeout");
+			const char *flags = switch_channel_get_variable(channel, "conference_auto_outcall_flags");
+			const char *ann = switch_channel_get_variable(channel, "conference_auto_outcall_announce");
+			const char *prefix = switch_channel_get_variable(channel, "conference_auto_outcall_prefix");
+			int to = 60;
+		
+			if (ann) {
+				member->conference->special_announce = switch_core_strdup(member->conference->pool, ann);
+			}
+
+			switch_channel_set_private(channel, "_conference_autocall_list_", NULL);
 
-		if (toval) {
-			to = atoi(toval);
-			if (to < 10 || to > 500) {
-				to = 60;
+			if (toval) {
+				to = atoi(toval);
+				if (to < 10 || to > 500) {
+					to = 60;
+				}
 			}
-		}
 
-		for (cp = call_list; cp; cp = cp->next) {
-			int argc;
-			char *argv[512] = { 0 };
-			char *cpstr = strdup(cp->string);
-			int x = 0;
+			for (cp = call_list; cp; cp = cp->next) {
+				int argc;
+				char *argv[512] = { 0 };
+				char *cpstr = strdup(cp->string);
+				int x = 0;
 
-			switch_assert(cpstr);
-			argc = switch_separate_string(cpstr, ',', argv, (sizeof(argv) / sizeof(argv[0])));
-			for (x = 0; x < argc; x++) {
-				char *dial_str = switch_mprintf("%s%s", switch_str_nil(prefix), argv[x]);
-				switch_assert(dial_str);
-				conference_outcall_bg(member->conference, NULL, NULL, dial_str, to, switch_str_nil(flags), cid_name, cid_num);
-				switch_safe_free(dial_str);
+				switch_assert(cpstr);
+				argc = switch_separate_string(cpstr, ',', argv, (sizeof(argv) / sizeof(argv[0])));
+				for (x = 0; x < argc; x++) {
+					char *dial_str = switch_mprintf("%s%s", switch_str_nil(prefix), argv[x]);
+					switch_assert(dial_str);
+					conference_outcall_bg(member->conference, NULL, NULL, dial_str, to, switch_str_nil(flags), cid_name, cid_num);
+					switch_safe_free(dial_str);
+				}
+				switch_safe_free(cpstr);
 			}
-			switch_safe_free(cpstr);
 		}
 	}
+
+	if (restarting) {
+		switch_channel_clear_flag(channel, CF_SERVICE);
+	}
+
 	/* Fair WARNING, If you expect the caller to hear anything or for digit handling to be processed,      */
 	/* you better not block this thread loop for more than the duration of member->conference->timer_name!  */
 	while (switch_test_flag(member, MFLAG_RUNNING) && switch_test_flag(member, MFLAG_ITHREAD)
@@ -1852,6 +1889,10 @@
 		switch_size_t file_sample_len = csamples;
 		switch_size_t file_data_len = file_sample_len * 2;
 
+		if (switch_test_flag(member, MFLAG_RESTART)) {
+			goto top;
+		}
+
 		switch_mutex_lock(member->flag_mutex);
 
 		if (switch_core_session_dequeue_event(member->session, &event) == SWITCH_STATUS_SUCCESS) {
@@ -2145,6 +2186,8 @@
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Joining Conference\n");
 		goto end;
 	}
+	
+	fh.pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
 
 	if (switch_core_file_open(&fh,
 							  rec->path, (uint8_t) 1, conference->rate, SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT,
@@ -2371,6 +2414,7 @@
 	fnode->leadin = leadin;
 
 	/* Open the file */
+	fnode->fh.pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
 	if (switch_core_file_open(&fnode->fh, file, (uint8_t) 1, conference->rate, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, pool) !=
 		SWITCH_STATUS_SUCCESS) {
 		switch_core_destroy_memory_pool(&pool);
@@ -2465,6 +2509,7 @@
 	fnode->type = NODE_TYPE_FILE;
 	fnode->leadin = leadin;
 	/* Open the file */
+	fnode->fh.pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
 	if (switch_core_file_open(&fnode->fh,
 							  file, (uint8_t) 1, member->conference->rate, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT,
 							  pool) != SWITCH_STATUS_SUCCESS) {
@@ -3631,9 +3676,21 @@
 			switch_mutex_lock(member->flag_mutex);
 			conference_del_member(conference, member);
 			conference_add_member(new_conference, member);
+
+			if (conference->rate != new_conference->rate) {
+				if(setup_media(member, new_conference)) {
+					switch_clear_flag_locked(member, MFLAG_RUNNING);
+				} else {
+					switch_channel_set_flag(channel, CF_SERVICE);
+					switch_set_flag(member, MFLAG_RESTART);
+				}
+			}
+
 			switch_mutex_unlock(new_conference->mutex);
 			switch_mutex_unlock(member->flag_mutex);
-			stream->write_function(stream, "OK Members sent to conference %s.\n", argv[2]);
+
+			
+			stream->write_function(stream, "OK Member '%d' sent to conference %s.\n", member->id, argv[2]);
 
 			/* tell them what happened */
 			if (test_eflag(conference, EFLAG_TRANSFER) &&
@@ -4349,6 +4406,111 @@
 	switch_channel_set_private(channel, "_conference_autocall_list_", call_list);
 }
 
+
+static int setup_media(conference_member_t *member, conference_obj_t *conference)
+{
+	switch_codec_t *read_codec;
+
+	
+	switch_core_session_reset(member->session, SWITCH_TRUE, SWITCH_FALSE);
+
+	if (member->read_codec.implementation) {
+		switch_core_codec_destroy(&member->read_codec);
+	}
+
+	if (member->read_resampler) {
+		switch_resample_destroy(&member->read_resampler);
+	}
+
+	read_codec = switch_core_session_get_read_codec(member->session);
+	member->orig_read_codec = read_codec;
+	member->native_rate = read_codec->implementation->samples_per_second;
+
+	/* Setup a Signed Linear codec for reading audio. */
+	if (switch_core_codec_init(&member->read_codec,
+							   "L16",
+							   NULL, read_codec->implementation->actual_samples_per_second, read_codec->implementation->microseconds_per_packet / 1000,
+							   1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, member->pool) == SWITCH_STATUS_SUCCESS) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
+						  "Raw Codec Activation Success L16@%uhz 1 channel %dms\n",
+						  read_codec->implementation->actual_samples_per_second, read_codec->implementation->microseconds_per_packet / 1000);
+
+	} else {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed L16@%uhz 1 channel %dms\n",
+						  read_codec->implementation->actual_samples_per_second, read_codec->implementation->microseconds_per_packet / 1000);
+
+		goto done;
+	}
+
+	if (!member->frame_size) {
+		member->frame_size = SWITCH_RECOMMENDED_BUFFER_SIZE;
+		member->frame = switch_core_alloc(member->pool, member->frame_size);
+		member->mux_frame = switch_core_alloc(member->pool, member->frame_size);
+	}
+
+	if (read_codec->implementation->actual_samples_per_second != conference->rate) {
+		if (switch_resample_create(&member->read_resampler,
+								   read_codec->implementation->actual_samples_per_second,
+								   member->frame_size, conference->rate, member->frame_size, member->pool) != SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Unable to create resampler!\n");
+			goto done;
+		}
+
+
+		member->resample_out = switch_core_alloc(member->pool, member->frame_size);
+		member->resample_out_len = member->frame_size;
+
+		/* Setup an audio buffer for the resampled audio */
+		if (switch_buffer_create_dynamic(&member->resample_buffer, CONF_DBLOCK_SIZE, CONF_DBUFFER_SIZE, CONF_DBUFFER_MAX)
+			!= SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error Creating Audio Buffer!\n");
+			goto done;
+		}
+	}
+
+
+	/* Setup a Signed Linear codec for writing audio. */
+	if (switch_core_codec_init(&member->write_codec,
+							   "L16",
+							   NULL,
+							   conference->rate,
+							   read_codec->implementation->microseconds_per_packet / 1000,
+							   1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, member->pool) == SWITCH_STATUS_SUCCESS) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
+						  "Raw Codec Activation Success L16@%uhz 1 channel %dms\n",
+						  conference->rate, read_codec->implementation->microseconds_per_packet / 1000);
+	} else {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed L16@%uhz 1 channel %dms\n",
+						  conference->rate, read_codec->implementation->microseconds_per_packet / 1000);
+		goto codec_done2;
+	}
+
+	/* Setup an audio buffer for the incoming audio */
+	if (switch_buffer_create_dynamic(&member->audio_buffer, CONF_DBLOCK_SIZE, CONF_DBUFFER_SIZE, CONF_DBUFFER_MAX) != SWITCH_STATUS_SUCCESS) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error Creating Audio Buffer!\n");
+		goto codec_done1;
+	}
+
+	/* Setup an audio buffer for the outgoing audio */
+	if (switch_buffer_create_dynamic(&member->mux_buffer, CONF_DBLOCK_SIZE, CONF_DBUFFER_SIZE, CONF_DBUFFER_MAX) != SWITCH_STATUS_SUCCESS) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error Creating Audio Buffer!\n");
+		goto codec_done1;
+	}
+
+	return 0;
+
+ codec_done1:
+	switch_core_codec_destroy(&member->read_codec);
+ codec_done2:
+	switch_core_codec_destroy(&member->write_codec);
+ done:
+
+	return -1;
+	
+
+}
+
+
 /* Application interface function that is called from the dialplan to join the channel to a conference */
 SWITCH_STANDARD_APP(conference_function)
 {
@@ -4632,84 +4794,16 @@
 			switch_set_flag(conference, CFLAG_ANSWERED);
 	}
 
-	member.orig_read_codec = read_codec;
-	member.native_rate = read_codec->implementation->samples_per_second;
+	member.session = session;
 	member.pool = switch_core_session_get_pool(session);
 
-	/* Setup a Signed Linear codec for reading audio. */
-	if (switch_core_codec_init(&member.read_codec,
-							   "L16",
-							   NULL, read_codec->implementation->actual_samples_per_second, read_codec->implementation->microseconds_per_packet / 1000,
-							   1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, member.pool) == SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
-						  "Raw Codec Activation Success L16@%uhz 1 channel %dms\n",
-						  read_codec->implementation->actual_samples_per_second, read_codec->implementation->microseconds_per_packet / 1000);
-
-	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed L16@%uhz 1 channel %dms\n",
-						  read_codec->implementation->actual_samples_per_second, read_codec->implementation->microseconds_per_packet / 1000);
-
+	if (setup_media(&member, conference)) {
 		flags = 0;
 		goto done;
 	}
 
-	member.frame_size = SWITCH_RECOMMENDED_BUFFER_SIZE;
-	member.frame = switch_core_alloc(member.pool, member.frame_size);
-	member.mux_frame = switch_core_alloc(member.pool, member.frame_size);
-
-	if (read_codec->implementation->actual_samples_per_second != conference->rate) {
-		if (switch_resample_create(&member.read_resampler,
-								   read_codec->implementation->actual_samples_per_second,
-								   member.frame_size, conference->rate, member.frame_size, member.pool) != SWITCH_STATUS_SUCCESS) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Unable to create resampler!\n");
-			goto done;
-		}
-
-
-		member.resample_out = switch_core_alloc(member.pool, member.frame_size);
-		member.resample_out_len = member.frame_size;
-
-		/* Setup an audio buffer for the resampled audio */
-		if (switch_buffer_create_dynamic(&member.resample_buffer, CONF_DBLOCK_SIZE, CONF_DBUFFER_SIZE, CONF_DBUFFER_MAX)
-			!= SWITCH_STATUS_SUCCESS) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error Creating Audio Buffer!\n");
-			goto done;
-		}
-	}
-
-
-	/* Setup a Signed Linear codec for writing audio. */
-	if (switch_core_codec_init(&member.write_codec,
-							   "L16",
-							   NULL,
-							   conference->rate,
-							   read_codec->implementation->microseconds_per_packet / 1000,
-							   1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, member.pool) == SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
-						  "Raw Codec Activation Success L16@%uhz 1 channel %dms\n",
-						  conference->rate, read_codec->implementation->microseconds_per_packet / 1000);
-	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed L16@%uhz 1 channel %dms\n",
-						  conference->rate, read_codec->implementation->microseconds_per_packet / 1000);
-		flags = 0;
-		goto codec_done2;
-	}
-
-	/* Setup an audio buffer for the incoming audio */
-	if (switch_buffer_create_dynamic(&member.audio_buffer, CONF_DBLOCK_SIZE, CONF_DBUFFER_SIZE, CONF_DBUFFER_MAX) != SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error Creating Audio Buffer!\n");
-		goto codec_done1;
-	}
-
-	/* Setup an audio buffer for the outgoing audio */
-	if (switch_buffer_create_dynamic(&member.mux_buffer, CONF_DBLOCK_SIZE, CONF_DBUFFER_SIZE, CONF_DBUFFER_MAX) != SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error Creating Audio Buffer!\n");
-		goto codec_done1;
-	}
-
 	/* Prepare MUTEXS */
 	member.id = next_member_id();
-	member.session = session;
 	switch_mutex_init(&member.flag_mutex, SWITCH_MUTEX_NESTED, member.pool);
 	switch_mutex_init(&member.audio_in_mutex, SWITCH_MUTEX_NESTED, member.pool);
 	switch_mutex_init(&member.audio_out_mutex, SWITCH_MUTEX_NESTED, member.pool);
@@ -4724,7 +4818,8 @@
 
 	/* Add the caller to the conference */
 	if (conference_add_member(conference, &member) != SWITCH_STATUS_SUCCESS) {
-		goto codec_done1;
+		switch_core_codec_destroy(&member.read_codec);
+		goto done;
 	}
 
 	msg.from = __FILE__;
@@ -4747,12 +4842,14 @@
 	/* Put the original codec back */
 	switch_core_session_set_read_codec(member.session, NULL);
 
-	/* Clean Up.  codec_done(X): is for error situations after the codecs were setup and done: is for situations before */
-  codec_done1:
-	switch_core_codec_destroy(&member.read_codec);
-  codec_done2:
-	switch_core_codec_destroy(&member.write_codec);
+	/* Clean Up. */
+
   done:
+
+	if (member.read_resampler) {
+		switch_resample_destroy(&member.read_resampler);
+	}
+
 	switch_event_destroy(¶ms);
 	switch_buffer_destroy(&member.resample_buffer);
 	switch_buffer_destroy(&member.audio_buffer);
@@ -4796,7 +4893,7 @@
 		}
 	}
 
-	switch_core_session_reset(session, SWITCH_TRUE);
+	switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 
 	/* release the readlock */
 	if (rl) {

Modified: freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c	Fri Jan  9 14:34:01 2009
@@ -619,7 +619,7 @@
 	}
 
 	switch_xml_free(xml);
-	switch_core_session_reset(session, SWITCH_TRUE);
+	switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 }
 
 

Modified: freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c	Fri Jan  9 14:34:01 2009
@@ -264,7 +264,10 @@
 	}
 	
 	if (tech_pvt->other_session) {
-		switch_core_session_read_lock(tech_pvt->other_session);
+		if (switch_core_session_read_lock(tech_pvt->other_session) != SWITCH_STATUS_SUCCESS) {
+			switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+			goto end;
+		}
 	} else {
 		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
 		goto end;

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	Fri Jan  9 14:34:01 2009
@@ -1623,7 +1623,7 @@
 			resetting = 1;
 			switch_core_codec_destroy(&tech_pvt->read_codec);
 			switch_core_codec_destroy(&tech_pvt->write_codec);
-			switch_core_session_reset(tech_pvt->session, SWITCH_TRUE);
+			switch_core_session_reset(tech_pvt->session, SWITCH_TRUE, SWITCH_TRUE);
 		} else {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Already using %s\n", tech_pvt->read_codec.implementation->iananame);
 			switch_goto_status(SWITCH_STATUS_SUCCESS, end);

Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c	Fri Jan  9 14:34:01 2009
@@ -1202,7 +1202,9 @@
 
 	if ((session = listener->session)) {
 		channel = switch_core_session_get_channel(session);
-		switch_core_session_read_lock(session);
+		if (switch_core_session_read_lock(session) != SWITCH_STATUS_SUCCESS) {
+			goto done;
+		}
 	}
 
 	if (switch_strlen_zero(listener->remote_ip)) {

Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	Fri Jan  9 14:34:01 2009
@@ -1770,7 +1770,9 @@
 	
 	if ((session = listener->session)) {
 		channel = switch_core_session_get_channel(session);
-		switch_core_session_read_lock(session);
+		if (switch_core_session_read_lock(session) != SWITCH_STATUS_SUCCESS) {
+			goto done;
+		}
 	}
 
 	if (prefs.acl_count && listener->sa && !switch_strlen_zero(listener->remote_ip)) {

Modified: freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c
==============================================================================
--- freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c	(original)
+++ freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c	Fri Jan  9 14:34:01 2009
@@ -183,6 +183,7 @@
 
 			fname = path_buf;
 			fh.prebuf = source->prebuf;
+			fh.pre_buffer_datalen = 65536;
 
 			if (switch_core_file_open(&fh,
 									  (char *) fname,

Modified: freeswitch/trunk/src/switch_core.c
==============================================================================
--- freeswitch/trunk/src/switch_core.c	(original)
+++ freeswitch/trunk/src/switch_core.c	Fri Jan  9 14:34:01 2009
@@ -277,7 +277,10 @@
 	switch_assert(thread != NULL);
 	switch_assert(session != NULL);
 
-	switch_core_session_read_lock(session);
+	if (switch_core_session_read_lock(session) != SWITCH_STATUS_SUCCESS) {
+		return NULL;
+	}
+
 	channel = switch_core_session_get_channel(session);
 
 	switch_channel_set_flag(channel, CF_SERVICE);

Modified: freeswitch/trunk/src/switch_core_file.c
==============================================================================
--- freeswitch/trunk/src/switch_core_file.c	(original)
+++ freeswitch/trunk/src/switch_core_file.c	Fri Jan  9 14:34:01 2009
@@ -117,6 +117,12 @@
 		}
 	}
 
+	if (fh->pre_buffer_datalen) {
+		//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Prebuffering %d bytes\n", (int)fh->pre_buffer_datalen);
+		switch_buffer_create_dynamic(&fh->pre_buffer, fh->pre_buffer_datalen, fh->pre_buffer_datalen / 2, 0);
+		fh->pre_buffer_data = switch_core_alloc(fh->memory_pool, fh->pre_buffer_datalen);
+	}
+
 	switch_set_flag(fh, SWITCH_FILE_OPEN);
 
 	return status;
@@ -124,26 +130,61 @@
 
 SWITCH_DECLARE(switch_status_t) switch_core_file_read(switch_file_handle_t *fh, void *data, switch_size_t *len)
 {
-	switch_status_t status;
+	switch_status_t status = SWITCH_STATUS_FALSE;
 	switch_size_t want, got, orig_len = *len;
 
 	switch_assert(fh != NULL);
 	switch_assert(fh->file_interface != NULL);
 
+ top:
+
 	if (fh->buffer && switch_buffer_inuse(fh->buffer) >= *len * 2) {
 		*len = switch_buffer_read(fh->buffer, data, orig_len * 2) / 2;
 		return SWITCH_STATUS_SUCCESS;
 	}
-
+	
+	if (switch_test_flag(fh, SWITCH_FILE_DONE)) {
+		switch_clear_flag(fh, SWITCH_FILE_DONE);
+		*len = 0;
+		return SWITCH_STATUS_FALSE;
+	}
+	
 	want = *len;
 
  more:
 	
-	if ((status = fh->file_interface->file_read(fh, data, len)) != SWITCH_STATUS_SUCCESS || !*len) {
-		*len = 0;
-		goto done;
+	if (fh->pre_buffer) {
+		switch_size_t rlen;
+		if (!switch_test_flag(fh, SWITCH_FILE_BUFFER_DONE)) {
+			if (!switch_buffer_inuse(fh->pre_buffer)) {
+				rlen = fh->pre_buffer_datalen / 2;
+				if ((status = fh->file_interface->file_read(fh, fh->pre_buffer_data, &rlen)) != SWITCH_STATUS_SUCCESS || !rlen) {
+					switch_set_flag(fh, SWITCH_FILE_BUFFER_DONE);
+				} else {
+					switch_buffer_write(fh->pre_buffer, fh->pre_buffer_data, rlen * 2);
+				}
+			}
+		}
+
+		rlen = switch_buffer_read(fh->pre_buffer, data, *len * 2);
+		*len = rlen / 2;
+		
+		if (*len == 0) {
+			switch_set_flag(fh, SWITCH_FILE_DONE);
+            goto top;
+		} else {
+			status = SWITCH_STATUS_SUCCESS;
+		}
+
+	} else {
+
+		if ((status = fh->file_interface->file_read(fh, data, len)) != SWITCH_STATUS_SUCCESS || !*len) {
+			switch_set_flag(fh, SWITCH_FILE_DONE);
+			goto top;
+		}
 	}
 
+
 	got = *len;
 	
 	if (!switch_test_flag(fh, SWITCH_FILE_NATIVE) && fh->native_rate != fh->samplerate) {
@@ -186,8 +227,6 @@
 
 	}
 	
-  done:
-
 	return status;
 }
 
@@ -234,7 +273,26 @@
 		return SWITCH_STATUS_SUCCESS;
 	}
 
-	return fh->file_interface->file_write(fh, data, len);
+
+	if (fh->pre_buffer) {
+		switch_size_t rlen, blen;
+		switch_status_t status = SWITCH_STATUS_SUCCESS;
+
+		switch_buffer_write(fh->pre_buffer, data, *len * 2);
+
+		rlen = switch_buffer_inuse(fh->pre_buffer);
+		if (rlen >= fh->pre_buffer_datalen) {
+			blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen);
+			blen /= 2;
+			if ((status = fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen)) != SWITCH_STATUS_SUCCESS) {
+				*len = 0;
+			}
+		}
+		
+		return status;
+	} else {
+		return fh->file_interface->file_write(fh, data, len);
+	}
 }
 
 SWITCH_DECLARE(switch_status_t) switch_core_file_seek(switch_file_handle_t *fh, unsigned int *cur_pos, int64_t samples, int whence)
@@ -294,6 +352,21 @@
 		switch_buffer_destroy(&fh->buffer);
 	}
 
+	if (fh->pre_buffer) {
+		if (switch_test_flag(fh, SWITCH_FILE_FLAG_WRITE)) {
+			switch_size_t rlen, blen;
+			while((rlen = switch_buffer_inuse(fh->pre_buffer))) {
+				blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen);
+				blen /= 2;
+				if (fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen) != SWITCH_STATUS_SUCCESS) {
+					break;
+				}
+			}
+		}
+
+		switch_buffer_destroy(&fh->pre_buffer);
+	}
+
 	switch_resample_destroy(&fh->resampler);
 
 	UNPROTECT_INTERFACE(fh->file_interface);

Modified: freeswitch/trunk/src/switch_core_io.c
==============================================================================
--- freeswitch/trunk/src/switch_core_io.c	(original)
+++ freeswitch/trunk/src/switch_core_io.c	Fri Jan  9 14:34:01 2009
@@ -805,7 +805,7 @@
 	}
 
 	if (session->write_codec) {
-		if (write_frame->datalen == session->write_codec->implementation->decoded_bytes_per_packet) {
+		if (write_frame->codec->implementation->decoded_bytes_per_packet == session->write_codec->implementation->decoded_bytes_per_packet) {
 			perfect = TRUE;
 		} else {
 			if (!session->raw_write_buffer) {
@@ -828,6 +828,12 @@
 		}
 
 		if (perfect) {
+
+			if (write_frame->datalen < session->write_codec->implementation->decoded_bytes_per_packet) {
+				memset(write_frame->data, 255, session->write_codec->implementation->decoded_bytes_per_packet - write_frame->datalen);
+				write_frame->datalen = session->write_codec->implementation->decoded_bytes_per_packet;
+			}
+
 			enc_frame = write_frame;
 			session->enc_write_frame.datalen = session->enc_write_frame.buflen;
 

Modified: freeswitch/trunk/src/switch_core_session.c
==============================================================================
--- freeswitch/trunk/src/switch_core_session.c	(original)
+++ freeswitch/trunk/src/switch_core_session.c	Fri Jan  9 14:34:01 2009
@@ -110,11 +110,12 @@
 		switch_hash_this(hi, NULL, NULL, &val);
 		if (val) {
 			session = (switch_core_session_t *) val;
-			switch_core_session_read_lock(session);
-			if (session->endpoint_interface == endpoint_interface) {
-				switch_channel_hangup(switch_core_session_get_channel(session), cause);
+			if (switch_core_session_read_lock(session) == SWITCH_STATUS_SUCCESS) {
+				if (session->endpoint_interface == endpoint_interface) {
+					switch_channel_hangup(switch_core_session_get_channel(session), cause);
+				}
+				switch_core_session_rwunlock(session);
 			}
-			switch_core_session_rwunlock(session);
 		}
 	}
 	switch_mutex_unlock(runtime.throttle_mutex);
@@ -132,9 +133,10 @@
 		switch_hash_this(hi, NULL, NULL, &val);
 		if (val) {
 			session = (switch_core_session_t *) val;
-			switch_core_session_read_lock(session);
-			switch_channel_hangup(switch_core_session_get_channel(session), cause);
-			switch_core_session_rwunlock(session);
+			if (switch_core_session_read_lock(session) == SWITCH_STATUS_SUCCESS) {
+				switch_channel_hangup(switch_core_session_get_channel(session), cause);
+				switch_core_session_rwunlock(session);
+			}
 		}
 	}
 	switch_mutex_unlock(runtime.throttle_mutex);
@@ -744,13 +746,14 @@
 	return x;
 }
 
-SWITCH_DECLARE(void) switch_core_session_reset(switch_core_session_t *session, switch_bool_t flush_dtmf)
+SWITCH_DECLARE(void) switch_core_session_reset(switch_core_session_t *session, switch_bool_t flush_dtmf, switch_bool_t reset_read_codec)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 	switch_size_t has;
 
-
-	switch_core_session_set_read_codec(session, NULL);
+	if (reset_read_codec) {
+		switch_core_session_set_read_codec(session, NULL);
+	}
 
 	/* clear resamplers */
 	switch_mutex_lock(session->resample_mutex);
@@ -824,7 +827,7 @@
 					  switch_channel_get_name((*session)->channel), switch_channel_state_name(switch_channel_get_state((*session)->channel)));
 
 
-	switch_core_session_reset(*session, TRUE);
+	switch_core_session_reset(*session, TRUE, SWITCH_TRUE);
 	
 	switch_core_media_bug_remove_all(*session);
 	switch_ivr_deactivate_unicast(*session);

Modified: freeswitch/trunk/src/switch_core_state_machine.c
==============================================================================
--- freeswitch/trunk/src/switch_core_state_machine.c	(original)
+++ freeswitch/trunk/src/switch_core_state_machine.c	Fri Jan  9 14:34:01 2009
@@ -185,7 +185,7 @@
 {
 	switch_assert(session != NULL);
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Standard PARK\n", switch_channel_get_name(session->channel));
-	switch_core_session_reset(session, SWITCH_TRUE);
+	switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 	switch_ivr_park(session, NULL);
 }
 

Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c	(original)
+++ freeswitch/trunk/src/switch_ivr.c	Fri Jan  9 14:34:01 2009
@@ -1163,7 +1163,7 @@
 	max_forwards = switch_core_session_sprintf(session, "%d", forwardval);
 	switch_channel_set_variable(channel, SWITCH_MAX_FORWARDS_VARIABLE, max_forwards);
 
-	switch_core_session_reset(session, SWITCH_TRUE);
+	switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 	switch_channel_clear_flag(channel, CF_ORIGINATING);
 
 	/* clear all state handlers */

Modified: freeswitch/trunk/src/switch_ivr_async.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_async.c	(original)
+++ freeswitch/trunk/src/switch_ivr_async.c	Fri Jan  9 14:34:01 2009
@@ -371,7 +371,7 @@
 							  read_codec->implementation->actual_samples_per_second,
 							  SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) {
 		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 		return SWITCH_STATUS_GENERR;
 	}
 
@@ -794,7 +794,7 @@
 		switch_core_session_rwunlock(tsession);
 		status = SWITCH_STATUS_SUCCESS;
 
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 	}
 
 	return status;
@@ -842,6 +842,7 @@
 
 	fh->channels = channels;
 	fh->samplerate = read_codec->implementation->actual_samples_per_second;
+	fh->pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
 
 	if (switch_core_file_open(fh,
 							  file,
@@ -850,7 +851,7 @@
 							  SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error opening %s\n", file);
 		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 		return SWITCH_STATUS_GENERR;
 	}
 
@@ -1678,7 +1679,11 @@
 	switch_thread_cond_create(&sth->cond, sth->pool);
 	switch_mutex_init(&sth->mutex, SWITCH_MUTEX_NESTED, sth->pool);
 
-	switch_core_session_read_lock(sth->session);
+	if (switch_core_session_read_lock(sth->session) != SWITCH_STATUS_SUCCESS) {
+		sth->ready = 0;
+		return NULL;
+	}
+
 	switch_mutex_lock(sth->mutex);
 
 	sth->ready = 1;

Modified: freeswitch/trunk/src/switch_ivr_bridge.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_bridge.c	(original)
+++ freeswitch/trunk/src/switch_ivr_bridge.c	Fri Jan  9 14:34:01 2009
@@ -430,7 +430,7 @@
 
   end:
 
-	switch_core_session_reset(session_a, SWITCH_TRUE);
+	switch_core_session_reset(session_a, SWITCH_TRUE, SWITCH_TRUE);
 	switch_channel_set_variable(chan_a, SWITCH_BRIDGE_VARIABLE, NULL);
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "BRIDGE THREAD DONE [%s]\n", switch_channel_get_name(chan_a));
 	if (!inner_bridge) {
@@ -451,7 +451,7 @@
 		switch_channel_set_private(channel, "_bridge_", NULL);
 		if (bd->session == session && *bd->b_uuid) {
 			audio_bridge_thread(NULL, (void *) bd);
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 		} else {
 			switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
 		}
@@ -581,7 +581,7 @@
 
 		switch_channel_wait_for_state(channel, other_channel, CS_SOFT_EXECUTE);
 
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 
 
 		ready_a = switch_channel_ready(channel);

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Fri Jan  9 14:34:01 2009
@@ -501,9 +501,9 @@
 				}
 
 				olen = mlen;
-				if (ringback.fh->resampler && ringback.fh->resampler->rfactor > 1) {
-					olen = (switch_size_t) (olen * ringback.fh->resampler->rfactor);
-				}
+				//if (ringback.fh->resampler && ringback.fh->resampler->rfactor > 1) {
+				//olen = (switch_size_t) (olen * ringback.fh->resampler->rfactor);
+				//}
 				switch_core_file_read(ringback.fh, write_frame.data, &olen);
 
 				if (olen == 0) {
@@ -547,7 +547,7 @@
 		switch_buffer_destroy(&ringback.audio_buffer);
 	}
 
-	switch_core_session_reset(session, SWITCH_TRUE);
+	switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 
 	if (write_codec.implementation) {
 		switch_core_codec_destroy(&write_codec);
@@ -1128,7 +1128,10 @@
 					continue;
 				}
 
-				switch_core_session_read_lock(new_session);
+				if (switch_core_session_read_lock(new_session) != SWITCH_STATUS_SUCCESS) {
+					status = SWITCH_STATUS_FALSE;
+					goto done;
+				}
 				pool = NULL;
 
 				caller_profiles[i] = new_profile;
@@ -1473,9 +1476,10 @@
 							}
 
 							olen = mlen;
-							if (ringback.fh->resampler && ringback.fh->resampler->rfactor > 1) {
-								olen = (switch_size_t) (olen * ringback.fh->resampler->rfactor);
-							}
+							
+							//if (ringback.fh->resampler && ringback.fh->resampler->rfactor > 1) {
+							//olen = (switch_size_t) (olen * ringback.fh->resampler->rfactor);
+							//}
 							
 							switch_core_file_read(ringback.fh, write_frame.data, &olen);
 
@@ -1527,7 +1531,7 @@
 
 			if (session && (ringback_data || !(switch_channel_test_flag(caller_channel, CF_PROXY_MODE) &&
 											   switch_channel_test_flag(caller_channel, CF_PROXY_MEDIA)))) {
-				switch_core_session_reset(session, SWITCH_FALSE);
+				switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
 			}
 
 			for (i = 0; i < and_argc; i++) {
@@ -1716,7 +1720,7 @@
 			}
 
 			if (session) {
-				switch_core_session_reset(session, SWITCH_FALSE);
+				switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
 			}
 
 			if (write_codec.implementation) {

Modified: freeswitch/trunk/src/switch_ivr_play_say.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_play_say.c	(original)
+++ freeswitch/trunk/src/switch_ivr_play_say.c	Fri Jan  9 14:34:01 2009
@@ -402,7 +402,7 @@
 							  read_codec->implementation->actual_samples_per_second,
 							  SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) {
 		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 		return SWITCH_STATUS_GENERR;
 	}
 
@@ -460,7 +460,7 @@
 						  "Raw Codec Activation Failed %s@%uhz %u channels %dms\n", codec_name, fh->samplerate,
 						  fh->channels, read_codec->implementation->microseconds_per_packet / 1000);
 		switch_core_file_close(fh);
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 		return SWITCH_STATUS_GENERR;
 	}
 
@@ -580,7 +580,7 @@
 	}
 
 	switch_core_file_close(fh);
-	switch_core_session_reset(session, SWITCH_TRUE);
+	switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 	return status;
 }
 
@@ -853,7 +853,7 @@
 							  read_codec->implementation->number_of_channels,
 							  read_codec->implementation->actual_samples_per_second,
 							  SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) {
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 		status = SWITCH_STATUS_NOTFOUND;
 		goto end;
 	}
@@ -910,7 +910,7 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Setup buffer failed\n");
 
 			switch_core_file_close(fh);
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 
 			status = SWITCH_STATUS_GENERR;
 			goto end;
@@ -937,7 +937,7 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
 							  "Raw Codec Activation Failed %s@%uhz %u channels %dms\n", codec_name, fh->samplerate, fh->channels, interval);
 			switch_core_file_close(fh);
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 			status = SWITCH_STATUS_GENERR;
 			goto end;
 		}
@@ -953,7 +953,7 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Setup timer failed!\n");
 			switch_core_codec_destroy(&codec);
 			switch_core_file_close(fh);
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 			status = SWITCH_STATUS_GENERR;
 			goto end;
 		}
@@ -1238,7 +1238,7 @@
   end:
 	switch_safe_free(abuf);
 
-	switch_core_session_reset(session, SWITCH_FALSE);
+	switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
 	return status;
 }
 
@@ -1275,7 +1275,7 @@
 								  read_codec->implementation->number_of_channels,
 								  read_codec->implementation->actual_samples_per_second,
 								  SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) {
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 			return SWITCH_STATUS_NOTFOUND;
 		}
 		switch_zmalloc(abuf, SWITCH_RECOMMENDED_BUFFER_SIZE);
@@ -1362,7 +1362,7 @@
 		}
 	}
 
-	switch_core_session_reset(session, SWITCH_FALSE);
+	switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
 	switch_core_codec_destroy(&raw_codec);
 
  end:
@@ -1835,7 +1835,7 @@
 
 	timer_name = switch_channel_get_variable(channel, "timer_name");
 
-	switch_core_session_reset(session, SWITCH_FALSE);
+	switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
 	read_codec = switch_core_session_get_read_codec(session);
 
 	rate = read_codec->implementation->actual_samples_per_second;
@@ -1846,7 +1846,7 @@
 		if (switch_core_speech_open(sh, tts_name, voice_name, (uint32_t) rate, interval,
 									&flags, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid TTS module!\n");
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 			if (cache_obj) {
 				switch_channel_set_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME, NULL);
 			}
@@ -1872,7 +1872,7 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed %s@%uhz 1 channel %dms\n", codec_name, rate, interval);
 			flags = 0;
 			switch_core_speech_close(sh, &flags);
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 			if (cache_obj) {
 				switch_channel_set_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME, NULL);
 			}
@@ -1889,7 +1889,7 @@
 				switch_core_codec_destroy(write_frame.codec);
 				flags = 0;
 				switch_core_speech_close(sh, &flags);
-				switch_core_session_reset(session, SWITCH_TRUE);
+				switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 				if (cache_obj) {
 					switch_channel_set_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME, NULL);
 				}
@@ -1918,7 +1918,7 @@
 		}
 	}
 
-	switch_core_session_reset(session, SWITCH_FALSE);
+	switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
 	return status;
 }
 


From anthm at freeswitch.org  Fri Jan  9 14:09:49 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 09 Jan 2009 16:09:49 -0600
Subject: [Freeswitch-svn] [commit] r11105 -
	freeswitch/trunk/libs/libg722_1/src
Message-ID: 

Author: anthm
Date: Fri Jan  9 16:09:49 2009
New Revision: 11105

Log:
make error more clear about missing trunk_type param in openzap.conf (and auto tolerate the err) and fix printf metas

Modified:
   freeswitch/trunk/libs/libg722_1/src/dct4.h

Modified: freeswitch/trunk/libs/libg722_1/src/dct4.h
==============================================================================
--- freeswitch/trunk/libs/libg722_1/src/dct4.h	(original)
+++ freeswitch/trunk/libs/libg722_1/src/dct4.h	Fri Jan  9 16:09:49 2009
@@ -1,7 +1,7 @@
 static const float max_dct_core_a[] =
 {
-     5.572937315437795e-02,
-     5.435713103213160e-02,
+     5.572937315437796e-02,
+     5.435713103213161e-02,
      5.164643594289910e-02,
      4.766403419605858e-02,
      4.250798573945089e-02,
@@ -10,95 +10,95 @@
      2.139265421578210e-02,
      1.304999256534943e-02,
      4.385996787515619e-03,
-     5.435713103213160e-02,
+     5.435713103213161e-02,
      4.250798573945089e-02,
      2.139265421578210e-02,
     -4.385996787515612e-03,
     -2.920855772127336e-02,
     -4.766403419605858e-02,
     -5.572937315437795e-02,
-    -5.164643594289911e-02,
-    -3.630524959802151e-02,
-    -1.304999256534941e-02,
+    -5.164643594289910e-02,
+    -3.630524959802149e-02,
+    -1.304999256534943e-02,
      5.164643594289910e-02,
      2.139265421578210e-02,
     -2.139265421578209e-02,
     -5.164643594289910e-02,
-    -5.164643594289911e-02,
-    -2.139265421578213e-02,
-     2.139265421578211e-02,
-     5.164643594289909e-02,
+    -5.164643594289910e-02,
+    -2.139265421578210e-02,
+     2.139265421578208e-02,
      5.164643594289910e-02,
-     2.139265421578213e-02,
+     5.164643594289911e-02,
+     2.139265421578211e-02,
      4.766403419605858e-02,
     -4.385996787515612e-03,
     -5.164643594289910e-02,
     -4.250798573945090e-02,
-     1.304999256534939e-02,
-     5.435713103213161e-02,
-     3.630524959802152e-02,
-    -2.139265421578210e-02,
+     1.304999256534941e-02,
+     5.435713103213160e-02,
+     3.630524959802150e-02,
+    -2.139265421578208e-02,
     -5.572937315437795e-02,
-    -2.920855772127336e-02,
+    -2.920855772127339e-02,
      4.250798573945089e-02,
     -2.920855772127336e-02,
-    -5.164643594289911e-02,
-     1.304999256534939e-02,
-     5.572937315437795e-02,
-     4.385996787515657e-03,
-    -5.435713103213161e-02,
-    -2.139265421578214e-02,
-     4.766403419605858e-02,
-     3.630524959802153e-02,
+    -5.164643594289910e-02,
+     1.304999256534941e-02,
+     5.572937315437796e-02,
+     4.385996787515633e-03,
+    -5.435713103213160e-02,
+    -2.139265421578212e-02,
+     4.766403419605857e-02,
+     3.630524959802151e-02,
      3.630524959802148e-02,
     -4.766403419605858e-02,
-    -2.139265421578213e-02,
-     5.435713103213161e-02,
-     4.385996787515657e-03,
-    -5.572937315437795e-02,
-     1.304999256534937e-02,
-     5.164643594289910e-02,
-    -2.920855772127332e-02,
-    -4.250798573945090e-02,
+    -2.139265421578210e-02,
+     5.435713103213160e-02,
+     4.385996787515633e-03,
+    -5.572937315437796e-02,
+     1.304999256534940e-02,
+     5.164643594289911e-02,
+    -2.920855772127334e-02,
+    -4.250798573945092e-02,
      2.920855772127337e-02,
     -5.572937315437795e-02,
-     2.139265421578211e-02,
-     3.630524959802152e-02,
-    -5.435713103213161e-02,
-     1.304999256534937e-02,
-     4.250798573945089e-02,
-    -5.164643594289908e-02,
-     4.385996787515504e-03,
-     4.766403419605861e-02,
+     2.139265421578208e-02,
+     3.630524959802150e-02,
+    -5.435713103213160e-02,
+     1.304999256534940e-02,
+     4.250798573945092e-02,
+    -5.164643594289909e-02,
+     4.385996787515578e-03,
+     4.766403419605860e-02,
      2.139265421578210e-02,
-    -5.164643594289911e-02,
-     5.164643594289909e-02,
-    -2.139265421578210e-02,
-    -2.139265421578214e-02,
+    -5.164643594289910e-02,
      5.164643594289910e-02,
-    -5.164643594289908e-02,
-     2.139265421578208e-02,
-     2.139265421578216e-02,
-    -5.164643594289915e-02,
+    -2.139265421578208e-02,
+    -2.139265421578212e-02,
+     5.164643594289911e-02,
+    -5.164643594289909e-02,
+     2.139265421578206e-02,
+     2.139265421578214e-02,
+    -5.164643594289912e-02,
      1.304999256534943e-02,
-    -3.630524959802151e-02,
-     5.164643594289910e-02,
+    -3.630524959802149e-02,
+     5.164643594289911e-02,
     -5.572937315437795e-02,
-     4.766403419605858e-02,
-    -2.920855772127332e-02,
-     4.385996787515504e-03,
-     2.139265421578216e-02,
-    -4.250798573945092e-02,
-     5.435713103213160e-02,
+     4.766403419605857e-02,
+    -2.920855772127334e-02,
+     4.385996787515578e-03,
+     2.139265421578214e-02,
+    -4.250798573945093e-02,
+     5.435713103213162e-02,
      4.385996787515619e-03,
-    -1.304999256534941e-02,
-     2.139265421578213e-02,
-    -2.920855772127336e-02,
-     3.630524959802153e-02,
-    -4.250798573945090e-02,
-     4.766403419605861e-02,
-    -5.164643594289915e-02,
-     5.435713103213160e-02,
+    -1.304999256534943e-02,
+     2.139265421578211e-02,
+    -2.920855772127339e-02,
+     3.630524959802151e-02,
+    -4.250798573945092e-02,
+     4.766403419605860e-02,
+    -5.164643594289912e-02,
+     5.435713103213162e-02,
     -5.572937315437796e-02
 };
 
@@ -106,10 +106,10 @@
 {
      7.881323533747238e-02,
      7.687259191733195e-02,
-     7.303909015868119e-02,
-     6.740712359748102e-02,
+     7.303909015868121e-02,
+     6.740712359748104e-02,
      6.011536994189358e-02,
-     5.134337636686234e-02,
+     5.134337636686235e-02,
      4.130713846678219e-02,
      3.025378172711701e-02,
      1.845547647478522e-02,
@@ -117,92 +117,92 @@
      7.687259191733195e-02,
      6.011536994189358e-02,
      3.025378172711701e-02,
-    -6.202736141429404e-03,
+    -6.202736141429405e-03,
     -4.130713846678218e-02,
     -6.740712359748102e-02,
     -7.881323533747238e-02,
     -7.303909015868121e-02,
-    -5.134337636686238e-02,
-    -1.845547647478519e-02,
-     7.303909015868119e-02,
+    -5.134337636686236e-02,
+    -1.845547647478523e-02,
+     7.303909015868121e-02,
      3.025378172711701e-02,
-    -3.025378172711701e-02,
+    -3.025378172711700e-02,
     -7.303909015868119e-02,
     -7.303909015868121e-02,
-    -3.025378172711705e-02,
-     3.025378172711703e-02,
-     7.303909015868118e-02,
+    -3.025378172711702e-02,
+     3.025378172711700e-02,
      7.303909015868119e-02,
-     3.025378172711706e-02,
-     6.740712359748102e-02,
-    -6.202736141429404e-03,
+     7.303909015868121e-02,
+     3.025378172711703e-02,
+     6.740712359748104e-02,
+    -6.202736141429405e-03,
     -7.303909015868119e-02,
     -6.011536994189359e-02,
-     1.845547647478516e-02,
-     7.687259191733196e-02,
-     5.134337636686239e-02,
-    -3.025378172711702e-02,
+     1.845547647478520e-02,
+     7.687259191733195e-02,
+     5.134337636686236e-02,
+    -3.025378172711699e-02,
     -7.881323533747238e-02,
-    -4.130713846678218e-02,
+    -4.130713846678221e-02,
      6.011536994189358e-02,
     -4.130713846678218e-02,
     -7.303909015868121e-02,
-     1.845547647478516e-02,
+     1.845547647478520e-02,
      7.881323533747238e-02,
-     6.202736141429469e-03,
-    -7.687259191733196e-02,
-    -3.025378172711707e-02,
-     6.740712359748102e-02,
-     5.134337636686240e-02,
-     5.134337636686234e-02,
+     6.202736141429434e-03,
+    -7.687259191733195e-02,
+    -3.025378172711704e-02,
+     6.740712359748101e-02,
+     5.134337636686238e-02,
+     5.134337636686235e-02,
     -6.740712359748102e-02,
-    -3.025378172711705e-02,
-     7.687259191733196e-02,
-     6.202736141429469e-03,
-    -7.881323533747238e-02,
-     1.845547647478515e-02,
-     7.303909015868119e-02,
-    -4.130713846678212e-02,
-    -6.011536994189359e-02,
+    -3.025378172711702e-02,
+     7.687259191733195e-02,
+     6.202736141429434e-03,
+    -7.881323533747239e-02,
+     1.845547647478518e-02,
+     7.303909015868122e-02,
+    -4.130713846678215e-02,
+    -6.011536994189361e-02,
      4.130713846678219e-02,
     -7.881323533747238e-02,
-     3.025378172711703e-02,
-     5.134337636686239e-02,
-    -7.687259191733196e-02,
-     1.845547647478515e-02,
-     6.011536994189358e-02,
+     3.025378172711700e-02,
+     5.134337636686236e-02,
+    -7.687259191733195e-02,
+     1.845547647478518e-02,
+     6.011536994189360e-02,
     -7.303909015868118e-02,
-     6.202736141429252e-03,
-     6.740712359748108e-02,
+     6.202736141429356e-03,
+     6.740712359748106e-02,
      3.025378172711701e-02,
     -7.303909015868121e-02,
-     7.303909015868118e-02,
-    -3.025378172711702e-02,
-    -3.025378172711707e-02,
      7.303909015868119e-02,
+    -3.025378172711699e-02,
+    -3.025378172711704e-02,
+     7.303909015868122e-02,
     -7.303909015868118e-02,
-     3.025378172711699e-02,
-     3.025378172711710e-02,
-    -7.303909015868128e-02,
+     3.025378172711696e-02,
+     3.025378172711706e-02,
+    -7.303909015868124e-02,
      1.845547647478522e-02,
-    -5.134337636686238e-02,
-     7.303909015868119e-02,
+    -5.134337636686236e-02,
+     7.303909015868121e-02,
     -7.881323533747238e-02,
-     6.740712359748102e-02,
-    -4.130713846678212e-02,
-     6.202736141429252e-03,
-     3.025378172711710e-02,
-    -6.011536994189360e-02,
-     7.687259191733195e-02,
-     6.202736141429415e-03,
-    -1.845547647478519e-02,
+     6.740712359748101e-02,
+    -4.130713846678215e-02,
+     6.202736141429356e-03,
      3.025378172711706e-02,
-    -4.130713846678218e-02,
-     5.134337636686240e-02,
-    -6.011536994189359e-02,
-     6.740712359748108e-02,
-    -7.303909015868128e-02,
-     7.687259191733195e-02,
+    -6.011536994189362e-02,
+     7.687259191733196e-02,
+     6.202736141429415e-03,
+    -1.845547647478523e-02,
+     3.025378172711703e-02,
+    -4.130713846678221e-02,
+     5.134337636686238e-02,
+    -6.011536994189361e-02,
+     6.740712359748106e-02,
+    -7.303909015868124e-02,
+     7.687259191733196e-02,
     -7.881323533747239e-02
 };
 
@@ -280,21 +280,21 @@
     {9.039892931234433e-01, -4.275550934302821e-01},
     {8.954205553686970e-01, -4.452213258854682e-01},
     {8.865066159447464e-01, -4.627159170443501e-01},
-    {8.772509113449243e-01, -4.800321224090111e-01},
-    {8.676570098195440e-01, -4.971632662526544e-01},
+    {8.772509113449243e-01, -4.800321224090112e-01},
+    {8.676570098195441e-01, -4.971632662526543e-01},
     {8.577286100002721e-01, -5.141027441932217e-01},
-    {8.474695394742344e-01, -5.308440257395095e-01},
-    {8.368837533084094e-01, -5.473806568087964e-01},
+    {8.474695394742344e-01, -5.308440257395094e-01},
+    {8.368837533084094e-01, -5.473806568087966e-01},
     {8.259753325248732e-01, -5.637062622150167e-01},
-    {8.147484825274894e-01, -5.798145481265136e-01},
+    {8.147484825274894e-01, -5.798145481265137e-01},
     {8.032075314806449e-01, -5.956993044924334e-01},
     {7.913569286406602e-01, -6.113544074368165e-01},
-    {7.792012426405167e-01, -6.267738216194696e-01},
-    {7.667451597285615e-01, -6.419516025627030e-01},
-    {7.539934819618694e-01, -6.568818989430414e-01},
+    {7.792012426405167e-01, -6.267738216194695e-01},
+    {7.667451597285615e-01, -6.419516025627031e-01},
+    {7.539934819618695e-01, -6.568818989430413e-01},
     {7.409511253549591e-01, -6.715589548470183e-01},
-    {7.276231179845748e-01, -6.859771119901928e-01},
-    {7.140145980512683e-01, -7.001308118985236e-01}
+    {7.276231179845749e-01, -6.859771119901927e-01},
+    {7.140145980512682e-01, -7.001308118985236e-01}
 };
 
 static const cos_msin_t cos_msin_80[80] =
@@ -325,59 +325,59 @@
     {9.735041230957107e-01, -2.286694608286194e-01},
     {9.712122877993118e-01, -2.382156418617946e-01},
     {9.688268450411880e-01, -2.477388631755984e-01},
-    {9.663480247352773e-01, -2.572382069021397e-01},
+    {9.663480247352773e-01, -2.572382069021396e-01},
     {9.637760657954398e-01, -2.667127574748984e-01},
     {9.611112161124317e-01, -2.761616017169707e-01},
     {9.583537325300114e-01, -2.855838289290823e-01},
     {9.555038808201862e-01, -2.949785309773635e-01},
-    {9.525619356575953e-01, -3.043448023808773e-01},
+    {9.525619356575953e-01, -3.043448023808774e-01},
     {9.495281805930367e-01, -3.136817403988915e-01},
-    {9.464029080261377e-01, -3.229884451178863e-01},
-    {9.431864191771733e-01, -3.322640195382908e-01},
+    {9.464029080261377e-01, -3.229884451178864e-01},
+    {9.431864191771733e-01, -3.322640195382907e-01},
     {9.398790240580331e-01, -3.415075696609363e-01},
     {9.364810414423427e-01, -3.507182045732232e-01},
-    {9.329927988347390e-01, -3.598950365349881e-01},
+    {9.329927988347388e-01, -3.598950365349881e-01},
     {9.294146324393044e-01, -3.690371810640665e-01},
     {9.257468871271640e-01, -3.781437570215405e-01},
-    {9.219899164032445e-01, -3.872138866966656e-01},
+    {9.219899164032446e-01, -3.872138866966656e-01},
     {9.181440823722039e-01, -3.962466958914656e-01},
     {9.142097557035307e-01, -4.052413140049899e-01},
-    {9.101873155958178e-01, -4.141968741172237e-01},
+    {9.101873155958177e-01, -4.141968741172238e-01},
     {9.060771497402148e-01, -4.231125130726441e-01},
     {9.018796542830616e-01, -4.319873715634118e-01},
     {8.975952337877069e-01, -4.408205942121939e-01},
-    {8.932243011955153e-01, -4.496113296546065e-01},
+    {8.932243011955153e-01, -4.496113296546066e-01},
     {8.887672777860675e-01, -4.583587306212713e-01},
     {8.842245931365562e-01, -4.670619540194765e-01},
-    {8.795966850803829e-01, -4.757201610144369e-01},
+    {8.795966850803829e-01, -4.757201610144368e-01},
     {8.748839996649583e-01, -4.843325171101412e-01},
     {8.700869911087115e-01, -4.928981922297840e-01},
-    {8.652061217573113e-01, -5.014163607957690e-01},
+    {8.652061217573112e-01, -5.014163607957690e-01},
     {8.602418620391045e-01, -5.098862018092806e-01},
     {8.551946904197751e-01, -5.183068989294132e-01},
-    {8.500650933562288e-01, -5.266776405518521e-01},
+    {8.500650933562289e-01, -5.266776405518521e-01},
     {8.448535652497071e-01, -5.349976198870972e-01},
     {8.395606083981356e-01, -5.432660350382236e-01},
     {8.341867329477124e-01, -5.514820890781694e-01},
     {8.287324568437381e-01, -5.596449901265460e-01},
     {8.231983057806959e-01, -5.677539514259605e-01},
-    {8.175848131515837e-01, -5.758081914178453e-01},
+    {8.175848131515837e-01, -5.758081914178452e-01},
     {8.118925199965048e-01, -5.838069338177863e-01},
     {8.061219749505210e-01, -5.917494076903429e-01},
     {8.002737341907743e-01, -5.996348475233523e-01},
-    {7.943483613828813e-01, -6.074624933017110e-01},
-    {7.883464276266063e-01, -6.152315905806268e-01},
+    {7.943483613828815e-01, -6.074624933017110e-01},
+    {7.883464276266062e-01, -6.152315905806268e-01},
     {7.822685114008164e-01, -6.229413905583340e-01},
-    {7.761151985077279e-01, -6.305911501482637e-01},
-    {7.698870820164444e-01, -6.381801320506653e-01},
-    {7.635847622057965e-01, -6.457076048236672e-01},
+    {7.761151985077279e-01, -6.305911501482638e-01},
+    {7.698870820164445e-01, -6.381801320506653e-01},
+    {7.635847622057965e-01, -6.457076048236673e-01},
     {7.572088465064846e-01, -6.531728429537768e-01},
     {7.507599494425343e-01, -6.605751269258050e-01},
     {7.442386925720670e-01, -6.679137432922161e-01},
     {7.376457044273930e-01, -6.751879847418903e-01},
     {7.309816204544317e-01, -6.823971501682968e-01},
-    {7.242470829514670e-01, -6.895405447370668e-01},
-    {7.174427410072399e-01, -6.966174799529642e-01},
+    {7.242470829514669e-01, -6.895405447370669e-01},
+    {7.174427410072399e-01, -6.966174799529641e-01},
     {7.105692504383896e-01, -7.036272737262429e-01}
 };
 
@@ -425,7 +425,7 @@
     {9.812611495231950e-01, -1.926825275846723e-01},
     {9.803035031058607e-01, -1.974969412380297e-01},
     {9.793222356232406e-01, -2.023065960711564e-01},
-    {9.783173707196277e-01, -2.071113761922186e-01},
+    {9.783173707196277e-01, -2.071113761922185e-01},
     {9.772889326079104e-01, -2.119111658268416e-01},
     {9.762369460689896e-01, -2.167058493209000e-01},
     {9.751614364511810e-01, -2.214953111433043e-01},
@@ -433,7 +433,7 @@
     {9.729399522055602e-01, -2.310581082806711e-01},
     {9.717940311058891e-01, -2.358312131736727e-01},
     {9.706246939823230e-01, -2.405986355566504e-01},
-    {9.694319690108180e-01, -2.453602605553894e-01},
+    {9.694319690108180e-01, -2.453602605553893e-01},
     {9.682158849308760e-01, -2.501159734353663e-01},
     {9.669764710448521e-01, -2.548656596045146e-01},
     {9.657137572172489e-01, -2.596092046159851e-01},
@@ -445,8 +445,8 @@
     {9.576499185369652e-01, -2.879351203416211e-01},
     {9.562249883902162e-01, -2.926324855140505e-01},
     {9.547770173660172e-01, -2.973227995119985e-01},
-    {9.533060403541939e-01, -3.020059493192281e-01},
-    {9.518120927989161e-01, -3.066818220921279e-01},
+    {9.533060403541939e-01, -3.020059493192280e-01},
+    {9.518120927989161e-01, -3.066818220921280e-01},
     {9.502952106978444e-01, -3.113503051624320e-01},
     {9.487554306012626e-01, -3.160112860399338e-01},
     {9.471927896111967e-01, -3.206646524151973e-01},
@@ -456,7 +456,7 @@
     {9.407143780171653e-01, -3.391997331835298e-01},
     {9.390380083377340e-01, -3.438133489222048e-01},
     {9.373390119125750e-01, -3.484186802494346e-01},
-    {9.356174296801376e-01, -3.530156161966958e-01},
+    {9.356174296801375e-01, -3.530156161966959e-01},
     {9.338733031230915e-01, -3.576040459977578e-01},
     {9.321066742673269e-01, -3.621838590913509e-01},
     {9.303175856809415e-01, -3.667549451238308e-01},
@@ -466,16 +466,16 @@
     {9.229375043106232e-01, -3.849498189853822e-01},
     {9.210367744973499e-01, -3.894756218603648e-01},
     {9.191138516900578e-01, -3.939920400610481e-01},
-    {9.171687822228516e-01, -3.984989647613298e-01},
-    {9.152016129634744e-01, -4.029962873638600e-01},
+    {9.171687822228515e-01, -3.984989647613298e-01},
+    {9.152016129634745e-01, -4.029962873638600e-01},
     {9.132123913121788e-01, -4.074838995026576e-01},
     {9.112011652005843e-01, -4.119616930457218e-01},
     {9.091679830905224e-01, -4.164295600976372e-01},
     {9.071128939728691e-01, -4.208873930021739e-01},
     {9.050359473663644e-01, -4.253350843448814e-01},
     {9.029371933164189e-01, -4.297725269556770e-01},
-    {9.008166823939081e-01, -4.341996139114278e-01},
-    {8.986744656939538e-01, -4.386162385385277e-01},
+    {9.008166823939080e-01, -4.341996139114278e-01},
+    {8.986744656939538e-01, -4.386162385385276e-01},
     {8.965105948346932e-01, -4.430222944154668e-01},
     {8.943251219560346e-01, -4.474176753753967e-01},
     {8.921180997184014e-01, -4.518022755086881e-01},
@@ -488,32 +488,32 @@
     {8.760700941954066e-01, -4.821837720791227e-01},
     {8.736926348985243e-01, -4.864783445581868e-01},
     {8.712941233961736e-01, -4.907611950177941e-01},
-    {8.688746174820854e-01, -4.950322202598127e-01},
-    {8.664341754558650e-01, -4.992913173710469e-01},
-    {8.639728561215868e-01, -5.035383837257176e-01},
+    {8.688746174820855e-01, -4.950322202598127e-01},
+    {8.664341754558649e-01, -4.992913173710469e-01},
+    {8.639728561215867e-01, -5.035383837257176e-01},
     {8.614907187863783e-01, -5.077733169879345e-01},
     {8.589878232589904e-01, -5.119960151141624e-01},
-    {8.564642298483565e-01, -5.162063763556797e-01},
+    {8.564642298483565e-01, -5.162063763556798e-01},
     {8.539199993621391e-01, -5.204042992610306e-01},
-    {8.513551931052652e-01, -5.245896826784689e-01},
+    {8.513551931052652e-01, -5.245896826784688e-01},
     {8.487698728784481e-01, -5.287624257583958e-01},
-    {8.461641009766995e-01, -5.329224279557898e-01},
+    {8.461641009766994e-01, -5.329224279557899e-01},
     {8.435379401878270e-01, -5.370695890326298e-01},
-    {8.408914537909229e-01, -5.412038090603096e-01},
-    {8.382247055548381e-01, -5.453249884220465e-01},
+    {8.408914537909230e-01, -5.412038090603096e-01},
+    {8.382247055548381e-01, -5.453249884220464e-01},
     {8.355377597366458e-01, -5.494330278152808e-01},
     {8.328306810800937e-01, -5.535278282540700e-01},
     {8.301035348140438e-01, -5.576092910714722e-01},
-    {8.273563866508998e-01, -5.616773179219247e-01},
-    {8.245893027850253e-01, -5.657318107836131e-01},
+    {8.273563866508998e-01, -5.616773179219245e-01},
+    {8.245893027850253e-01, -5.657318107836132e-01},
     {8.218023498911473e-01, -5.697726719608341e-01},
     {8.189955951227504e-01, -5.737998040863485e-01},
-    {8.161691061104588e-01, -5.778131101237274e-01},
-    {8.133229509604062e-01, -5.818124933696910e-01},
+    {8.161691061104588e-01, -5.778131101237273e-01},
+    {8.133229509604062e-01, -5.818124933696911e-01},
     {8.104571982525948e-01, -5.857978574564389e-01},
     {8.075719170392435e-01, -5.897691063539708e-01},
     {8.046671768431229e-01, -5.937261443724019e-01},
-    {8.017430476558816e-01, -5.976688761642677e-01},
+    {8.017430476558816e-01, -5.976688761642678e-01},
     {7.987995999363579e-01, -6.015972067268220e-01},
     {7.958369046088836e-01, -6.055110414043255e-01},
     {7.928550330615741e-01, -6.094102858903271e-01},
@@ -521,18 +521,18 @@
     {7.868340491684999e-01, -6.171646288220856e-01},
     {7.837950819023488e-01, -6.210195404217892e-01},
     {7.807372285720945e-01, -6.248594881423863e-01},
-    {7.776605628587479e-01, -6.286843794577813e-01},
+    {7.776605628587477e-01, -6.286843794577813e-01},
     {7.745651588966166e-01, -6.324941222046724e-01},
     {7.714510912715192e-01, -6.362886245847729e-01},
     {7.683184350189877e-01, -6.400677951670226e-01},
-    {7.651672656224590e-01, -6.438315428897914e-01},
+    {7.651672656224590e-01, -6.438315428897915e-01},
     {7.619976590114568e-01, -6.475797770630733e-01},
     {7.588096915597616e-01, -6.513124073706714e-01},
     {7.556034400835709e-01, -6.550293438723744e-01},
-    {7.523789818396478e-01, -6.587304970061237e-01},
+    {7.523789818396478e-01, -6.587304970061238e-01},
     {7.491363945234594e-01, -6.624157775901718e-01},
-    {7.458757562673048e-01, -6.660850968252301e-01},
-    {7.425971456384329e-01, -6.697383662966099e-01},
+    {7.458757562673048e-01, -6.660850968252300e-01},
+    {7.425971456384330e-01, -6.697383662966099e-01},
     {7.393006416371488e-01, -6.733754979763520e-01},
     {7.359863236949099e-01, -6.769964042253483e-01},
     {7.326542716724128e-01, -6.806009977954530e-01},
@@ -540,8 +540,8 @@
     {7.259372869640676e-01, -6.877608998738217e-01},
     {7.225525161284360e-01, -6.913160358594803e-01},
     {7.191503349090794e-01, -6.948545141251936e-01},
-    {7.157308252838186e-01, -6.983762494089729e-01},
-    {7.122940696480137e-01, -7.018811568522627e-01},
+    {7.157308252838187e-01, -6.983762494089728e-01},
+    {7.122940696480137e-01, -7.018811568522628e-01},
     {7.088401508125785e-01, -7.053691520019861e-01}
 };
 
@@ -562,7 +562,7 @@
     {9.995294175010931e-01, -3.067480317663663e-02},
     {9.994511197373437e-01, -3.312792259967294e-02},
     {9.993668013545645e-01, -3.558084246257342e-02},
-    {9.992764628606833e-01, -3.803354798913168e-02},
+    {9.992764628606832e-01, -3.803354798913168e-02},
     {9.991801047998923e-01, -4.048602440443251e-02},
     {9.990777277526454e-01, -4.293825693494082e-02},
     {9.989693323356542e-01, -4.539023080859068e-02},
@@ -572,27 +572,27 @@
     {9.984755805732948e-01, -5.519524434968993e-02},
     {9.983371038270131e-01, -5.764570341570704e-02},
     {9.981926131724506e-01, -6.009581522830464e-02},
-    {9.980421094800079e-01, -6.254556502819182e-02},
+    {9.980421094800079e-01, -6.254556502819184e-02},
     {9.978855936563085e-01, -6.499493805825848e-02},
     {9.977230666441916e-01, -6.744391956366405e-02},
     {9.975545294227081e-01, -6.989249479192657e-02},
-    {9.973799830071135e-01, -7.234064899301137e-02},
+    {9.973799830071135e-01, -7.234064899301139e-02},
     {9.971994284488623e-01, -7.478836741942015e-02},
-    {9.970128668356021e-01, -7.723563532627951e-02},
-    {9.968202992911657e-01, -7.968243797143013e-02},
+    {9.970128668356021e-01, -7.723563532627953e-02},
+    {9.968202992911657e-01, -7.968243797143011e-02},
     {9.966217269755658e-01, -8.212876061551522e-02},
-    {9.964171510849874e-01, -8.457458852206962e-02},
-    {9.962065728517802e-01, -8.701990695760831e-02},
+    {9.964171510849874e-01, -8.457458852206960e-02},
+    {9.962065728517802e-01, -8.701990695760832e-02},
     {9.959899935444517e-01, -8.946470119171543e-02},
     {9.957674144676598e-01, -9.190895649713272e-02},
     {9.955388369622040e-01, -9.435265814984850e-02},
     {9.953042624050182e-01, -9.679579142918618e-02},
-    {9.950636922091622e-01, -9.923834161789306e-02},
+    {9.950636922091622e-01, -9.923834161789305e-02},
     {9.948171278238128e-01, -1.016802940022289e-01},
     {9.945645707342554e-01, -1.041216338720546e-01},
     {9.943060224618753e-01, -1.065623465209208e-01},
     {9.940414845641478e-01, -1.090024172461564e-01},
-    {9.937709586346295e-01, -1.114418313489574e-01},
+    {9.937709586346295e-01, -1.114418313489575e-01},
     {9.934944463029486e-01, -1.138805741344751e-01},
     {9.932119492347945e-01, -1.163186309119048e-01},
     {9.929234691319088e-01, -1.187559869945741e-01},
@@ -615,20 +615,20 @@
     {9.871057265058446e-01, -1.600696245368518e-01},
     {9.867098838086088e-01, -1.624918619328416e-01},
     {9.863080972445987e-01, -1.649131204899699e-01},
-    {9.859003692341464e-01, -1.673333856227558e-01},
+    {9.859003692341464e-01, -1.673333856227557e-01},
     {9.854867022333751e-01, -1.697526427517024e-01},
     {9.850670987341841e-01, -1.721708773033852e-01},
     {9.846415612642334e-01, -1.745880747105397e-01},
     {9.842100923869290e-01, -1.770042204121487e-01},
     {9.837726947014075e-01, -1.794192998535309e-01},
-    {9.833293708425197e-01, -1.818332984864276e-01},
+    {9.833293708425197e-01, -1.818332984864275e-01},
     {9.828801234808157e-01, -1.842462017690910e-01},
     {9.824249553225278e-01, -1.866579951663718e-01},
     {9.819638691095552e-01, -1.890686641498062e-01},
     {9.814968676194470e-01, -1.914781941977041e-01},
     {9.810239536653852e-01, -1.938865707952361e-01},
-    {9.805451300961683e-01, -1.962937794345212e-01},
-    {9.800603997961936e-01, -1.986998056147138e-01},
+    {9.805451300961683e-01, -1.962937794345211e-01},
+    {9.800603997961936e-01, -1.986998056147139e-01},
     {9.795697656854405e-01, -2.011046348420919e-01},
     {9.790732307194523e-01, -2.035082526301433e-01},
     {9.785707978893183e-01, -2.059106444996538e-01},
@@ -646,14 +646,14 @@
     {9.720827077212779e-01, -2.346384651954331e-01},
     {9.715038909862518e-01, -2.370236059943672e-01},
     {9.709192219842182e-01, -2.394073189807704e-01},
-    {9.703287042371799e-01, -2.417895897953334e-01},
-    {9.697323413023714e-01, -2.441704040874346e-01},
+    {9.703287042371798e-01, -2.417895897953334e-01},
+    {9.697323413023714e-01, -2.441704040874345e-01},
     {9.691301367722388e-01, -2.465497475152259e-01},
-    {9.685220942744174e-01, -2.489276057457201e-01},
+    {9.685220942744173e-01, -2.489276057457201e-01},
     {9.679082174717095e-01, -2.513039644548766e-01},
     {9.672885100620635e-01, -2.536788093276874e-01},
     {9.666629757785506e-01, -2.560521260582643e-01},
-    {9.660316183893426e-01, -2.584239003499241e-01},
+    {9.660316183893426e-01, -2.584239003499242e-01},
     {9.653944416976894e-01, -2.607941179152755e-01},
     {9.647514495418958e-01, -2.631627644763044e-01},
     {9.641026457952987e-01, -2.655298257644607e-01},
@@ -663,41 +663,41 @@
     {9.614493935924158e-01, -2.749819331533909e-01},
     {9.607715912163253e-01, -2.773408543861692e-01},
     {9.600880012238011e-01, -2.796981049383182e-01},
-    {9.593986277327383e-01, -2.820536706099365e-01},
-    {9.587034748958716e-01, -2.844075372112719e-01},
+    {9.593986277327383e-01, -2.820536706099364e-01},
+    {9.587034748958716e-01, -2.844075372112718e-01},
     {9.580025469007496e-01, -2.867596905628075e-01},
     {9.572958479697103e-01, -2.891101164953470e-01},
-    {9.565833823598556e-01, -2.914588008500998e-01},
+    {9.565833823598557e-01, -2.914588008500998e-01},
     {9.558651543630251e-01, -2.938057294787664e-01},
-    {9.551411683057708e-01, -2.961508882436238e-01},
+    {9.551411683057707e-01, -2.961508882436238e-01},
     {9.544114285493304e-01, -2.984942630176104e-01},
     {9.536759394896021e-01, -3.008358396844112e-01},
-    {9.529347055571170e-01, -3.031756041385431e-01},
-    {9.521877312170133e-01, -3.055135422854393e-01},
+    {9.529347055571171e-01, -3.031756041385431e-01},
+    {9.521877312170133e-01, -3.055135422854394e-01},
     {9.514350209690083e-01, -3.078496400415349e-01},
     {9.506765793473728e-01, -3.101838833343510e-01},
     {9.499124109209025e-01, -3.125162581025802e-01},
-    {9.491425202928909e-01, -3.148467502961706e-01},
+    {9.491425202928909e-01, -3.148467502961707e-01},
     {9.483669121011018e-01, -3.171753458764112e-01},
     {9.475855910177411e-01, -3.195020308160157e-01},
     {9.467985617494289e-01, -3.218267910992075e-01},
     {9.460058290371707e-01, -3.241496127218040e-01},
     {9.452073976563291e-01, -3.264704816913009e-01},
-    {9.444032724165956e-01, -3.287893840269567e-01},
+    {9.444032724165956e-01, -3.287893840269566e-01},
     {9.435934581619604e-01, -3.311063057598764e-01},
-    {9.427779597706842e-01, -3.334212329330963e-01},
+    {9.427779597706842e-01, -3.334212329330964e-01},
     {9.419567821552687e-01, -3.357341516016679e-01},
     {9.411299302624264e-01, -3.380450478327413e-01},
-    {9.402974090730516e-01, -3.403539077056500e-01},
+    {9.402974090730517e-01, -3.403539077056500e-01},
     {9.394592236021899e-01, -3.426607173119944e-01},
     {9.386153788990080e-01, -3.449654627557252e-01},
     {9.377658800467635e-01, -3.472681301532278e-01},
     {9.369107321627741e-01, -3.495687056334055e-01},
-    {9.360499403983871e-01, -3.518671753377630e-01},
+    {9.360499403983871e-01, -3.518671753377631e-01},
     {9.351835099389476e-01, -3.541635254204903e-01},
     {9.343114460037683e-01, -3.564577420485457e-01},
     {9.334337538460973e-01, -3.587498114017393e-01},
-    {9.325504387530866e-01, -3.610397196728160e-01},
+    {9.325504387530866e-01, -3.610397196728161e-01},
     {9.316615060457607e-01, -3.633274530675394e-01},
     {9.307669610789837e-01, -3.656129978047739e-01},
     {9.298668092414279e-01, -3.678963401165684e-01},
@@ -705,15 +705,15 @@
     {9.280497066775131e-01, -3.724563624584523e-01},
     {9.271327668972442e-01, -3.747330150193071e-01},
     {9.262102421383114e-01, -3.770074102164183e-01},
-    {9.252821379579349e-01, -3.792795343489985e-01},
+    {9.252821379579349e-01, -3.792795343489986e-01},
     {9.243484599469451e-01, -3.815493737299417e-01},
     {9.234092137297489e-01, -3.838169146859046e-01},
     {9.224644049642953e-01, -3.860821435573893e-01},
-    {9.215140393420420e-01, -3.883450466988262e-01},
+    {9.215140393420419e-01, -3.883450466988263e-01},
     {9.205581225879205e-01, -3.906056104786556e-01},
     {9.195966604603021e-01, -3.928638212794095e-01},
     {9.186296587509630e-01, -3.951196654977946e-01},
-    {9.176571232850496e-01, -3.973731295447735e-01},
+    {9.176571232850496e-01, -3.973731295447736e-01},
     {9.166790599210427e-01, -3.996241998456468e-01},
     {9.156954745507232e-01, -4.018728628401348e-01},
     {9.147063730991362e-01, -4.041191049824593e-01},
@@ -721,7 +721,7 @@
     {9.127116458184452e-01, -4.086042726005015e-01},
     {9.117060320054299e-01, -4.108431710579039e-01},
     {9.106949261432513e-01, -4.130795946266749e-01},
-    {9.096783343227359e-01, -4.153135298347656e-01},
+    {9.096783343227359e-01, -4.153135298347657e-01},
     {9.086562626677570e-01, -4.175449632251170e-01},
     {9.076287173351980e-01, -4.197738813557405e-01},
     {9.065957045149153e-01, -4.220002707997997e-01},
@@ -731,12 +731,12 @@
     {9.024091033056408e-01, -4.308802737084970e-01},
     {9.013488470460220e-01, -4.330938188531520e-01},
     {9.002831611281501e-01, -4.353047550729321e-01},
-    {8.992120519716374e-01, -4.375130690493225e-01},
+    {8.992120519716374e-01, -4.375130690493224e-01},
     {8.981355260287659e-01, -4.397187474796043e-01},
-    {8.970535897844474e-01, -4.419217770769352e-01},
+    {8.970535897844474e-01, -4.419217770769353e-01},
     {8.959662497561852e-01, -4.441221445704292e-01},
     {8.948735124940346e-01, -4.463198367052365e-01},
-    {8.937753845805634e-01, -4.485148402426236e-01},
+    {8.937753845805634e-01, -4.485148402426235e-01},
     {8.926718726308122e-01, -4.507071419600526e-01},
     {8.915629832922548e-01, -4.528967286512617e-01},
     {8.904487232447579e-01, -4.550835871263438e-01},
@@ -748,55 +748,55 @@
     {8.836507562159172e-01, -4.681467088841250e-01},
     {8.824990909546231e-01, -4.703141019194129e-01},
     {8.813421095846011e-01, -4.724786618176158e-01},
-    {8.801798190754208e-01, -4.746403755395864e-01},
+    {8.801798190754208e-01, -4.746403755395863e-01},
     {8.790122264286335e-01, -4.767992300633221e-01},
     {8.778393386777302e-01, -4.789552123840445e-01},
     {8.766611628880995e-01, -4.811083095142767e-01},
-    {8.754777061569843e-01, -4.832585084839222e-01},
+    {8.754777061569843e-01, -4.832585084839221e-01},
     {8.742889756134398e-01, -4.854057963403425e-01},
-    {8.730949784182901e-01, -4.875501601484360e-01},
+    {8.730949784182901e-01, -4.875501601484359e-01},
     {8.718957217640854e-01, -4.896915869907146e-01},
     {8.706912128750582e-01, -4.918300639673830e-01},
     {8.694814590070804e-01, -4.939655781964152e-01},
     {8.682664674476190e-01, -4.960981168136327e-01},
-    {8.670462455156926e-01, -4.982276669727819e-01},
+    {8.670462455156926e-01, -4.982276669727818e-01},
     {8.658208005618273e-01, -5.003542158456112e-01},
-    {8.645901399680118e-01, -5.024777506219491e-01},
-    {8.633542711476541e-01, -5.045982585097801e-01},
-    {8.621132015455357e-01, -5.067157267353229e-01},
+    {8.645901399680119e-01, -5.024777506219491e-01},
+    {8.633542711476542e-01, -5.045982585097801e-01},
+    {8.621132015455357e-01, -5.067157267353231e-01},
     {8.608669386377673e-01, -5.088301425431070e-01},
-    {8.596154899317437e-01, -5.109414931960489e-01},
+    {8.596154899317437e-01, -5.109414931960490e-01},
     {8.583588629660989e-01, -5.130497659755299e-01},
     {8.570970653106597e-01, -5.151549481814718e-01},
     {8.558301045664012e-01, -5.172570271324139e-01},
-    {8.545579883654005e-01, -5.193559901655896e-01},
-    {8.532807243707908e-01, -5.214518246370019e-01},
+    {8.545579883654005e-01, -5.193559901655895e-01},
+    {8.532807243707908e-01, -5.214518246370018e-01},
     {8.519983202767152e-01, -5.235445179215000e-01},
-    {8.507107838082801e-01, -5.256340574128560e-01},
+    {8.507107838082801e-01, -5.256340574128561e-01},
     {8.494181227215095e-01, -5.277204305238395e-01},
     {8.481203448032972e-01, -5.298036246862946e-01},
     {8.468174578713608e-01, -5.318836273512150e-01},
     {8.455094697741939e-01, -5.339604259888194e-01},
     {8.441963883910193e-01, -5.360340080886280e-01},
-    {8.428782216317413e-01, -5.381043611595366e-01},
+    {8.428782216317414e-01, -5.381043611595366e-01},
     {8.415549774368984e-01, -5.401714727298929e-01},
     {8.402266637776148e-01, -5.422353303475707e-01},
     {8.388932886555529e-01, -5.442959215800456e-01},
     {8.375548601028652e-01, -5.463532340144698e-01},
     {8.362113861821453e-01, -5.484072552577465e-01},
-    {8.348628749863800e-01, -5.504579729366048e-01},
+    {8.348628749863801e-01, -5.504579729366048e-01},
     {8.335093346389004e-01, -5.525053746976744e-01},
     {8.321507732933324e-01, -5.545494482075597e-01},
     {8.307871991335484e-01, -5.565901811529141e-01},
-    {8.294186203736174e-01, -5.586275612405148e-01},
+    {8.294186203736174e-01, -5.586275612405149e-01},
     {8.280450452577558e-01, -5.606615761973360e-01},
     {8.266664820602777e-01, -5.626922137706231e-01},
-    {8.252829390855451e-01, -5.647194617279668e-01},
-    {8.238944246679176e-01, -5.667433078573766e-01},
+    {8.252829390855451e-01, -5.647194617279667e-01},
+    {8.238944246679176e-01, -5.667433078573765e-01},
     {8.225009471717026e-01, -5.687637399673542e-01},
     {8.211025149911046e-01, -5.707807458869673e-01},
     {8.196991365501750e-01, -5.727943134659226e-01},
-    {8.182908203027607e-01, -5.748044305746390e-01},
+    {8.182908203027607e-01, -5.748044305746391e-01},
     {8.168775747324537e-01, -5.768110851043212e-01},
     {8.154594083525400e-01, -5.788142649670318e-01},
     {8.140363297059484e-01, -5.808139580957645e-01},
@@ -805,11 +805,11 @@
     {8.097377060389469e-01, -5.867919967235272e-01},
     {8.082950643459751e-01, -5.887776226674516e-01},
     {8.068475535437993e-01, -5.907597018588742e-01},
-    {8.053951823521167e-01, -5.927382223578977e-01},
-    {8.039379595199031e-01, -5.947131722460625e-01},
+    {8.053951823521167e-01, -5.927382223578979e-01},
+    {8.039379595199030e-01, -5.947131722460625e-01},
     {8.024758938253601e-01, -5.966845396264172e-01},
     {8.010089940758625e-01, -5.986523126235920e-01},
-    {7.995372691079050e-01, -6.006164793838690e-01},
+    {7.995372691079050e-01, -6.006164793838689e-01},
     {7.980607277870492e-01, -6.025770280752539e-01},
     {7.965793790078698e-01, -6.045339468875478e-01},
     {7.950932316939014e-01, -6.064872240324176e-01},
@@ -818,17 +818,17 @@
     {7.906060882118751e-01, -6.123250879086344e-01},
     {7.891008365714072e-01, -6.142636809402826e-01},
     {7.875908314463325e-01, -6.161985736933142e-01},
-    {7.860760819328091e-01, -6.181297545120795e-01},
-    {7.845565971555752e-01, -6.200572117632891e-01},
-    {7.830323862678940e-01, -6.219809338360844e-01},
+    {7.860760819328091e-01, -6.181297545120794e-01},
+    {7.845565971555752e-01, -6.200572117632892e-01},
+    {7.830323862678940e-01, -6.219809338360845e-01},
     {7.815034584514979e-01, -6.239009091421072e-01},
     {7.799698229165344e-01, -6.258171261155689e-01},
     {7.784314889015095e-01, -6.277295732133219e-01},
     {7.768884656732324e-01, -6.296382389149270e-01},
-    {7.753407625267603e-01, -6.315431117227246e-01},
-    {7.737883887853415e-01, -6.334441801619028e-01},
-    {7.722313538003597e-01, -6.353414327805670e-01},
-    {7.706696669512773e-01, -6.372348581498091e-01},
+    {7.753407625267604e-01, -6.315431117227246e-01},
+    {7.737883887853415e-01, -6.334441801619027e-01},
+    {7.722313538003596e-01, -6.353414327805671e-01},
+    {7.706696669512773e-01, -6.372348581498092e-01},
     {7.691033376455797e-01, -6.391244448637757e-01},
     {7.675323753187178e-01, -6.410101815397373e-01},
     {7.659567894340514e-01, -6.428920568181569e-01},
@@ -836,21 +836,21 @@
     {7.627917849839481e-01, -6.466441778605931e-01},
     {7.612023854842618e-01, -6.485144010221124e-01},
     {7.596084005581580e-01, -6.503807175812309e-01},
-    {7.580098398076831e-01, -6.522431162953969e-01},
+    {7.580098398076830e-01, -6.522431162953969e-01},
     {7.564067128624476e-01, -6.541015859456593e-01},
     {7.547990293795690e-01, -6.559561153367355e-01},
     {7.531867990436125e-01, -6.578066932970786e-01},
-    {7.515700315665336e-01, -6.596533086789452e-01},
+    {7.515700315665336e-01, -6.596533086789451e-01},
     {7.499487366876190e-01, -6.614959503584616e-01},
     {7.483229241734281e-01, -6.633346072356920e-01},
-    {7.466926038177344e-01, -6.651692682347043e-01},
-    {7.450577854414661e-01, -6.669999223036375e-01},
+    {7.466926038177343e-01, -6.651692682347043e-01},
+    {7.450577854414659e-01, -6.669999223036375e-01},
     {7.434184788926470e-01, -6.688265584147679e-01},
     {7.417746940463380e-01, -6.706491655645758e-01},
     {7.401264408045760e-01, -6.724677327738116e-01},
     {7.384737290963160e-01, -6.742822490875620e-01},
     {7.368165688773699e-01, -6.760927035753159e-01},
-    {7.351549701303474e-01, -6.778990853310308e-01},
+    {7.351549701303474e-01, -6.778990853310307e-01},
     {7.334889428645953e-01, -6.797013834731973e-01},
     {7.318184971161379e-01, -6.814995871449060e-01},
     {7.301436429476156e-01, -6.832936855139119e-01},
@@ -858,15 +858,15 @@
     {7.267807497336585e-01, -6.868695231385515e-01},
     {7.250927309460417e-01, -6.886512408536060e-01},
     {7.234003442538740e-01, -6.904288101849290e-01},
-    {7.217035998519666e-01, -6.922022204245754e-01},
+    {7.217035998519667e-01, -6.922022204245752e-01},
     {7.200025079613817e-01, -6.939714608896540e-01},
     {7.182970788293696e-01, -6.957365209223924e-01},
-    {7.165873227293083e-01, -6.974973898902004e-01},
+    {7.165873227293083e-01, -6.974973898902005e-01},
     {7.148732499606411e-01, -6.992540571857347e-01},
     {7.131548708488146e-01, -7.010065122269625e-01},
     {7.114321957452164e-01, -7.027547444572253e-01},
-    {7.097052350271130e-01, -7.044987433453024e-01},
-    {7.079739990975870e-01, -7.062384983854745e-01}
+    {7.097052350271131e-01, -7.044987433453024e-01},
+    {7.079739990975871e-01, -7.062384983854745e-01}
 };
 
 static const cos_msin_t cos_msin_640[640] =
@@ -897,53 +897,53 @@
     {9.995841895075704e-01, -2.883484153751236e-02},
     {9.995480511642375e-01, -3.006149387130874e-02},
     {9.995104075196035e-01, -3.128810093303862e-02},
-    {9.994712586303591e-01, -3.251466087545394e-02},
-    {9.994306045554617e-01, -3.374117185137758e-02},
+    {9.994712586303591e-01, -3.251466087545393e-02},
+    {9.994306045554617e-01, -3.374117185137759e-02},
     {9.993884453561358e-01, -3.496763201370620e-02},
     {9.993447810958722e-01, -3.619403951541294e-02},
-    {9.992996118404286e-01, -3.742039250955028e-02},
-    {9.992529376578290e-01, -3.864668914925275e-02},
+    {9.992996118404286e-01, -3.742039250955027e-02},
+    {9.992529376578290e-01, -3.864668914925276e-02},
     {9.992047586183639e-01, -3.987292758773981e-02},
     {9.991550747945901e-01, -4.109910597831850e-02},
-    {9.991038862613305e-01, -4.232522247438635e-02},
-    {9.990511930956741e-01, -4.355127522943403e-02},
+    {9.991038862613305e-01, -4.232522247438634e-02},
+    {9.990511930956741e-01, -4.355127522943404e-02},
     {9.989969953769761e-01, -4.477726239704831e-02},
-    {9.989412931868569e-01, -4.600318213091462e-02},
-    {9.988840866092031e-01, -4.722903258482004e-02},
-    {9.988253757301669e-01, -4.845481191265589e-02},
+    {9.989412931868569e-01, -4.600318213091463e-02},
+    {9.988840866092031e-01, -4.722903258482003e-02},
+    {9.988253757301669e-01, -4.845481191265590e-02},
     {9.987651606381658e-01, -4.968051826842070e-02},
     {9.987034414238826e-01, -5.090614980622282e-02},
     {9.986402181802653e-01, -5.213170468028332e-02},
     {9.985754910025268e-01, -5.335718104493870e-02},
     {9.985092599881454e-01, -5.458257705464371e-02},
     {9.984415252368637e-01, -5.580789086397409e-02},
-    {9.983722868506889e-01, -5.703312062762941e-02},
-    {9.983015449338929e-01, -5.825826450043575e-02},
-    {9.982292995930115e-01, -5.948332063734863e-02},
+    {9.983722868506889e-01, -5.703312062762940e-02},
+    {9.983015449338929e-01, -5.825826450043576e-02},
+    {9.982292995930115e-01, -5.948332063734862e-02},
     {9.981555509368452e-01, -6.070828719345561e-02},
     {9.980802990764579e-01, -6.193316232397920e-02},
     {9.980035441251777e-01, -6.315794418427960e-02},
     {9.979252861985960e-01, -6.438263092985747e-02},
     {9.978455254145679e-01, -6.560722071635666e-02},
     {9.977642618932119e-01, -6.683171169956714e-02},
-    {9.976814957569091e-01, -6.805610203542757e-02},
+    {9.976814957569091e-01, -6.805610203542758e-02},
     {9.975972271303040e-01, -6.928038988002828e-02},
     {9.975114561403035e-01, -7.050457338961386e-02},
-    {9.974241829160772e-01, -7.172865072058610e-02},
+    {9.974241829160772e-01, -7.172865072058608e-02},
     {9.973354075890570e-01, -7.295262002950662e-02},
-    {9.972451302929369e-01, -7.417647947309980e-02},
-    {9.971533511636731e-01, -7.540022720825540e-02},
+    {9.972451302929369e-01, -7.417647947309979e-02},
+    {9.971533511636731e-01, -7.540022720825541e-02},
     {9.970600703394830e-01, -7.662386139203149e-02},
     {9.969652879608459e-01, -7.784738018165707e-02},
     {9.968690041705026e-01, -7.907078173453497e-02},
-    {9.967712191134545e-01, -8.029406420824454e-02},
+    {9.967712191134545e-01, -8.029406420824456e-02},
     {9.966719329369642e-01, -8.151722576054453e-02},
     {9.965711457905548e-01, -8.274026454937569e-02},
     {9.964688578260101e-01, -8.396317873286374e-02},
     {9.963650691973739e-01, -8.518596646932200e-02},
     {9.962597800609497e-01, -8.640862591725426e-02},
-    {9.961529905753015e-01, -8.763115523535747e-02},
-    {9.960447009012520e-01, -8.885355258252460e-02},
+    {9.961529905753015e-01, -8.763115523535749e-02},
+    {9.960447009012520e-01, -8.885355258252459e-02},
     {9.959349112018836e-01, -9.007581611784729e-02},
     {9.958236216425376e-01, -9.129794400061877e-02},
     {9.957108323908140e-01, -9.251993439033654e-02},
@@ -977,7 +977,7 @@
     {9.919446097115779e-01, -1.266723776683190e-01},
     {9.917884124303086e-01, -1.278895811587802e-01},
     {9.916307215336136e-01, -1.291065920498434e-01},
-    {9.914715372589731e-01, -1.303234085087122e-01},
+    {9.914715372589731e-01, -1.303234085087123e-01},
     {9.913108598461154e-01, -1.315400287028831e-01},
     {9.911486895370180e-01, -1.327564508001479e-01},
     {9.909850265759061e-01, -1.339726729685971e-01},
@@ -986,9 +986,9 @@
     {9.904850842564571e-01, -1.376201215864860e-01},
     {9.903154531744962e-01, -1.388355257266385e-01},
     {9.901443306953601e-01, -1.400507207829983e-01},
-    {9.899717170767560e-01, -1.412657049255036e-01},
+    {9.899717170767559e-01, -1.412657049255036e-01},
     {9.897976125786367e-01, -1.424804763244102e-01},
-    {9.896220174632009e-01, -1.436950331502945e-01},
+    {9.896220174632009e-01, -1.436950331502944e-01},
     {9.894449319948911e-01, -1.449093735740556e-01},
     {9.892663564403953e-01, -1.461234957669190e-01},
     {9.890862910686448e-01, -1.473373979004386e-01},
@@ -999,7 +999,7 @@
     {9.881636265207087e-01, -1.534035437056180e-01},
     {9.879746280186079e-01, -1.546160871044581e-01},
     {9.877841416445722e-01, -1.558283976542652e-01},
-    {9.875921676854704e-01, -1.570404735293217e-01},
+    {9.875921676854704e-01, -1.570404735293216e-01},
     {9.873987064304122e-01, -1.582523129042630e-01},
     {9.872037581707463e-01, -1.594639139540810e-01},
     {9.870073232000616e-01, -1.606752748541265e-01},
@@ -1044,12 +1044,12 @@
     {9.781901046127370e-01, -2.077116251867540e-01},
     {9.779344675944409e-01, -2.089118883423760e-01},
     {9.776773578245099e-01, -2.101118368804696e-01},
-    {9.774187756901469e-01, -2.113114689939341e-01},
+    {9.774187756901469e-01, -2.113114689939340e-01},
     {9.771587215807717e-01, -2.125107828761450e-01},
     {9.768971958880210e-01, -2.137097767209575e-01},
     {9.766341990057480e-01, -2.149084487227085e-01},
     {9.763697313300211e-01, -2.161067970762195e-01},
-    {9.761037932591240e-01, -2.173048199767996e-01},
+    {9.761037932591240e-01, -2.173048199767997e-01},
     {9.758363851935545e-01, -2.185025156202481e-01},
     {9.755675075360243e-01, -2.196998822028567e-01},
     {9.752971606914583e-01, -2.208969179214133e-01},
@@ -1077,7 +1077,7 @@
     {9.689786733147769e-01, -2.471443518697825e-01},
     {9.686746520086348e-01, -2.483332812088429e-01},
     {9.683691718959728e-01, -2.495218365624697e-01},
-    {9.680622334368384e-01, -2.507100161407201e-01},
+    {9.680622334368384e-01, -2.507100161407200e-01},
     {9.677538370934755e-01, -2.518978181542170e-01},
     {9.674439833303232e-01, -2.530852408141520e-01},
     {9.671326726140158e-01, -2.542722823322882e-01},
@@ -1095,17 +1095,17 @@
     {9.632834745199362e-01, -2.684864013628985e-01},
     {9.629532668736839e-01, -2.696683255729151e-01},
     {9.626216090372143e-01, -2.708498436673069e-01},
-    {9.622885015099981e-01, -2.720309538667289e-01},
+    {9.622885015099981e-01, -2.720309538667290e-01},
     {9.619539447936892e-01, -2.732116543924507e-01},
     {9.616179393921240e-01, -2.743919434663584e-01},
     {9.612804858113206e-01, -2.755718193109581e-01},
     {9.609415845594780e-01, -2.767512801493782e-01},
-    {9.606012361469752e-01, -2.779303242053718e-01},
+    {9.606012361469752e-01, -2.779303242053717e-01},
     {9.602594410863711e-01, -2.791089497033199e-01},
     {9.599161998924024e-01, -2.802871548682339e-01},
-    {9.595715130819845e-01, -2.814649379257579e-01},
+    {9.595715130819845e-01, -2.814649379257580e-01},
     {9.592253811742094e-01, -2.826422971021723e-01},
-    {9.588778046903456e-01, -2.838192306243950e-01},
+    {9.588778046903456e-01, -2.838192306243951e-01},
     {9.585287841538368e-01, -2.849957367199857e-01},
     {9.581783200903017e-01, -2.861718136171474e-01},
     {9.578264130275329e-01, -2.873474595447295e-01},
@@ -1116,12 +1116,12 @@
     {9.560452513499964e-01, -2.932191626942586e-01},
     {9.556846974971080e-01, -2.943921856467341e-01},
     {9.553227044003364e-01, -2.955647652498983e-01},
-    {9.549592726048367e-01, -2.967368997378675e-01},
-    {9.545944026579306e-01, -2.979085873454284e-01},
+    {9.549592726048367e-01, -2.967368997378674e-01},
+    {9.545944026579306e-01, -2.979085873454283e-01},
     {9.542280951091057e-01, -2.990798263080405e-01},
     {9.538603505100144e-01, -3.002506148618392e-01},
-    {9.534911694144735e-01, -3.014209512436381e-01},
-    {9.531205523784633e-01, -3.025908336909318e-01},
+    {9.534911694144735e-01, -3.014209512436382e-01},
+    {9.531205523784632e-01, -3.025908336909318e-01},
     {9.527484999601259e-01, -3.037602604418984e-01},
     {9.523750127197659e-01, -3.049292297354024e-01},
     {9.520000912198481e-01, -3.060977398109971e-01},
@@ -1135,7 +1135,7 @@
     {9.489491540846281e-01, -3.154290775468691e-01},
     {9.485613499157303e-01, -3.165933755561658e-01},
     {9.481721172305820e-01, -3.177571967815606e-01},
-    {9.477814566153607e-01, -3.189205394703594e-01},
+    {9.477814566153607e-01, -3.189205394703595e-01},
     {9.473893686583942e-01, -3.200834018705895e-01},
     {9.469958539501598e-01, -3.212457822310009e-01},
     {9.466009130832835e-01, -3.224076788010699e-01},
@@ -1152,23 +1152,23 @@
     {9.421626087164466e-01, -3.351561109939961e-01},
     {9.417506009515846e-01, -3.363120658069366e-01},
     {9.413371749273369e-01, -3.374675141399838e-01},
-    {9.409223312663159e-01, -3.386224542530535e-01},
+    {9.409223312663159e-01, -3.386224542530536e-01},
     {9.405060705932683e-01, -3.397768844068269e-01},
     {9.400883935350755e-01, -3.409308028627527e-01},
     {9.396693007207513e-01, -3.420842078830508e-01},
-    {9.392487927814420e-01, -3.432370977307140e-01},
-    {9.388268703504251e-01, -3.443894706695110e-01},
-    {9.384035340631081e-01, -3.455413249639891e-01},
+    {9.392487927814421e-01, -3.432370977307140e-01},
+    {9.388268703504252e-01, -3.443894706695110e-01},
+    {9.384035340631082e-01, -3.455413249639890e-01},
     {9.379787845570278e-01, -3.466926588794764e-01},
-    {9.375526224718491e-01, -3.478434706820849e-01},
+    {9.375526224718490e-01, -3.478434706820849e-01},
     {9.371250484493645e-01, -3.489937586387129e-01},
     {9.366960631334929e-01, -3.501435210170474e-01},
     {9.362656671702783e-01, -3.512927560855671e-01},
     {9.358338612078891e-01, -3.524414621135448e-01},
-    {9.354006458966176e-01, -3.535896373710499e-01},
+    {9.354006458966176e-01, -3.535896373710498e-01},
     {9.349660218888781e-01, -3.547372801289512e-01},
-    {9.345299898392064e-01, -3.558843886589194e-01},
-    {9.340925504042590e-01, -3.570309612334300e-01},
+    {9.345299898392063e-01, -3.558843886589195e-01},
+    {9.340925504042589e-01, -3.570309612334300e-01},
     {9.336537042428116e-01, -3.581769961257653e-01},
     {9.332134520157588e-01, -3.593224916100174e-01},
     {9.327717943861125e-01, -3.604674459610909e-01},
@@ -1183,19 +1183,19 @@
     {9.287337430464239e-01, -3.707473998924054e-01},
     {9.282780683216301e-01, -3.718868482120106e-01},
     {9.278209956268415e-01, -3.730257364767432e-01},
-    {9.273625256504011e-01, -3.741640629714579e-01},
+    {9.273625256504011e-01, -3.741640629714580e-01},
     {9.269026590827565e-01, -3.753018259818559e-01},
     {9.264413966164585e-01, -3.764390237944864e-01},
     {9.259787389461599e-01, -3.775756546967501e-01},
     {9.255146867686148e-01, -3.787117169769015e-01},
     {9.250492407826776e-01, -3.798472089240512e-01},
-    {9.245824016893013e-01, -3.809821288281689e-01},
-    {9.241141701915373e-01, -3.821164749800858e-01},
+    {9.245824016893013e-01, -3.809821288281688e-01},
+    {9.241141701915373e-01, -3.821164749800857e-01},
     {9.236445469945337e-01, -3.832502456714969e-01},
     {9.231735328055345e-01, -3.843834391949643e-01},
     {9.227011283338786e-01, -3.855160538439188e-01},
     {9.222273342909986e-01, -3.866480879126634e-01},
-    {9.217521513904198e-01, -3.877795396963752e-01},
+    {9.217521513904198e-01, -3.877795396963751e-01},
     {9.212755803477590e-01, -3.889104074911081e-01},
     {9.207976218807237e-01, -3.900406895937958e-01},
     {9.203182767091106e-01, -3.911703843022539e-01},
@@ -1204,10 +1204,10 @@
     {9.188719281960914e-01, -3.945559270536903e-01},
     {9.183870434458861e-01, -3.956832551811160e-01},
     {9.179007756213905e-01, -3.968099874167103e-01},
-    {9.174131254549152e-01, -3.979361220636348e-01},
+    {9.174131254549152e-01, -3.979361220636347e-01},
     {9.169240936808526e-01, -3.990616574259509e-01},
-    {9.164336810356757e-01, -4.001865918086229e-01},
-    {9.159418882579371e-01, -4.013109235175197e-01},
+    {9.164336810356758e-01, -4.001865918086229e-01},
+    {9.159418882579371e-01, -4.013109235175198e-01},
     {9.154487160882678e-01, -4.024346508594184e-01},
     {9.149541652693762e-01, -4.035577721420057e-01},
     {9.144582365460469e-01, -4.046802856738814e-01},
@@ -1218,19 +1218,19 @@
     {9.119579505754890e-01, -4.102836779377824e-01},
     {9.114537701821365e-01, -4.114025094974132e-01},
     {9.109482171558779e-01, -4.125207214922996e-01},
-    {9.104412922580672e-01, -4.136383122384345e-01},
+    {9.104412922580672e-01, -4.136383122384346e-01},
     {9.099329962521239e-01, -4.147552800527466e-01},
     {9.094233299035327e-01, -4.158716232531024e-01},
-    {9.089122939798419e-01, -4.169873401583093e-01},
+    {9.089122939798419e-01, -4.169873401583092e-01},
     {9.083998892506623e-01, -4.181024290881177e-01},
-    {9.078861164876663e-01, -4.192168883632239e-01},
-    {9.073709764645862e-01, -4.203307163052724e-01},
+    {9.078861164876663e-01, -4.192168883632240e-01},
+    {9.073709764645862e-01, -4.203307163052725e-01},
     {9.068544699572136e-01, -4.214439112368585e-01},
     {9.063365977433983e-01, -4.225564714815306e-01},
     {9.058173606030460e-01, -4.236683953637931e-01},
     {9.052967593181188e-01, -4.247796812091088e-01},
     {9.047747946726327e-01, -4.258903273439013e-01},
-    {9.042514674526569e-01, -4.270003320955576e-01},
+    {9.042514674526569e-01, -4.270003320955575e-01},
     {9.037267784463131e-01, -4.281096937924305e-01},
     {9.032007284437731e-01, -4.292184107638414e-01},
     {9.026733182372588e-01, -4.303264813400826e-01},
@@ -1247,30 +1247,30 @@
     {8.967822611268210e-01, -4.424721190405857e-01},
     {8.962385910103452e-01, -4.435723029944398e-01},
     {8.956935711747483e-01, -4.446718189364220e-01},
-    {8.951472024408204e-01, -4.457706652106809e-01},
+    {8.951472024408204e-01, -4.457706652106810e-01},
     {8.945994856313827e-01, -4.468688401623742e-01},
-    {8.940504215712870e-01, -4.479663421376699e-01},
+    {8.940504215712870e-01, -4.479663421376700e-01},
     {8.935000110874138e-01, -4.490631694837502e-01},
     {8.929482550086714e-01, -4.501593205488127e-01},
-    {8.923951541659944e-01, -4.512547936820739e-01},
-    {8.918407093923427e-01, -4.523495872337709e-01},
-    {8.912849215227001e-01, -4.534436995551644e-01},
-    {8.907277913940732e-01, -4.545371289985410e-01},
+    {8.923951541659945e-01, -4.512547936820739e-01},
+    {8.918407093923427e-01, -4.523495872337708e-01},
+    {8.912849215227002e-01, -4.534436995551644e-01},
+    {8.907277913940732e-01, -4.545371289985411e-01},
     {8.901693198454897e-01, -4.556298739172159e-01},
     {8.896095077179980e-01, -4.567219326655349e-01},
     {8.890483558546646e-01, -4.578133035988772e-01},
     {8.884858651005743e-01, -4.589039850736579e-01},
     {8.879220363028281e-01, -4.599939754473306e-01},
-    {8.873568703105417e-01, -4.610832730783892e-01},
-    {8.867903679748451e-01, -4.621718763263714e-01},
-    {8.862225301488806e-01, -4.632597835518601e-01},
+    {8.873568703105418e-01, -4.610832730783892e-01},
+    {8.867903679748452e-01, -4.621718763263714e-01},
+    {8.862225301488806e-01, -4.632597835518602e-01},
     {8.856533576878016e-01, -4.643469931164871e-01},
     {8.850828514487716e-01, -4.654335033829341e-01},
     {8.845110122909626e-01, -4.665193127149364e-01},
     {8.839378410755541e-01, -4.676044194772847e-01},
     {8.833633386657316e-01, -4.686888220358279e-01},
-    {8.827875059266853e-01, -4.697725187574754e-01},
-    {8.822103437256089e-01, -4.708555080101994e-01},
+    {8.827875059266853e-01, -4.697725187574753e-01},
+    {8.822103437256089e-01, -4.708555080101993e-01},
     {8.816318529316984e-01, -4.719377881630376e-01},
     {8.810520344161502e-01, -4.730193575860958e-01},
     {8.804708890521608e-01, -4.741002146505500e-01},
@@ -1288,71 +1288,71 @@
     {8.733939710728648e-01, -4.870143440326701e-01},
     {8.727956570473698e-01, -4.880857927037520e-01},
     {8.721960286073888e-01, -4.891565063264507e-01},
-    {8.715950866559510e-01, -4.902264832882912e-01},
+    {8.715950866559511e-01, -4.902264832882912e-01},
     {8.709928320980644e-01, -4.912957219779071e-01},
-    {8.703892658407133e-01, -4.923642207850446e-01},
+    {8.703892658407133e-01, -4.923642207850445e-01},
     {8.697843887928577e-01, -4.934319781005636e-01},
-    {8.691782018654314e-01, -4.944989923164409e-01},
+    {8.691782018654314e-01, -4.944989923164410e-01},
     {8.685707059713409e-01, -4.955652618257725e-01},
     {8.679619020254642e-01, -4.966307850227757e-01},
-    {8.673517909446490e-01, -4.976955603027919e-01},
-    {8.667403736477115e-01, -4.987595860622885e-01},
-    {8.661276510554351e-01, -4.998228606988624e-01},
+    {8.673517909446490e-01, -4.976955603027918e-01},
+    {8.667403736477115e-01, -4.987595860622886e-01},
+    {8.661276510554352e-01, -4.998228606988623e-01},
     {8.655136240905691e-01, -5.008853826112407e-01},
-    {8.648982936778269e-01, -5.019471501992850e-01},
-    {8.642816607438848e-01, -5.030081618639924e-01},
-    {8.636637262173812e-01, -5.040684160074983e-01},
-    {8.630444910289141e-01, -5.051279110330795e-01},
-    {8.624239561110406e-01, -5.061866453451552e-01},
+    {8.648982936778268e-01, -5.019471501992850e-01},
+    {8.642816607438848e-01, -5.030081618639923e-01},
+    {8.636637262173812e-01, -5.040684160074984e-01},
+    {8.630444910289141e-01, -5.051279110330794e-01},
+    {8.624239561110405e-01, -5.061866453451552e-01},
     {8.618021223982749e-01, -5.072446173492910e-01},
     {8.611789908270876e-01, -5.083018254522002e-01},
-    {8.605545623359034e-01, -5.093582680617462e-01},
+    {8.605545623359034e-01, -5.093582680617461e-01},
     {8.599288378651004e-01, -5.104139435869457e-01},
-    {8.593018183570085e-01, -5.114688504379703e-01},
+    {8.593018183570084e-01, -5.114688504379704e-01},
     {8.586735047559073e-01, -5.125229870261497e-01},
     {8.580438980080262e-01, -5.135763517639729e-01},
-    {8.574129990615412e-01, -5.146289430650919e-01},
+    {8.574129990615412e-01, -5.146289430650918e-01},
     {8.567808088665750e-01, -5.156807593443229e-01},
     {8.561473283751945e-01, -5.167317990176499e-01},
     {8.555125585414098e-01, -5.177820605022260e-01},
-    {8.548765003211730e-01, -5.188315422163763e-01},
+    {8.548765003211730e-01, -5.188315422163764e-01},
     {8.542391546723761e-01, -5.198802425796005e-01},
     {8.536005225548502e-01, -5.209281600125748e-01},
-    {8.529606049303636e-01, -5.219752929371544e-01},
-    {8.523194027626210e-01, -5.230216397763758e-01},
+    {8.529606049303636e-01, -5.219752929371543e-01},
+    {8.523194027626210e-01, -5.230216397763759e-01},
     {8.516769170172609e-01, -5.240671989544601e-01},
     {8.510331486618554e-01, -5.251119688968137e-01},
-    {8.503880986659081e-01, -5.261559480300321e-01},
+    {8.503880986659081e-01, -5.261559480300320e-01},
     {8.497417680008525e-01, -5.271991347819013e-01},
     {8.490941576400509e-01, -5.282415275814013e-01},
     {8.484452685587929e-01, -5.292831248587072e-01},
     {8.477951017342936e-01, -5.303239250451923e-01},
     {8.471436581456926e-01, -5.313639265734305e-01},
     {8.464909387740521e-01, -5.324031278771979e-01},
-    {8.458369446023557e-01, -5.334415273914767e-01},
+    {8.458369446023557e-01, -5.334415273914765e-01},
     {8.451816766155068e-01, -5.344791235524554e-01},
     {8.445251358003272e-01, -5.355159147975332e-01},
     {8.438673231455553e-01, -5.365518995653215e-01},
-    {8.432082396418454e-01, -5.375870762956454e-01},
+    {8.432082396418454e-01, -5.375870762956455e-01},
     {8.425478862817651e-01, -5.386214434295480e-01},
     {8.418862640597948e-01, -5.396549994092906e-01},
     {8.412233739723254e-01, -5.406877426783570e-01},
     {8.405592170176576e-01, -5.417196716814542e-01},
     {8.398937941959995e-01, -5.427507848645159e-01},
     {8.392271065094661e-01, -5.437810806747042e-01},
-    {8.385591549620770e-01, -5.448105575604123e-01},
+    {8.385591549620769e-01, -5.448105575604124e-01},
     {8.378899405597550e-01, -5.458392139712668e-01},
-    {8.372194643103249e-01, -5.468670483581293e-01},
+    {8.372194643103249e-01, -5.468670483581294e-01},
     {8.365477272235120e-01, -5.478940591731002e-01},
-    {8.358747303109401e-01, -5.489202448695194e-01},
-    {8.352004745861303e-01, -5.499456039019702e-01},
+    {8.358747303109401e-01, -5.489202448695195e-01},
+    {8.352004745861303e-01, -5.499456039019701e-01},
     {8.345249610644997e-01, -5.509701347262801e-01},
-    {8.338481907633595e-01, -5.519938357995242e-01},
+    {8.338481907633594e-01, -5.519938357995243e-01},
     {8.331701647019132e-01, -5.530167055800275e-01},
     {8.324908839012561e-01, -5.540387425273663e-01},
-    {8.318103493843727e-01, -5.550599451023716e-01},
+    {8.318103493843728e-01, -5.550599451023716e-01},
     {8.311285621761358e-01, -5.560803117671306e-01},
-    {8.304455233033046e-01, -5.570998409849897e-01},
+    {8.304455233033046e-01, -5.570998409849895e-01},
     {8.297612337945230e-01, -5.581185312205561e-01},
     {8.290756946803191e-01, -5.591363809397010e-01},
     {8.283889069931020e-01, -5.601533886095610e-01},
@@ -1361,46 +1361,46 @@
     {8.263210628456635e-01, -5.631993440138341e-01},
     {8.256292912280727e-01, -5.642129681833185e-01},
     {8.249362762276903e-01, -5.652257426582692e-01},
-    {8.242420188881840e-01, -5.662376659134664e-01},
+    {8.242420188881842e-01, -5.662376659134664e-01},
     {8.235465202550933e-01, -5.672487364249718e-01},
-    {8.228497813758264e-01, -5.682589526701315e-01},
+    {8.228497813758263e-01, -5.682589526701315e-01},
     {8.221518032996592e-01, -5.692683131275782e-01},
-    {8.214525870777344e-01, -5.702768162772331e-01},
+    {8.214525870777344e-01, -5.702768162772333e-01},
     {8.207521337630588e-01, -5.712844606003090e-01},
-    {8.200504444105025e-01, -5.722912445793115e-01},
-    {8.193475200767969e-01, -5.732971666980422e-01},
+    {8.200504444105025e-01, -5.722912445793116e-01},
+    {8.193475200767970e-01, -5.732971666980422e-01},
     {8.186433618205335e-01, -5.743022254416005e-01},
-    {8.179379707021619e-01, -5.753064192963863e-01},
+    {8.179379707021619e-01, -5.753064192963862e-01},
     {8.172313477839882e-01, -5.763097467501014e-01},
     {8.165234941301740e-01, -5.773122062917532e-01},
     {8.158144108067338e-01, -5.783137964116556e-01},
     {8.151040988815345e-01, -5.793145156014319e-01},
     {8.143925594242929e-01, -5.803143623540171e-01},
     {8.136797935065747e-01, -5.813133351636602e-01},
-    {8.129658022017924e-01, -5.823114325259262e-01},
+    {8.129658022017924e-01, -5.823114325259261e-01},
     {8.122505865852039e-01, -5.833086529376983e-01},
     {8.115341477339112e-01, -5.843049948971807e-01},
-    {8.108164867268581e-01, -5.853004569039005e-01},
-    {8.100976046448293e-01, -5.862950374587097e-01},
-    {8.093775025704479e-01, -5.872887350637883e-01},
-    {8.086561815881750e-01, -5.882815482226452e-01},
+    {8.108164867268581e-01, -5.853004569039004e-01},
+    {8.100976046448293e-01, -5.862950374587098e-01},
+    {8.093775025704479e-01, -5.872887350637882e-01},
+    {8.086561815881750e-01, -5.882815482226453e-01},
     {8.079336427843067e-01, -5.892734754401222e-01},
     {8.072098872469734e-01, -5.902645152223945e-01},
-    {8.064849160661379e-01, -5.912546660769743e-01},
-    {8.057587303335938e-01, -5.922439265127122e-01},
+    {8.064849160661380e-01, -5.912546660769743e-01},
+    {8.057587303335939e-01, -5.922439265127122e-01},
     {8.050313311429637e-01, -5.932322950397998e-01},
     {8.043027195896973e-01, -5.942197701697721e-01},
     {8.035728967710708e-01, -5.952063504155093e-01},
     {8.028418637861839e-01, -5.961920342912395e-01},
-    {8.021096217359593e-01, -5.971768203125404e-01},
+    {8.021096217359593e-01, -5.971768203125405e-01},
     {8.013761717231402e-01, -5.981607069963423e-01},
     {8.006415148522891e-01, -5.991436928609294e-01},
-    {7.999056522297859e-01, -6.001257764259429e-01},
+    {7.999056522297858e-01, -6.001257764259429e-01},
     {7.991685849638264e-01, -6.011069562123827e-01},
-    {7.984303141644207e-01, -6.020872307426096e-01},
+    {7.984303141644207e-01, -6.020872307426097e-01},
     {7.976908409433912e-01, -6.030665985403482e-01},
     {7.969501664143711e-01, -6.040450581306880e-01},
-    {7.962082916928030e-01, -6.050226080400867e-01},
+    {7.962082916928030e-01, -6.050226080400866e-01},
     {7.954652178959369e-01, -6.059992467963715e-01},
     {7.947209461428283e-01, -6.069749729287426e-01},
     {7.939754775543372e-01, -6.079497849677736e-01},
@@ -1411,56 +1411,56 @@
     {7.902302214373100e-01, -6.128100824294097e-01},
     {7.894775954753960e-01, -6.137793791277018e-01},
     {7.887237805744907e-01, -6.147477514853411e-01},
-    {7.879687778698258e-01, -6.157151980439765e-01},
+    {7.879687778698258e-01, -6.157151980439766e-01},
     {7.872125884984216e-01, -6.166817173466510e-01},
     {7.864552135990858e-01, -6.176473079378039e-01},
     {7.856966543124112e-01, -6.186119683632733e-01},
     {7.849369117807745e-01, -6.195756971702979e-01},
-    {7.841759871483340e-01, -6.205384929075197e-01},
+    {7.841759871483340e-01, -6.205384929075196e-01},
     {7.834138815610288e-01, -6.215003541249855e-01},
     {7.826505961665757e-01, -6.224612793741500e-01},
     {7.818861321144691e-01, -6.234212672078768e-01},
-    {7.811204905559779e-01, -6.243803161804418e-01},
+    {7.811204905559779e-01, -6.243803161804419e-01},
     {7.803536726441443e-01, -6.253384248475345e-01},
     {7.795856795337824e-01, -6.262955917662607e-01},
     {7.788165123814760e-01, -6.272518154951441e-01},
     {7.780461723455767e-01, -6.282070945941292e-01},
     {7.772746605862029e-01, -6.291614276245828e-01},
     {7.765019782652373e-01, -6.301148131492967e-01},
-    {7.757281265463254e-01, -6.310672497324895e-01},
-    {7.749531065948739e-01, -6.320187359398091e-01},
+    {7.757281265463253e-01, -6.310672497324895e-01},
+    {7.749531065948739e-01, -6.320187359398090e-01},
     {7.741769195780490e-01, -6.329692703383341e-01},
     {7.733995666647743e-01, -6.339188514965771e-01},
     {7.726210490257291e-01, -6.348674779844861e-01},
-    {7.718413678333470e-01, -6.358151483734467e-01},
+    {7.718413678333470e-01, -6.358151483734465e-01},
     {7.710605242618138e-01, -6.367618612362842e-01},
     {7.702785194870657e-01, -6.377076151472665e-01},
     {7.694953546867879e-01, -6.386524086821050e-01},
-    {7.687110310404124e-01, -6.395962404179578e-01},
+    {7.687110310404124e-01, -6.395962404179579e-01},
     {7.679255497291163e-01, -6.405391089334316e-01},
     {7.671389119358204e-01, -6.414810128085832e-01},
     {7.663511188451869e-01, -6.424219506249224e-01},
     {7.655621716436182e-01, -6.433619209654138e-01},
     {7.647720715192542e-01, -6.443009224144792e-01},
     {7.639808196619715e-01, -6.452389535579994e-01},
-    {7.631884172633813e-01, -6.461760129833163e-01},
+    {7.631884172633813e-01, -6.461760129833164e-01},
     {7.623948655168271e-01, -6.471120992792355e-01},
-    {7.616001656173835e-01, -6.480472110360278e-01},
-    {7.608043187618542e-01, -6.489813468454321e-01},
-    {7.600073261487703e-01, -6.499145053006563e-01},
+    {7.616001656173835e-01, -6.480472110360279e-01},
+    {7.608043187618542e-01, -6.489813468454320e-01},
+    {7.600073261487702e-01, -6.499145053006563e-01},
     {7.592091889783881e-01, -6.508466849963809e-01},
     {7.584099084526877e-01, -6.517778845287601e-01},
     {7.576094857753715e-01, -6.527081024954242e-01},
     {7.568079221518612e-01, -6.536373374954818e-01},
-    {7.560052187892974e-01, -6.545655881295217e-01},
+    {7.560052187892973e-01, -6.545655881295217e-01},
     {7.552013768965365e-01, -6.554928529996153e-01},
-    {7.543963976841503e-01, -6.564191307093185e-01},
+    {7.543963976841502e-01, -6.564191307093186e-01},
     {7.535902823644226e-01, -6.573444198636738e-01},
     {7.527830321513488e-01, -6.582687190692122e-01},
-    {7.519746482606328e-01, -6.591920269339562e-01},
+    {7.519746482606329e-01, -6.591920269339561e-01},
     {7.511651319096865e-01, -6.601143420674205e-01},
-    {7.503544843176265e-01, -6.610356630806152e-01},
-    {7.495427067052737e-01, -6.619559885860479e-01},
+    {7.503544843176265e-01, -6.610356630806153e-01},
+    {7.495427067052738e-01, -6.619559885860479e-01},
     {7.487298002951505e-01, -6.628753171977246e-01},
     {7.479157663114792e-01, -6.637936475311532e-01},
     {7.471006059801801e-01, -6.647109782033448e-01},
@@ -1482,32 +1482,32 @@
     {7.339058643062745e-01, -6.792511923705841e-01},
     {7.330717452676171e-01, -6.801513186712865e-01},
     {7.322365222361595e-01, -6.810504206763948e-01},
-    {7.314001964697324e-01, -6.819484970318775e-01},
+    {7.314001964697325e-01, -6.819484970318775e-01},
     {7.305627692278276e-01, -6.828455463852481e-01},
     {7.297242417715950e-01, -6.837415673855661e-01},
-    {7.288846153638420e-01, -6.846365586834405e-01},
+    {7.288846153638421e-01, -6.846365586834405e-01},
     {7.280438912690308e-01, -6.855305189310302e-01},
     {7.272020707532766e-01, -6.864234467820476e-01},
     {7.263591550843460e-01, -6.873153408917591e-01},
     {7.255151455316546e-01, -6.882061999169885e-01},
     {7.246700433662657e-01, -6.890960225161182e-01},
     {7.238238498608879e-01, -6.899848073490914e-01},
-    {7.229765662898732e-01, -6.908725530774144e-01},
+    {7.229765662898732e-01, -6.908725530774142e-01},
     {7.221281939292153e-01, -6.917592583641577e-01},
     {7.212787340565479e-01, -6.926449218739597e-01},
     {7.204281879511419e-01, -6.935295422730269e-01},
-    {7.195765568939045e-01, -6.944131182291369e-01},
+    {7.195765568939047e-01, -6.944131182291369e-01},
     {7.187238421673769e-01, -6.952956484116404e-01},
-    {7.178700450557317e-01, -6.961771314914630e-01},
+    {7.178700450557317e-01, -6.961771314914629e-01},
     {7.170151668447722e-01, -6.970575661411068e-01},
     {7.161592088219294e-01, -6.979369510346534e-01},
     {7.153021722762606e-01, -6.988152848477649e-01},
-    {7.144440584984474e-01, -6.996925662576865e-01},
+    {7.144440584984474e-01, -6.996925662576866e-01},
     {7.135848687807936e-01, -7.005687939432483e-01},
-    {7.127246044172235e-01, -7.014439665848672e-01},
-    {7.118632667032795e-01, -7.023180828645491e-01},
+    {7.127246044172234e-01, -7.014439665848672e-01},
+    {7.118632667032795e-01, -7.023180828645490e-01},
     {7.110008569361208e-01, -7.031911414658905e-01},
-    {7.101373764145209e-01, -7.040631410740809e-01},
+    {7.101373764145208e-01, -7.040631410740810e-01},
     {7.092728264388657e-01, -7.049340803759049e-01},
     {7.084072083111520e-01, -7.058039580597435e-01},
     {7.075405233349850e-01, -7.066727728155766e-01}


From anthm at freeswitch.org  Fri Jan  9 15:21:38 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 09 Jan 2009 17:21:38 -0600
Subject: [Freeswitch-svn] [commit] r11106 -
	freeswitch/trunk/src/mod/endpoints/mod_sofia
Message-ID: 

Author: anthm
Date: Fri Jan  9 17:21:38 2009
New Revision: 11106

Log:
MODENDP-167

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	Fri Jan  9 17:21:38 2009
@@ -2675,12 +2675,12 @@
 
 				if (call_id) {
 					sql = switch_mprintf("select sip_user,sip_host,contact,profile_name,'%q','%q','%q' "
-										 "from sip_registrations where call_id='%q'", ct, es, body, call_id
+										 "from sip_registrations where call_id='%q'", ct, es, switch_str_nil(body), call_id
 										 );
 				} else {
 					sql = switch_mprintf("select sip_user,sip_host,contact,profile_name,'%q','%q','%q' "
 										 "from sip_registrations where sip_user='%s' and sip_host='%q'",
-										 ct, es, body, user, host
+										 ct, es, switch_str_nil(body), switch_str_nil(user), switch_str_nil(host)
 										 );
 				}
 				


From gmaruzz at freeswitch.org  Fri Jan  9 15:46:12 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 09 Jan 2009 17:46:12 -0600
Subject: [Freeswitch-svn] [commit] r11107 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Fri Jan  9 17:46:12 2009
New Revision: 11107

Log:
skypiax: let's compile on the new gcc (Intrepid version)

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Fri Jan  9 17:46:12 2009
@@ -1057,7 +1057,7 @@
 #ifdef WIN32
       switch_file_write(p->AsteriskHandlesAst.fdesc[1], "sciutati", &howmany);  // let's the controldev_thread die
 #else /* WIN32 */
-      write(p->AsteriskHandlesAst.fdesc[1], "sciutati", howmany);
+      howmany = write(p->AsteriskHandlesAst.fdesc[1], "sciutati", howmany);
 #endif /* WIN32 */
     }
 

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Fri Jan  9 17:46:12 2009
@@ -269,14 +269,14 @@
     switch_file_write(p->audioskypepipe[1], kill_cli_buff, &kill_cli_size);
 #else /* WIN32 */
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
-    write(p->audiopipe[1], kill_cli_buff, kill_cli_size);
+    len = write(p->audiopipe[1], kill_cli_buff, kill_cli_size);
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
-    write(p->audioskypepipe[1], kill_cli_buff, kill_cli_size);
+    len = write(p->audioskypepipe[1], kill_cli_buff, kill_cli_size);
     p->interface_state = SKYPIAX_STATE_DOWN;
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
-    write(p->audiopipe[1], kill_cli_buff, kill_cli_size);
+    len = write(p->audiopipe[1], kill_cli_buff, kill_cli_size);
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
-    write(p->audioskypepipe[1], kill_cli_buff, kill_cli_size);
+    len = write(p->audioskypepipe[1], kill_cli_buff, kill_cli_size);
 #endif /* WIN32 */
 
     DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG);
@@ -508,12 +508,14 @@
     switch_file_pipe_create(&p->audioskypepipe[0], &p->audioskypepipe[1],
                             skypiax_module_pool);
 #else /* WIN32 */
-  pipe(p->audiopipe);
+  if(pipe(p->audiopipe)){
   fcntl(p->audiopipe[0], F_SETFL, O_NONBLOCK);
   fcntl(p->audiopipe[1], F_SETFL, O_NONBLOCK);
-  pipe(p->audioskypepipe);
+}
+  if (pipe(p->audioskypepipe)){
   fcntl(p->audioskypepipe[0], F_SETFL, O_NONBLOCK);
   fcntl(p->audioskypepipe[1], F_SETFL, O_NONBLOCK);
+}
 #endif /* WIN32 */
   //rv = switch_file_pipe_timeout_set(p->audiopipe[0], 100);
 
@@ -568,7 +570,7 @@
 
     if (samples != SAMPLES_PER_FRAME * sizeof(short)) {
       if (samples)
-        ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG,
+        ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%u\n", SKYPIAX_P_LOG,
                samples, SAMPLES_PER_FRAME * sizeof(short));
       //do nothing
     } else {
@@ -1028,9 +1030,10 @@
   DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
 
   //switch_file_pipe_create(&p->AsteriskHandlesAst.fdesc[0], &p->AsteriskHandlesAst.fdesc[1], skypiax_module_pool);
-  pipe(p->AsteriskHandlesAst.fdesc);
+if(pipe(p->AsteriskHandlesAst.fdesc)){
   fcntl(p->AsteriskHandlesAst.fdesc[0], F_SETFL, O_NONBLOCK);
   fcntl(p->AsteriskHandlesAst.fdesc[1], F_SETFL, O_NONBLOCK);
+}
 
   //switch_file_pipe_timeout_set(p->AsteriskHandlesAst.fdesc[0], 100);
   AsteriskHandlesAst = &p->AsteriskHandlesAst;
@@ -1125,7 +1128,7 @@
           howmany = strlen(b) + 1;
 
           //switch_file_write(AsteriskHandlesAst->fdesc[1], b, &howmany);
-          write(AsteriskHandlesAst->fdesc[1], b, howmany);
+          howmany = write(AsteriskHandlesAst->fdesc[1], b, howmany);
           //write(AsteriskHandlesAst->fdesc[1], "\0", 1);
           //FIXME DEBUGA_SKYPE("SKYPE pipewrite: |||%s|||len=%d serial=%ld\n\n\n", SKYPIAX_P_LOG, b, strlen(b) + 1, an_event.xclient.serial);
           //switch_sleep(1000);


From silik0n at freeswitch.org  Fri Jan  9 19:02:35 2009
From: silik0n at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 09 Jan 2009 22:02:35 -0500
Subject: [Freeswitch-svn] [commit] r11069 -
	freeswitch/trunk/src/mod/applications/mod_easyroute
Message-ID: 

Author: silik0n
Date: Fri Jan  9 22:02:34 2009
New Revision: 11069

Log:
fix a couple of SWITCH_LOG levels and properly disconnect from DB on shutdown

Modified:
   freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c

Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	Fri Jan  9 22:02:34 2009
@@ -257,7 +257,7 @@
 			switch_set_string(results->acctcode, pdata.acctcode);
 		}
 	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "DB Error Setting Default Route!\n");
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DB Error Setting Default Route!\n");
 		switch_set_string(results->limit, "9999");
 		switch_snprintf(results->dialstring, 256, "%s/%s@%s", globals.default_techprofile, dn, globals.default_gateway);
 		switch_set_string(results->group, "");
@@ -290,7 +290,7 @@
 	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
 		destnum = argv[0];
 		route_lookup(destnum, &results);
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "EASY ROUTE DEST: [%s]\n", results.dialstring);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "EASY ROUTE DEST: [%s]\n", results.dialstring);
 		switch_channel_set_variable(channel, "easy_destnum", results.destnum);
 		switch_channel_set_variable(channel, "easy_dialstring", results.dialstring);
 		switch_channel_set_variable(channel, "easy_group", results.group);
@@ -354,7 +354,7 @@
 
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_easyroute_shutdown)
 {	
-	switch_odbc_handle_connect(globals.master_odbc);
+	switch_odbc_handle_disconnect(globals.master_odbc);
 	return SWITCH_STATUS_UNLOAD;
 }
 


From anthm at freeswitch.org  Fri Jan  9 19:52:28 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 09 Jan 2009 21:52:28 -0600
Subject: [Freeswitch-svn] [commit] r11108 - in freeswitch/trunk/src: .
	mod/formats/mod_local_stream
Message-ID: 

Author: anthm
Date: Fri Jan  9 21:52:28 2009
New Revision: 11108

Log:
fix double close of filehandles and add recording of native files

Modified:
   freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c
   freeswitch/trunk/src/switch_core_file.c
   freeswitch/trunk/src/switch_ivr_play_say.c

Modified: freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c
==============================================================================
--- freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c	(original)
+++ freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c	Fri Jan  9 21:52:28 2009
@@ -251,7 +251,7 @@
 
  done:
 
-	if (fh.file_interface) {
+	if (switch_test_flag((&fh), SWITCH_FILE_OPEN)) {
 		switch_core_file_close(&fh);
 	}
 

Modified: freeswitch/trunk/src/switch_core_file.c
==============================================================================
--- freeswitch/trunk/src/switch_core_file.c	(original)
+++ freeswitch/trunk/src/switch_core_file.c	Fri Jan  9 21:52:28 2009
@@ -132,7 +132,7 @@
 {
 	switch_status_t status = SWITCH_STATUS_FALSE;
 	switch_size_t want, got, orig_len = *len;
-
+	
 	switch_assert(fh != NULL);
 	switch_assert(fh->file_interface != NULL);
 
@@ -155,19 +155,21 @@
 	
 	if (fh->pre_buffer) {
 		switch_size_t rlen;
+		int asis = switch_test_flag(fh, SWITCH_FILE_NATIVE);
+
 		if (!switch_test_flag(fh, SWITCH_FILE_BUFFER_DONE)) {
 			if (!switch_buffer_inuse(fh->pre_buffer)) {
-				rlen = fh->pre_buffer_datalen / 2;
+				rlen = asis ? fh->pre_buffer_datalen : fh->pre_buffer_datalen / 2;
 				if ((status = fh->file_interface->file_read(fh, fh->pre_buffer_data, &rlen)) != SWITCH_STATUS_SUCCESS || !rlen) {
 					switch_set_flag(fh, SWITCH_FILE_BUFFER_DONE);
 				} else {
-					switch_buffer_write(fh->pre_buffer, fh->pre_buffer_data, rlen * 2);
+					switch_buffer_write(fh->pre_buffer, fh->pre_buffer_data, asis ? rlen : rlen * 2);
 				}
 			}
 		}
 
-		rlen = switch_buffer_read(fh->pre_buffer, data, *len * 2);
-		*len = rlen / 2;
+		rlen = switch_buffer_read(fh->pre_buffer, data, asis ? *len : *len * 2);
+		*len = asis ? rlen : rlen / 2;
 		
 		if (*len == 0) {
 			switch_set_flag(fh, SWITCH_FILE_DONE);
@@ -277,13 +279,14 @@
 	if (fh->pre_buffer) {
 		switch_size_t rlen, blen;
 		switch_status_t status = SWITCH_STATUS_SUCCESS;
+		int asis = switch_test_flag(fh, SWITCH_FILE_NATIVE);
 
-		switch_buffer_write(fh->pre_buffer, data, *len * 2);
+		switch_buffer_write(fh->pre_buffer, data, asis ? *len : *len * 2);
 
 		rlen = switch_buffer_inuse(fh->pre_buffer);
 		if (rlen >= fh->pre_buffer_datalen) {
 			blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen);
-			blen /= 2;
+			if (!asis) blen /= 2;
 			if ((status = fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen)) != SWITCH_STATUS_SUCCESS) {
 				*len = 0;
 			}
@@ -345,6 +348,10 @@
 	switch_assert(fh != NULL);
 	switch_assert(fh->file_interface != NULL);
 
+	if (!switch_test_flag(fh, SWITCH_FILE_OPEN)) {
+		return SWITCH_STATUS_FALSE;
+	}
+
 	switch_clear_flag(fh, SWITCH_FILE_OPEN);
 	status = fh->file_interface->file_close(fh);
 
@@ -355,9 +362,11 @@
 	if (fh->pre_buffer) {
 		if (switch_test_flag(fh, SWITCH_FILE_FLAG_WRITE)) {
 			switch_size_t rlen, blen;
+			int asis = switch_test_flag(fh, SWITCH_FILE_NATIVE);
+
 			while((rlen = switch_buffer_inuse(fh->pre_buffer))) {
 				blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen);
-				blen /= 2;
+				if (asis) blen /= 2;
 				if (fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen) != SWITCH_STATUS_SUCCESS) {
 					break;
 				}

Modified: freeswitch/trunk/src/switch_ivr_play_say.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_play_say.c	(original)
+++ freeswitch/trunk/src/switch_ivr_play_say.c	Fri Jan  9 21:52:28 2009
@@ -384,6 +384,7 @@
 	const char *vval;
 	time_t start = 0;
 	uint32_t org_silence_hits = 0;
+	int asis = 0;
 
 	switch_assert(read_codec != NULL);
 
@@ -396,6 +397,30 @@
 	fh->channels = read_codec->implementation->number_of_channels;
 	fh->native_rate = read_codec->implementation->actual_samples_per_second;
 
+
+
+	if (!strstr(file, SWITCH_URL_SEPARATOR)) {
+		char *ext;
+		const char *prefix;
+
+		prefix = switch_channel_get_variable(channel, "sound_prefix");
+		if (!prefix) {
+			prefix = SWITCH_GLOBAL_dirs.base_dir;
+		}
+		
+		if (!switch_is_file_path(file)) {
+			file = switch_core_session_sprintf(session, "%s%s%s", prefix, SWITCH_PATH_SEPARATOR, file);
+		}
+		if ((ext = strrchr(file, '.'))) {
+			ext++;
+		} else {
+			ext = read_codec->implementation->iananame;
+			file = switch_core_session_sprintf(session, "%s.%s", file, ext);
+			asis = 1;
+		}
+	}
+
+
 	if (switch_core_file_open(fh,
 							  file,
 							  fh->channels,
@@ -444,37 +469,43 @@
 		switch_channel_set_variable(channel, "RECORD_DATE", NULL);
 	}
 
-	codec_name = "L16";
-	if (switch_core_codec_init(&codec,
-							   codec_name,
-							   NULL,
-							   read_codec->implementation->actual_samples_per_second,
-							   read_codec->implementation->microseconds_per_packet / 1000,
-							   read_codec->implementation->number_of_channels,
-							   SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
-							   switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activated\n");
-		switch_core_session_set_read_codec(session, &codec);
-	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
-						  "Raw Codec Activation Failed %s@%uhz %u channels %dms\n", codec_name, fh->samplerate,
-						  fh->channels, read_codec->implementation->microseconds_per_packet / 1000);
-		switch_core_file_close(fh);
-		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
-		return SWITCH_STATUS_GENERR;
+	if (!asis) {
+		codec_name = "L16";
+		if (switch_core_codec_init(&codec,
+								   codec_name,
+								   NULL,
+								   read_codec->implementation->actual_samples_per_second,
+								   read_codec->implementation->microseconds_per_packet / 1000,
+								   read_codec->implementation->number_of_channels,
+								   SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
+								   switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activated\n");
+			switch_core_session_set_read_codec(session, &codec);
+		} else {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
+							  "Raw Codec Activation Failed %s@%uhz %u channels %dms\n", codec_name, fh->samplerate,
+							  fh->channels, read_codec->implementation->microseconds_per_packet / 1000);
+			switch_core_file_close(fh);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
+			return SWITCH_STATUS_GENERR;
+		}
 	}
 
 	if (limit) {
 		start = switch_timestamp(NULL);
 	}
-
+	
 	if (fh->thresh) {
-		if (fh->silence_hits) {
-			fh->silence_hits = fh->samplerate * fh->silence_hits / read_codec->implementation->samples_per_packet;
+		if (asis) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Can't detect silence on a native recording.\n");
 		} else {
-			fh->silence_hits = fh->samplerate * 3 / read_codec->implementation->samples_per_packet;
+			if (fh->silence_hits) {
+				fh->silence_hits = fh->samplerate * fh->silence_hits / read_codec->implementation->samples_per_packet;
+			} else {
+				fh->silence_hits = fh->samplerate * 3 / read_codec->implementation->samples_per_packet;
+			}
+			org_silence_hits = fh->silence_hits;
 		}
-		org_silence_hits = fh->silence_hits;
 	}
 
 	for (;;) {
@@ -543,7 +574,7 @@
 			}
 		}
 
-		if (fh->thresh) {
+		if (!asis && fh->thresh) {
 			int16_t *fdata = (int16_t *) read_frame->data;
 			uint32_t samples = read_frame->datalen / sizeof(*fdata);
 			uint32_t score, count = 0, j = 0;
@@ -571,8 +602,8 @@
 
 		if (!switch_test_flag(fh, SWITCH_FILE_PAUSE) && !switch_test_flag(read_frame, SFF_CNG)) {
 			int16_t *data = read_frame->data;
-			len = (switch_size_t) read_frame->datalen / 2;
-
+			len = (switch_size_t) asis ? read_frame->datalen : read_frame->datalen / 2;
+			
 			if (switch_core_file_write(fh, data, &len) != SWITCH_STATUS_SUCCESS) {
 				break;
 			}


From silik0n at freeswitch.org  Fri Jan  9 22:38:59 2009
From: silik0n at freeswitch.org (FreeSWITCH SVN)
Date: Sat, 10 Jan 2009 01:38:59 -0500
Subject: [Freeswitch-svn] [commit] r11070 -
	freeswitch/trunk/src/mod/applications/mod_easyroute
Message-ID: 

Author: silik0n
Date: Sat Jan 10 01:38:59 2009
New Revision: 11070

Log:
add option to return a specific field for API usage

Modified:
   freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c

Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	Sat Jan 10 01:38:59 2009
@@ -319,14 +319,43 @@
 	
 	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
 		destnum = argv[0];
+		if (argc < 1 || argc > 2){
+			stream->write_function(stream, "Invalid Input!\n");
+			return SWITCH_STATUS_SUCCESS;
+		} 
 		
 		if (!route_lookup(destnum, &results) == SWITCH_STATUS_SUCCESS) {
 			stream->write_function(stream, "No Match!\n");
 			return SWITCH_STATUS_SUCCESS;
 		}
-		
-		stream->write_function(stream, "Number    \tLimit     \tGroup    \tAcctCode  \tDialstring\n");
-		stream->write_function(stream, "%-10s\t%-10s\t%-10s\t%-10s\t%s\n", destnum, results.limit, results.group, results.acctcode, results.dialstring);
+		if (argc != 2){
+			stream->write_function(stream, "Number    \tLimit     \tGroup    \tAcctCode  \tDialstring\n");
+			stream->write_function(stream, "%-10s\t%-10s\t%-10s\t%-10s\t%s\n", destnum, results.limit, results.group, results.acctcode, results.dialstring);
+		} else {
+
+			/*      char    limit[16];
+        			char    destnum[16];
+        			char    dialstring[256];
+        			char    group[16];
+        			char    acctcode[17];
+        			char    translated[17];
+			*/
+
+			if (!strncasecmp(argv[1], "dialstring", 10)) {
+				stream->write_function(stream, "%s", results.dialstring);
+			} else if (!strncasecmp(argv[1], "translated", 10)) {
+				stream->write_function(stream, "%s", results.translated);
+			} else if (!strncasecmp(argv[1], "limit", 5)) {
+				stream->write_function(stream, "%s", results.limit);
+			} else if (!strncasecmp(argv[1], "group", 5)) {
+				stream->write_function(stream, "%s", results.group);
+			} else if (!strncasecmp(argv[1], "acctcode", 8)) {
+				stream->write_function(stream, "%s", results.acctcode);
+			} else {
+				stream->write_function(stream, "Invalid Input!\n");
+				return SWITCH_STATUS_SUCCESS;
+			}
+		} 
 	} else {
 		stream->write_function(stream, "Invalid Input!\n");
 	}


From gmaruzz at freeswitch.org  Sat Jan 10 01:55:23 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sat, 10 Jan 2009 03:55:23 -0600
Subject: [Freeswitch-svn] [commit] r11109 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sat Jan 10 03:55:23 2009
New Revision: 11109

Log:
skypiax: handle the case when Skype client is asking for the user authorization to be connected by Skypiax (it was removed, don't know why)

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sat Jan 10 03:55:23 2009
@@ -1280,6 +1280,15 @@
           DEBUGA_SKYPE("read_skype: howmany=%d, i=%d, a=%d, |||%s||| \n", SKYPIAX_P_LOG,
                        howmany, i, a, messaggio);
 
+          if (!strcasecmp(messaggio, "ERROR 68")) {   /* not yet protocol specified,
+                                                         just authorized */
+            DEBUGA_SKYPE ("If I don't connect immediately, please give the Skype client authorization to be connected by Skypiax (and to not ask you again)\n", SKYPIAX_P_LOG);
+            switch_sleep(1000000);
+            skypiax_skype_write(p, "PROTOCOL 6");
+            switch_sleep(10000);
+            return 0;
+          }
+  
           if (!strncasecmp(messaggio, "ERROR 92 CALL", 12)) {
             ERRORA("Skype got ERROR: |||%s|||, the number we called was not recognized\n",
                    SKYPIAX_P_LOG, messaggio);


From gmaruzz at freeswitch.org  Sat Jan 10 03:16:41 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sat, 10 Jan 2009 05:16:41 -0600
Subject: [Freeswitch-svn] [commit] r11110 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sat Jan 10 05:16:41 2009
New Revision: 11110

Log:
skypiax: always (will be under config param) authorize to be added as a contact and seen online

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sat Jan 10 05:16:41 2009
@@ -1365,6 +1365,28 @@
             }
           }
 
+          if (!strcasecmp(messaggio, "USER")) {
+            strncpy(obj, where, sizeof(obj) - 1);
+
+            where = strsep(stringp, " ");
+
+            strncpy(id, where, sizeof(id) - 1);
+
+            where = strsep(stringp, " ");
+
+            strncpy(prop, where, sizeof(prop) - 1);
+
+            if (!strcasecmp(prop,"RECEIVEDAUTHREQUEST" )) {
+		    char msg_to_skype[256];
+              DEBUGA_SKYPE ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, prop);
+
+	      //FIXME: TODO: allow authorization based on config param
+                    sprintf(msg_to_skype, "SET USER %s ISAUTHORIZED TRUE", id);
+                    skypiax_skype_write(p, msg_to_skype);
+            }
+          }
+
+
           if (!strcasecmp(messaggio, "CALL")) {
 
             strncpy(obj, where, sizeof(obj) - 1);


From gmaruzz at freeswitch.org  Sat Jan 10 04:18:35 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sat, 10 Jan 2009 06:18:35 -0600
Subject: [Freeswitch-svn] [commit] r11111 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sat Jan 10 06:18:35 2009
New Revision: 11111

Log:
skypiax: always (will be under config param) mark the MESSAGE received by Skype client as SEEN (READ) and so deleting them from the unread list

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sat Jan 10 06:18:35 2009
@@ -1365,26 +1365,65 @@
             }
           }
 
-          if (!strcasecmp(messaggio, "USER")) {
-            strncpy(obj, where, sizeof(obj) - 1);
+	  if (!strcasecmp(messaggio, "USER")) {
+		  strncpy(obj, where, sizeof(obj) - 1);
 
-            where = strsep(stringp, " ");
+		  where = strsep(stringp, " ");
 
-            strncpy(id, where, sizeof(id) - 1);
+		  strncpy(id, where, sizeof(id) - 1);
 
-            where = strsep(stringp, " ");
+		  where = strsep(stringp, " ");
 
-            strncpy(prop, where, sizeof(prop) - 1);
+		  strncpy(prop, where, sizeof(prop) - 1);
 
-            if (!strcasecmp(prop,"RECEIVEDAUTHREQUEST" )) {
-		    char msg_to_skype[256];
-              DEBUGA_SKYPE ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, prop);
+		  if (!strcasecmp(prop,"RECEIVEDAUTHREQUEST" )) {
+			  char msg_to_skype[256];
+			  DEBUGA_SKYPE ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, prop);
 
-	      //FIXME: TODO: allow authorization based on config param
-                    sprintf(msg_to_skype, "SET USER %s ISAUTHORIZED TRUE", id);
-                    skypiax_skype_write(p, msg_to_skype);
-            }
-          }
+			  //FIXME: TODO: allow authorization based on config param
+			  sprintf(msg_to_skype, "SET USER %s ISAUTHORIZED TRUE", id);
+			  skypiax_skype_write(p, msg_to_skype);
+		  }
+	  }
+
+
+	  if (!strcasecmp(messaggio, "MESSAGE")) {
+		  strncpy(obj, where, sizeof(obj) - 1);
+
+		  where = strsep(stringp, " ");
+
+		  strncpy(id, where, sizeof(id) - 1);
+
+		  where = strsep(stringp, " ");
+
+		  strncpy(prop, where, sizeof(prop) - 1);
+
+		  if (!strcasecmp(prop,"STATUS" )) {
+
+			  where = strsep(stringp, " ");
+
+			  strncpy(value, where, sizeof(value) - 1);
+
+
+			  if (!strcasecmp(value,"RECEIVED" )) {
+				  char msg_to_skype[256];
+				  DEBUGA_SKYPE ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s value: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, prop, value);
+
+				  //FIXME: TODO: allow authorization based on config param
+				  sprintf(msg_to_skype, "SET MESSAGE %s SEEN", id);
+				  skypiax_skype_write(p, msg_to_skype);
+			  }
+		  } else if (!strcasecmp(prop,"BODY" )) {
+			  char msg_to_skype[256];
+
+			  DEBUGA_SKYPE ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, prop);
+
+			  //FIXME: TODO: on config param ???
+			  sprintf(msg_to_skype, "SET MESSAGE %s SEEN", id);
+			  skypiax_skype_write(p, msg_to_skype);
+		  }
+
+	  }
 
 
           if (!strcasecmp(messaggio, "CALL")) {


From brian at freeswitch.org  Sat Jan 10 08:01:02 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Sat, 10 Jan 2009 10:01:02 -0600
Subject: [Freeswitch-svn] [commit] r11112 - in
	freeswitch/trunk/src/mod/languages/mod_managed: . managed
Message-ID: 

Author: brian
Date: Sat Jan 10 10:01:02 2009
New Revision: 11112

Log:
reswig

Modified:
   freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
   freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs

Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	Sat Jan 10 10:01:02 2009
@@ -1510,6 +1510,17 @@
 }
 
 
+SWIGEXPORT int SWIGSTDCALL CSharp_SWITCH_DEFAULT_FILE_BUFFER_LEN_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) 65536;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
 SWIGEXPORT void SWIGSTDCALL CSharp_switch_dtmf_t_digit_set(void * jarg1, char jarg2) {
   switch_dtmf_t *arg1 = (switch_dtmf_t *) 0 ;
   char arg2 ;
@@ -6143,13 +6154,15 @@
 }
 
 
-SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_session_reset(void * jarg1, int jarg2) {
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_session_reset(void * jarg1, int jarg2, int jarg3) {
   switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
   switch_bool_t arg2 ;
+  switch_bool_t arg3 ;
   
   arg1 = (switch_core_session_t *)jarg1; 
   arg2 = (switch_bool_t)jarg2; 
-  switch_core_session_reset(arg1,arg2);
+  arg3 = (switch_bool_t)jarg3; 
+  switch_core_session_reset(arg1,arg2,arg3);
 }
 
 
@@ -13093,6 +13106,81 @@
 }
 
 
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_file_handle_pre_buffer_set(void * jarg1, void * jarg2) {
+  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+  switch_buffer_t *arg2 = (switch_buffer_t *) 0 ;
+  
+  arg1 = (switch_file_handle *)jarg1; 
+  arg2 = (switch_buffer_t *)jarg2; 
+  if (arg1) (arg1)->pre_buffer = arg2;
+  
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_switch_file_handle_pre_buffer_get(void * jarg1) {
+  void * jresult ;
+  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+  switch_buffer_t *result = 0 ;
+  
+  arg1 = (switch_file_handle *)jarg1; 
+  result = (switch_buffer_t *) ((arg1)->pre_buffer);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_file_handle_pre_buffer_data_set(void * jarg1, void * jarg2) {
+  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+  unsigned char *arg2 = (unsigned char *) 0 ;
+  
+  arg1 = (switch_file_handle *)jarg1; 
+  arg2 = (unsigned char *)jarg2; 
+  if (arg1) (arg1)->pre_buffer_data = arg2;
+  
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_switch_file_handle_pre_buffer_data_get(void * jarg1) {
+  void * jresult ;
+  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+  unsigned char *result = 0 ;
+  
+  arg1 = (switch_file_handle *)jarg1; 
+  result = (unsigned char *) ((arg1)->pre_buffer_data);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_file_handle_pre_buffer_datalen_set(void * jarg1, void * jarg2) {
+  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+  switch_size_t arg2 ;
+  switch_size_t *argp2 ;
+  
+  arg1 = (switch_file_handle *)jarg1; 
+  argp2 = (switch_size_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null switch_size_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  if (arg1) (arg1)->pre_buffer_datalen = arg2;
+  
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_switch_file_handle_pre_buffer_datalen_get(void * jarg1) {
+  void * jresult ;
+  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+  switch_size_t result;
+  
+  arg1 = (switch_file_handle *)jarg1; 
+  result =  ((arg1)->pre_buffer_datalen);
+  jresult = new switch_size_t((switch_size_t &)result); 
+  return jresult;
+}
+
+
 SWIGEXPORT void SWIGSTDCALL CSharp_switch_file_handle_file_set(void * jarg1, char * jarg2) {
   switch_file_handle *arg1 = (switch_file_handle *) 0 ;
   char *arg2 = (char *) 0 ;
@@ -18377,6 +18465,26 @@
 }
 
 
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_event_set_basic_data(void * jarg1, void * jarg2) {
+  switch_channel_t *arg1 = (switch_channel_t *) 0 ;
+  switch_event_t *arg2 = (switch_event_t *) 0 ;
+  
+  arg1 = (switch_channel_t *)jarg1; 
+  arg2 = (switch_event_t *)jarg2; 
+  switch_channel_event_set_basic_data(arg1,arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_event_set_extended_data(void * jarg1, void * jarg2) {
+  switch_channel_t *arg1 = (switch_channel_t *) 0 ;
+  switch_event_t *arg2 = (switch_event_t *) 0 ;
+  
+  arg1 = (switch_channel_t *)jarg1; 
+  arg2 = (switch_event_t *)jarg2; 
+  switch_channel_event_set_extended_data(arg1,arg2);
+}
+
+
 SWIGEXPORT char * SWIGSTDCALL CSharp_switch_channel_expand_variables(void * jarg1, char * jarg2) {
   char * jresult ;
   switch_channel_t *arg1 = (switch_channel_t *) 0 ;

Modified: freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs	Sat Jan 10 10:01:02 2009
@@ -1344,8 +1344,8 @@
     return ret;
   }
 
-  public static void switch_core_session_reset(SWIGTYPE_p_switch_core_session session, switch_bool_t flush_dtmf) {
-    freeswitchPINVOKE.switch_core_session_reset(SWIGTYPE_p_switch_core_session.getCPtr(session), (int)flush_dtmf);
+  public static void switch_core_session_reset(SWIGTYPE_p_switch_core_session session, switch_bool_t flush_dtmf, switch_bool_t reset_read_codec) {
+    freeswitchPINVOKE.switch_core_session_reset(SWIGTYPE_p_switch_core_session.getCPtr(session), (int)flush_dtmf, (int)reset_read_codec);
   }
 
   public static switch_status_t switch_core_session_write_frame(SWIGTYPE_p_switch_core_session session, switch_frame frame, uint flags, int stream_id) {
@@ -2581,6 +2581,14 @@
     freeswitchPINVOKE.switch_channel_event_set_data(SWIGTYPE_p_switch_channel.getCPtr(channel), switch_event.getCPtr(arg1));
   }
 
+  public static void switch_channel_event_set_basic_data(SWIGTYPE_p_switch_channel channel, switch_event arg1) {
+    freeswitchPINVOKE.switch_channel_event_set_basic_data(SWIGTYPE_p_switch_channel.getCPtr(channel), switch_event.getCPtr(arg1));
+  }
+
+  public static void switch_channel_event_set_extended_data(SWIGTYPE_p_switch_channel channel, switch_event arg1) {
+    freeswitchPINVOKE.switch_channel_event_set_extended_data(SWIGTYPE_p_switch_channel.getCPtr(channel), switch_event.getCPtr(arg1));
+  }
+
   public static string switch_channel_expand_variables(SWIGTYPE_p_switch_channel channel, string arg1) {
     string ret = freeswitchPINVOKE.switch_channel_expand_variables(SWIGTYPE_p_switch_channel.getCPtr(channel), arg1);
     return ret;
@@ -4109,6 +4117,7 @@
   public static readonly string SWITCH_SPEECH_KEY = freeswitchPINVOKE.SWITCH_SPEECH_KEY_get();
   public static readonly string SWITCH_UUID_BRIDGE = freeswitchPINVOKE.SWITCH_UUID_BRIDGE_get();
   public static readonly int SWITCH_BITS_PER_BYTE = freeswitchPINVOKE.SWITCH_BITS_PER_BYTE_get();
+  public static readonly int SWITCH_DEFAULT_FILE_BUFFER_LEN = freeswitchPINVOKE.SWITCH_DEFAULT_FILE_BUFFER_LEN_get();
   public static readonly int SWITCH_MAX_STACKS = freeswitchPINVOKE.SWITCH_MAX_STACKS_get();
   public static readonly int SWITCH_THREAD_STACKSIZE = freeswitchPINVOKE.SWITCH_THREAD_STACKSIZE_get();
   public static readonly int SWITCH_SYSTEM_THREAD_STACKSIZE = freeswitchPINVOKE.SWITCH_SYSTEM_THREAD_STACKSIZE_get();
@@ -4690,6 +4699,9 @@
   [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_BITS_PER_BYTE_get")]
   public static extern int SWITCH_BITS_PER_BYTE_get();
 
+  [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_DEFAULT_FILE_BUFFER_LEN_get")]
+  public static extern int SWITCH_DEFAULT_FILE_BUFFER_LEN_get();
+
   [DllImport("mod_managed", EntryPoint="CSharp_switch_dtmf_t_digit_set")]
   public static extern void switch_dtmf_t_digit_set(HandleRef jarg1, char jarg2);
 
@@ -5798,7 +5810,7 @@
   public static extern int switch_core_session_write_video_frame(HandleRef jarg1, HandleRef jarg2, uint jarg3, int jarg4);
 
   [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_reset")]
-  public static extern void switch_core_session_reset(HandleRef jarg1, int jarg2);
+  public static extern void switch_core_session_reset(HandleRef jarg1, int jarg2, int jarg3);
 
   [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_write_frame")]
   public static extern int switch_core_session_write_frame(HandleRef jarg1, HandleRef jarg2, uint jarg3, int jarg4);
@@ -7438,6 +7450,24 @@
   [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_dbuflen_get")]
   public static extern IntPtr switch_file_handle_dbuflen_get(HandleRef jarg1);
 
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_pre_buffer_set")]
+  public static extern void switch_file_handle_pre_buffer_set(HandleRef jarg1, HandleRef jarg2);
+
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_pre_buffer_get")]
+  public static extern IntPtr switch_file_handle_pre_buffer_get(HandleRef jarg1);
+
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_pre_buffer_data_set")]
+  public static extern void switch_file_handle_pre_buffer_data_set(HandleRef jarg1, HandleRef jarg2);
+
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_pre_buffer_data_get")]
+  public static extern IntPtr switch_file_handle_pre_buffer_data_get(HandleRef jarg1);
+
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_pre_buffer_datalen_set")]
+  public static extern void switch_file_handle_pre_buffer_datalen_set(HandleRef jarg1, HandleRef jarg2);
+
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_pre_buffer_datalen_get")]
+  public static extern IntPtr switch_file_handle_pre_buffer_datalen_get(HandleRef jarg1);
+
   [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_file_set")]
   public static extern void switch_file_handle_file_set(HandleRef jarg1, string jarg2);
 
@@ -8743,6 +8773,12 @@
   [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_event_set_data")]
   public static extern void switch_channel_event_set_data(HandleRef jarg1, HandleRef jarg2);
 
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_event_set_basic_data")]
+  public static extern void switch_channel_event_set_basic_data(HandleRef jarg1, HandleRef jarg2);
+
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_event_set_extended_data")]
+  public static extern void switch_channel_event_set_extended_data(HandleRef jarg1, HandleRef jarg2);
+
   [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_expand_variables")]
   public static extern string switch_channel_expand_variables(HandleRef jarg1, string jarg2);
 
@@ -19956,7 +19992,9 @@
   SWITCH_FILE_NATIVE = (1 << 9),
   SWITCH_FILE_SEEK = (1 << 10),
   SWITCH_FILE_OPEN = (1 << 11),
-  SWITCH_FILE_CALLBACK = (1 << 12)
+  SWITCH_FILE_CALLBACK = (1 << 12),
+  SWITCH_FILE_DONE = (1 << 13),
+  SWITCH_FILE_BUFFER_DONE = (1 << 14)
 }
 
 }
@@ -20304,6 +20342,40 @@
     } 
   }
 
+  public SWIGTYPE_p_switch_buffer pre_buffer {
+    set {
+      freeswitchPINVOKE.switch_file_handle_pre_buffer_set(swigCPtr, SWIGTYPE_p_switch_buffer.getCPtr(value));
+    } 
+    get {
+      IntPtr cPtr = freeswitchPINVOKE.switch_file_handle_pre_buffer_get(swigCPtr);
+      SWIGTYPE_p_switch_buffer ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_switch_buffer(cPtr, false);
+      return ret;
+    } 
+  }
+
+  public SWIGTYPE_p_unsigned_char pre_buffer_data {
+    set {
+      freeswitchPINVOKE.switch_file_handle_pre_buffer_data_set(swigCPtr, SWIGTYPE_p_unsigned_char.getCPtr(value));
+    } 
+    get {
+      IntPtr cPtr = freeswitchPINVOKE.switch_file_handle_pre_buffer_data_get(swigCPtr);
+      SWIGTYPE_p_unsigned_char ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_unsigned_char(cPtr, false);
+      return ret;
+    } 
+  }
+
+  public SWIGTYPE_p_switch_size_t pre_buffer_datalen {
+    set {
+      freeswitchPINVOKE.switch_file_handle_pre_buffer_datalen_set(swigCPtr, SWIGTYPE_p_switch_size_t.getCPtr(value));
+      if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      SWIGTYPE_p_switch_size_t ret = new SWIGTYPE_p_switch_size_t(freeswitchPINVOKE.switch_file_handle_pre_buffer_datalen_get(swigCPtr), true);
+      if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
   public string file {
     set {
       freeswitchPINVOKE.switch_file_handle_file_set(swigCPtr, value);


From anthm at freeswitch.org  Sat Jan 10 08:04:34 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Sat, 10 Jan 2009 10:04:34 -0600
Subject: [Freeswitch-svn] [commit] r11113 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Sat Jan 10 10:04:34 2009
New Revision: 11113

Log:
tweak

Modified:
   freeswitch/trunk/src/switch_ivr_play_say.c

Modified: freeswitch/trunk/src/switch_ivr_play_say.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_play_say.c	(original)
+++ freeswitch/trunk/src/switch_ivr_play_say.c	Sat Jan 10 10:04:34 2009
@@ -431,6 +431,10 @@
 		return SWITCH_STATUS_GENERR;
 	}
 
+	if (switch_test_flag(fh, SWITCH_FILE_NATIVE)) {
+		asis = 1;
+	}
+
 	switch_channel_pre_answer(channel);
 
 	if ((p = switch_channel_get_variable(channel, "RECORD_TITLE"))) {


From gmaruzz at freeswitch.org  Sat Jan 10 10:54:35 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sat, 10 Jan 2009 12:54:35 -0600
Subject: [Freeswitch-svn] [commit] r11114 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sat Jan 10 12:54:35 2009
New Revision: 11114

Log:
skypiax: various minor adjustments

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Sat Jan 10 12:54:35 2009
@@ -540,7 +540,7 @@
 	    char *slash;
 
 	    strncpy(interface_name, outbound_profile->destination_number, 255);
-	    slash=strchr(interface_name, '/');
+	    slash=strrchr(interface_name, '/');
 	    *slash='\0';
 
 
@@ -584,11 +584,12 @@
       char name[128];
 
       snprintf(name, sizeof(name), "skypiax/%s", outbound_profile->destination_number);
+      //snprintf(name, sizeof(name), "skypiax/%s", p->name);
       switch_channel_set_name(channel, name);
-      //NOTICA( "outbound_profile->destination_number=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->destination_number);
-      //NOTICA( "outbound_profile->username=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->username);
-      //NOTICA( "outbound_profile->caller_id_name=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->caller_id_name);
-      //NOTICA( "outbound_profile->caller_id_number=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->caller_id_number);
+      NOTICA( "outbound_profile->destination_number=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->destination_number);
+      NOTICA( "outbound_profile->username=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->username);
+      NOTICA( "outbound_profile->caller_id_name=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->caller_id_name);
+      NOTICA( "outbound_profile->caller_id_number=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->caller_id_number);
 
       caller_profile = switch_caller_profile_clone(*new_session, outbound_profile);
       switch_channel_set_caller_profile(channel, caller_profile);
@@ -601,6 +602,7 @@
 
     skypiax_skype_call(tech_pvt->p, caller_profile->destination_number, 30, *new_session);
 
+
     switch_channel_set_flag(channel, CF_OUTBOUND);
     switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND);
     switch_channel_set_state(channel, CS_INIT);

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sat Jan 10 12:54:35 2009
@@ -570,7 +570,7 @@
 
     if (samples != SAMPLES_PER_FRAME * sizeof(short)) {
       if (samples)
-        ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%u\n", SKYPIAX_P_LOG,
+        ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG,
                samples, SAMPLES_PER_FRAME * sizeof(short));
       //do nothing
     } else {
@@ -1734,9 +1734,8 @@
                                                    NULL, NULL, "mod_skypiax", "public",
                                                    "5000")) != 0) {
                       char name[128];
-                      switch_snprintf(name, sizeof(name), "skypiax/%s-%04x",
-                                      tech_pvt->caller_profile->destination_number,
-                                      rand() & 0xffff);
+                      //switch_snprintf(name, sizeof(name), "skypiax/%s/%s", p->name, tech_pvt->caller_profile->destination_number);
+                      switch_snprintf(name, sizeof(name), "skypiax/%s", p->name);
                       switch_channel_set_name(channel, name);
                       switch_channel_set_caller_profile(channel,
                                                         tech_pvt->caller_profile);
@@ -1756,12 +1755,27 @@
                   private_t *tech_pvt = NULL;
                   switch_channel_t *channel = NULL;
 
+		  if(p->tech_pvt){
                   tech_pvt = p->tech_pvt;
+		  } else {
+			    ERRORA("No p->tech_pvt???\n", SKYPIAX_P_LOG);
+		  }
+		  if(tech_pvt->session){
                   session = tech_pvt->session;
+		  }else {
+			    ERRORA("No tech_pvt->session???\n", SKYPIAX_P_LOG);
+
+		  }
                   //session = global_session;
+		  if(session){
                   channel = switch_core_session_get_channel(session);
                   //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id);
                   switch_channel_mark_answered(channel);
+		  }else {
+
+			    ERRORA("No session???\n", SKYPIAX_P_LOG);
+
+		  }
 
                   //switch_channel_set_state(channel, CS_EXECUTE);
 
@@ -1816,6 +1830,7 @@
   char *rdest;
   char msg_to_skype[1024];
   private_t *tech_pvt;
+    switch_caller_profile_t *caller_profile;
 
   tech_pvt = p->tech_pvt;
 
@@ -1845,6 +1860,9 @@
     return -1;
   }
   tech_pvt->session = session;
+  caller_profile = tech_pvt->caller_profile;
+  caller_profile->destination_number = rdest;
+
 
   //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING);
   return 0;


From gmaruzz at freeswitch.org  Sat Jan 10 23:56:56 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 01:56:56 -0600
Subject: [Freeswitch-svn] [commit] r11115 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 01:56:56 2009
New Revision: 11115

Log:
skypiax: indent -gnu -ts4 -br -brs -cdw -lp -ce -nbfda -npcs -nprs -npsl -nbbo -saf -sai -saw -cs -bbo -nhnl -nut -sob -l90

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Sun Jan 11 01:56:56 2009
@@ -1,6 +1,5 @@
 #include "skypiax.h"
 
-
 SWITCH_MODULE_LOAD_FUNCTION(mod_skypiax_load);
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skypiax_shutdown);
 SWITCH_MODULE_DEFINITION(mod_skypiax, mod_skypiax_load, mod_skypiax_shutdown, NULL);    //mod_skypiax_runtime);
@@ -69,7 +68,7 @@
       (&tech_pvt->read_codec, "L16", NULL, sample_rate, codec_ms, 1,
        SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
        NULL) != SWITCH_STATUS_SUCCESS) {
-    ERRORA( "Can't load codec?\n", SKYPIAX_P_LOG);
+    ERRORA("Can't load codec?\n", SKYPIAX_P_LOG);
     return SWITCH_STATUS_FALSE;
   }
 
@@ -77,7 +76,7 @@
       (&tech_pvt->write_codec, "L16", NULL, sample_rate, codec_ms, 1,
        SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
        NULL) != SWITCH_STATUS_SUCCESS) {
-    ERRORA( "Can't load codec?\n", SKYPIAX_P_LOG);
+    ERRORA("Can't load codec?\n", SKYPIAX_P_LOG);
     switch_core_codec_destroy(&tech_pvt->read_codec);
     return SWITCH_STATUS_FALSE;
   }
@@ -111,9 +110,9 @@
 
   }
   if (skypiax_codec(tech_pvt, SAMPLERATE_SKYPIAX, 20) != SWITCH_STATUS_SUCCESS) {
-    ERRORA( "skypiax_docec FAILED\n", SKYPIAX_P_LOG);
+    ERRORA("skypiax_docec FAILED\n", SKYPIAX_P_LOG);
   } else {
-    DEBUGA_SKYPE( "skypiax_codec SUCCESS\n", SKYPIAX_P_LOG);
+    DEBUGA_SKYPE("skypiax_codec SUCCESS\n", SKYPIAX_P_LOG);
   }
 
   DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
@@ -146,8 +145,7 @@
   globals.calls++;
   switch_mutex_unlock(globals.mutex);
 
-  DEBUGA_SKYPE( "%s CHANNEL INIT\n", SKYPIAX_P_LOG,
-                    switch_channel_get_name(channel));
+  DEBUGA_SKYPE("%s CHANNEL INIT\n", SKYPIAX_P_LOG, switch_channel_get_name(channel));
   return SWITCH_STATUS_SUCCESS;
 }
 
@@ -186,8 +184,7 @@
     switch_core_codec_destroy(&tech_pvt->write_codec);
   }
 
-  DEBUGA_SKYPE( "%s CHANNEL HANGUP\n", SKYPIAX_P_LOG,
-                    switch_channel_get_name(channel));
+  DEBUGA_SKYPE("%s CHANNEL HANGUP\n", SKYPIAX_P_LOG, switch_channel_get_name(channel));
   switch_mutex_lock(globals.mutex);
   globals.calls--;
   if (globals.calls < 0) {
@@ -210,8 +207,7 @@
   tech_pvt = switch_core_session_get_private(session);
   assert(tech_pvt != NULL);
 
-  DEBUGA_SKYPE( "%s CHANNEL ROUTING\n", SKYPIAX_P_LOG,
-                    switch_channel_get_name(channel));
+  DEBUGA_SKYPE("%s CHANNEL ROUTING\n", SKYPIAX_P_LOG, switch_channel_get_name(channel));
 
   return SWITCH_STATUS_SUCCESS;
 }
@@ -229,8 +225,7 @@
   tech_pvt = switch_core_session_get_private(session);
   assert(tech_pvt != NULL);
 
-  DEBUGA_SKYPE( "%s CHANNEL EXECUTE\n", SKYPIAX_P_LOG,
-                    switch_channel_get_name(channel));
+  DEBUGA_SKYPE("%s CHANNEL EXECUTE\n", SKYPIAX_P_LOG, switch_channel_get_name(channel));
 
   return SWITCH_STATUS_SUCCESS;
 }
@@ -249,17 +244,15 @@
 
   switch (sig) {
   case SWITCH_SIG_KILL:
-    DEBUGA_SKYPE(
-                      "%s CHANNEL got SWITCH_SIG_KILL\n", SKYPIAX_P_LOG,
-                      switch_channel_get_name(channel));
+    DEBUGA_SKYPE("%s CHANNEL got SWITCH_SIG_KILL\n", SKYPIAX_P_LOG,
+                 switch_channel_get_name(channel));
     switch_clear_flag_locked(tech_pvt, TFLAG_IO);
     switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
     switch_set_flag_locked(tech_pvt, TFLAG_HANGUP);
     break;
   case SWITCH_SIG_BREAK:
-    DEBUGA_SKYPE(
-                      "%s CHANNEL got SWITCH_SIG_BREAK\n", SKYPIAX_P_LOG,
-                      switch_channel_get_name(channel));
+    DEBUGA_SKYPE("%s CHANNEL got SWITCH_SIG_BREAK\n", SKYPIAX_P_LOG,
+                 switch_channel_get_name(channel));
     switch_set_flag_locked(tech_pvt, TFLAG_BREAK);
     break;
   default:
@@ -272,14 +265,14 @@
 static switch_status_t channel_on_exchange_media(switch_core_session_t * session)
 {
   skypiax_interface_t *p = NULL;
-  DEBUGA_SKYPE( "CHANNEL LOOPBACK\n", SKYPIAX_P_LOG);
+  DEBUGA_SKYPE("CHANNEL LOOPBACK\n", SKYPIAX_P_LOG);
   return SWITCH_STATUS_SUCCESS;
 }
 
 static switch_status_t channel_on_soft_execute(switch_core_session_t * session)
 {
   skypiax_interface_t *p = NULL;
-  DEBUGA_SKYPE( "CHANNEL TRANSMIT\n", SKYPIAX_P_LOG);
+  DEBUGA_SKYPE("CHANNEL TRANSMIT\n", SKYPIAX_P_LOG);
   return SWITCH_STATUS_SUCCESS;
 }
 
@@ -292,9 +285,9 @@
 
   p = tech_pvt->p;
 
-  NOTICA( "DTMF: %c\n", SKYPIAX_P_LOG, dtmf->digit);
+  NOTICA("DTMF: %c\n", SKYPIAX_P_LOG, dtmf->digit);
 
-skypiax_skype_senddigit(p, dtmf->digit);
+  skypiax_skype_senddigit(p, dtmf->digit);
 
   return SWITCH_STATUS_SUCCESS;
 }
@@ -318,8 +311,7 @@
 
   if (skypiax_skypeaudio_read(tech_pvt) != SWITCH_STATUS_SUCCESS) {
 
-    ERRORA(
-                      "skypiax_skypeaudio_read ERROR\n", SKYPIAX_P_LOG);
+    ERRORA("skypiax_skypeaudio_read ERROR\n", SKYPIAX_P_LOG);
 
   } else {
     switch_set_flag_locked(tech_pvt, TFLAG_VOICE);
@@ -330,14 +322,12 @@
   while (switch_test_flag(tech_pvt, TFLAG_IO)) {
     if (switch_test_flag(tech_pvt, TFLAG_BREAK)) {
       switch_clear_flag(tech_pvt, TFLAG_BREAK);
-      DEBUGA_SKYPE(
-                        "CHANNEL READ FRAME goto CNG\n", SKYPIAX_P_LOG);
+      DEBUGA_SKYPE("CHANNEL READ FRAME goto CNG\n", SKYPIAX_P_LOG);
       goto cng;
     }
 
     if (!switch_test_flag(tech_pvt, TFLAG_IO)) {
-      DEBUGA_SKYPE(
-                        "CHANNEL READ FRAME not IO\n", SKYPIAX_P_LOG);
+      DEBUGA_SKYPE("CHANNEL READ FRAME not IO\n", SKYPIAX_P_LOG);
       return SWITCH_STATUS_FALSE;
     }
     //DEBUGA_SKYPE( "============>\n");
@@ -345,8 +335,7 @@
     if (switch_test_flag(tech_pvt, TFLAG_IO) && switch_test_flag(tech_pvt, TFLAG_VOICE)) {
       switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
       if (!tech_pvt->read_frame.datalen) {
-        DEBUGA_SKYPE(
-                          "CHANNEL READ CONTINUE\n", SKYPIAX_P_LOG);
+        DEBUGA_SKYPE("CHANNEL READ CONTINUE\n", SKYPIAX_P_LOG);
         continue;
       }
       *frame = &tech_pvt->read_frame;
@@ -358,12 +347,12 @@
       return SWITCH_STATUS_SUCCESS;
     }
 
-    DEBUGA_SKYPE( "CHANNEL READ no TFLAG_IO\n", SKYPIAX_P_LOG);
+    DEBUGA_SKYPE("CHANNEL READ no TFLAG_IO\n", SKYPIAX_P_LOG);
     return SWITCH_STATUS_FALSE;
 
   }
 
-  DEBUGA_SKYPE( "CHANNEL READ FALSE\n", SKYPIAX_P_LOG);
+  DEBUGA_SKYPE("CHANNEL READ FALSE\n", SKYPIAX_P_LOG);
   return SWITCH_STATUS_FALSE;
 
 cng:
@@ -488,7 +477,7 @@
     body = "";
   }
 
-  WARNINGA( "event: |||%s|||\n", SKYPIAX_P_LOG, body);
+  WARNINGA("event: |||%s|||\n", SKYPIAX_P_LOG, body);
 
   return SWITCH_STATUS_SUCCESS;
 }
@@ -524,58 +513,60 @@
     private_t *tech_pvt;
     switch_channel_t *channel;
     switch_caller_profile_t *caller_profile;
-  skypiax_interface_t *p = NULL;
+    skypiax_interface_t *p = NULL;
 
     switch_core_session_add_stream(*new_session, NULL);
 
-
     if ((tech_pvt =
          (private_t *) switch_core_session_alloc(*new_session, sizeof(private_t))) != 0) {
-	    int found=0;
-	    char interface_name[256];
-
-
-    if (strlen(outbound_profile->destination_number)) {
-	    int i;
-	    char *slash;
-
-	    strncpy(interface_name, outbound_profile->destination_number, 255);
-	    slash=strrchr(interface_name, '/');
-	    *slash='\0';
+      int found = 0;
+      char interface_name[256];
 
+      if (strlen(outbound_profile->destination_number)) {
+        int i;
+        char *slash;
+
+        strncpy(interface_name, outbound_profile->destination_number, 255);
+        slash = strrchr(interface_name, '/');
+        *slash = '\0';
+
+        for (i = 0; i < SKYPIAX_MAX_INTERFACES; i++) {
+
+          if (strlen(globals.SKYPIAX_INTERFACES[i].name)
+              &&
+              (strncmp
+               (globals.SKYPIAX_INTERFACES[i].name, interface_name,
+                strlen(interface_name)) == 0)) {
+
+            DEBUGA_SKYPE("globals.SKYPIAX_INTERFACES[%d].name=|||%s|||?\n", SKYPIAX_P_LOG,
+                         i, globals.SKYPIAX_INTERFACES[i].name);
+            tech_pvt->p = &globals.SKYPIAX_INTERFACES[i];   //FIXME
+            globals.SKYPIAX_INTERFACES[i].tech_pvt = tech_pvt;  //FIXME
+            found = 1;
+            break;
+          }
 
-	    for(i=0; i< SKYPIAX_MAX_INTERFACES; i++){
-
-		    if( strlen(globals.SKYPIAX_INTERFACES[i].name) && (strncmp(globals.SKYPIAX_INTERFACES[i].name, interface_name, strlen(interface_name)) == 0 )) {
-
-      DEBUGA_SKYPE( "globals.SKYPIAX_INTERFACES[%d].name=|||%s|||?\n", SKYPIAX_P_LOG, i, globals.SKYPIAX_INTERFACES[i].name);
-      tech_pvt->p = &globals.SKYPIAX_INTERFACES[i];    //FIXME
-      globals.SKYPIAX_INTERFACES[i].tech_pvt = tech_pvt;   //FIXME
-      found=1;
-			    break;
-		    }
-
-	    }
+        }
 
-    } else {
-      ERRORA( "Doh! no destination number?\n", SKYPIAX_P_LOG);
-      switch_core_session_destroy(new_session);
-      return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
-    }
+      } else {
+        ERRORA("Doh! no destination number?\n", SKYPIAX_P_LOG);
+        switch_core_session_destroy(new_session);
+        return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
+      }
 
-    if(!found){
-      ERRORA( "Doh! no matching interface for |||%s|||?\n", SKYPIAX_P_LOG, interface_name);
-      switch_core_session_destroy(new_session);
-      return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
+      if (!found) {
+        ERRORA("Doh! no matching interface for |||%s|||?\n", SKYPIAX_P_LOG,
+               interface_name);
+        switch_core_session_destroy(new_session);
+        return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
 
-    }
+      }
       //tech_pvt->p = &globals.SKYPIAX_INTERFACES[19];    //FIXME
       //globals.SKYPIAX_INTERFACES[19].tech_pvt = tech_pvt;   //FIXME
       channel = switch_core_session_get_channel(*new_session);
       skypiax_tech_init(tech_pvt, *new_session, NULL);
     } else {
-	    ERRORA(
-                        "Hey where is my memory pool?\n", SKYPIAX_P_LOG);
+      ERRORA("Hey where is my memory pool?\n", SKYPIAX_P_LOG);
       switch_core_session_destroy(new_session);
       return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
     }
@@ -586,23 +577,26 @@
       snprintf(name, sizeof(name), "skypiax/%s", outbound_profile->destination_number);
       //snprintf(name, sizeof(name), "skypiax/%s", p->name);
       switch_channel_set_name(channel, name);
-      NOTICA( "outbound_profile->destination_number=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->destination_number);
-      NOTICA( "outbound_profile->username=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->username);
-      NOTICA( "outbound_profile->caller_id_name=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->caller_id_name);
-      NOTICA( "outbound_profile->caller_id_number=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->caller_id_number);
+      NOTICA("outbound_profile->destination_number=|||%s|||\n", SKYPIAX_P_LOG,
+             outbound_profile->destination_number);
+      NOTICA("outbound_profile->username=|||%s|||\n", SKYPIAX_P_LOG,
+             outbound_profile->username);
+      NOTICA("outbound_profile->caller_id_name=|||%s|||\n", SKYPIAX_P_LOG,
+             outbound_profile->caller_id_name);
+      NOTICA("outbound_profile->caller_id_number=|||%s|||\n", SKYPIAX_P_LOG,
+             outbound_profile->caller_id_number);
 
       caller_profile = switch_caller_profile_clone(*new_session, outbound_profile);
       switch_channel_set_caller_profile(channel, caller_profile);
       tech_pvt->caller_profile = caller_profile;
     } else {
-      ERRORA( "Doh! no caller profile\n", SKYPIAX_P_LOG);
+      ERRORA("Doh! no caller profile\n", SKYPIAX_P_LOG);
       switch_core_session_destroy(new_session);
       return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
     }
 
     skypiax_skype_call(tech_pvt->p, caller_profile->destination_number, 30, *new_session);
 
-
     switch_channel_set_flag(channel, CF_OUTBOUND);
     switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND);
     switch_channel_set_state(channel, CS_INIT);
@@ -667,7 +661,7 @@
         ERRORA("no tech_pvt?\n", SKYPIAX_P_LOG);
       }
       p->interface_state = SKYPIAX_STATE_DOWN;
-      tech_pvt->session = NULL;    //FIXME
+      tech_pvt->session = NULL; //FIXME
     }
   }
 
@@ -696,44 +690,36 @@
       char *val = (char *) switch_xml_attr_soft(param, "value");
 
       if (!strcasecmp(var, "debug")) {
-        DEBUGA_SKYPE( "globals.debug=%d\n", SKYPIAX_P_LOG,
-                          globals.debug);
+        DEBUGA_SKYPE("globals.debug=%d\n", SKYPIAX_P_LOG, globals.debug);
         globals.debug = atoi(val);
-        DEBUGA_SKYPE( "globals.debug=%d\n", SKYPIAX_P_LOG,
-                          globals.debug);
+        DEBUGA_SKYPE("globals.debug=%d\n", SKYPIAX_P_LOG, globals.debug);
       } else if (!strcasecmp(var, "hold-music")) {
         switch_set_string(globals.hold_music, val);
-        DEBUGA_SKYPE( "globals.hold_music=%s\n", SKYPIAX_P_LOG,
-                          globals.hold_music);
+        DEBUGA_SKYPE("globals.hold_music=%s\n", SKYPIAX_P_LOG, globals.hold_music);
       } else if (!strcmp(var, "port")) {
         globals.port = atoi(val);
-        DEBUGA_SKYPE( "globals.port=%d\n", SKYPIAX_P_LOG,
-                          globals.port);
+        DEBUGA_SKYPE("globals.port=%d\n", SKYPIAX_P_LOG, globals.port);
       } else if (!strcmp(var, "ip")) {
         set_global_ip(val);
-        DEBUGA_SKYPE( "globals.ip=%s\n", SKYPIAX_P_LOG,
-                          globals.ip);
+        DEBUGA_SKYPE("globals.ip=%s\n", SKYPIAX_P_LOG, globals.ip);
       } else if (!strcmp(var, "codec-master")) {
         if (!strcasecmp(val, "us")) {
           switch_set_flag(&globals, GFLAG_MY_CODEC_PREFS);
         }
-        DEBUGA_SKYPE(
-                          "codec-master globals.debug=%d\n", SKYPIAX_P_LOG, globals.debug);
+        DEBUGA_SKYPE("codec-master globals.debug=%d\n", SKYPIAX_P_LOG, globals.debug);
       } else if (!strcmp(var, "dialplan")) {
         set_global_dialplan(val);
-        DEBUGA_SKYPE( "globals.dialplan=%s\n", SKYPIAX_P_LOG,
-                          globals.dialplan);
+        DEBUGA_SKYPE("globals.dialplan=%s\n", SKYPIAX_P_LOG, globals.dialplan);
       } else if (!strcmp(var, "codec-prefs")) {
         set_global_codec_string(val);
-        DEBUGA_SKYPE(
-                          "globals.codec_string=%s\n", SKYPIAX_P_LOG, globals.codec_string);
+        DEBUGA_SKYPE("globals.codec_string=%s\n", SKYPIAX_P_LOG, globals.codec_string);
         globals.codec_order_last =
           switch_separate_string(globals.codec_string, ',', globals.codec_order,
                                  SWITCH_MAX_CODECS);
       } else if (!strcmp(var, "codec-rates")) {
         set_global_codec_rates_string(val);
-        DEBUGA_SKYPE(
-                          "globals.codec_rates_string=%s\n", SKYPIAX_P_LOG, globals.codec_rates_string);
+        DEBUGA_SKYPE("globals.codec_rates_string=%s\n", SKYPIAX_P_LOG,
+                     globals.codec_rates_string);
         globals.codec_rates_last =
           switch_separate_string(globals.codec_rates_string, ',', globals.codec_rates,
                                  SWITCH_MAX_CODECS);
@@ -805,50 +791,41 @@
 
       }
       if (!skype_user) {
-        ERRORA(
-                          "interface missing REQUIRED param 'skype_user'\n", SKYPIAX_P_LOG);
+        ERRORA("interface missing REQUIRED param 'skype_user'\n", SKYPIAX_P_LOG);
         continue;
       }
 
       if (!skype_password) {
-        ERRORA(
-                          "interface missing REQUIRED param 'skype_password'\n", SKYPIAX_P_LOG);
+        ERRORA("interface missing REQUIRED param 'skype_password'\n", SKYPIAX_P_LOG);
         continue;
       }
       if (!X11_display) {
-        ERRORA(
-                          "interface missing REQUIRED param 'X11_display'\n", SKYPIAX_P_LOG);
+        ERRORA("interface missing REQUIRED param 'X11_display'\n", SKYPIAX_P_LOG);
         continue;
       }
       if (!tcp_cli_port) {
-        ERRORA(
-                          "interface missing REQUIRED param 'tcp_cli_port'\n", SKYPIAX_P_LOG);
+        ERRORA("interface missing REQUIRED param 'tcp_cli_port'\n", SKYPIAX_P_LOG);
         continue;
       }
 
       if (!tcp_srv_port) {
-        ERRORA(
-                          "interface missing REQUIRED param 'tcp_srv_port'\n", SKYPIAX_P_LOG);
+        ERRORA("interface missing REQUIRED param 'tcp_srv_port'\n", SKYPIAX_P_LOG);
         continue;
       }
       if (!id) {
-        ERRORA(
-                          "interface missing REQUIRED param 'id'\n", SKYPIAX_P_LOG);
+        ERRORA("interface missing REQUIRED param 'id'\n", SKYPIAX_P_LOG);
         continue;
       }
       if (switch_is_number(id)) {
         interface_id = atoi(id);
-        DEBUGA_SKYPE( "interface_id=%d\n", SKYPIAX_P_LOG,
-                          interface_id);
+        DEBUGA_SKYPE("interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
       } else {
-        ERRORA(
-                          "interface param 'id' MUST be a number, now id='%s'\n", SKYPIAX_P_LOG, id);
+        ERRORA("interface param 'id' MUST be a number, now id='%s'\n", SKYPIAX_P_LOG, id);
         continue;
       }
 
       if (!name) {
-        WARNINGA(
-                          "interface missing param 'name', not nice, but works\n", SKYPIAX_P_LOG);
+        WARNINGA("interface missing param 'name', not nice, but works\n", SKYPIAX_P_LOG);
       }
 
       if (!tonegroup) {
@@ -864,7 +841,7 @@
       }
 
       if (name) {
-        DEBUGA_SKYPE( "name=%s\n", SKYPIAX_P_LOG, name);
+        DEBUGA_SKYPE("name=%s\n", SKYPIAX_P_LOG, name);
       }
 #ifndef WIN32
       if (!XInitThreads()) {
@@ -882,8 +859,7 @@
 
         memset(&newconf, '\0', sizeof(newconf));
         globals.SKYPIAX_INTERFACES[interface_id] = newconf;
-        DEBUGA_SKYPE(
-                          "CONFIGURING interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
+        DEBUGA_SKYPE("CONFIGURING interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
         switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].interface_id, id);
         if (name) {
           switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].name, name);
@@ -910,38 +886,37 @@
         switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].context, context);
         switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].dialplan, dialplan);
 
-        DEBUGA_SKYPE(
-                          "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].X11_display=%s\n", SKYPIAX_P_LOG,
-                          interface_id,
-                          globals.SKYPIAX_INTERFACES[interface_id].X11_display);
-        DEBUGA_SKYPE(
-                          "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].skype_user=%s\n", SKYPIAX_P_LOG,
-                          interface_id,
-                          globals.SKYPIAX_INTERFACES[interface_id].skype_user);
-        DEBUGA_SKYPE(
-                          "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].skype_password=%s\n", SKYPIAX_P_LOG,
-                          interface_id,
-                          globals.SKYPIAX_INTERFACES[interface_id].skype_password);
-        DEBUGA_SKYPE(
-                          "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port=%d\n", SKYPIAX_P_LOG,
-                          interface_id,
-                          globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port);
-        DEBUGA_SKYPE(
-                          "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port=%d\n", SKYPIAX_P_LOG,
-                          interface_id,
-                          globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port);
-        DEBUGA_SKYPE(
-                          "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].name=%s\n", SKYPIAX_P_LOG,
-                          interface_id, globals.SKYPIAX_INTERFACES[interface_id].name);
-        DEBUGA_SKYPE(
-                          "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].context=%s\n", SKYPIAX_P_LOG,
-                          interface_id, globals.SKYPIAX_INTERFACES[interface_id].context);
-        DEBUGA_SKYPE(
-                          "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].dialplan=%s\n", SKYPIAX_P_LOG,
-                          interface_id,
-                          globals.SKYPIAX_INTERFACES[interface_id].dialplan);
-	NOTICA(
-                          "STARTING interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
+        DEBUGA_SKYPE
+          ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].X11_display=%s\n",
+           SKYPIAX_P_LOG, interface_id,
+           globals.SKYPIAX_INTERFACES[interface_id].X11_display);
+        DEBUGA_SKYPE
+          ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].skype_user=%s\n",
+           SKYPIAX_P_LOG, interface_id,
+           globals.SKYPIAX_INTERFACES[interface_id].skype_user);
+        DEBUGA_SKYPE
+          ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].skype_password=%s\n",
+           SKYPIAX_P_LOG, interface_id,
+           globals.SKYPIAX_INTERFACES[interface_id].skype_password);
+        DEBUGA_SKYPE
+          ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port=%d\n",
+           SKYPIAX_P_LOG, interface_id,
+           globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port);
+        DEBUGA_SKYPE
+          ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port=%d\n",
+           SKYPIAX_P_LOG, interface_id,
+           globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port);
+        DEBUGA_SKYPE("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].name=%s\n",
+                     SKYPIAX_P_LOG, interface_id,
+                     globals.SKYPIAX_INTERFACES[interface_id].name);
+        DEBUGA_SKYPE
+          ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].context=%s\n",
+           SKYPIAX_P_LOG, interface_id, globals.SKYPIAX_INTERFACES[interface_id].context);
+        DEBUGA_SKYPE
+          ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].dialplan=%s\n",
+           SKYPIAX_P_LOG, interface_id,
+           globals.SKYPIAX_INTERFACES[interface_id].dialplan);
+        NOTICA("STARTING interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
 
         switch_threadattr_create(&do_skype_thd_attr, skypiax_module_pool);
         //switch_threadattr_detach_set(do_skype_thd_attr, 1);
@@ -969,16 +944,14 @@
 
         skypiax_skypeaudio_init(&globals.SKYPIAX_INTERFACES[interface_id]);
 
-
-        while(globals.SKYPIAX_INTERFACES[interface_id].AsteriskHandlesAst.api_connected == 0)
-            switch_sleep(1000);
-        NOTICA(
-                          "STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
+        while (globals.SKYPIAX_INTERFACES[interface_id].AsteriskHandlesAst.
+               api_connected == 0)
+          switch_sleep(1000);
+        NOTICA("STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
 
       } else {
-        ERRORA(
-                          "interface id %d is higher than SKYPIAX_MAX_INTERFACES (%d)\n", SKYPIAX_P_LOG,
-                          interface_id, SKYPIAX_MAX_INTERFACES);
+        ERRORA("interface id %d is higher than SKYPIAX_MAX_INTERFACES (%d)\n",
+               SKYPIAX_P_LOG, interface_id, SKYPIAX_MAX_INTERFACES);
         continue;
       }
 
@@ -986,21 +959,16 @@
 
     for (i = 0; i < SKYPIAX_MAX_INTERFACES; i++) {
       if (strlen(globals.SKYPIAX_INTERFACES[i].name)) {
-        DEBUGA_SKYPE(
-                          "i=%d globals.SKYPIAX_INTERFACES[%d].interface_id=%s\n", SKYPIAX_P_LOG, i, i,
-                          globals.SKYPIAX_INTERFACES[i].interface_id);
-        DEBUGA_SKYPE(
-                          "i=%d globals.SKYPIAX_INTERFACES[%d].X11_display=%s\n", SKYPIAX_P_LOG, i, i,
-                          globals.SKYPIAX_INTERFACES[i].X11_display);
-        DEBUGA_SKYPE(
-                          "i=%d globals.SKYPIAX_INTERFACES[%d].name=%s\n", SKYPIAX_P_LOG, i, i,
-                          globals.SKYPIAX_INTERFACES[i].name);
-        DEBUGA_SKYPE(
-                          "i=%d globals.SKYPIAX_INTERFACES[%d].context=%s\n", SKYPIAX_P_LOG, i, i,
-                          globals.SKYPIAX_INTERFACES[i].context);
-        DEBUGA_SKYPE(
-                          "i=%d globals.SKYPIAX_INTERFACES[%d].dialplan=%s\n", SKYPIAX_P_LOG, i, i,
-                          globals.SKYPIAX_INTERFACES[i].dialplan);
+        DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].interface_id=%s\n",
+                     SKYPIAX_P_LOG, i, i, globals.SKYPIAX_INTERFACES[i].interface_id);
+        DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].X11_display=%s\n",
+                     SKYPIAX_P_LOG, i, i, globals.SKYPIAX_INTERFACES[i].X11_display);
+        DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].name=%s\n", SKYPIAX_P_LOG, i, i,
+                     globals.SKYPIAX_INTERFACES[i].name);
+        DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].context=%s\n", SKYPIAX_P_LOG, i,
+                     i, globals.SKYPIAX_INTERFACES[i].context);
+        DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].dialplan=%s\n", SKYPIAX_P_LOG,
+                     i, i, globals.SKYPIAX_INTERFACES[i].dialplan);
       }
     }
   }

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sun Jan 11 01:56:56 2009
@@ -115,17 +115,14 @@
 #ifdef WIN32
         len = recv(fd, (char *) srv_in, 320, 0);    //seems that Skype only sends 320 bytes at time
 #else /* WIN32 */
-	while(received < SAMPLES_PER_FRAME * sizeof(short)){
-        	len = recv(fd, srv_in + (received / sizeof(short)), (SAMPLES_PER_FRAME * sizeof(short)) - received, 0);    //seems that Skype only sends 320 bytes at time
-		received += len;
-		if(len == 0)
-			break;
-	}
-	if(len)
-		len = received;
-
-
-
+        while (received < SAMPLES_PER_FRAME * sizeof(short)) {
+          len = recv(fd, srv_in + (received / sizeof(short)), (SAMPLES_PER_FRAME * sizeof(short)) - received, 0);   //seems that Skype only sends 320 bytes at time
+          received += len;
+          if (len == 0)
+            break;
+        }
+        if (len)
+          len = received;
 
         //len = recv(fd, srv_in, SAMPLES_PER_FRAME * sizeof(short), 0);    //seems that Skype only sends 320 bytes at time
 #endif /* WIN32 */
@@ -196,8 +193,8 @@
 #endif /* WIN32 */
               //p->audiobuf_is_loaded = 0;
               //WARNINGA("SRV PIPE WRITE=====> req=%lu recv=%d to sent=%d sent=%u\n",
-                       //SKYPIAX_P_LOG, sizeof(short) * SAMPLES_PER_FRAME, len, len,
-                       //howmany);
+              //SKYPIAX_P_LOG, sizeof(short) * SAMPLES_PER_FRAME, len, len,
+              //howmany);
             } else if (len == SAMPLES_PER_FRAME * sizeof(short) / 2) {
 
 #if 1
@@ -508,14 +505,14 @@
     switch_file_pipe_create(&p->audioskypepipe[0], &p->audioskypepipe[1],
                             skypiax_module_pool);
 #else /* WIN32 */
-  if(pipe(p->audiopipe)){
-  fcntl(p->audiopipe[0], F_SETFL, O_NONBLOCK);
-  fcntl(p->audiopipe[1], F_SETFL, O_NONBLOCK);
-}
-  if (pipe(p->audioskypepipe)){
-  fcntl(p->audioskypepipe[0], F_SETFL, O_NONBLOCK);
-  fcntl(p->audioskypepipe[1], F_SETFL, O_NONBLOCK);
-}
+  if (pipe(p->audiopipe)) {
+    fcntl(p->audiopipe[0], F_SETFL, O_NONBLOCK);
+    fcntl(p->audiopipe[1], F_SETFL, O_NONBLOCK);
+  }
+  if (pipe(p->audioskypepipe)) {
+    fcntl(p->audioskypepipe[0], F_SETFL, O_NONBLOCK);
+    fcntl(p->audioskypepipe[1], F_SETFL, O_NONBLOCK);
+  }
 #endif /* WIN32 */
   //rv = switch_file_pipe_timeout_set(p->audiopipe[0], 100);
 
@@ -1030,23 +1027,20 @@
   DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
 
   //switch_file_pipe_create(&p->AsteriskHandlesAst.fdesc[0], &p->AsteriskHandlesAst.fdesc[1], skypiax_module_pool);
-if(pipe(p->AsteriskHandlesAst.fdesc)){
-  fcntl(p->AsteriskHandlesAst.fdesc[0], F_SETFL, O_NONBLOCK);
-  fcntl(p->AsteriskHandlesAst.fdesc[1], F_SETFL, O_NONBLOCK);
-}
-
+  if (pipe(p->AsteriskHandlesAst.fdesc)) {
+    fcntl(p->AsteriskHandlesAst.fdesc[0], F_SETFL, O_NONBLOCK);
+    fcntl(p->AsteriskHandlesAst.fdesc[1], F_SETFL, O_NONBLOCK);
+  }
   //switch_file_pipe_timeout_set(p->AsteriskHandlesAst.fdesc[0], 100);
   AsteriskHandlesAst = &p->AsteriskHandlesAst;
   //disp = XOpenDisplay(getenv("DISPLAY"));
   disp = XOpenDisplay(p->X11_display);
   if (!disp) {
-    ERRORA(
-                      "Cannot open X Display '%s', exiting skype thread\n", SKYPIAX_P_LOG,
-                      p->X11_display);
+    ERRORA("Cannot open X Display '%s', exiting skype thread\n", SKYPIAX_P_LOG,
+           p->X11_display);
     return NULL;
   } else {
-    DEBUGA_SKYPE( "X Display '%s' opened\n", SKYPIAX_P_LOG,
-                      p->X11_display);
+    DEBUGA_SKYPE("X Display '%s' opened\n", SKYPIAX_P_LOG, p->X11_display);
   }
 
   int xfd;
@@ -1234,10 +1228,9 @@
   fd_set fs;
   struct timeval to;
 #endif /* WIN32 */
-              private_t *tech_pvt = NULL;
-
-              tech_pvt = p->tech_pvt;
+  private_t *tech_pvt = NULL;
 
+  tech_pvt = p->tech_pvt;
 
   if (option_debug > 100) {
     DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
@@ -1280,15 +1273,17 @@
           DEBUGA_SKYPE("read_skype: howmany=%d, i=%d, a=%d, |||%s||| \n", SKYPIAX_P_LOG,
                        howmany, i, a, messaggio);
 
-          if (!strcasecmp(messaggio, "ERROR 68")) {   /* not yet protocol specified,
-                                                         just authorized */
-            DEBUGA_SKYPE ("If I don't connect immediately, please give the Skype client authorization to be connected by Skypiax (and to not ask you again)\n", SKYPIAX_P_LOG);
+          if (!strcasecmp(messaggio, "ERROR 68")) { /* not yet protocol specified,
+                                                       just authorized */
+            DEBUGA_SKYPE
+              ("If I don't connect immediately, please give the Skype client authorization to be connected by Skypiax (and to not ask you again)\n",
+               SKYPIAX_P_LOG);
             switch_sleep(1000000);
             skypiax_skype_write(p, "PROTOCOL 6");
             switch_sleep(10000);
             return 0;
           }
-  
+
           if (!strncasecmp(messaggio, "ERROR 92 CALL", 12)) {
             ERRORA("Skype got ERROR: |||%s|||, the number we called was not recognized\n",
                    SKYPIAX_P_LOG, messaggio);
@@ -1365,66 +1360,67 @@
             }
           }
 
-	  if (!strcasecmp(messaggio, "USER")) {
-		  strncpy(obj, where, sizeof(obj) - 1);
-
-		  where = strsep(stringp, " ");
-
-		  strncpy(id, where, sizeof(id) - 1);
-
-		  where = strsep(stringp, " ");
-
-		  strncpy(prop, where, sizeof(prop) - 1);
-
-		  if (!strcasecmp(prop,"RECEIVEDAUTHREQUEST" )) {
-			  char msg_to_skype[256];
-			  DEBUGA_SKYPE ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, prop);
+          if (!strcasecmp(messaggio, "USER")) {
+            strncpy(obj, where, sizeof(obj) - 1);
 
-			  //FIXME: TODO: allow authorization based on config param
-			  sprintf(msg_to_skype, "SET USER %s ISAUTHORIZED TRUE", id);
-			  skypiax_skype_write(p, msg_to_skype);
-		  }
-	  }
+            where = strsep(stringp, " ");
 
+            strncpy(id, where, sizeof(id) - 1);
 
-	  if (!strcasecmp(messaggio, "MESSAGE")) {
-		  strncpy(obj, where, sizeof(obj) - 1);
+            where = strsep(stringp, " ");
 
-		  where = strsep(stringp, " ");
+            strncpy(prop, where, sizeof(prop) - 1);
 
-		  strncpy(id, where, sizeof(id) - 1);
+            if (!strcasecmp(prop, "RECEIVEDAUTHREQUEST")) {
+              char msg_to_skype[256];
+              DEBUGA_SKYPE("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s!\n",
+                           SKYPIAX_P_LOG, messaggio, obj, id, prop);
+
+              //FIXME: TODO: allow authorization based on config param
+              sprintf(msg_to_skype, "SET USER %s ISAUTHORIZED TRUE", id);
+              skypiax_skype_write(p, msg_to_skype);
+            }
+          }
 
-		  where = strsep(stringp, " ");
+          if (!strcasecmp(messaggio, "MESSAGE")) {
+            strncpy(obj, where, sizeof(obj) - 1);
 
-		  strncpy(prop, where, sizeof(prop) - 1);
+            where = strsep(stringp, " ");
 
-		  if (!strcasecmp(prop,"STATUS" )) {
+            strncpy(id, where, sizeof(id) - 1);
 
-			  where = strsep(stringp, " ");
+            where = strsep(stringp, " ");
 
-			  strncpy(value, where, sizeof(value) - 1);
+            strncpy(prop, where, sizeof(prop) - 1);
 
+            if (!strcasecmp(prop, "STATUS")) {
 
-			  if (!strcasecmp(value,"RECEIVED" )) {
-				  char msg_to_skype[256];
-				  DEBUGA_SKYPE ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s value: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, prop, value);
+              where = strsep(stringp, " ");
 
-				  //FIXME: TODO: allow authorization based on config param
-				  sprintf(msg_to_skype, "SET MESSAGE %s SEEN", id);
-				  skypiax_skype_write(p, msg_to_skype);
-			  }
-		  } else if (!strcasecmp(prop,"BODY" )) {
-			  char msg_to_skype[256];
+              strncpy(value, where, sizeof(value) - 1);
 
-			  DEBUGA_SKYPE ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, prop);
+              if (!strcasecmp(value, "RECEIVED")) {
+                char msg_to_skype[256];
+                DEBUGA_SKYPE
+                  ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s value: %s!\n",
+                   SKYPIAX_P_LOG, messaggio, obj, id, prop, value);
+
+                //FIXME: TODO: allow authorization based on config param
+                sprintf(msg_to_skype, "SET MESSAGE %s SEEN", id);
+                skypiax_skype_write(p, msg_to_skype);
+              }
+            } else if (!strcasecmp(prop, "BODY")) {
+              char msg_to_skype[256];
 
-			  //FIXME: TODO: on config param ???
-			  sprintf(msg_to_skype, "SET MESSAGE %s SEEN", id);
-			  skypiax_skype_write(p, msg_to_skype);
-		  }
+              DEBUGA_SKYPE("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s!\n",
+                           SKYPIAX_P_LOG, messaggio, obj, id, prop);
 
-	  }
+              //FIXME: TODO: on config param ???
+              sprintf(msg_to_skype, "SET MESSAGE %s SEEN", id);
+              skypiax_skype_write(p, msg_to_skype);
+            }
 
+          }
 
           if (!strcasecmp(messaggio, "CALL")) {
 
@@ -1491,8 +1487,8 @@
               if (channel) {
                 switch_dtmf_t dtmf =
                   { (char) value[0], switch_core_default_dtmf_duration(0) };
-                NOTICA("%c DTMF %s\n", SKYPIAX_P_LOG,
-                                  dtmf.digit, switch_channel_get_name(channel));
+                NOTICA("%c DTMF %s\n", SKYPIAX_P_LOG, dtmf.digit,
+                       switch_channel_get_name(channel));
                 switch_mutex_lock(tech_pvt->flag_mutex);
                 switch_channel_queue_dtmf(channel, &dtmf);
                 switch_set_flag(tech_pvt, TFLAG_DTMF);
@@ -1700,13 +1696,12 @@
 
                 //FIXME *new_session=switch_loadable_module_create_interface(skypiax_endpoint_interface, pool);
 
-                if (!p->tech_pvt || !tech_pvt->session) {  //FIXME FIXME FIXME 
+                if (!p->tech_pvt || !tech_pvt->session) {   //FIXME FIXME FIXME 
                   switch_core_session_t *session = NULL;
                   private_t *tech_pvt = NULL;
                   switch_channel_t *channel = NULL;
 
-				  NOTICA(
-                                    "New Inbound Channel!\n", SKYPIAX_P_LOG);
+                  NOTICA("New Inbound Channel!\n", SKYPIAX_P_LOG);
 
                   if ((session =
                        switch_core_session_request(skypiax_endpoint_interface,
@@ -1719,8 +1714,7 @@
                       channel = switch_core_session_get_channel(session);
                       skypiax_tech_init(tech_pvt, session, p);
                     } else {
-				      ERRORA(
-                                        "Hey where is my memory pool?\n", SKYPIAX_P_LOG);
+                      ERRORA("Hey where is my memory pool?\n", SKYPIAX_P_LOG);
                       switch_core_session_destroy(&session);
                       break;
                     }
@@ -1743,8 +1737,7 @@
                     switch_channel_set_state(channel, CS_INIT);
                     if (switch_core_session_thread_launch(session) !=
                         SWITCH_STATUS_SUCCESS) {
-			    ERRORA(
-                                        "Error spawning thread\n", SKYPIAX_P_LOG);
+                      ERRORA("Error spawning thread\n", SKYPIAX_P_LOG);
                       switch_core_session_destroy(&session);
                     }
                   }
@@ -1755,27 +1748,27 @@
                   private_t *tech_pvt = NULL;
                   switch_channel_t *channel = NULL;
 
-		  if(p->tech_pvt){
-                  tech_pvt = p->tech_pvt;
-		  } else {
-			    ERRORA("No p->tech_pvt???\n", SKYPIAX_P_LOG);
-		  }
-		  if(tech_pvt->session){
-                  session = tech_pvt->session;
-		  }else {
-			    ERRORA("No tech_pvt->session???\n", SKYPIAX_P_LOG);
+                  if (p->tech_pvt) {
+                    tech_pvt = p->tech_pvt;
+                  } else {
+                    ERRORA("No p->tech_pvt???\n", SKYPIAX_P_LOG);
+                  }
+                  if (tech_pvt->session) {
+                    session = tech_pvt->session;
+                  } else {
+                    ERRORA("No tech_pvt->session???\n", SKYPIAX_P_LOG);
 
-		  }
+                  }
                   //session = global_session;
-		  if(session){
-                  channel = switch_core_session_get_channel(session);
-                  //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id);
-                  switch_channel_mark_answered(channel);
-		  }else {
+                  if (session) {
+                    channel = switch_core_session_get_channel(session);
+                    //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id);
+                    switch_channel_mark_answered(channel);
+                  } else {
 
-			    ERRORA("No session???\n", SKYPIAX_P_LOG);
+                    ERRORA("No session???\n", SKYPIAX_P_LOG);
 
-		  }
+                  }
 
                   //switch_channel_set_state(channel, CS_EXECUTE);
 
@@ -1830,7 +1823,7 @@
   char *rdest;
   char msg_to_skype[1024];
   private_t *tech_pvt;
-    switch_caller_profile_t *caller_profile;
+  switch_caller_profile_t *caller_profile;
 
   tech_pvt = p->tech_pvt;
 
@@ -1863,7 +1856,6 @@
   caller_profile = tech_pvt->caller_profile;
   caller_profile->destination_number = rdest;
 
-
   //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING);
   return 0;
 }


From gmaruzz at freeswitch.org  Sun Jan 11 00:47:02 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 02:47:02 -0600
Subject: [Freeswitch-svn] [commit] r11116 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 02:47:02 2009
New Revision: 11116

Log:
skypiax: cosmetics

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sun Jan 11 02:47:02 2009
@@ -1,26 +1,10 @@
 #include "skypiax.h"
-//#include 
 
 extern switch_memory_pool_t *skypiax_module_pool;
 extern int option_debug;
 extern switch_endpoint_interface_t *skypiax_endpoint_interface;
 extern int running;
 
-/**********************************************************/
-/**********************************************************/
-/**********************************************************/
-
-//extern switch_core_session_t *global_session;
-
-#ifdef WIN32
-#else /* NOT WIN32 */
-#define SKYPE_X11_BUF_SIZE 512
-#endif /* WIN32 */
-
-/**********************************************************/
-/**********************************************************/
-/**********************************************************/
-
 static void *SWITCH_THREAD_FUNC skypiax_do_tcp_srv_thread(switch_thread_t * thread,
                                                           void *obj)
 {
@@ -49,7 +33,6 @@
   unsigned int kill_cli_size;
   short kill_cli_buff[SAMPLES_PER_FRAME];
   short totalbuf[SAMPLES_PER_FRAME];
-  //int one = 1;
 
   if (option_debug > 100) {
     DEBUGA_SKYPE("ENTERING FUNC\n", SKYPIAX_P_LOG);
@@ -66,7 +49,6 @@
     }
     return NULL;
   }
-  //setsockopt(s, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one));
 
   if (bind(s, (struct sockaddr *) &my_addr, sizeof(struct sockaddr)) < 0) {
     ERRORA("bind Error\n", SKYPIAX_P_LOG);
@@ -105,11 +87,10 @@
       fdselect = fd;
       FD_ZERO(&fs);
       FD_SET(fdselect, &fs);
-      to.tv_usec = 2000000;     //20 msec
+      to.tv_usec = 2000000;     //2000 msec
       to.tv_sec = 0;
 
       rt = select(fdselect + 1, &fs, NULL, NULL, &to);
-      //rt=1;
       if (rt > 0) {
 
 #ifdef WIN32
@@ -123,13 +104,10 @@
         }
         if (len)
           len = received;
-
-        //len = recv(fd, srv_in, SAMPLES_PER_FRAME * sizeof(short), 0);    //seems that Skype only sends 320 bytes at time
 #endif /* WIN32 */
 
         if ((SAMPLERATE_SKYPIAX - 8000) == 0) {
 
-              /****************************************************************/
           if (len > 0) {
             a = 0;
             for (i = 0; i < len / sizeof(short); i++) {
@@ -164,7 +142,6 @@
               howmany = write(p->audiopipe[1], totalbuf, howmany);
 #endif /* WIN32 */
               p->audiobuf_is_loaded = 0;
-              //DEBUGA_SKYPE("read=====> req=%d recv=%d to sent=%d sent=%d\n", SKYPIAX_P_LOG, sizeof(short)*SAMPLES_PER_FRAME, len, (len*sizeof(short))/2, howmany);
             }
 
           } else if (len == 0) {
@@ -175,30 +152,19 @@
             exit = 1;
             break;
           }
-              /****************************************************************/
         } else if (SAMPLERATE_SKYPIAX == 16000) {
 
-              /****************************************************************/
           if (len > 0) {
             if (len == SAMPLES_PER_FRAME * sizeof(short)) {
 #ifdef WIN32
               unsigned int howmany;
-              howmany = len;
-
-              //WARNINGA("SRV recv %d\n", SKYPIAX_P_LOG, len);
 
+              howmany = len;
               switch_file_write(p->audiopipe[1], srv_in, &howmany);
 #else /* WIN32 */
               len = write(p->audiopipe[1], srv_in, len);
 #endif /* WIN32 */
-              //p->audiobuf_is_loaded = 0;
-              //WARNINGA("SRV PIPE WRITE=====> req=%lu recv=%d to sent=%d sent=%u\n",
-              //SKYPIAX_P_LOG, sizeof(short) * SAMPLES_PER_FRAME, len, len,
-              //howmany);
             } else if (len == SAMPLES_PER_FRAME * sizeof(short) / 2) {
-
-#if 1
-
               if (!p->audiobuf_is_loaded) {
                 for (i = 0; i < (len / sizeof(short)); i++) {
                   p->audiobuf[i] = srv_in[i];
@@ -206,7 +172,6 @@
                 p->audiobuf_is_loaded = 1;
               } else {
                 unsigned int howmany = SAMPLES_PER_FRAME * sizeof(short);
-                //short totalbuf[SAMPLES_PER_FRAME];
 
                 for (i = 0; i < (len / sizeof(short)); i++)
                   totalbuf[i] = p->audiobuf[i];
@@ -221,39 +186,30 @@
                 howmany = write(p->audiopipe[1], totalbuf, howmany);
 #endif /* WIN32 */
                 p->audiobuf_is_loaded = 0;
-                //NOTICA("SRV PIPE WRITE=====> req=%d recv=%d to sent=%d sent=%d\n", SKYPIAX_P_LOG, SAMPLES_PER_FRAME * sizeof(short), len, SAMPLES_PER_FRAME * sizeof(short), howmany);
               }
-#endif
 
             } else {
-
               ERRORA("SRV len=%d\n", SKYPIAX_P_LOG, len);
-
             }
 
           } else if (len == 0) {
             DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG);
             switch_sleep(1000);
-            //break;
           } else {
             ERRORA("SRV len=%d\n", SKYPIAX_P_LOG, len);
             exit = 1;
             break;
           }
-              /****************************************************************/
 
         } else {
-
           ERRORA("SAMPLERATE_SKYPIAX can only be 8000 or 16000\n", SKYPIAX_P_LOG);
         }
       } else {
-
         if (rt)
           ERRORA("SRV rt=%d\n", SKYPIAX_P_LOG, rt);
         switch_sleep(10000);
       }
     }
-
 #ifdef WIN32
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
     switch_file_write(p->audiopipe[1], kill_cli_buff, &kill_cli_size);
@@ -275,9 +231,7 @@
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
     len = write(p->audioskypepipe[1], kill_cli_buff, kill_cli_size);
 #endif /* WIN32 */
-
     DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG);
-
 #ifndef WIN32
     close(fd);
 #else
@@ -300,7 +254,6 @@
 }
 static void *SWITCH_THREAD_FUNC skypiax_do_tcp_cli_thread(switch_thread_t * thread,
                                                           void *obj)
-//void *skypiax_do_tcp_cli_thread(void *data)
 {
   struct skypiax_interface *p = obj;
   int s;
@@ -324,7 +277,6 @@
   short cli_out[SAMPLES_PER_FRAME * 2];
   short cli_in[SAMPLES_PER_FRAME];
 #endif /* WIN32 */
-  //int one = 1;
 
   if (option_debug > 100) {
     DEBUGA_SKYPE("ENTERING FUNC\n", SKYPIAX_P_LOG);
@@ -341,7 +293,6 @@
     }
     return NULL;
   }
-  //setsockopt(s, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one));
 
   if (bind(s, (struct sockaddr *) &my_addr, sizeof(struct sockaddr)) < 0) {
     ERRORA("bind Error\n", SKYPIAX_P_LOG);
@@ -385,7 +336,7 @@
 #endif /* WIN32 */
       FD_ZERO(&fs);
       FD_SET(fdselect, &fs);
-      to.tv_usec = 2000000;     //20 msec
+      to.tv_usec = 2000000;     //2000 msec
       to.tv_sec = 0;
 
 #ifdef WIN32
@@ -393,11 +344,7 @@
 #else /* WIN32 */
       rt = select(fdselect + 1, &fs, NULL, NULL, &to);
 #endif /* WIN32 */
-      //switch_sleep(1000);//FIXME
-      //memset(cli_in, '\0', sizeof(cli_in));
-      //rt = 0;
       if (rt > 0) {
-              /*********************************************/
         if ((SAMPLERATE_SKYPIAX - 8000) == 0) {
           got = SAMPLES_PER_FRAME * sizeof(short);
 #ifdef WIN32
@@ -407,7 +354,6 @@
 #endif /* WIN32 */
 
           if (got > 0) {
-            //DEBUGA_SKYPE("CLI PIPE read %d\n", SKYPIAX_P_LOG, got);
             a = 0;
             for (i = 0; i < got / sizeof(short); i++) {
               cli_out[a] = cli_in[i];
@@ -421,8 +367,6 @@
 #else /* WIN32 */
             len = send(fd, cli_out, got * 2, 0);
 #endif /* WIN32 */
-            //DEBUGA_SKYPE("CLI PIPE send %d\n", SKYPIAX_P_LOG, len);
-
             if (len == 0) {
               ERRORA("Skype server GONE\n", SKYPIAX_P_LOG);
               break;
@@ -430,12 +374,8 @@
           } else {
             switch_sleep(1000);
             ERRORA("CLI PIPE give us: %u\n", SKYPIAX_P_LOG, got);
-            //break;
           }
-        }
-          /*********************************************/
-              /*********************************************/
-        else if (SAMPLERATE_SKYPIAX == 16000) {
+        } else if (SAMPLERATE_SKYPIAX == 16000) {
           got = SAMPLES_PER_FRAME * sizeof(short);
 #ifdef WIN32
           switch_file_read(p->audioskypepipe[0], cli_in, &got);
@@ -465,7 +405,6 @@
             ERRORA("CLI PIPE give us: %u\n", SKYPIAX_P_LOG, got);
           }
         }
-          /*********************************************/
 
       } else {
         switch_sleep(1000);
@@ -514,12 +453,6 @@
     fcntl(p->audioskypepipe[1], F_SETFL, O_NONBLOCK);
   }
 #endif /* WIN32 */
-  //rv = switch_file_pipe_timeout_set(p->audiopipe[0], 100);
-
-/* the pipe is our audio fd for pbx to poll on */
-  //p->skypiax_sound_capt_fd = p->audiopipe[0];
-
-  //rv = switch_file_pipe_timeout_set(p->audioskypepipe[0], 20000);
   if (option_debug > 10) {
     DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
   }
@@ -538,30 +471,21 @@
 #endif /* WIN32 */
 
   p = tech_pvt->p;
-
-  //DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
-
 #ifdef WIN32
   rt = 1;
 #else /* WIN32 */
-
   fdselect = p->audiopipe[0];
   FD_ZERO(&fs);
   FD_SET(fdselect, &fs);
-  to.tv_usec = 2000000;         //20 msec
+  to.tv_usec = 2000000;         //2000 msec
   to.tv_sec = 0;
   rt = select(fdselect + 1, &fs, NULL, NULL, &to);
 #endif /* WIN32 */
-
   if (rt > 0) {
-
     samples = SAMPLES_PER_FRAME * sizeof(short);
-
 #ifdef WIN32
     switch_file_read(p->audiopipe[0], tech_pvt->read_frame.data, &samples);
 #else /* WIN32 */
-
-    //samples = read(p->audiopipe[0], buf, SAMPLES_PER_FRAME * sizeof(short));
     samples = read(p->audiopipe[0], tech_pvt->read_frame.data, samples);
 #endif /* WIN32 */
 
@@ -571,49 +495,17 @@
                samples, SAMPLES_PER_FRAME * sizeof(short));
       //do nothing
     } else {
-      tech_pvt->read_frame.datalen = samples;
-      //NOTICA("SRV PIPE READ=====> GOOD samples=%d\n", SKYPIAX_P_LOG, samples);
       /* A real frame */
+      tech_pvt->read_frame.datalen = samples;
     }
   } else {
     if (rt)
       DEBUGA_SKYPE("select returned %d\n", SKYPIAX_P_LOG, rt);
-
   }
-
-  //DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
-
   return SWITCH_STATUS_SUCCESS;
 }
 
 #ifdef WIN32
-#if 0
-int LaunchSkype(struct skypiax_interface *p)
-{
-  LPTSTR pszMessage;
-  DWORD dwLastError;
-  char skypelogin[256];
-
-  memset(skypelogin, '\0', sizeof(skypelogin));
-  sprintf(skypelogin, "/secondary /username:%s /password:%s", p->skype_user,
-          p->skype_password);
-
-  ShellExecute(NULL, "open", "C:\\Program Files\\Skype\\Phone\\Skype.exe", skypelogin,
-               ".", SW_SHOWNORMAL);
-
-  dwLastError = GetLastError();
-
-  FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
-                FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwLastError, MAKELANGID(LANG_NEUTRAL,
-                                                                             SUBLANG_DEFAULT),
-                (LPTSTR) & pszMessage, 0, NULL);
-
-  NOTICA("ShellExecute gave: %s\n", SKYPIAX_P_LOG, pszMessage);
-  LocalFree(pszMessage);
-  return 1;
-
-}
-#endif
 
 enum {
   SKYPECONTROLAPI_ATTACH_SUCCESS = 0,   /*  Client is successfully 
@@ -703,13 +595,14 @@
           if (!p->AsteriskHandlesAst.api_connected) {
             NOTICA("\n\n\tConnected to Skype API!\n", SKYPIAX_P_LOG);
             p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam;
-            //switch_sleep(5000);
             p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle =
               p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle;
           }
           break;
         case SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION:
-          //WARNINGA ("\n\n\tIf I do not (almost) immediately connect to Skype API,\n\tplease give the Skype client authorization to be connected \n\tby Asterisk and to not ask you again.\n\n", SKYPIAX_P_LOG);
+          DEBUGA_SKYPE
+            ("\n\n\tIf I do not (almost) immediately connect to Skype API,\n\tplease give the Skype client authorization to be connected \n\tby Asterisk and to not ask you again.\n\n",
+             SKYPIAX_P_LOG);
           switch_sleep(5000);
           if (!p->AsteriskHandlesAst.api_connected) {
             SendMessage(HWND_BROADCAST,
@@ -830,34 +723,25 @@
   /*  destroy window class */
 
   struct skypiax_interface *p;
-  //DWORD MsgWaitResult;
-  p = obj;
 
+  p = obj;
   switch_file_pipe_create(&p->AsteriskHandlesAst.fdesc[0],
                           &p->AsteriskHandlesAst.fdesc[1], skypiax_module_pool);
-  //switch_file_pipe_timeout_set(p->AsteriskHandlesAst.fdesc[0], 100);
-
   p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach =
     RegisterWindowMessage("SkypeControlAPIAttach");
   p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover =
     RegisterWindowMessage("SkypeControlAPIDiscover");
 
-  //LaunchSkype(p);
   switch_sleep(2000000);
 
   if (p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0
       && p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) {
     if (win32_Initialize_CreateWindowClass(p)) {
       if (win32_Initialize_CreateMainWindow(p)) {
-#if 1
         if (SendMessage
             (HWND_BROADCAST,
              p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
              (WPARAM) p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, 0) != 0) {
-#else
-
-        if (1) {
-#endif
           p->AsteriskHandlesAst.win32_hInit_MainWindowHandle =
             p->AsteriskHandlesAst.win32_hInit_MainWindowHandle;
           while (1) {
@@ -865,7 +749,6 @@
             if (!running)
               break;
             while (GetMessage(&oMessage, 0, 0, 0)) {
-              //break;
               TranslateMessage(&oMessage);
               DispatchMessage(&oMessage);
             }
@@ -883,30 +766,6 @@
 }
 
 #else /* NOT WIN32 */
-#if 0
-int X11_errors_handler(Display * dpy, XErrorEvent * err)
-{
-  (void) dpy;
-  struct skypiax_interface *p = NULL;
-
-  xerror = err->error_code;
-  DEBUGA_SKYPE("Received error code %d from X Server\n", SKYPIAX_P_LOG, xerror);
-  return 0;                     /*  ignore the error */
-}
-
-static void X11_errors_trap(void)
-{
-  xerror = 0;
-  old_handler = XSetErrorHandler(X11_errors_handler);
-}
-
-static int X11_errors_untrap(void)
-{
-  XSetErrorHandler(old_handler);
-  return (xerror != BadValue) && (xerror != BadWindow);
-}
-#endif
-
 int skypiax_skype_send_message(struct AsteriskHandles *AsteriskHandlesAst,
                                const char *message_P)
 {
@@ -914,7 +773,6 @@
   Window w_P;
   Display *disp;
   Window handle_P;
-  //struct skypiax_interface *p = NULL;
 
   w_P = AsteriskHandlesAst->skype_win;
   disp = AsteriskHandlesAst->disp;
@@ -925,7 +783,6 @@
   unsigned int pos = 0;
   unsigned int len = strlen(message_P);
   XEvent e;
-  //int ok;
 
   memset(&e, 0, sizeof(e));
   e.xclient.type = ClientMessage;
@@ -934,7 +791,6 @@
   e.xclient.window = handle_P;
   e.xclient.format = 8;
 
-  //X11_errors_trap();
   //XLockDisplay(disp);
   do {
     unsigned int i;
@@ -948,11 +804,7 @@
 
   XSync(disp, False);
   //XUnlockDisplay(disp);
-  //ok = X11_errors_untrap();
-
-  //if (!ok) DEBUGA_SKYPE("Sending message failed with status %d\n", SKYPIAX_P_LOG, xerror);
 
-  //return ok;
   return 1;
 }
 
@@ -968,7 +820,6 @@
   int status;
   struct skypiax_interface *p = NULL;
 
-  //X11_errors_trap();
   //XLockDisplay(disp);
   status =
     XGetWindowProperty(AsteriskHandlesAst->disp,
@@ -976,7 +827,6 @@
                        False, XA_WINDOW, &type_ret, &format_ret, &nitems_ret,
                        &bytes_after_ret, &prop);
   //XUnlockDisplay(disp);
-  //X11_errors_untrap();
 
   /*  sanity check */
   if (status != Success || format_ret != 32 || nitems_ret != 1) {
@@ -986,7 +836,6 @@
   }
 
   AsteriskHandlesAst->skype_win = *(const unsigned long *) prop & 0xffffffff;
-  //DEBUGA_SKYPE("Skype instance found with id #%x\n", SKYPIAX_P_LOG,
   DEBUGA_SKYPE("Skype instance found with id #%d\n", SKYPIAX_P_LOG,
                (unsigned int) AsteriskHandlesAst->skype_win);
   return 1;
@@ -1018,7 +867,7 @@
 
   struct skypiax_interface *p;
   struct AsteriskHandles *AsteriskHandlesAst;
-  char buf[SKYPE_X11_BUF_SIZE];
+  char buf[512];
   Display *disp = NULL;
   Window root = -1;
   Window win = -1;
@@ -1026,14 +875,11 @@
   p = obj;
   DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
 
-  //switch_file_pipe_create(&p->AsteriskHandlesAst.fdesc[0], &p->AsteriskHandlesAst.fdesc[1], skypiax_module_pool);
   if (pipe(p->AsteriskHandlesAst.fdesc)) {
     fcntl(p->AsteriskHandlesAst.fdesc[0], F_SETFL, O_NONBLOCK);
     fcntl(p->AsteriskHandlesAst.fdesc[1], F_SETFL, O_NONBLOCK);
   }
-  //switch_file_pipe_timeout_set(p->AsteriskHandlesAst.fdesc[0], 100);
   AsteriskHandlesAst = &p->AsteriskHandlesAst;
-  //disp = XOpenDisplay(getenv("DISPLAY"));
   disp = XOpenDisplay(p->X11_display);
   if (!disp) {
     ERRORA("Cannot open X Display '%s', exiting skype thread\n", SKYPIAX_P_LOG,
@@ -1048,7 +894,6 @@
   fcntl(xfd, F_SETFD, FD_CLOEXEC);
 
   //FIXME pthread_cleanup_push(skypiax_skype_clean_disp, &xfd);
-  DEBUGA_SKYPE("PUSH disp %d\n", SKYPIAX_P_LOG, xfd);
 
   AsteriskHandlesAst->disp = disp;
 
@@ -1060,13 +905,9 @@
                                                                             DefaultScreen
                                                                             (disp)));
 
-    //DEBUGA_SKYPE("skype_win=%d win=%d\n", SKYPIAX_P_LOG, (unsigned int) skype_win, (unsigned int) win);
-
-    //AsteriskHandlesAst->skype_win = skype_win;
-    //AsteriskHandlesAst->disp = disp;
     AsteriskHandlesAst->win = win;
 
-    snprintf(buf, SKYPE_X11_BUF_SIZE, "NAME skypiax");
+    snprintf(buf, 512, "NAME skypiax");
 
     if (!skypiax_skype_send_message(AsteriskHandlesAst, buf)) {
       ERRORA
@@ -1076,7 +917,7 @@
       return NULL;
     }
 
-    snprintf(buf, SKYPE_X11_BUF_SIZE, "PROTOCOL 6");
+    snprintf(buf, 512, "PROTOCOL 6");
     if (!skypiax_skype_send_message(AsteriskHandlesAst, buf)) {
       ERRORA
         ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n",
@@ -1095,7 +936,6 @@
     b = buffer;
 
     while (1) {
-      //switch_sleep(10000);
       XNextEvent(disp, &an_event);
       if (!running)
         break;
@@ -1110,10 +950,6 @@
 
         buf[i] = '\0';
 
-        //NOTICA("ClientMessage buf:|||%s||| buffer:|||%s||| serial=%ld|||\r\n",SKYPIAX_P_LOG,buf, buffer,an_event.xclient.serial);
-        //NOTICA ("SKYPE read: |||%s|||%d\n", SKYPIAX_P_LOG, buf, strlen(buf));
-        //NOTICA ("SKYPE buffer: |||%s|||%d\n", SKYPIAX_P_LOG, buffer, strlen(buffer));
-
         strcat(buffer, buf);
 
         if (i < 20) {           /* last fragment */
@@ -1121,11 +957,7 @@
 
           howmany = strlen(b) + 1;
 
-          //switch_file_write(AsteriskHandlesAst->fdesc[1], b, &howmany);
           howmany = write(AsteriskHandlesAst->fdesc[1], b, howmany);
-          //write(AsteriskHandlesAst->fdesc[1], "\0", 1);
-          //FIXME DEBUGA_SKYPE("SKYPE pipewrite: |||%s|||len=%d serial=%ld\n\n\n", SKYPIAX_P_LOG, b, strlen(b) + 1, an_event.xclient.serial);
-          //switch_sleep(1000);
           memset(buffer, '\0', 17000);
         }
 
@@ -1178,7 +1010,6 @@
         ("Sending message failed - probably Skype crashed.\n\nPlease shutdown Skypiax (Asterisk), then restart Skype from the menu, then launch Skypiax and try again.\n",
          SKYPIAX_P_LOG);
       p->skype = 0;
-      //FIXME p->skype_thread = SKYPIAX_PTHREADT_NULL;
       p->skype_thread = NULL;
       if (option_debug > 100) {
         DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
@@ -1243,7 +1074,6 @@
 #ifdef WIN32
   rt = 1;
 #else /* WIN32 */
-
   fdselect = p->AsteriskHandlesAst.fdesc[0];
   FD_ZERO(&fs);
   FD_SET(fdselect, &fs);
@@ -1269,7 +1099,6 @@
 
         if (read_from_pipe[i] == '\0') {
 
-          //if (option_debug > 101)
           DEBUGA_SKYPE("read_skype: howmany=%d, i=%d, a=%d, |||%s||| \n", SKYPIAX_P_LOG,
                        howmany, i, a, messaggio);
 
@@ -1479,9 +1308,7 @@
               DEBUGA_SKYPE("Call %s received a DTMF: %s\n", SKYPIAX_P_LOG, id, value);
 
               tech_pvt = p->tech_pvt;
-              //if(tech_pvt)
               session = tech_pvt->session;
-              //if(session)
               channel = switch_core_session_get_channel(session);
 
               if (channel) {
@@ -1541,7 +1368,6 @@
                     strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1);
                   } else {
                     /* we're owned, we're in a call, let's refuse */
-                    //sprintf(msg_to_skype, "SET CALL %s STATUS REFUSED", id);
                     sprintf(msg_to_skype, "ALTER CALL %s END HANGUP", id);
                     skypiax_skype_write(p, msg_to_skype);
                     switch_sleep(10000);
@@ -1657,26 +1483,21 @@
 
                 if (1) {        //FIXME
                   char msg_to_skype[1024];
+                  switch_threadattr_t *thd_attr = NULL;
 
-                  if (1) {      //FIXME
-                    switch_threadattr_t *thd_attr = NULL;
-
-                    switch_threadattr_create(&thd_attr, skypiax_module_pool);
-                    switch_threadattr_detach_set(thd_attr, 1);
-                    switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
-                    switch_thread_create(&p->tcp_srv_thread, thd_attr,
-                                         skypiax_do_tcp_srv_thread, p,
-                                         skypiax_module_pool);
-                    DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPIAX_P_LOG);
-
-                    switch_threadattr_create(&thd_attr, skypiax_module_pool);
-                    switch_threadattr_detach_set(thd_attr, 1);
-                    switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
-                    switch_thread_create(&p->tcp_cli_thread, thd_attr,
-                                         skypiax_do_tcp_cli_thread, p,
-                                         skypiax_module_pool);
-                    DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG);
-                  }
+                  switch_threadattr_create(&thd_attr, skypiax_module_pool);
+                  switch_threadattr_detach_set(thd_attr, 1);
+                  switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
+                  switch_thread_create(&p->tcp_srv_thread, thd_attr,
+                                       skypiax_do_tcp_srv_thread, p, skypiax_module_pool);
+                  DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPIAX_P_LOG);
+
+                  switch_threadattr_create(&thd_attr, skypiax_module_pool);
+                  switch_threadattr_detach_set(thd_attr, 1);
+                  switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
+                  switch_thread_create(&p->tcp_cli_thread, thd_attr,
+                                       skypiax_do_tcp_cli_thread, p, skypiax_module_pool);
+                  DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG);
                   switch_sleep(100000);
                   sprintf(msg_to_skype, "ALTER CALL %s SET_OUTPUT PORT=\"%d\"", id,
                           p->tcp_srv_port);
@@ -1690,8 +1511,6 @@
 
                 p->skype_callflow = SKYPIAX_STATE_UP;
 
-              /**************************/
-
                 //FIXME switch_core_session_t **new_session;
 
                 //FIXME *new_session=switch_loadable_module_create_interface(skypiax_endpoint_interface, pool);
@@ -1719,8 +1538,6 @@
                       break;
                     }
 
-                    // if ((tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session), NULL, dialplan, cid_name, cid_num, ip, NULL, NULL, NULL, modname, NULL, dest)) != 0) 
-
                     if ((tech_pvt->caller_profile =
                          switch_caller_profile_new(switch_core_session_get_pool(session),
                                                    "skypiax", "XML", p->callid_name,
@@ -1757,23 +1574,20 @@
                     session = tech_pvt->session;
                   } else {
                     ERRORA("No tech_pvt->session???\n", SKYPIAX_P_LOG);
-
                   }
-                  //session = global_session;
                   if (session) {
                     channel = switch_core_session_get_channel(session);
-                    //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id);
-                    switch_channel_mark_answered(channel);
                   } else {
-
                     ERRORA("No session???\n", SKYPIAX_P_LOG);
-
                   }
-
-                  //switch_channel_set_state(channel, CS_EXECUTE);
+                  if (channel) {
+                    switch_channel_mark_answered(channel);
+                    //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id);
+                  } else {
+                    ERRORA("No channel???\n", SKYPIAX_P_LOG);
+                  }
 
                 }
-              /**************************/
 
               } else {
                 WARNINGA("skype_call: %s, STATUS: %s is not recognized\n", SKYPIAX_P_LOG,


From gmaruzz at freeswitch.org  Sun Jan 11 01:03:00 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 03:03:00 -0600
Subject: [Freeswitch-svn] [commit] r11117 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 03:03:00 2009
New Revision: 11117

Log:
skypiax: cosmetics

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Sun Jan 11 03:03:00 2009
@@ -23,17 +23,10 @@
   switch_mutex_t *mutex;
 } globals;
 
-/*************************************************/
-/*************************************************/
-/*************************************************/
 int option_debug = 100;
 switch_endpoint_interface_t *skypiax_endpoint_interface;
 switch_memory_pool_t *skypiax_module_pool = NULL;
 int running = 1;
-//switch_core_session_t *global_session = NULL;
-/*************************************************/
-/*************************************************/
-/*************************************************/
 
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_dialplan, globals.dialplan);
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_string, globals.codec_string);
@@ -171,7 +164,6 @@
   if (strlen(p->skype_call_id)) {
     //switch_thread_cond_signal(tech_pvt->cond);
     WARNINGA("hanging up skype call: %s\n", SKYPIAX_P_LOG, p->skype_call_id);
-    //sprintf(msg_to_skype, "SET CALL %s STATUS FINISHED", p->skype_call_id);
     sprintf(msg_to_skype, "ALTER CALL %s HANGUP", p->skype_call_id);
     skypiax_skype_write(p, msg_to_skype);
   }
@@ -315,8 +307,6 @@
 
   } else {
     switch_set_flag_locked(tech_pvt, TFLAG_VOICE);
-    //ERRORA( "skypiax_skypeaudio_read SUCCESS\n");
-
   }
 
   while (switch_test_flag(tech_pvt, TFLAG_IO)) {
@@ -330,7 +320,6 @@
       DEBUGA_SKYPE("CHANNEL READ FRAME not IO\n", SKYPIAX_P_LOG);
       return SWITCH_STATUS_FALSE;
     }
-    //DEBUGA_SKYPE( "============>\n");
 
     if (switch_test_flag(tech_pvt, TFLAG_IO) && switch_test_flag(tech_pvt, TFLAG_VOICE)) {
       switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
@@ -375,8 +364,6 @@
   unsigned int sent;
   struct skypiax_interface *p = NULL;
 
-  //DEBUGA_SKYPE( "CHANNEL WRITE FRAME\n");
-
   channel = switch_core_session_get_channel(session);
   assert(channel != NULL);
 
@@ -397,7 +384,6 @@
 #endif
 
   sent = frame->datalen;
-  //DEBUGA_SKYPE("CLI PIPE to write %d\n", SKYPIAX_P_LOG, sent);
 #ifdef WIN32
   switch_file_write(p->audioskypepipe[1], frame->data, &sent);
 #else /* WIN32 */
@@ -405,12 +391,9 @@
 #endif /* WIN32 */
   if (sent != frame->datalen && sent != -1) {
     DEBUGA_SKYPE("CLI PIPE write %d\n", SKYPIAX_P_LOG, sent);
-  } else {
-    //NOTICA("CLI PIPE write %d\n", SKYPIAX_P_LOG, sent);
   }
 
   return SWITCH_STATUS_SUCCESS;
-
 }
 
 static switch_status_t channel_answer_channel(switch_core_session_t * session)
@@ -450,7 +433,6 @@
   switch (msg->message_id) {
   case SWITCH_MESSAGE_INDICATE_ANSWER:
     {
-      //WARNINGA("TO BE ANSWERED! \n", SKYPIAX_P_LOG);
       DEBUGA_SKYPE("MSG_ID=%d, TO BE ANSWERED!\n", SKYPIAX_P_LOG, msg->message_id);
       channel_answer_channel(session);
     }
@@ -561,8 +543,6 @@
         return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
 
       }
-      //tech_pvt->p = &globals.SKYPIAX_INTERFACES[19];    //FIXME
-      //globals.SKYPIAX_INTERFACES[19].tech_pvt = tech_pvt;   //FIXME
       channel = switch_core_session_get_channel(*new_session);
       skypiax_tech_init(tech_pvt, *new_session, NULL);
     } else {
@@ -600,12 +580,10 @@
     switch_channel_set_flag(channel, CF_OUTBOUND);
     switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND);
     switch_channel_set_state(channel, CS_INIT);
-    //switch_channel_mark_pre_answered(channel);
     return SWITCH_CAUSE_SUCCESS;
   }
 
   return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
-
 }
 
 /*!
@@ -627,9 +605,7 @@
   while (forever) {
     if (!running)
       break;
-    //switch_sleep(1000); //cicopet
     res = skypiax_skype_read(p);
-    //if (res == CALLFLOW_INCOMING_HANGUP && p->interface_state != SKYPIAX_STATE_DOWN) 
     if (res == CALLFLOW_INCOMING_HANGUP) {
       switch_core_session_t *session = NULL;
       private_t *tech_pvt = NULL;
@@ -643,20 +619,14 @@
 
         if (session) {
           channel = switch_core_session_get_channel(session);
-          //DEBUGA_SKYPE("before channel_on_hangup\n", SKYPIAX_P_LOG);
-
           if (channel) {
             switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
-            //DEBUGA_SKYPE("after channel_on_hangup\n", SKYPIAX_P_LOG);
-
           } else {
             ERRORA("no channel?\n", SKYPIAX_P_LOG);
           }
-
         } else {
           ERRORA("no session?\n", SKYPIAX_P_LOG);
         }
-
       } else {
         ERRORA("no tech_pvt?\n", SKYPIAX_P_LOG);
       }
@@ -664,12 +634,8 @@
       tech_pvt->session = NULL; //FIXME
     }
   }
-
-  //if (option_debug > 10) {
   DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
-  //}
   return NULL;
-
 }
 
 static switch_status_t load_config(void)
@@ -875,8 +841,6 @@
         globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port = atoi(tcp_cli_port);
         globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port = atoi(tcp_srv_port);
 #endif /* WIN32 */
-        //switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port, tcp_cli_port);
-        //switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].tcp_srv_port, tcp_srv_port);
         switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].X11_display,
                           X11_display);
         switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].skype_user,
@@ -919,7 +883,6 @@
         NOTICA("STARTING interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
 
         switch_threadattr_create(&do_skype_thd_attr, skypiax_module_pool);
-        //switch_threadattr_detach_set(do_skype_thd_attr, 1);
         switch_threadattr_stacksize_set(do_skype_thd_attr, SWITCH_THREAD_STACKSIZE);
         switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id].
                              skypiax_do_skype_thread_thread, do_skype_thd_attr,
@@ -930,7 +893,6 @@
 
         switch_threadattr_create(&skypiax_do_controldev_thread_thd_attr,
                                  skypiax_module_pool);
-        //switch_threadattr_detach_set(skypiax_do_controldev_thread_thd_attr, 1);
         switch_threadattr_stacksize_set(skypiax_do_controldev_thread_thd_attr,
                                         SWITCH_THREAD_STACKSIZE);
         switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id].
@@ -945,8 +907,9 @@
         skypiax_skypeaudio_init(&globals.SKYPIAX_INTERFACES[interface_id]);
 
         while (globals.SKYPIAX_INTERFACES[interface_id].AsteriskHandlesAst.
-               api_connected == 0)
+               api_connected == 0) {
           switch_sleep(1000);
+        }
         NOTICA("STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
 
       } else {
@@ -985,7 +948,6 @@
   skypiax_module_pool = pool;
 
   memset(&globals, '\0', sizeof(globals));
-  //memset(globals.SKYPIAX_INTERFACES, '\0', sizeof(globals.SKYPIAX_INTERFACES));
 
   load_config();
 
@@ -1001,13 +963,6 @@
   return SWITCH_STATUS_SUCCESS;
 }
 
-/*
-SWITCH_MODULE_RUNTIME_FUNCTION(mod_skypiax_runtime)
-{
-	return SWITCH_STATUS_TERM;
-}
-*/
-
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skypiax_shutdown)
 {
   int x = 100;
@@ -1016,8 +971,6 @@
   unsigned int howmany = 8;
   int interface_id;
 
-  //p = &globals.SKYPIAX_INTERFACES[2];
-
   running = 0;
 
   for (interface_id = 0; interface_id < SKYPIAX_MAX_INTERFACES; interface_id++) {


From gmaruzz at freeswitch.org  Sun Jan 11 01:08:36 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 03:08:36 -0600
Subject: [Freeswitch-svn] [commit] r11118 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 03:08:36 2009
New Revision: 11118

Log:
skypiax: cosmetics

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Sun Jan 11 03:08:36 2009
@@ -906,7 +906,7 @@
 
         skypiax_skypeaudio_init(&globals.SKYPIAX_INTERFACES[interface_id]);
 
-        while (globals.SKYPIAX_INTERFACES[interface_id].AsteriskHandlesAst.
+        while (globals.SKYPIAX_INTERFACES[interface_id].SkypiaxHandles.
                api_connected == 0) {
           switch_sleep(1000);
         }
@@ -978,30 +978,30 @@
 
     if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread) {
 #ifdef WIN32
-      switch_file_write(p->AsteriskHandlesAst.fdesc[1], "sciutati", &howmany);  // let's the controldev_thread die
+      switch_file_write(p->SkypiaxHandles.fdesc[1], "sciutati", &howmany);  // let's the controldev_thread die
 #else /* WIN32 */
-      howmany = write(p->AsteriskHandlesAst.fdesc[1], "sciutati", howmany);
+      howmany = write(p->SkypiaxHandles.fdesc[1], "sciutati", howmany);
 #endif /* WIN32 */
     }
 
     if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread) {
 #ifdef WIN32
-      if (SendMessage(p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) { // let's the do_skype_thread die
+      if (SendMessage(p->SkypiaxHandles.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) { // let's the do_skype_thread die
         ERRORA("WHY FALSE HERE? %d\n", SKYPIAX_P_LOG, GetLastError());
       }
 #else
       XEvent e;
       Atom atom1 =
-        XInternAtom(p->AsteriskHandlesAst.disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False);
+        XInternAtom(p->SkypiaxHandles.disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False);
       memset(&e, 0, sizeof(e));
       e.xclient.type = ClientMessage;
       e.xclient.message_type = atom1;   /*  leading message */
-      e.xclient.display = p->AsteriskHandlesAst.disp;
-      e.xclient.window = p->AsteriskHandlesAst.skype_win;
+      e.xclient.display = p->SkypiaxHandles.disp;
+      e.xclient.window = p->SkypiaxHandles.skype_win;
       e.xclient.format = 8;
 
-      XSendEvent(p->AsteriskHandlesAst.disp, p->AsteriskHandlesAst.win, False, 0, &e);
-      XSync(p->AsteriskHandlesAst.disp, False);
+      XSendEvent(p->SkypiaxHandles.disp, p->SkypiaxHandles.win, False, 0, &e);
+      XSync(p->SkypiaxHandles.disp, False);
 #endif
     }
     while (x) {

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	Sun Jan 11 03:08:36 2009
@@ -132,7 +132,7 @@
 #define SKYPIAX_MAX_INTERFACES 64
 
 #ifndef WIN32
-struct AsteriskHandles {
+struct SkypiaxHandles {
   Window skype_win;
   Display *disp;
   Window win;
@@ -141,7 +141,7 @@
 };
 #else //WIN32
 
-struct AsteriskHandles {
+struct SkypiaxHandles {
   HWND win32_hInit_MainWindowHandle;
   HWND win32_hGlobal_SkypeAPIWindowHandle;
   HINSTANCE win32_hInit_ProcessHandle;
@@ -171,7 +171,7 @@
   int tcp_cli_port;
   int tcp_srv_port;
 #endif
-  struct AsteriskHandles AsteriskHandlesAst;
+  struct SkypiaxHandles SkypiaxHandles;
 
   int interface_state;          /*!< \brief 'state' of the interface (channel) */
   char language[80];            /*!< \brief default Asterisk dialplan language for this interface */

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sun Jan 11 03:08:36 2009
@@ -567,11 +567,11 @@
     break;
   case WM_DESTROY:
     NOTICA("got DESTROY\n", SKYPIAX_P_LOG);
-    p->AsteriskHandlesAst.win32_hInit_MainWindowHandle = NULL;
+    p->SkypiaxHandles.win32_hInit_MainWindowHandle = NULL;
     PostQuitMessage(0);
     break;
   case WM_COPYDATA:
-    if (p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle == (HWND) uiParam) {
+    if (p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle == (HWND) uiParam) {
       unsigned int howmany;
       char msg_from_skype[2048];
 
@@ -582,21 +582,21 @@
               sizeof(msg_from_skype) - 2);
 
       howmany = strlen(msg_from_skype) + 1;
-      switch_file_write(p->AsteriskHandlesAst.fdesc[1], msg_from_skype, &howmany);
+      switch_file_write(p->SkypiaxHandles.fdesc[1], msg_from_skype, &howmany);
       //NOTICA("From Skype API: %s\n", SKYPIAX_P_LOG, (const char *) poCopyData->lpData);
       lReturnCode = 1;
     }
     break;
   default:
-    if (p && p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
-      if (uiMessage == p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
+    if (p && p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
+      if (uiMessage == p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
         switch (ulParam) {
         case SKYPECONTROLAPI_ATTACH_SUCCESS:
-          if (!p->AsteriskHandlesAst.api_connected) {
+          if (!p->SkypiaxHandles.api_connected) {
             NOTICA("\n\n\tConnected to Skype API!\n", SKYPIAX_P_LOG);
-            p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam;
-            p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle =
-              p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle;
+            p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam;
+            p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle =
+              p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle;
           }
           break;
         case SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION:
@@ -604,11 +604,11 @@
             ("\n\n\tIf I do not (almost) immediately connect to Skype API,\n\tplease give the Skype client authorization to be connected \n\tby Asterisk and to not ask you again.\n\n",
              SKYPIAX_P_LOG);
           switch_sleep(5000);
-          if (!p->AsteriskHandlesAst.api_connected) {
+          if (!p->SkypiaxHandles.api_connected) {
             SendMessage(HWND_BROADCAST,
-                        p->AsteriskHandlesAst.
+                        p->SkypiaxHandles.
                         win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
-                        (WPARAM) p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, 0);
+                        (WPARAM) p->SkypiaxHandles.win32_hInit_MainWindowHandle, 0);
           }
           break;
         case SKYPECONTROLAPI_ATTACH_REFUSED:
@@ -620,11 +620,11 @@
         case SKYPECONTROLAPI_ATTACH_API_AVAILABLE:
           DEBUGA_SKYPE("Skype API available\n", SKYPIAX_P_LOG);
           switch_sleep(5000);
-          if (!p->AsteriskHandlesAst.api_connected) {
+          if (!p->SkypiaxHandles.api_connected) {
             SendMessage(HWND_BROADCAST,
-                        p->AsteriskHandlesAst.
+                        p->SkypiaxHandles.
                         win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
-                        (WPARAM) p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, 0);
+                        (WPARAM) p->SkypiaxHandles.win32_hInit_MainWindowHandle, 0);
           }
           break;
         default:
@@ -651,26 +651,26 @@
 
   fReturnStatus = 0;
   lUUIDResult = UuidCreate(&oUUID);
-  p->AsteriskHandlesAst.win32_hInit_ProcessHandle =
+  p->SkypiaxHandles.win32_hInit_ProcessHandle =
     (HINSTANCE) OpenProcess(PROCESS_DUP_HANDLE, FALSE, GetCurrentProcessId());
-  if (p->AsteriskHandlesAst.win32_hInit_ProcessHandle != NULL
+  if (p->SkypiaxHandles.win32_hInit_ProcessHandle != NULL
       && (lUUIDResult == RPC_S_OK || lUUIDResult == RPC_S_UUID_LOCAL_ONLY)) {
     if (UuidToString(&oUUID, &paucUUIDString) == RPC_S_OK) {
       WNDCLASS oWindowClass;
 
-      strcpy(p->AsteriskHandlesAst.win32_acInit_WindowClassName, "Skype-API-Skypiax-");
-      strcat(p->AsteriskHandlesAst.win32_acInit_WindowClassName, (char *) paucUUIDString);
+      strcpy(p->SkypiaxHandles.win32_acInit_WindowClassName, "Skype-API-Skypiax-");
+      strcat(p->SkypiaxHandles.win32_acInit_WindowClassName, (char *) paucUUIDString);
 
       oWindowClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
       oWindowClass.lpfnWndProc = (WNDPROC) & skypiax_skype_present;
       oWindowClass.cbClsExtra = 0;
       oWindowClass.cbWndExtra = 0;
-      oWindowClass.hInstance = p->AsteriskHandlesAst.win32_hInit_ProcessHandle;
+      oWindowClass.hInstance = p->SkypiaxHandles.win32_hInit_ProcessHandle;
       oWindowClass.hIcon = NULL;
       oWindowClass.hCursor = NULL;
       oWindowClass.hbrBackground = NULL;
       oWindowClass.lpszMenuName = NULL;
-      oWindowClass.lpszClassName = p->AsteriskHandlesAst.win32_acInit_WindowClassName;
+      oWindowClass.lpszClassName = p->SkypiaxHandles.win32_acInit_WindowClassName;
 
       if (RegisterClass(&oWindowClass) != 0)
         fReturnStatus = 1;
@@ -679,34 +679,34 @@
     }
   }
   if (fReturnStatus == 0)
-    CloseHandle(p->AsteriskHandlesAst.win32_hInit_ProcessHandle),
-      p->AsteriskHandlesAst.win32_hInit_ProcessHandle = NULL;
+    CloseHandle(p->SkypiaxHandles.win32_hInit_ProcessHandle),
+      p->SkypiaxHandles.win32_hInit_ProcessHandle = NULL;
   return (fReturnStatus);
 }
 
 void win32_DeInitialize_DestroyWindowClass(struct skypiax_interface *p)
 {
-  UnregisterClass(p->AsteriskHandlesAst.win32_acInit_WindowClassName,
-                  p->AsteriskHandlesAst.win32_hInit_ProcessHandle);
-  CloseHandle(p->AsteriskHandlesAst.win32_hInit_ProcessHandle),
-    p->AsteriskHandlesAst.win32_hInit_ProcessHandle = NULL;
+  UnregisterClass(p->SkypiaxHandles.win32_acInit_WindowClassName,
+                  p->SkypiaxHandles.win32_hInit_ProcessHandle);
+  CloseHandle(p->SkypiaxHandles.win32_hInit_ProcessHandle),
+    p->SkypiaxHandles.win32_hInit_ProcessHandle = NULL;
 }
 
 int win32_Initialize_CreateMainWindow(struct skypiax_interface *p)
 {
-  p->AsteriskHandlesAst.win32_hInit_MainWindowHandle =
+  p->SkypiaxHandles.win32_hInit_MainWindowHandle =
     CreateWindowEx(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE,
-                   p->AsteriskHandlesAst.win32_acInit_WindowClassName, "",
+                   p->SkypiaxHandles.win32_acInit_WindowClassName, "",
                    WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT,
-                   128, 128, NULL, 0, p->AsteriskHandlesAst.win32_hInit_ProcessHandle, p);
-  return (p->AsteriskHandlesAst.win32_hInit_MainWindowHandle != NULL ? 1 : 0);
+                   128, 128, NULL, 0, p->SkypiaxHandles.win32_hInit_ProcessHandle, p);
+  return (p->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL ? 1 : 0);
 }
 
 void win32_DeInitialize_DestroyMainWindow(struct skypiax_interface *p)
 {
-  if (p->AsteriskHandlesAst.win32_hInit_MainWindowHandle != NULL)
-    DestroyWindow(p->AsteriskHandlesAst.win32_hInit_MainWindowHandle),
-      p->AsteriskHandlesAst.win32_hInit_MainWindowHandle = NULL;
+  if (p->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL)
+    DestroyWindow(p->SkypiaxHandles.win32_hInit_MainWindowHandle),
+      p->SkypiaxHandles.win32_hInit_MainWindowHandle = NULL;
 }
 
 DWORD win32_dwThreadId;
@@ -725,25 +725,25 @@
   struct skypiax_interface *p;
 
   p = obj;
-  switch_file_pipe_create(&p->AsteriskHandlesAst.fdesc[0],
-                          &p->AsteriskHandlesAst.fdesc[1], skypiax_module_pool);
-  p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach =
+  switch_file_pipe_create(&p->SkypiaxHandles.fdesc[0],
+                          &p->SkypiaxHandles.fdesc[1], skypiax_module_pool);
+  p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach =
     RegisterWindowMessage("SkypeControlAPIAttach");
-  p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover =
+  p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover =
     RegisterWindowMessage("SkypeControlAPIDiscover");
 
   switch_sleep(2000000);
 
-  if (p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0
-      && p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) {
+  if (p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0
+      && p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) {
     if (win32_Initialize_CreateWindowClass(p)) {
       if (win32_Initialize_CreateMainWindow(p)) {
         if (SendMessage
             (HWND_BROADCAST,
-             p->AsteriskHandlesAst.win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
-             (WPARAM) p->AsteriskHandlesAst.win32_hInit_MainWindowHandle, 0) != 0) {
-          p->AsteriskHandlesAst.win32_hInit_MainWindowHandle =
-            p->AsteriskHandlesAst.win32_hInit_MainWindowHandle;
+             p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
+             (WPARAM) p->SkypiaxHandles.win32_hInit_MainWindowHandle, 0) != 0) {
+          p->SkypiaxHandles.win32_hInit_MainWindowHandle =
+            p->SkypiaxHandles.win32_hInit_MainWindowHandle;
           while (1) {
             MSG oMessage;
             if (!running)
@@ -766,7 +766,7 @@
 }
 
 #else /* NOT WIN32 */
-int skypiax_skype_send_message(struct AsteriskHandles *AsteriskHandlesAst,
+int skypiax_skype_send_message(struct SkypiaxHandles *SkypiaxHandles,
                                const char *message_P)
 {
 
@@ -774,9 +774,9 @@
   Display *disp;
   Window handle_P;
 
-  w_P = AsteriskHandlesAst->skype_win;
-  disp = AsteriskHandlesAst->disp;
-  handle_P = AsteriskHandlesAst->win;
+  w_P = SkypiaxHandles->skype_win;
+  disp = SkypiaxHandles->disp;
+  handle_P = SkypiaxHandles->win;
 
   Atom atom1 = XInternAtom(disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False);
   Atom atom2 = XInternAtom(disp, "SKYPECONTROLAPI_MESSAGE", False);
@@ -808,9 +808,9 @@
   return 1;
 }
 
-int skypiax_skype_present(struct AsteriskHandles *AsteriskHandlesAst)
+int skypiax_skype_present(struct SkypiaxHandles *SkypiaxHandles)
 {
-  Atom skype_inst = XInternAtom(AsteriskHandlesAst->disp, "_SKYPE_INSTANCE", True);
+  Atom skype_inst = XInternAtom(SkypiaxHandles->disp, "_SKYPE_INSTANCE", True);
 
   Atom type_ret;
   int format_ret;
@@ -822,22 +822,22 @@
 
   //XLockDisplay(disp);
   status =
-    XGetWindowProperty(AsteriskHandlesAst->disp,
-                       DefaultRootWindow(AsteriskHandlesAst->disp), skype_inst, 0, 1,
+    XGetWindowProperty(SkypiaxHandles->disp,
+                       DefaultRootWindow(SkypiaxHandles->disp), skype_inst, 0, 1,
                        False, XA_WINDOW, &type_ret, &format_ret, &nitems_ret,
                        &bytes_after_ret, &prop);
   //XUnlockDisplay(disp);
 
   /*  sanity check */
   if (status != Success || format_ret != 32 || nitems_ret != 1) {
-    AsteriskHandlesAst->skype_win = (Window) - 1;
+    SkypiaxHandles->skype_win = (Window) - 1;
     DEBUGA_SKYPE("Skype instance not found\n", SKYPIAX_P_LOG);
     return 0;
   }
 
-  AsteriskHandlesAst->skype_win = *(const unsigned long *) prop & 0xffffffff;
+  SkypiaxHandles->skype_win = *(const unsigned long *) prop & 0xffffffff;
   DEBUGA_SKYPE("Skype instance found with id #%d\n", SKYPIAX_P_LOG,
-               (unsigned int) AsteriskHandlesAst->skype_win);
+               (unsigned int) SkypiaxHandles->skype_win);
   return 1;
 }
 
@@ -866,7 +866,7 @@
 {
 
   struct skypiax_interface *p;
-  struct AsteriskHandles *AsteriskHandlesAst;
+  struct SkypiaxHandles *SkypiaxHandles;
   char buf[512];
   Display *disp = NULL;
   Window root = -1;
@@ -875,11 +875,11 @@
   p = obj;
   DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
 
-  if (pipe(p->AsteriskHandlesAst.fdesc)) {
-    fcntl(p->AsteriskHandlesAst.fdesc[0], F_SETFL, O_NONBLOCK);
-    fcntl(p->AsteriskHandlesAst.fdesc[1], F_SETFL, O_NONBLOCK);
+  if (pipe(p->SkypiaxHandles.fdesc)) {
+    fcntl(p->SkypiaxHandles.fdesc[0], F_SETFL, O_NONBLOCK);
+    fcntl(p->SkypiaxHandles.fdesc[1], F_SETFL, O_NONBLOCK);
   }
-  AsteriskHandlesAst = &p->AsteriskHandlesAst;
+  SkypiaxHandles = &p->SkypiaxHandles;
   disp = XOpenDisplay(p->X11_display);
   if (!disp) {
     ERRORA("Cannot open X Display '%s', exiting skype thread\n", SKYPIAX_P_LOG,
@@ -895,9 +895,9 @@
 
   //FIXME pthread_cleanup_push(skypiax_skype_clean_disp, &xfd);
 
-  AsteriskHandlesAst->disp = disp;
+  SkypiaxHandles->disp = disp;
 
-  if (skypiax_skype_present(AsteriskHandlesAst)) {
+  if (skypiax_skype_present(SkypiaxHandles)) {
     root = DefaultRootWindow(disp);
     win =
       XCreateSimpleWindow(disp, root, 0, 0, 1, 1, 0,
@@ -905,11 +905,11 @@
                                                                             DefaultScreen
                                                                             (disp)));
 
-    AsteriskHandlesAst->win = win;
+    SkypiaxHandles->win = win;
 
     snprintf(buf, 512, "NAME skypiax");
 
-    if (!skypiax_skype_send_message(AsteriskHandlesAst, buf)) {
+    if (!skypiax_skype_send_message(SkypiaxHandles, buf)) {
       ERRORA
         ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n",
          SKYPIAX_P_LOG);
@@ -918,7 +918,7 @@
     }
 
     snprintf(buf, 512, "PROTOCOL 6");
-    if (!skypiax_skype_send_message(AsteriskHandlesAst, buf)) {
+    if (!skypiax_skype_send_message(SkypiaxHandles, buf)) {
       ERRORA
         ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n",
          SKYPIAX_P_LOG);
@@ -957,7 +957,7 @@
 
           howmany = strlen(b) + 1;
 
-          howmany = write(AsteriskHandlesAst->fdesc[1], b, howmany);
+          howmany = write(SkypiaxHandles->fdesc[1], b, howmany);
           memset(buffer, '\0', 17000);
         }
 
@@ -984,7 +984,7 @@
   static char acInputRow[1024];
   COPYDATASTRUCT oCopyData;
 #else /* WIN32 */
-  struct AsteriskHandles *AsteriskHandlesAst;
+  struct SkypiaxHandles *SkypiaxHandles;
 #endif /* WIN32 */
 
   DEBUGA_SKYPE("SENDING: |||%s||||\n", SKYPIAX_P_LOG, msg_to_skype);
@@ -1003,8 +1003,8 @@
   oCopyData.cbData = strlen(acInputRow) + 1;
   if (oCopyData.cbData != 1) {
     if (SendMessage
-        (p->AsteriskHandlesAst.win32_hGlobal_SkypeAPIWindowHandle, WM_COPYDATA,
-         (WPARAM) p->AsteriskHandlesAst.win32_hInit_MainWindowHandle,
+        (p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle, WM_COPYDATA,
+         (WPARAM) p->SkypiaxHandles.win32_hInit_MainWindowHandle,
          (LPARAM) & oCopyData) == FALSE) {
       ERRORA
         ("Sending message failed - probably Skype crashed.\n\nPlease shutdown Skypiax (Asterisk), then restart Skype from the menu, then launch Skypiax and try again.\n",
@@ -1022,9 +1022,9 @@
   if (option_debug > 100) {
     DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
   }
-  AsteriskHandlesAst = &p->AsteriskHandlesAst;
+  SkypiaxHandles = &p->SkypiaxHandles;
 
-  if (!skypiax_skype_send_message(AsteriskHandlesAst, msg_to_skype)) {
+  if (!skypiax_skype_send_message(SkypiaxHandles, msg_to_skype)) {
     ERRORA
       ("Sending message failed - probably Skype crashed.\n\nPlease shutdown Skypiax (Asterisk), then restart Skype from the menu, then launch Skypiax and try again.\n",
        SKYPIAX_P_LOG);
@@ -1074,7 +1074,7 @@
 #ifdef WIN32
   rt = 1;
 #else /* WIN32 */
-  fdselect = p->AsteriskHandlesAst.fdesc[0];
+  fdselect = p->SkypiaxHandles.fdesc[0];
   FD_ZERO(&fs);
   FD_SET(fdselect, &fs);
   to.tv_usec = 2000000;         //500 msec
@@ -1083,13 +1083,13 @@
 #endif /* WIN32 */
 
   if (rt > 0) {
-    if (p->AsteriskHandlesAst.fdesc[0]) {
+    if (p->SkypiaxHandles.fdesc[0]) {
       howmany = sizeof(read_from_pipe);
 #ifdef WIN32
-      switch_file_read(p->AsteriskHandlesAst.fdesc[0], read_from_pipe, &howmany);
+      switch_file_read(p->SkypiaxHandles.fdesc[0], read_from_pipe, &howmany);
 #else /* WIN32 */
       howmany =
-        read(p->AsteriskHandlesAst.fdesc[0], read_from_pipe, sizeof(read_from_pipe));
+        read(p->SkypiaxHandles.fdesc[0], read_from_pipe, sizeof(read_from_pipe));
 #endif /* WIN32 */
 
       a = 0;
@@ -1184,7 +1184,7 @@
             strncpy(id, where, sizeof(id) - 1);
 
             if (!strcasecmp(id, p->skype_user)) {
-              p->AsteriskHandlesAst.api_connected = 1;
+              p->SkypiaxHandles.api_connected = 1;
               //DEBUGA_SKYPE ("Skype MSG: messaggio: %s, currentuserhandle: %s, cuh: %s, skype_user: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, p->skype_user);
             }
           }


From gmaruzz at freeswitch.org  Sun Jan 11 04:13:49 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 06:13:49 -0600
Subject: [Freeswitch-svn] [commit] r11119 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 06:13:49 2009
New Revision: 11119

Log:
skypiax: no more skypiax_interface pointers, only private_t pointers

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Sun Jan 11 06:13:49 2009
@@ -19,7 +19,7 @@
   int fd;
   int calls;
   char hold_music[256];
-  skypiax_interface_t SKYPIAX_INTERFACES[SKYPIAX_MAX_INTERFACES];
+  private_t SKYPIAX_INTERFACES[SKYPIAX_MAX_INTERFACES];
   switch_mutex_t *mutex;
 } globals;
 
@@ -56,7 +56,6 @@
 
 static switch_status_t skypiax_codec(private_t * tech_pvt, int sample_rate, int codec_ms)
 {
-  skypiax_interface_t *p = NULL;
   if (switch_core_codec_init
       (&tech_pvt->read_codec, "L16", NULL, sample_rate, codec_ms, 1,
        SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
@@ -84,8 +83,7 @@
 
 }
 
-void skypiax_tech_init(private_t * tech_pvt, switch_core_session_t * session,
-                       skypiax_interface_t * p)
+void skypiax_tech_init(private_t * tech_pvt, switch_core_session_t * session)
 {
 
   DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
@@ -97,13 +95,8 @@
                     switch_core_session_get_pool(session));
   switch_core_session_set_private(session, tech_pvt);
   tech_pvt->session = session;
-  if (p) {
-    tech_pvt->p = p;
-    p->tech_pvt = tech_pvt;
-
-  }
   if (skypiax_codec(tech_pvt, SAMPLERATE_SKYPIAX, 20) != SWITCH_STATUS_SUCCESS) {
-    ERRORA("skypiax_docec FAILED\n", SKYPIAX_P_LOG);
+    ERRORA("skypiax_codec FAILED\n", SKYPIAX_P_LOG);
   } else {
     DEBUGA_SKYPE("skypiax_codec SUCCESS\n", SKYPIAX_P_LOG);
   }
@@ -120,7 +113,6 @@
 {
   switch_channel_t *channel;
   private_t *tech_pvt = NULL;
-  skypiax_interface_t *p = NULL;
 
   tech_pvt = switch_core_session_get_private(session);
   assert(tech_pvt != NULL);
@@ -146,7 +138,6 @@
 {
   switch_channel_t *channel = NULL;
   private_t *tech_pvt = NULL;
-  skypiax_interface_t *p = NULL;
   char msg_to_skype[256];
 
   channel = switch_core_session_get_channel(session);
@@ -155,17 +146,16 @@
   tech_pvt = switch_core_session_get_private(session);
   assert(tech_pvt != NULL);
 
-  p = tech_pvt->p;
 
   switch_clear_flag_locked(tech_pvt, TFLAG_IO);
   switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
   //switch_set_flag_locked(tech_pvt, TFLAG_HANGUP);
 
-  if (strlen(p->skype_call_id)) {
+  if (strlen(tech_pvt->skype_call_id)) {
     //switch_thread_cond_signal(tech_pvt->cond);
-    WARNINGA("hanging up skype call: %s\n", SKYPIAX_P_LOG, p->skype_call_id);
-    sprintf(msg_to_skype, "ALTER CALL %s HANGUP", p->skype_call_id);
-    skypiax_skype_write(p, msg_to_skype);
+    WARNINGA("hanging up skype call: %s\n", SKYPIAX_P_LOG, tech_pvt->skype_call_id);
+    sprintf(msg_to_skype, "ALTER CALL %s HANGUP", tech_pvt->skype_call_id);
+    skypiax_skype_write(tech_pvt, msg_to_skype);
   }
 
   if (tech_pvt->read_codec.implementation) {
@@ -191,7 +181,6 @@
 {
   switch_channel_t *channel = NULL;
   private_t *tech_pvt = NULL;
-  skypiax_interface_t *p = NULL;
 
   channel = switch_core_session_get_channel(session);
   assert(channel != NULL);
@@ -209,7 +198,6 @@
 
   switch_channel_t *channel = NULL;
   private_t *tech_pvt = NULL;
-  skypiax_interface_t *p = NULL;
 
   channel = switch_core_session_get_channel(session);
   assert(channel != NULL);
@@ -226,7 +214,6 @@
 {
   switch_channel_t *channel = NULL;
   private_t *tech_pvt = NULL;
-  skypiax_interface_t *p = NULL;
 
   channel = switch_core_session_get_channel(session);
   assert(channel != NULL);
@@ -256,14 +243,14 @@
 
 static switch_status_t channel_on_exchange_media(switch_core_session_t * session)
 {
-  skypiax_interface_t *p = NULL;
+  private_t *tech_pvt = NULL;
   DEBUGA_SKYPE("CHANNEL LOOPBACK\n", SKYPIAX_P_LOG);
   return SWITCH_STATUS_SUCCESS;
 }
 
 static switch_status_t channel_on_soft_execute(switch_core_session_t * session)
 {
-  skypiax_interface_t *p = NULL;
+  private_t *tech_pvt = NULL;
   DEBUGA_SKYPE("CHANNEL TRANSMIT\n", SKYPIAX_P_LOG);
   return SWITCH_STATUS_SUCCESS;
 }
@@ -271,15 +258,12 @@
 static switch_status_t channel_send_dtmf(switch_core_session_t * session,
                                          const switch_dtmf_t * dtmf)
 {
-  skypiax_interface_t *p = NULL;
   private_t *tech_pvt = switch_core_session_get_private(session);
   switch_assert(tech_pvt != NULL);
 
-  p = tech_pvt->p;
-
   NOTICA("DTMF: %c\n", SKYPIAX_P_LOG, dtmf->digit);
 
-  skypiax_skype_senddigit(p, dtmf->digit);
+  skypiax_skype_senddigit(tech_pvt, dtmf->digit);
 
   return SWITCH_STATUS_SUCCESS;
 }
@@ -291,7 +275,6 @@
   switch_channel_t *channel = NULL;
   private_t *tech_pvt = NULL;
   switch_byte_t *data;
-  skypiax_interface_t *p = NULL;
 
   channel = switch_core_session_get_channel(session);
   assert(channel != NULL);
@@ -362,7 +345,6 @@
   switch_channel_t *channel = NULL;
   private_t *tech_pvt = NULL;
   unsigned int sent;
-  struct skypiax_interface *p = NULL;
 
   channel = switch_core_session_get_channel(session);
   assert(channel != NULL);
@@ -370,8 +352,6 @@
   tech_pvt = switch_core_session_get_private(session);
   assert(tech_pvt != NULL);
 
-  p = tech_pvt->p;
-  assert(p != NULL);
 
   if (!switch_test_flag(tech_pvt, TFLAG_IO)) {
     ERRORA("CIAPA \n", SKYPIAX_P_LOG);
@@ -385,9 +365,9 @@
 
   sent = frame->datalen;
 #ifdef WIN32
-  switch_file_write(p->audioskypepipe[1], frame->data, &sent);
+  switch_file_write(tech_pvt->audioskypepipe[1], frame->data, &sent);
 #else /* WIN32 */
-  sent = write(p->audioskypepipe[1], frame->data, sent);
+  sent = write(tech_pvt->audioskypepipe[1], frame->data, sent);
 #endif /* WIN32 */
   if (sent != frame->datalen && sent != -1) {
     DEBUGA_SKYPE("CLI PIPE write %d\n", SKYPIAX_P_LOG, sent);
@@ -400,7 +380,6 @@
 {
   private_t *tech_pvt;
   switch_channel_t *channel = NULL;
-  struct skypiax_interface *p;
 
   channel = switch_core_session_get_channel(session);
   assert(channel != NULL);
@@ -408,7 +387,6 @@
   tech_pvt = switch_core_session_get_private(session);
   assert(tech_pvt != NULL);
 
-  p = tech_pvt->p;
 
   DEBUGA_SKYPE("ANSWERED! \n", SKYPIAX_P_LOG);
 
@@ -420,7 +398,6 @@
 {
   switch_channel_t *channel;
   private_t *tech_pvt;
-  struct skypiax_interface *p;
 
   channel = switch_core_session_get_channel(session);
   assert(channel != NULL);
@@ -428,7 +405,6 @@
   tech_pvt = (private_t *) switch_core_session_get_private(session);
   assert(tech_pvt != NULL);
 
-  p = tech_pvt->p;
 
   switch (msg->message_id) {
   case SWITCH_MESSAGE_INDICATE_ANSWER:
@@ -452,7 +428,6 @@
 {
   struct private_object *tech_pvt = switch_core_session_get_private(session);
   char *body = switch_event_get_body(event);
-  skypiax_interface_t *p = NULL;
   switch_assert(tech_pvt != NULL);
 
   if (!body) {
@@ -495,7 +470,6 @@
     private_t *tech_pvt;
     switch_channel_t *channel;
     switch_caller_profile_t *caller_profile;
-    skypiax_interface_t *p = NULL;
 
     switch_core_session_add_stream(*new_session, NULL);
 
@@ -522,8 +496,8 @@
 
             DEBUGA_SKYPE("globals.SKYPIAX_INTERFACES[%d].name=|||%s|||?\n", SKYPIAX_P_LOG,
                          i, globals.SKYPIAX_INTERFACES[i].name);
-            tech_pvt->p = &globals.SKYPIAX_INTERFACES[i];   //FIXME
-            globals.SKYPIAX_INTERFACES[i].tech_pvt = tech_pvt;  //FIXME
+            tech_pvt = &globals.SKYPIAX_INTERFACES[i];   //FIXME
+            //globals.SKYPIAX_INTERFACES[i].tech_pvt = tech_pvt;  //FIXME
             found = 1;
             break;
           }
@@ -544,7 +518,7 @@
 
       }
       channel = switch_core_session_get_channel(*new_session);
-      skypiax_tech_init(tech_pvt, *new_session, NULL);
+      skypiax_tech_init(tech_pvt, *new_session);
     } else {
       ERRORA("Hey where is my memory pool?\n", SKYPIAX_P_LOG);
       switch_core_session_destroy(new_session);
@@ -555,7 +529,7 @@
       char name[128];
 
       snprintf(name, sizeof(name), "skypiax/%s", outbound_profile->destination_number);
-      //snprintf(name, sizeof(name), "skypiax/%s", p->name);
+      //snprintf(name, sizeof(name), "skypiax/%s", tech_pvt->name);
       switch_channel_set_name(channel, name);
       NOTICA("outbound_profile->destination_number=|||%s|||\n", SKYPIAX_P_LOG,
              outbound_profile->destination_number);
@@ -575,7 +549,7 @@
       return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
     }
 
-    skypiax_skype_call(tech_pvt->p, caller_profile->destination_number, 30, *new_session);
+    skypiax_skype_call(tech_pvt, caller_profile->destination_number, 30, *new_session);
 
     switch_channel_set_flag(channel, CF_OUTBOUND);
     switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND);
@@ -593,27 +567,26 @@
 static void *SWITCH_THREAD_FUNC skypiax_do_controldev_thread(switch_thread_t * thread,
                                                              void *obj)
 {
-  struct skypiax_interface *p = obj;
+  private_t *tech_pvt = obj;
   int res;
   int forever = 1;
 
   DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
 
   DEBUGA_SKYPE("In skypiax_do_controldev_thread: started, p=%p\n", SKYPIAX_P_LOG,
-               (void *) p);
+               (void *) tech_pvt);
 
   while (forever) {
     if (!running)
       break;
-    res = skypiax_skype_read(p);
+    res = skypiax_skype_read(tech_pvt);
     if (res == CALLFLOW_INCOMING_HANGUP) {
       switch_core_session_t *session = NULL;
-      private_t *tech_pvt = NULL;
+      //private_t *tech_pvt = NULL;
       switch_channel_t *channel = NULL;
 
       DEBUGA_SKYPE("skype call ended\n", SKYPIAX_P_LOG);
 
-      tech_pvt = p->tech_pvt;
       if (tech_pvt) {
         session = tech_pvt->session;
 
@@ -630,7 +603,7 @@
       } else {
         ERRORA("no tech_pvt?\n", SKYPIAX_P_LOG);
       }
-      p->interface_state = SKYPIAX_STATE_DOWN;
+      tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
       tech_pvt->session = NULL; //FIXME
     }
   }
@@ -642,7 +615,7 @@
 {
   char *cf = "skypiax.conf";
   switch_xml_t cfg, xml, global_settings, param, interfaces, myinterface;
-  skypiax_interface_t *p = NULL;
+  private_t *tech_pvt = NULL;
 
   switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, skypiax_module_pool);
   if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
@@ -819,7 +792,7 @@
 #endif /* WIN32 */
 
       if (interface_id && interface_id < SKYPIAX_MAX_INTERFACES) {
-        struct skypiax_interface newconf;
+        private_t newconf;
         switch_threadattr_t *do_skype_thd_attr = NULL;
         switch_threadattr_t *skypiax_do_controldev_thread_thd_attr = NULL;
 
@@ -943,7 +916,7 @@
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_skypiax_load)
 {
-  struct skypiax_interface *p = NULL;   //for logging
+  private_t *tech_pvt = NULL;   //for logging
 
   skypiax_module_pool = pool;
 
@@ -966,7 +939,7 @@
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skypiax_shutdown)
 {
   int x = 100;
-  struct skypiax_interface *p = NULL;
+  private_t *tech_pvt = NULL;
   switch_status_t status;
   unsigned int howmany = 8;
   int interface_id;
@@ -974,34 +947,34 @@
   running = 0;
 
   for (interface_id = 0; interface_id < SKYPIAX_MAX_INTERFACES; interface_id++) {
-    p = &globals.SKYPIAX_INTERFACES[interface_id];
+    tech_pvt = &globals.SKYPIAX_INTERFACES[interface_id];
 
     if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread) {
 #ifdef WIN32
-      switch_file_write(p->SkypiaxHandles.fdesc[1], "sciutati", &howmany);  // let's the controldev_thread die
+      switch_file_write(tech_pvt->SkypiaxHandles.fdesc[1], "sciutati", &howmany);  // let's the controldev_thread die
 #else /* WIN32 */
-      howmany = write(p->SkypiaxHandles.fdesc[1], "sciutati", howmany);
+      howmany = write(tech_pvt->SkypiaxHandles.fdesc[1], "sciutati", howmany);
 #endif /* WIN32 */
     }
 
     if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread) {
 #ifdef WIN32
-      if (SendMessage(p->SkypiaxHandles.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) { // let's the do_skype_thread die
+      if (SendMessage(tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) { // let's the do_skype_thread die
         ERRORA("WHY FALSE HERE? %d\n", SKYPIAX_P_LOG, GetLastError());
       }
 #else
       XEvent e;
       Atom atom1 =
-        XInternAtom(p->SkypiaxHandles.disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False);
+        XInternAtom(tech_pvt->SkypiaxHandles.disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False);
       memset(&e, 0, sizeof(e));
       e.xclient.type = ClientMessage;
       e.xclient.message_type = atom1;   /*  leading message */
-      e.xclient.display = p->SkypiaxHandles.disp;
-      e.xclient.window = p->SkypiaxHandles.skype_win;
+      e.xclient.display = tech_pvt->SkypiaxHandles.disp;
+      e.xclient.window = tech_pvt->SkypiaxHandles.skype_win;
       e.xclient.format = 8;
 
-      XSendEvent(p->SkypiaxHandles.disp, p->SkypiaxHandles.win, False, 0, &e);
-      XSync(p->SkypiaxHandles.disp, False);
+      XSendEvent(tech_pvt->SkypiaxHandles.disp, tech_pvt->SkypiaxHandles.win, False, 0, &e);
+      XSync(tech_pvt->SkypiaxHandles.disp, False);
 #endif
     }
     while (x) {

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	Sun Jan 11 06:13:49 2009
@@ -79,7 +79,7 @@
 #define WARNINGA(...)  switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, 		"rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][WARNINGA  %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ );
 #define NOTICA(...)  switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, 		"rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][NOTICA  %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ );
 
-#define SKYPIAX_P_LOG NULL, (unsigned long)55, __LINE__, p ? p->name ? p->name : "none" : "none", -1, p ? p->interface_state : -1, p ? p->skype_callflow : -1
+#define SKYPIAX_P_LOG NULL, (unsigned long)55, __LINE__, tech_pvt ? tech_pvt->name ? tech_pvt->name : "none" : "none", -1, tech_pvt ? tech_pvt->interface_state : -1, tech_pvt ? tech_pvt->skype_callflow : -1
 
 /*********************************/
 #define SKYPIAX_CAUSE_NORMAL		1
@@ -154,7 +154,8 @@
 
 #endif //WIN32
 
-struct skypiax_interface {
+#if 0
+private_t {
   char interface_id[80];
   char name[80];
   char dialplan[80];
@@ -221,7 +222,8 @@
   char skype_password[256];
 };
 
-typedef struct skypiax_interface skypiax_interface_t;
+typedef private_t private_t;
+#endif
 
 struct private_object {
   unsigned int flags;
@@ -233,20 +235,88 @@
   switch_caller_profile_t *caller_profile;
   switch_mutex_t *mutex;
   switch_mutex_t *flag_mutex;
-  skypiax_interface_t *p;
+  //private_t *p;
   //switch_thread_cond_t *cond;
+
+  char interface_id[80];
+  char name[80];
+  char dialplan[80];
+  char context[80];
+  char dial_regex[256];
+  char fail_dial_regex[256];
+  char hold_music[256];
+  char type[256];
+  char X11_display[256];
+#ifdef WIN32
+  unsigned short tcp_cli_port;
+  unsigned short tcp_srv_port;
+#else
+  int tcp_cli_port;
+  int tcp_srv_port;
+#endif
+  struct SkypiaxHandles SkypiaxHandles;
+
+  int interface_state;          /*!< \brief 'state' of the interface (channel) */
+  char language[80];            /*!< \brief default Asterisk dialplan language for this interface */
+  char exten[80];               /*!< \brief default Asterisk dialplan extension for this interface */
+  int skypiax_sound_rate;       /*!< \brief rate of the sound device, in Hz, eg: 8000 */
+  switch_file_t *skypiax_sound_capt_fd; /*!< \brief file descriptor for sound capture dev */
+  char callid_name[50];
+  char callid_number[50];
+  double playback_boost;
+  double capture_boost;
+  int stripmsd;
+  switch_thread_t *skype_thread;
+  char skype_call_id[512];
+  int skype_call_ongoing;
+  char skype_friends[4096];
+  char skype_fullname[512];
+  char skype_displayname[512];
+  int skype_callflow;           /*!< \brief 'callflow' of the skype interface (as opposed to phone interface) */
+  int skype;                    /*!< \brief config flag, bool, Skype support on this interface (0 if false, -1 if true) */
+  int control_to_send;
+#ifdef WIN32
+  switch_file_t *audiopipe[2];
+  switch_file_t *audioskypepipe[2];
+#else                           /* WIN32 */
+  int audiopipe[2];
+  int audioskypepipe[2];
+#endif                          /* WIN32 */
+  switch_thread_t *tcp_srv_thread;
+  switch_thread_t *tcp_cli_thread;
+  switch_thread_t *skypiax_do_controldev_thread_thread;
+  switch_thread_t *skypiax_do_skype_thread_thread;
+  short audiobuf[SAMPLES_PER_FRAME];
+  int audiobuf_is_loaded;
+
+  //int phonebook_listing;
+  //int phonebook_querying;
+  //int phonebook_listing_received_calls;
+
+  //int phonebook_first_entry;
+  //int phonebook_last_entry;
+  //int phonebook_number_lenght;
+  //int phonebook_text_lenght;
+  FILE *phonebook_writing_fp;
+  int skypiax_dir_entry_extension_prefix;
+  //void *tech_pvt;
+  char skype_user[256];
+  char skype_password[256];
+
+
+
+
 };
 
 typedef struct private_object private_t;
 
 void *SWITCH_THREAD_FUNC do_skype_thread(switch_thread_t * thread, void *obj);
-void skypiax_tech_init(private_t * tech_pvt, switch_core_session_t * session,
-                       skypiax_interface_t * p);
+void skypiax_tech_init(private_t * tech_pvt, switch_core_session_t * session);
 switch_status_t skypiax_skypeaudio_read(private_t * tech_pvt);
-int skypiax_skypeaudio_init(struct skypiax_interface *p);
-int skypiax_skype_write(struct skypiax_interface *p, char *msg_to_skype);
-int skypiax_skype_read(struct skypiax_interface *p);
+int skypiax_skypeaudio_init(private_t *p);
+int skypiax_skype_write(private_t *p, char *msg_to_skype);
+int skypiax_skype_read(private_t *p);
 
-int skypiax_skype_call(struct skypiax_interface *p, char *idest, int timeout,
+int skypiax_skype_call(private_t *p, char *idest, int timeout,
                        switch_core_session_t * session);
-int skypiax_skype_senddigit(struct skypiax_interface *p, char digit);
+int skypiax_skype_senddigit(private_t *p, char digit);

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sun Jan 11 06:13:49 2009
@@ -8,7 +8,7 @@
 static void *SWITCH_THREAD_FUNC skypiax_do_tcp_srv_thread(switch_thread_t * thread,
                                                           void *obj)
 {
-  struct skypiax_interface *p = obj;
+  private_t *tech_pvt = obj;
   int s;
 #ifdef WIN32
   unsigned int len;
@@ -40,7 +40,7 @@
   memset(&my_addr, 0, sizeof(my_addr));
   my_addr.sin_family = AF_INET;
   my_addr.sin_addr.s_addr = htonl(0x7f000001);  /* use the localhost */
-  my_addr.sin_port = htons(p->tcp_srv_port);
+  my_addr.sin_port = htons(tech_pvt->tcp_srv_port);
 
   if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
     ERRORA("socket Error\n", SKYPIAX_P_LOG);
@@ -66,9 +66,9 @@
     DEBUGA_SKYPE("ACCEPTED\n", SKYPIAX_P_LOG);
     if (!running)
       break;
-    while (p->interface_state != SKYPIAX_STATE_DOWN
-           && (p->skype_callflow == CALLFLOW_STATUS_INPROGRESS
-               || p->skype_callflow == SKYPIAX_STATE_UP)) {
+    while (tech_pvt->interface_state != SKYPIAX_STATE_DOWN
+           && (tech_pvt->skype_callflow == CALLFLOW_STATUS_INPROGRESS
+               || tech_pvt->skype_callflow == SKYPIAX_STATE_UP)) {
 
 #ifdef WIN32
       unsigned int fdselect;
@@ -108,6 +108,8 @@
 
         if ((SAMPLERATE_SKYPIAX - 8000) == 0) {
 
+  ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]);
+  ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
           if (len > 0) {
             a = 0;
             for (i = 0; i < len / sizeof(short); i++) {
@@ -116,17 +118,17 @@
               a++;
             }
 
-            if (!p->audiobuf_is_loaded) {
+            if (!tech_pvt->audiobuf_is_loaded) {
               for (i = 0; i < (len / sizeof(short)) / 2; i++) {
-                p->audiobuf[i] = srv_out[i];
+                tech_pvt->audiobuf[i] = srv_out[i];
               }
-              p->audiobuf_is_loaded = 1;
+              tech_pvt->audiobuf_is_loaded = 1;
             } else {
               unsigned int howmany;
 
               howmany = len / 2 / 2;
               for (i = 0; i < howmany; i++)
-                totalbuf[i] = p->audiobuf[i];
+                totalbuf[i] = tech_pvt->audiobuf[i];
 
               howmany = len / 2 / 2;
               for (a = 0; a < howmany; a++) {
@@ -137,11 +139,11 @@
               howmany = len;
 
 #ifdef WIN32
-              switch_file_write(p->audiopipe[1], totalbuf, &howmany);
+              switch_file_write(tech_pvt->audiopipe[1], totalbuf, &howmany);
 #else /* WIN32 */
-              howmany = write(p->audiopipe[1], totalbuf, howmany);
+              howmany = write(tech_pvt->audiopipe[1], totalbuf, howmany);
 #endif /* WIN32 */
-              p->audiobuf_is_loaded = 0;
+              tech_pvt->audiobuf_is_loaded = 0;
             }
 
           } else if (len == 0) {
@@ -154,38 +156,40 @@
           }
         } else if (SAMPLERATE_SKYPIAX == 16000) {
 
+  //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]);
+  //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
           if (len > 0) {
             if (len == SAMPLES_PER_FRAME * sizeof(short)) {
 #ifdef WIN32
               unsigned int howmany;
 
               howmany = len;
-              switch_file_write(p->audiopipe[1], srv_in, &howmany);
+              switch_file_write(tech_pvt->audiopipe[1], srv_in, &howmany);
 #else /* WIN32 */
-              len = write(p->audiopipe[1], srv_in, len);
+              len = write(tech_pvt->audiopipe[1], srv_in, len);
 #endif /* WIN32 */
             } else if (len == SAMPLES_PER_FRAME * sizeof(short) / 2) {
-              if (!p->audiobuf_is_loaded) {
+              if (!tech_pvt->audiobuf_is_loaded) {
                 for (i = 0; i < (len / sizeof(short)); i++) {
-                  p->audiobuf[i] = srv_in[i];
+                  tech_pvt->audiobuf[i] = srv_in[i];
                 }
-                p->audiobuf_is_loaded = 1;
+                tech_pvt->audiobuf_is_loaded = 1;
               } else {
                 unsigned int howmany = SAMPLES_PER_FRAME * sizeof(short);
 
                 for (i = 0; i < (len / sizeof(short)); i++)
-                  totalbuf[i] = p->audiobuf[i];
+                  totalbuf[i] = tech_pvt->audiobuf[i];
                 for (a = 0; a < (len / sizeof(short)); a++) {
                   totalbuf[i] = srv_in[a];
                   i++;
                 }
 
 #ifdef WIN32
-                switch_file_write(p->audiopipe[1], totalbuf, &howmany);
+                switch_file_write(tech_pvt->audiopipe[1], totalbuf, &howmany);
 #else /* WIN32 */
-                howmany = write(p->audiopipe[1], totalbuf, howmany);
+                howmany = write(tech_pvt->audiopipe[1], totalbuf, howmany);
 #endif /* WIN32 */
-                p->audiobuf_is_loaded = 0;
+                tech_pvt->audiobuf_is_loaded = 0;
               }
 
             } else {
@@ -212,24 +216,24 @@
     }
 #ifdef WIN32
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
-    switch_file_write(p->audiopipe[1], kill_cli_buff, &kill_cli_size);
+    switch_file_write(tech_pvt->audiopipe[1], kill_cli_buff, &kill_cli_size);
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
-    switch_file_write(p->audioskypepipe[1], kill_cli_buff, &kill_cli_size);
-    p->interface_state = SKYPIAX_STATE_DOWN;
+    switch_file_write(tech_pvt->audioskypepipe[1], kill_cli_buff, &kill_cli_size);
+    tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
-    switch_file_write(p->audiopipe[1], kill_cli_buff, &kill_cli_size);
+    switch_file_write(tech_pvt->audiopipe[1], kill_cli_buff, &kill_cli_size);
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
-    switch_file_write(p->audioskypepipe[1], kill_cli_buff, &kill_cli_size);
+    switch_file_write(tech_pvt->audioskypepipe[1], kill_cli_buff, &kill_cli_size);
 #else /* WIN32 */
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
-    len = write(p->audiopipe[1], kill_cli_buff, kill_cli_size);
+    len = write(tech_pvt->audiopipe[1], kill_cli_buff, kill_cli_size);
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
-    len = write(p->audioskypepipe[1], kill_cli_buff, kill_cli_size);
-    p->interface_state = SKYPIAX_STATE_DOWN;
+    len = write(tech_pvt->audioskypepipe[1], kill_cli_buff, kill_cli_size);
+    tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
-    len = write(p->audiopipe[1], kill_cli_buff, kill_cli_size);
+    len = write(tech_pvt->audiopipe[1], kill_cli_buff, kill_cli_size);
     kill_cli_size = SAMPLES_PER_FRAME * sizeof(short);
-    len = write(p->audioskypepipe[1], kill_cli_buff, kill_cli_size);
+    len = write(tech_pvt->audioskypepipe[1], kill_cli_buff, kill_cli_size);
 #endif /* WIN32 */
     DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG);
 #ifndef WIN32
@@ -255,7 +259,7 @@
 static void *SWITCH_THREAD_FUNC skypiax_do_tcp_cli_thread(switch_thread_t * thread,
                                                           void *obj)
 {
-  struct skypiax_interface *p = obj;
+  private_t *tech_pvt = obj;
   int s;
   struct sockaddr_in my_addr;
   struct sockaddr_in remote_addr;
@@ -284,7 +288,7 @@
   memset(&my_addr, 0, sizeof(my_addr));
   my_addr.sin_family = AF_INET;
   my_addr.sin_addr.s_addr = htonl(0x7f000001);  /* use the localhost */
-  my_addr.sin_port = htons(p->tcp_cli_port);    //FIXME configurable!
+  my_addr.sin_port = htons(tech_pvt->tcp_cli_port);    //FIXME configurable!
 
   if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
     ERRORA("socket Error\n", SKYPIAX_P_LOG);
@@ -315,9 +319,9 @@
     DEBUGA_SKYPE("ACCEPTED\n", SKYPIAX_P_LOG);
     if (!running)
       break;
-    while (p->interface_state != SKYPIAX_STATE_DOWN
-           && (p->skype_callflow == CALLFLOW_STATUS_INPROGRESS
-               || p->skype_callflow == SKYPIAX_STATE_UP)) {
+    while (tech_pvt->interface_state != SKYPIAX_STATE_DOWN
+           && (tech_pvt->skype_callflow == CALLFLOW_STATUS_INPROGRESS
+               || tech_pvt->skype_callflow == SKYPIAX_STATE_UP)) {
 #ifdef WIN32
       unsigned int fdselect;
 #else
@@ -332,7 +336,7 @@
 #ifdef WIN32
       fdselect = fd;            //cannot select on audioskypepipe, let's select on socket write
 #else /* WIN32 */
-      fdselect = p->audioskypepipe[0];
+      fdselect = tech_pvt->audioskypepipe[0];
 #endif /* WIN32 */
       FD_ZERO(&fs);
       FD_SET(fdselect, &fs);
@@ -348,9 +352,9 @@
         if ((SAMPLERATE_SKYPIAX - 8000) == 0) {
           got = SAMPLES_PER_FRAME * sizeof(short);
 #ifdef WIN32
-          switch_file_read(p->audioskypepipe[0], cli_in, &got);
+          switch_file_read(tech_pvt->audioskypepipe[0], cli_in, &got);
 #else /* WIN32 */
-          got = read(p->audioskypepipe[0], cli_in, got);
+          got = read(tech_pvt->audioskypepipe[0], cli_in, got);
 #endif /* WIN32 */
 
           if (got > 0) {
@@ -378,9 +382,9 @@
         } else if (SAMPLERATE_SKYPIAX == 16000) {
           got = SAMPLES_PER_FRAME * sizeof(short);
 #ifdef WIN32
-          switch_file_read(p->audioskypepipe[0], cli_in, &got);
+          switch_file_read(tech_pvt->audioskypepipe[0], cli_in, &got);
 #else /* WIN32 */
-          got = read(p->audioskypepipe[0], cli_in, got);
+          got = read(tech_pvt->audioskypepipe[0], cli_in, got);
 #endif /* WIN32 */
 
           if (got > 0) {
@@ -434,25 +438,29 @@
   return NULL;
 }
 
-int skypiax_skypeaudio_init(struct skypiax_interface *p)
+int skypiax_skypeaudio_init(private_t *tech_pvt)
 {
 
 #ifdef WIN32
   switch_status_t rv;
-  rv = switch_file_pipe_create(&p->audiopipe[0], &p->audiopipe[1], skypiax_module_pool);
+  rv = switch_file_pipe_create(&tech_pvt->audiopipe[0], &tech_pvt->audiopipe[1], skypiax_module_pool);
   rv =
-    switch_file_pipe_create(&p->audioskypepipe[0], &p->audioskypepipe[1],
+    switch_file_pipe_create(&tech_pvt->audioskypepipe[0], &tech_pvt->audioskypepipe[1],
                             skypiax_module_pool);
 #else /* WIN32 */
-  if (pipe(p->audiopipe)) {
-    fcntl(p->audiopipe[0], F_SETFL, O_NONBLOCK);
-    fcntl(p->audiopipe[1], F_SETFL, O_NONBLOCK);
-  }
-  if (pipe(p->audioskypepipe)) {
-    fcntl(p->audioskypepipe[0], F_SETFL, O_NONBLOCK);
-    fcntl(p->audioskypepipe[1], F_SETFL, O_NONBLOCK);
+  if (pipe(tech_pvt->audiopipe)) {
+    fcntl(tech_pvt->audiopipe[0], F_SETFL, O_NONBLOCK);
+    fcntl(tech_pvt->audiopipe[1], F_SETFL, O_NONBLOCK);
+  }
+  if (pipe(tech_pvt->audioskypepipe)) {
+    fcntl(tech_pvt->audioskypepipe[0], F_SETFL, O_NONBLOCK);
+    fcntl(tech_pvt->audioskypepipe[1], F_SETFL, O_NONBLOCK);
   }
 #endif /* WIN32 */
+
+  ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]);
+  ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
+
   if (option_debug > 10) {
     DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
   }
@@ -461,7 +469,7 @@
 
 switch_status_t skypiax_skypeaudio_read(private_t * tech_pvt)
 {
-  struct skypiax_interface *p;
+  //private_t *p;
   unsigned int samples;
   int rt;
 #ifndef WIN32
@@ -470,11 +478,10 @@
   struct timeval to;
 #endif /* WIN32 */
 
-  p = tech_pvt->p;
 #ifdef WIN32
   rt = 1;
 #else /* WIN32 */
-  fdselect = p->audiopipe[0];
+  fdselect = tech_pvt->audiopipe[0];
   FD_ZERO(&fs);
   FD_SET(fdselect, &fs);
   to.tv_usec = 2000000;         //2000 msec
@@ -484,15 +491,18 @@
   if (rt > 0) {
     samples = SAMPLES_PER_FRAME * sizeof(short);
 #ifdef WIN32
-    switch_file_read(p->audiopipe[0], tech_pvt->read_frame.data, &samples);
+    switch_file_read(tech_pvt->audiopipe[0], tech_pvt->read_frame.data, &samples);
 #else /* WIN32 */
-    samples = read(p->audiopipe[0], tech_pvt->read_frame.data, samples);
+    samples = read(tech_pvt->audiopipe[0], tech_pvt->read_frame.data, samples);
 #endif /* WIN32 */
 
+  //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]);
+  //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
     if (samples != SAMPLES_PER_FRAME * sizeof(short)) {
       if (samples)
         ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG,
                samples, SAMPLES_PER_FRAME * sizeof(short));
+      assert(samples == SAMPLES_PER_FRAME * sizeof(short)); //do a crash, please
       //do nothing
     } else {
       /* A real frame */
@@ -554,24 +564,24 @@
 {
   LRESULT lReturnCode;
   int fIssueDefProc;
-  struct skypiax_interface *p = NULL;
+  //private_t *p = NULL;
 
   lReturnCode = 0;
   fIssueDefProc = 0;
-  p = (struct skypiax_interface *) GetWindowLong(hWindow, GWL_USERDATA);
+  tech_pvt = (private_t *) GetWindowLong(hWindow, GWL_USERDATA);
   switch (uiMessage) {
   case WM_CREATE:
-    p = (struct skypiax_interface *) ((LPCREATESTRUCT) ulParam)->lpCreateParams;
+    tech_pvt = (private_t *) ((LPCREATESTRUCT) ulParam)->lpCreateParams;
     SetWindowLong(hWindow, GWL_USERDATA, (LONG) p);
     DEBUGA_SKYPE("got CREATE\n", SKYPIAX_P_LOG);
     break;
   case WM_DESTROY:
     NOTICA("got DESTROY\n", SKYPIAX_P_LOG);
-    p->SkypiaxHandles.win32_hInit_MainWindowHandle = NULL;
+    tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle = NULL;
     PostQuitMessage(0);
     break;
   case WM_COPYDATA:
-    if (p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle == (HWND) uiParam) {
+    if (tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle == (HWND) uiParam) {
       unsigned int howmany;
       char msg_from_skype[2048];
 
@@ -582,21 +592,21 @@
               sizeof(msg_from_skype) - 2);
 
       howmany = strlen(msg_from_skype) + 1;
-      switch_file_write(p->SkypiaxHandles.fdesc[1], msg_from_skype, &howmany);
+      switch_file_write(tech_pvt->SkypiaxHandles.fdesc[1], msg_from_skype, &howmany);
       //NOTICA("From Skype API: %s\n", SKYPIAX_P_LOG, (const char *) poCopyData->lpData);
       lReturnCode = 1;
     }
     break;
   default:
-    if (p && p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
-      if (uiMessage == p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
+    if (p && tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
+      if (uiMessage == tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
         switch (ulParam) {
         case SKYPECONTROLAPI_ATTACH_SUCCESS:
-          if (!p->SkypiaxHandles.api_connected) {
+          if (!tech_pvt->SkypiaxHandles.api_connected) {
             NOTICA("\n\n\tConnected to Skype API!\n", SKYPIAX_P_LOG);
-            p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam;
-            p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle =
-              p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle;
+            tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam;
+            tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle =
+              tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle;
           }
           break;
         case SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION:
@@ -604,11 +614,11 @@
             ("\n\n\tIf I do not (almost) immediately connect to Skype API,\n\tplease give the Skype client authorization to be connected \n\tby Asterisk and to not ask you again.\n\n",
              SKYPIAX_P_LOG);
           switch_sleep(5000);
-          if (!p->SkypiaxHandles.api_connected) {
+          if (!tech_pvt->SkypiaxHandles.api_connected) {
             SendMessage(HWND_BROADCAST,
-                        p->SkypiaxHandles.
+                        tech_pvt->SkypiaxHandles.
                         win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
-                        (WPARAM) p->SkypiaxHandles.win32_hInit_MainWindowHandle, 0);
+                        (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, 0);
           }
           break;
         case SKYPECONTROLAPI_ATTACH_REFUSED:
@@ -620,11 +630,11 @@
         case SKYPECONTROLAPI_ATTACH_API_AVAILABLE:
           DEBUGA_SKYPE("Skype API available\n", SKYPIAX_P_LOG);
           switch_sleep(5000);
-          if (!p->SkypiaxHandles.api_connected) {
+          if (!tech_pvt->SkypiaxHandles.api_connected) {
             SendMessage(HWND_BROADCAST,
-                        p->SkypiaxHandles.
+                        tech_pvt->SkypiaxHandles.
                         win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
-                        (WPARAM) p->SkypiaxHandles.win32_hInit_MainWindowHandle, 0);
+                        (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, 0);
           }
           break;
         default:
@@ -642,7 +652,7 @@
   return (lReturnCode);
 }
 
-int win32_Initialize_CreateWindowClass(struct skypiax_interface *p)
+int win32_Initialize_CreateWindowClass(private_t *tech_pvt)
 {
   unsigned char *paucUUIDString;
   RPC_STATUS lUUIDResult;
@@ -651,26 +661,26 @@
 
   fReturnStatus = 0;
   lUUIDResult = UuidCreate(&oUUID);
-  p->SkypiaxHandles.win32_hInit_ProcessHandle =
+  tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle =
     (HINSTANCE) OpenProcess(PROCESS_DUP_HANDLE, FALSE, GetCurrentProcessId());
-  if (p->SkypiaxHandles.win32_hInit_ProcessHandle != NULL
+  if (tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle != NULL
       && (lUUIDResult == RPC_S_OK || lUUIDResult == RPC_S_UUID_LOCAL_ONLY)) {
     if (UuidToString(&oUUID, &paucUUIDString) == RPC_S_OK) {
       WNDCLASS oWindowClass;
 
-      strcpy(p->SkypiaxHandles.win32_acInit_WindowClassName, "Skype-API-Skypiax-");
-      strcat(p->SkypiaxHandles.win32_acInit_WindowClassName, (char *) paucUUIDString);
+      strcpy(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, "Skype-API-Skypiax-");
+      strcat(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, (char *) paucUUIDString);
 
       oWindowClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
       oWindowClass.lpfnWndProc = (WNDPROC) & skypiax_skype_present;
       oWindowClass.cbClsExtra = 0;
       oWindowClass.cbWndExtra = 0;
-      oWindowClass.hInstance = p->SkypiaxHandles.win32_hInit_ProcessHandle;
+      oWindowClass.hInstance = tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle;
       oWindowClass.hIcon = NULL;
       oWindowClass.hCursor = NULL;
       oWindowClass.hbrBackground = NULL;
       oWindowClass.lpszMenuName = NULL;
-      oWindowClass.lpszClassName = p->SkypiaxHandles.win32_acInit_WindowClassName;
+      oWindowClass.lpszClassName = tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName;
 
       if (RegisterClass(&oWindowClass) != 0)
         fReturnStatus = 1;
@@ -679,34 +689,34 @@
     }
   }
   if (fReturnStatus == 0)
-    CloseHandle(p->SkypiaxHandles.win32_hInit_ProcessHandle),
-      p->SkypiaxHandles.win32_hInit_ProcessHandle = NULL;
+    CloseHandle(tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle),
+      tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle = NULL;
   return (fReturnStatus);
 }
 
-void win32_DeInitialize_DestroyWindowClass(struct skypiax_interface *p)
+void win32_DeInitialize_DestroyWindowClass(private_t *tech_pvt)
 {
-  UnregisterClass(p->SkypiaxHandles.win32_acInit_WindowClassName,
-                  p->SkypiaxHandles.win32_hInit_ProcessHandle);
-  CloseHandle(p->SkypiaxHandles.win32_hInit_ProcessHandle),
-    p->SkypiaxHandles.win32_hInit_ProcessHandle = NULL;
+  UnregisterClass(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName,
+                  tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle);
+  CloseHandle(tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle),
+    tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle = NULL;
 }
 
-int win32_Initialize_CreateMainWindow(struct skypiax_interface *p)
+int win32_Initialize_CreateMainWindow(private_t *tech_pvt)
 {
-  p->SkypiaxHandles.win32_hInit_MainWindowHandle =
+  tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle =
     CreateWindowEx(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE,
-                   p->SkypiaxHandles.win32_acInit_WindowClassName, "",
+                   tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, "",
                    WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT,
-                   128, 128, NULL, 0, p->SkypiaxHandles.win32_hInit_ProcessHandle, p);
-  return (p->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL ? 1 : 0);
+                   128, 128, NULL, 0, tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle, p);
+  return (tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL ? 1 : 0);
 }
 
-void win32_DeInitialize_DestroyMainWindow(struct skypiax_interface *p)
+void win32_DeInitialize_DestroyMainWindow(private_t *tech_pvt)
 {
-  if (p->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL)
-    DestroyWindow(p->SkypiaxHandles.win32_hInit_MainWindowHandle),
-      p->SkypiaxHandles.win32_hInit_MainWindowHandle = NULL;
+  if (tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL)
+    DestroyWindow(tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle),
+      tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle = NULL;
 }
 
 DWORD win32_dwThreadId;
@@ -722,28 +732,27 @@
   /*    destroy main window */
   /*  destroy window class */
 
-  struct skypiax_interface *p;
+  private_t *tech_pvt = obj;
 
-  p = obj;
-  switch_file_pipe_create(&p->SkypiaxHandles.fdesc[0],
-                          &p->SkypiaxHandles.fdesc[1], skypiax_module_pool);
-  p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach =
+  switch_file_pipe_create(&tech_pvt->SkypiaxHandles.fdesc[0],
+                          &tech_pvt->SkypiaxHandles.fdesc[1], skypiax_module_pool);
+  tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach =
     RegisterWindowMessage("SkypeControlAPIAttach");
-  p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover =
+  tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover =
     RegisterWindowMessage("SkypeControlAPIDiscover");
 
   switch_sleep(2000000);
 
-  if (p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0
-      && p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) {
+  if (tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0
+      && tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) {
     if (win32_Initialize_CreateWindowClass(p)) {
       if (win32_Initialize_CreateMainWindow(p)) {
         if (SendMessage
             (HWND_BROADCAST,
-             p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
-             (WPARAM) p->SkypiaxHandles.win32_hInit_MainWindowHandle, 0) != 0) {
-          p->SkypiaxHandles.win32_hInit_MainWindowHandle =
-            p->SkypiaxHandles.win32_hInit_MainWindowHandle;
+             tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
+             (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, 0) != 0) {
+          tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle =
+            tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle;
           while (1) {
             MSG oMessage;
             if (!running)
@@ -818,7 +827,7 @@
   unsigned long bytes_after_ret;
   unsigned char *prop;
   int status;
-  struct skypiax_interface *p = NULL;
+  private_t *tech_pvt = NULL;
 
   //XLockDisplay(disp);
   status =
@@ -846,7 +855,7 @@
 
   int *dispptr;
   int disp;
-  struct skypiax_interface *p = NULL;
+  private_t *tech_pvt = NULL;
 
   dispptr = data;
   disp = *dispptr;
@@ -865,28 +874,27 @@
 void *SWITCH_THREAD_FUNC do_skype_thread(switch_thread_t * thread, void *obj)
 {
 
-  struct skypiax_interface *p;
+  private_t *tech_pvt = obj;
   struct SkypiaxHandles *SkypiaxHandles;
   char buf[512];
   Display *disp = NULL;
   Window root = -1;
   Window win = -1;
 
-  p = obj;
   DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
 
-  if (pipe(p->SkypiaxHandles.fdesc)) {
-    fcntl(p->SkypiaxHandles.fdesc[0], F_SETFL, O_NONBLOCK);
-    fcntl(p->SkypiaxHandles.fdesc[1], F_SETFL, O_NONBLOCK);
+  if (pipe(tech_pvt->SkypiaxHandles.fdesc)) {
+    fcntl(tech_pvt->SkypiaxHandles.fdesc[0], F_SETFL, O_NONBLOCK);
+    fcntl(tech_pvt->SkypiaxHandles.fdesc[1], F_SETFL, O_NONBLOCK);
   }
-  SkypiaxHandles = &p->SkypiaxHandles;
-  disp = XOpenDisplay(p->X11_display);
+  SkypiaxHandles = &tech_pvt->SkypiaxHandles;
+  disp = XOpenDisplay(tech_pvt->X11_display);
   if (!disp) {
     ERRORA("Cannot open X Display '%s', exiting skype thread\n", SKYPIAX_P_LOG,
-           p->X11_display);
+           tech_pvt->X11_display);
     return NULL;
   } else {
-    DEBUGA_SKYPE("X Display '%s' opened\n", SKYPIAX_P_LOG, p->X11_display);
+    DEBUGA_SKYPE("X Display '%s' opened\n", SKYPIAX_P_LOG, tech_pvt->X11_display);
   }
 
   int xfd;
@@ -978,7 +986,7 @@
 }
 #endif // WIN32
 
-int skypiax_skype_write(struct skypiax_interface *p, char *msg_to_skype)
+int skypiax_skype_write(private_t *tech_pvt, char *msg_to_skype)
 {
 #ifdef WIN32
   static char acInputRow[1024];
@@ -1003,14 +1011,14 @@
   oCopyData.cbData = strlen(acInputRow) + 1;
   if (oCopyData.cbData != 1) {
     if (SendMessage
-        (p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle, WM_COPYDATA,
-         (WPARAM) p->SkypiaxHandles.win32_hInit_MainWindowHandle,
+        (tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle, WM_COPYDATA,
+         (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle,
          (LPARAM) & oCopyData) == FALSE) {
       ERRORA
         ("Sending message failed - probably Skype crashed.\n\nPlease shutdown Skypiax (Asterisk), then restart Skype from the menu, then launch Skypiax and try again.\n",
          SKYPIAX_P_LOG);
-      p->skype = 0;
-      p->skype_thread = NULL;
+      tech_pvt->skype = 0;
+      tech_pvt->skype_thread = NULL;
       if (option_debug > 100) {
         DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
       }
@@ -1022,7 +1030,7 @@
   if (option_debug > 100) {
     DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
   }
-  SkypiaxHandles = &p->SkypiaxHandles;
+  SkypiaxHandles = &tech_pvt->SkypiaxHandles;
 
   if (!skypiax_skype_send_message(SkypiaxHandles, msg_to_skype)) {
     ERRORA
@@ -1042,7 +1050,7 @@
 
 }
 
-int skypiax_skype_read(struct skypiax_interface *p)
+int skypiax_skype_read(private_t *tech_pvt)
 {
 
   char read_from_pipe[4096];
@@ -1059,9 +1067,6 @@
   fd_set fs;
   struct timeval to;
 #endif /* WIN32 */
-  private_t *tech_pvt = NULL;
-
-  tech_pvt = p->tech_pvt;
 
   if (option_debug > 100) {
     DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
@@ -1074,7 +1079,7 @@
 #ifdef WIN32
   rt = 1;
 #else /* WIN32 */
-  fdselect = p->SkypiaxHandles.fdesc[0];
+  fdselect = tech_pvt->SkypiaxHandles.fdesc[0];
   FD_ZERO(&fs);
   FD_SET(fdselect, &fs);
   to.tv_usec = 2000000;         //500 msec
@@ -1083,13 +1088,13 @@
 #endif /* WIN32 */
 
   if (rt > 0) {
-    if (p->SkypiaxHandles.fdesc[0]) {
+    if (tech_pvt->SkypiaxHandles.fdesc[0]) {
       howmany = sizeof(read_from_pipe);
 #ifdef WIN32
-      switch_file_read(p->SkypiaxHandles.fdesc[0], read_from_pipe, &howmany);
+      switch_file_read(tech_pvt->SkypiaxHandles.fdesc[0], read_from_pipe, &howmany);
 #else /* WIN32 */
       howmany =
-        read(p->SkypiaxHandles.fdesc[0], read_from_pipe, sizeof(read_from_pipe));
+        read(tech_pvt->SkypiaxHandles.fdesc[0], read_from_pipe, sizeof(read_from_pipe));
 #endif /* WIN32 */
 
       a = 0;
@@ -1099,8 +1104,8 @@
 
         if (read_from_pipe[i] == '\0') {
 
-          DEBUGA_SKYPE("read_skype: howmany=%d, i=%d, a=%d, |||%s||| \n", SKYPIAX_P_LOG,
-                       howmany, i, a, messaggio);
+          //DEBUGA_SKYPE("read_skype: howmany=%d, i=%d, a=%d, |||%s||| \n", SKYPIAX_P_LOG, howmany, i, a, messaggio);
+          DEBUGA_SKYPE("READING: |||%s||| \n", SKYPIAX_P_LOG, messaggio);
 
           if (!strcasecmp(messaggio, "ERROR 68")) { /* not yet protocol specified,
                                                        just authorized */
@@ -1108,7 +1113,7 @@
               ("If I don't connect immediately, please give the Skype client authorization to be connected by Skypiax (and to not ask you again)\n",
                SKYPIAX_P_LOG);
             switch_sleep(1000000);
-            skypiax_skype_write(p, "PROTOCOL 6");
+            skypiax_skype_write(tech_pvt, "PROTOCOL 6");
             switch_sleep(10000);
             return 0;
           }
@@ -1116,19 +1121,19 @@
           if (!strncasecmp(messaggio, "ERROR 92 CALL", 12)) {
             ERRORA("Skype got ERROR: |||%s|||, the number we called was not recognized\n",
                    SKYPIAX_P_LOG, messaggio);
-            p->skype_callflow = CALLFLOW_STATUS_FINISHED;
+            tech_pvt->skype_callflow = CALLFLOW_STATUS_FINISHED;
             if (option_debug)
               DEBUGA_SKYPE("skype_call now is DOWN\n", SKYPIAX_P_LOG);
-            p->skype_call_id[0] = '\0';
+            tech_pvt->skype_call_id[0] = '\0';
 
-            if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) {
+            if (tech_pvt->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) {
               if (option_debug > 100) {
                 DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
               }
-              p->interface_state = SKYPIAX_STATE_DOWN;
+              tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
               return CALLFLOW_INCOMING_HANGUP;
             } else {
-              p->interface_state = SKYPIAX_STATE_DOWN;
+              tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
             }
           }
 
@@ -1144,36 +1149,36 @@
           if (!strcasecmp(messaggio, "#333")) {
             /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[11]: %s\n", SKYPIAX_P_LOG,
              * messaggio_2, &messaggio_2[11]); */
-            memset(p->skype_friends, 0, 4096);
-            strncpy(p->skype_friends, &messaggio_2[11], 4095);
+            memset(tech_pvt->skype_friends, 0, 4096);
+            strncpy(tech_pvt->skype_friends, &messaggio_2[11], 4095);
           }
           if (!strcasecmp(messaggio, "#222")) {
             /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[10]: %s\n", SKYPIAX_P_LOG,
              * messaggio_2, &messaggio_2[10]); */
-            memset(p->skype_fullname, 0, 512);
-            strncpy(p->skype_fullname, &messaggio_2[10], 511);
+            memset(tech_pvt->skype_fullname, 0, 512);
+            strncpy(tech_pvt->skype_fullname, &messaggio_2[10], 511);
           }
           if (!strcasecmp(messaggio, "#765")) {
             /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[10]: %s\n", SKYPIAX_P_LOG,
              * messaggio_2, &messaggio_2[10]); */
-            memset(p->skype_displayname, 0, 512);
-            strncpy(p->skype_displayname, &messaggio_2[10], 511);
+            memset(tech_pvt->skype_displayname, 0, 512);
+            strncpy(tech_pvt->skype_displayname, &messaggio_2[10], 511);
           }
           if (!strcasecmp(messaggio, "ERROR")) {
             ERRORA("Skype got ERROR: |||%s|||\n", SKYPIAX_P_LOG, messaggio);
-            p->skype_callflow = CALLFLOW_STATUS_FINISHED;
+            tech_pvt->skype_callflow = CALLFLOW_STATUS_FINISHED;
             if (option_debug)
               DEBUGA_SKYPE("skype_call now is DOWN\n", SKYPIAX_P_LOG);
-            p->skype_call_id[0] = '\0';
+            tech_pvt->skype_call_id[0] = '\0';
 
-            if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) {
+            if (tech_pvt->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) {
               if (option_debug > 100) {
                 DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
               }
-              p->interface_state = SKYPIAX_STATE_DOWN;
+              tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
               return CALLFLOW_INCOMING_HANGUP;
             } else {
-              p->interface_state = SKYPIAX_STATE_DOWN;
+              tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
             }
           }
           if (!strcasecmp(messaggio, "CURRENTUSERHANDLE")) {
@@ -1183,9 +1188,9 @@
 
             strncpy(id, where, sizeof(id) - 1);
 
-            if (!strcasecmp(id, p->skype_user)) {
-              p->SkypiaxHandles.api_connected = 1;
-              //DEBUGA_SKYPE ("Skype MSG: messaggio: %s, currentuserhandle: %s, cuh: %s, skype_user: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, p->skype_user);
+            if (!strcasecmp(id, tech_pvt->skype_user)) {
+              tech_pvt->SkypiaxHandles.api_connected = 1;
+              //DEBUGA_SKYPE ("Skype MSG: messaggio: %s, currentuserhandle: %s, cuh: %s, skype_user: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, tech_pvt->skype_user);
             }
           }
 
@@ -1207,7 +1212,7 @@
 
               //FIXME: TODO: allow authorization based on config param
               sprintf(msg_to_skype, "SET USER %s ISAUTHORIZED TRUE", id);
-              skypiax_skype_write(p, msg_to_skype);
+              skypiax_skype_write(tech_pvt, msg_to_skype);
             }
           }
 
@@ -1236,7 +1241,7 @@
 
                 //FIXME: TODO: allow authorization based on config param
                 sprintf(msg_to_skype, "SET MESSAGE %s SEEN", id);
-                skypiax_skype_write(p, msg_to_skype);
+                skypiax_skype_write(tech_pvt, msg_to_skype);
               }
             } else if (!strcasecmp(prop, "BODY")) {
               char msg_to_skype[256];
@@ -1246,7 +1251,7 @@
 
               //FIXME: TODO: on config param ???
               sprintf(msg_to_skype, "SET MESSAGE %s SEEN", id);
-              skypiax_skype_write(p, msg_to_skype);
+              skypiax_skype_write(tech_pvt, msg_to_skype);
             }
 
           }
@@ -1275,39 +1280,38 @@
                  SKYPIAX_P_LOG, messaggio, obj, id, prop, value, where ? where : "NULL");
 
             if (!strcasecmp(prop, "PARTNER_HANDLE")) {
-              strncpy(p->callid_number, value, sizeof(p->callid_number) - 1);
+              strncpy(tech_pvt->callid_number, value, sizeof(tech_pvt->callid_number) - 1);
               WARNINGA
-                ("the skype_call %s caller PARTNER_HANDLE (p->callid_number) is: %s\n",
-                 SKYPIAX_P_LOG, id, p->callid_number);
+                ("the skype_call %s caller PARTNER_HANDLE (tech_pvt->callid_number) is: %s\n",
+                 SKYPIAX_P_LOG, id, tech_pvt->callid_number);
               return CALLFLOW_INCOMING_RING;
             }
             if (!strcasecmp(prop, "PARTNER_DISPNAME")) {
-              snprintf(p->callid_name, sizeof(p->callid_name) - 1, "%s%s%s", value,
+              snprintf(tech_pvt->callid_name, sizeof(tech_pvt->callid_name) - 1, "%s%s%s", value,
                        where ? " " : "", where ? where : "");
               WARNINGA
-                ("the skype_call %s caller PARTNER_DISPNAME (p->callid_name) is: %s\n",
-                 SKYPIAX_P_LOG, id, p->callid_name);
+                ("the skype_call %s caller PARTNER_DISPNAME (tech_pvt->callid_name) is: %s\n",
+                 SKYPIAX_P_LOG, id, tech_pvt->callid_name);
             }
             if (!strcasecmp(prop, "CONF_ID") && !strcasecmp(value, "0")) {
               DEBUGA_SKYPE("the skype_call %s is NOT a conference call\n", SKYPIAX_P_LOG,
                            id);
-              if (p->interface_state == SKYPIAX_STATE_DOWN)
-                p->interface_state = SKYPIAX_STATE_PRERING;
+              if (tech_pvt->interface_state == SKYPIAX_STATE_DOWN)
+                tech_pvt->interface_state = SKYPIAX_STATE_PRERING;
             }
             if (!strcasecmp(prop, "CONF_ID") && strcasecmp(value, "0")) {
               DEBUGA_SKYPE("the skype_call %s is a conference call\n", SKYPIAX_P_LOG, id);
-              if (p->interface_state == SKYPIAX_STATE_DOWN)
-                p->interface_state = SKYPIAX_STATE_PRERING;
+              if (tech_pvt->interface_state == SKYPIAX_STATE_DOWN)
+                tech_pvt->interface_state = SKYPIAX_STATE_PRERING;
             }
 
             if (!strcasecmp(prop, "DTMF")) {
               switch_core_session_t *session = NULL;
-              private_t *tech_pvt = NULL;
               switch_channel_t *channel = NULL;
 
               DEBUGA_SKYPE("Call %s received a DTMF: %s\n", SKYPIAX_P_LOG, id, value);
 
-              tech_pvt = p->tech_pvt;
+              //tech_pvt = p;
               session = tech_pvt->session;
               channel = switch_core_session_get_channel(session);
 
@@ -1329,8 +1333,8 @@
                  SKYPIAX_P_LOG, id);
             }
             if (!strcasecmp(prop, "DURATION") && (!strcasecmp(value, "1"))) {
-              if (strcasecmp(id, p->skype_call_id)) {
-                strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1);
+              if (strcasecmp(id, tech_pvt->skype_call_id)) {
+                strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
                 if (option_debug > 1)
                   DEBUGA_SKYPE
                     ("We called a Skype contact and he answered us on skype_call: %s.\n",
@@ -1342,34 +1346,34 @@
 
               if (!strcasecmp(value, "RINGING")) {
                 char msg_to_skype[1024];
-                if (p->interface_state != SKYPIAX_STATE_DIALING) {
+                if (tech_pvt->interface_state != SKYPIAX_STATE_DIALING) {
                   /* we are not calling out */
 
-                  if (!strlen(p->skype_call_id)) {  //FIXME
+                  if (!strlen(tech_pvt->skype_call_id)) {  //FIXME
                     /* we are not inside an active call */
-                    p->skype_callflow = CALLFLOW_STATUS_RINGING;
-                    p->interface_state = SKYPIAX_STATE_RING;
+                    tech_pvt->skype_callflow = CALLFLOW_STATUS_RINGING;
+                    tech_pvt->interface_state = SKYPIAX_STATE_RING;
                     /* no owner, no active call, let's answer */
-                    skypiax_skype_write(p, "SET AGC OFF");
+                    skypiax_skype_write(tech_pvt, "SET AGC OFF");
                     switch_sleep(10000);
-                    skypiax_skype_write(p, "SET AEC OFF");
+                    skypiax_skype_write(tech_pvt, "SET AEC OFF");
                     switch_sleep(10000);
                     sprintf(msg_to_skype, "GET CALL %s PARTNER_DISPNAME", id);
-                    skypiax_skype_write(p, msg_to_skype);
+                    skypiax_skype_write(tech_pvt, msg_to_skype);
                     switch_sleep(10000);
                     sprintf(msg_to_skype, "GET CALL %s PARTNER_HANDLE", id);
-                    skypiax_skype_write(p, msg_to_skype);
+                    skypiax_skype_write(tech_pvt, msg_to_skype);
                     switch_sleep(10000);
                     sprintf(msg_to_skype, "ALTER CALL %s ANSWER", id);
-                    skypiax_skype_write(p, msg_to_skype);
+                    skypiax_skype_write(tech_pvt, msg_to_skype);
                     if (option_debug)
                       DEBUGA_SKYPE("We answered a Skype RING on skype_call %s\n",
                                    SKYPIAX_P_LOG, id);
-                    strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1);
+                    strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
                   } else {
                     /* we're owned, we're in a call, let's refuse */
                     sprintf(msg_to_skype, "ALTER CALL %s END HANGUP", id);
-                    skypiax_skype_write(p, msg_to_skype);
+                    skypiax_skype_write(tech_pvt, msg_to_skype);
                     switch_sleep(10000);
                     DEBUGA_SKYPE
                       ("We have NOT answered a Skype RING on skype_call %s, because we are already in a skypiax call\n",
@@ -1378,79 +1382,79 @@
                   }
                 } else {
                   /* we are calling out */
-                  p->skype_callflow = CALLFLOW_STATUS_RINGING;
-                  p->interface_state = SKYPIAX_STATE_RINGING;
-                  //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING);
-                  strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1);
+                  tech_pvt->skype_callflow = CALLFLOW_STATUS_RINGING;
+                  tech_pvt->interface_state = SKYPIAX_STATE_RINGING;
+                  //FIXME ast_queue_control(tech_pvt->owner, SKYPIAX_CONTROL_RINGING);
+                  strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
                   DEBUGA_SKYPE("Our remote party in skype_call %s is RINGING\n",
                                SKYPIAX_P_LOG, id);
                 }
               } else if (!strcasecmp(value, "EARLYMEDIA")) {
-                p->skype_callflow = CALLFLOW_STATUS_EARLYMEDIA;
-                p->interface_state = SKYPIAX_STATE_DIALING;
-                //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING);
+                tech_pvt->skype_callflow = CALLFLOW_STATUS_EARLYMEDIA;
+                tech_pvt->interface_state = SKYPIAX_STATE_DIALING;
+                //FIXME ast_queue_control(tech_pvt->owner, SKYPIAX_CONTROL_RINGING);
                 DEBUGA_SKYPE("Our remote party in skype_call %s is EARLYMEDIA\n",
                              SKYPIAX_P_LOG, id);
               } else if (!strcasecmp(value, "MISSED")) {
                 DEBUGA_SKYPE("We missed skype_call %s\n", SKYPIAX_P_LOG, id);
 
               } else if (!strcasecmp(value, "FINISHED")) {
-                //p->skype_callflow = CALLFLOW_STATUS_FINISHED;
+                //tech_pvt->skype_callflow = CALLFLOW_STATUS_FINISHED;
                 if (option_debug)
                   DEBUGA_SKYPE("skype_call %s now is DOWN\n", SKYPIAX_P_LOG, id);
-                p->skype_call_id[0] = '\0';
+                tech_pvt->skype_call_id[0] = '\0';
 
-                if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) {
+                if (tech_pvt->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) {
                   if (option_debug > 100) {
                     DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
                   }
-                  //p->interface_state = SKYPIAX_STATE_DOWN;
+                  //tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
                   return CALLFLOW_INCOMING_HANGUP;
                 } else {
-                  p->interface_state = SKYPIAX_STATE_DOWN;
+                  tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
                 }
 
               } else if (!strcasecmp(value, "CANCELLED")) {
-                p->skype_callflow = CALLFLOW_STATUS_CANCELLED;
+                tech_pvt->skype_callflow = CALLFLOW_STATUS_CANCELLED;
                 if (option_debug)
                   DEBUGA_SKYPE
                     ("we tried to call Skype on skype_call %s and Skype has now CANCELLED\n",
                      SKYPIAX_P_LOG, id);
-                p->skype_call_id[0] = '\0';
+                tech_pvt->skype_call_id[0] = '\0';
 
-                if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) {
+                if (tech_pvt->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) {
                   if (option_debug > 100) {
                     DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
                   }
-                  p->interface_state = SKYPIAX_STATE_DOWN;
+                  tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
                   return CALLFLOW_INCOMING_HANGUP;
                 } else {
-                  p->interface_state = SKYPIAX_STATE_DOWN;
+                  tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
                 }
               } else if (!strcasecmp(value, "FAILED")) {
-                p->skype_callflow = CALLFLOW_STATUS_FAILED;
+                tech_pvt->skype_callflow = CALLFLOW_STATUS_FAILED;
                 if (option_debug)
                   DEBUGA_SKYPE
                     ("we tried to call Skype on skype_call %s and Skype has now FAILED\n",
                      SKYPIAX_P_LOG, id);
-                p->skype_call_id[0] = '\0';
-                strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1);
-                p->interface_state = SKYPIAX_STATE_DOWN;
+                tech_pvt->skype_call_id[0] = '\0';
+                strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
+                tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
                 if (option_debug > 100) {
                   DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
                 }
                 return CALLFLOW_INCOMING_HANGUP;
               } else if (!strcasecmp(value, "REFUSED")) {
-                if (!strcasecmp(id, p->skype_call_id)) {
+                if (!strcasecmp(id, tech_pvt->skype_call_id)) {
                   /* this is the id of the call we are in, probably we generated it */
-                  p->skype_callflow = CALLFLOW_STATUS_REFUSED;
+                  tech_pvt->skype_callflow = CALLFLOW_STATUS_REFUSED;
                   if (option_debug)
                     DEBUGA_SKYPE
                       ("we tried to call Skype on skype_call %s and Skype has now REFUSED\n",
                        SKYPIAX_P_LOG, id);
-                  strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1);
-                  p->interface_state = SKYPIAX_STATE_DOWN;
-                  p->skype_call_id[0] = '\0';
+                  strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
+                  tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
+                  tech_pvt->skype_call_id[0] = '\0';
                   if (option_debug > 100) {
                     DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
                   }
@@ -1461,19 +1465,19 @@
 
                 }
               } else if (!strcasecmp(value, "ROUTING")) {
-                p->skype_callflow = CALLFLOW_STATUS_ROUTING;
-                p->interface_state = SKYPIAX_STATE_DIALING;
-                strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1);
+                tech_pvt->skype_callflow = CALLFLOW_STATUS_ROUTING;
+                tech_pvt->interface_state = SKYPIAX_STATE_DIALING;
+                strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
                 DEBUGA_SKYPE("skype_call: %s is now ROUTING\n", SKYPIAX_P_LOG, id);
               } else if (!strcasecmp(value, "UNPLACED")) {
-                p->skype_callflow = CALLFLOW_STATUS_UNPLACED;
-                p->interface_state = SKYPIAX_STATE_DIALING;
-                strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1);
+                tech_pvt->skype_callflow = CALLFLOW_STATUS_UNPLACED;
+                tech_pvt->interface_state = SKYPIAX_STATE_DIALING;
+                strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
                 DEBUGA_SKYPE("skype_call: %s is now UNPLACED\n", SKYPIAX_P_LOG, id);
               } else if (!strcasecmp(value, "INPROGRESS")) {
-                p->skype_callflow = CALLFLOW_STATUS_INPROGRESS;
-                strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1);
-                p->interface_state = SKYPIAX_STATE_UP;
+                tech_pvt->skype_callflow = CALLFLOW_STATUS_INPROGRESS;
+                strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
+                tech_pvt->interface_state = SKYPIAX_STATE_UP;
                 if (option_debug > 1)
                   DEBUGA_SKYPE("skype_call: %s is now active\n", SKYPIAX_P_LOG, id);
 
@@ -1488,36 +1492,36 @@
                   switch_threadattr_create(&thd_attr, skypiax_module_pool);
                   switch_threadattr_detach_set(thd_attr, 1);
                   switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
-                  switch_thread_create(&p->tcp_srv_thread, thd_attr,
-                                       skypiax_do_tcp_srv_thread, p, skypiax_module_pool);
+                  switch_thread_create(&tech_pvt->tcp_srv_thread, thd_attr,
+                                       skypiax_do_tcp_srv_thread, tech_pvt, skypiax_module_pool);
                   DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPIAX_P_LOG);
 
                   switch_threadattr_create(&thd_attr, skypiax_module_pool);
                   switch_threadattr_detach_set(thd_attr, 1);
                   switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
-                  switch_thread_create(&p->tcp_cli_thread, thd_attr,
-                                       skypiax_do_tcp_cli_thread, p, skypiax_module_pool);
+                  switch_thread_create(&tech_pvt->tcp_cli_thread, thd_attr,
+                                       skypiax_do_tcp_cli_thread, tech_pvt, skypiax_module_pool);
                   DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG);
                   switch_sleep(100000);
                   sprintf(msg_to_skype, "ALTER CALL %s SET_OUTPUT PORT=\"%d\"", id,
-                          p->tcp_srv_port);
-                  skypiax_skype_write(p, msg_to_skype);
+                          tech_pvt->tcp_srv_port);
+                  skypiax_skype_write(tech_pvt, msg_to_skype);
                   switch_sleep(100000);
                   sprintf(msg_to_skype, "ALTER CALL %s SET_INPUT PORT=\"%d\"", id,
-                          p->tcp_cli_port);
-                  skypiax_skype_write(p, msg_to_skype);
+                          tech_pvt->tcp_cli_port);
+                  skypiax_skype_write(tech_pvt, msg_to_skype);
                   switch_sleep(100000);
                 }
 
-                p->skype_callflow = SKYPIAX_STATE_UP;
+                tech_pvt->skype_callflow = SKYPIAX_STATE_UP;
 
                 //FIXME switch_core_session_t **new_session;
 
                 //FIXME *new_session=switch_loadable_module_create_interface(skypiax_endpoint_interface, pool);
 
-                if (!p->tech_pvt || !tech_pvt->session) {   //FIXME FIXME FIXME 
+                if (!tech_pvt->session) {   //FIXME FIXME FIXME 
                   switch_core_session_t *session = NULL;
-                  private_t *tech_pvt = NULL;
+                  //private_t *tech_pvt = NULL;
                   switch_channel_t *channel = NULL;
 
                   NOTICA("New Inbound Channel!\n", SKYPIAX_P_LOG);
@@ -1526,27 +1530,28 @@
                        switch_core_session_request(skypiax_endpoint_interface,
                                                    NULL)) != 0) {
                     switch_core_session_add_stream(session, NULL);
-                    if ((tech_pvt =
-                         (private_t *) switch_core_session_alloc(session,
-                                                                 sizeof(private_t))) !=
-                        0) {
                       channel = switch_core_session_get_channel(session);
-                      skypiax_tech_init(tech_pvt, session, p);
+                      skypiax_tech_init(tech_pvt, session);
+#if 0
+                    if ((tech_pvt = (private_t *) switch_core_session_alloc(session, sizeof(private_t))) != 0) {
+                      channel = switch_core_session_get_channel(session);
+                      skypiax_tech_init(tech_pvt, session);
                     } else {
                       ERRORA("Hey where is my memory pool?\n", SKYPIAX_P_LOG);
                       switch_core_session_destroy(&session);
                       break;
                     }
+#endif
 
                     if ((tech_pvt->caller_profile =
                          switch_caller_profile_new(switch_core_session_get_pool(session),
-                                                   "skypiax", "XML", p->callid_name,
-                                                   p->callid_number, NULL, "calling_ani",
+                                                   "skypiax", "XML", tech_pvt->callid_name,
+                                                   tech_pvt->callid_number, NULL, "calling_ani",
                                                    NULL, NULL, "mod_skypiax", "public",
                                                    "5000")) != 0) {
                       char name[128];
-                      //switch_snprintf(name, sizeof(name), "skypiax/%s/%s", p->name, tech_pvt->caller_profile->destination_number);
-                      switch_snprintf(name, sizeof(name), "skypiax/%s", p->name);
+                      //switch_snprintf(name, sizeof(name), "skypiax/%s/%s", tech_pvt->name, tech_pvt->caller_profile->destination_number);
+                      switch_snprintf(name, sizeof(name), "skypiax/%s", tech_pvt->name);
                       switch_channel_set_name(channel, name);
                       switch_channel_set_caller_profile(channel,
                                                         tech_pvt->caller_profile);
@@ -1562,14 +1567,8 @@
                   switch_channel_mark_answered(channel);
                 } else {
                   switch_core_session_t *session = NULL;
-                  private_t *tech_pvt = NULL;
                   switch_channel_t *channel = NULL;
 
-                  if (p->tech_pvt) {
-                    tech_pvt = p->tech_pvt;
-                  } else {
-                    ERRORA("No p->tech_pvt???\n", SKYPIAX_P_LOG);
-                  }
                   if (tech_pvt->session) {
                     session = tech_pvt->session;
                   } else {
@@ -1612,7 +1611,7 @@
   return 0;
 }
 
-int skypiax_skype_senddigit(struct skypiax_interface *p, char digit)
+int skypiax_skype_senddigit(private_t *tech_pvt, char digit)
 {
   char msg_to_skype[1024];
   if (option_debug > 10) {
@@ -1621,9 +1620,9 @@
 
   NOTICA("DIGIT received: %c\n", SKYPIAX_P_LOG, digit);
 
-  sprintf(msg_to_skype, "SET CALL %s DTMF %c", p->skype_call_id, digit);
+  sprintf(msg_to_skype, "SET CALL %s DTMF %c", tech_pvt->skype_call_id, digit);
 
-  skypiax_skype_write(p, msg_to_skype);
+  skypiax_skype_write(tech_pvt, msg_to_skype);
 
   if (option_debug > 10) {
     DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
@@ -1631,15 +1630,15 @@
   return 0;
 }
 
-int skypiax_skype_call(struct skypiax_interface *p, char *idest, int timeout,
+int skypiax_skype_call(private_t *tech_pvt, char *idest, int timeout,
                        switch_core_session_t * session)
 {
   char *rdest;
   char msg_to_skype[1024];
-  private_t *tech_pvt;
+  //private_t *tech_pvt;
   switch_caller_profile_t *caller_profile;
 
-  tech_pvt = p->tech_pvt;
+  //tech_pvt = p;
 
   if (option_debug > 10) {
     DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
@@ -1652,13 +1651,13 @@
   if (option_debug)
     DEBUGA_SKYPE("Calling Skype, rdest is: %s\n", SKYPIAX_P_LOG, rdest);
   NOTICA("Calling Skype, rdest is: %s\n", SKYPIAX_P_LOG, rdest);
-  skypiax_skype_write(p, "SET AGC OFF");
+  skypiax_skype_write(tech_pvt, "SET AGC OFF");
   switch_sleep(10000);
-  skypiax_skype_write(p, "SET AEC OFF");
+  skypiax_skype_write(tech_pvt, "SET AEC OFF");
   switch_sleep(10000);
 
   sprintf(msg_to_skype, "CALL %s", rdest);
-  if (skypiax_skype_write(p, msg_to_skype) < 0) {
+  if (skypiax_skype_write(tech_pvt, msg_to_skype) < 0) {
 
     ERRORA("failed to communicate with Skype client, now exit\n", SKYPIAX_P_LOG);
     if (option_debug > 10) {
@@ -1670,6 +1669,6 @@
   caller_profile = tech_pvt->caller_profile;
   caller_profile->destination_number = rdest;
 
-  //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING);
+  //FIXME ast_queue_control(tech_pvt->owner, SKYPIAX_CONTROL_RINGING);
   return 0;
 }


From gmaruzz at freeswitch.org  Sun Jan 11 04:15:27 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 06:15:27 -0600
Subject: [Freeswitch-svn] [commit] r11120 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 06:15:27 2009
New Revision: 11120

Log:
skypiax: indent -gnu -ts4 -br -brs -cdw -lp -ce -nbfda -npcs -nprs -npsl -nbbo -saf -sai -saw -cs -bbo -nhnl -nut -sob -l90

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Sun Jan 11 06:15:27 2009
@@ -146,7 +146,6 @@
   tech_pvt = switch_core_session_get_private(session);
   assert(tech_pvt != NULL);
 
-
   switch_clear_flag_locked(tech_pvt, TFLAG_IO);
   switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
   //switch_set_flag_locked(tech_pvt, TFLAG_HANGUP);
@@ -352,7 +351,6 @@
   tech_pvt = switch_core_session_get_private(session);
   assert(tech_pvt != NULL);
 
-
   if (!switch_test_flag(tech_pvt, TFLAG_IO)) {
     ERRORA("CIAPA \n", SKYPIAX_P_LOG);
     return SWITCH_STATUS_FALSE;
@@ -387,7 +385,6 @@
   tech_pvt = switch_core_session_get_private(session);
   assert(tech_pvt != NULL);
 
-
   DEBUGA_SKYPE("ANSWERED! \n", SKYPIAX_P_LOG);
 
   return SWITCH_STATUS_SUCCESS;
@@ -405,7 +402,6 @@
   tech_pvt = (private_t *) switch_core_session_get_private(session);
   assert(tech_pvt != NULL);
 
-
   switch (msg->message_id) {
   case SWITCH_MESSAGE_INDICATE_ANSWER:
     {
@@ -496,7 +492,7 @@
 
             DEBUGA_SKYPE("globals.SKYPIAX_INTERFACES[%d].name=|||%s|||?\n", SKYPIAX_P_LOG,
                          i, globals.SKYPIAX_INTERFACES[i].name);
-            tech_pvt = &globals.SKYPIAX_INTERFACES[i];   //FIXME
+            tech_pvt = &globals.SKYPIAX_INTERFACES[i];  //FIXME
             //globals.SKYPIAX_INTERFACES[i].tech_pvt = tech_pvt;  //FIXME
             found = 1;
             break;
@@ -879,8 +875,7 @@
 
         skypiax_skypeaudio_init(&globals.SKYPIAX_INTERFACES[interface_id]);
 
-        while (globals.SKYPIAX_INTERFACES[interface_id].SkypiaxHandles.
-               api_connected == 0) {
+        while (globals.SKYPIAX_INTERFACES[interface_id].SkypiaxHandles.api_connected == 0) {
           switch_sleep(1000);
         }
         NOTICA("STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
@@ -951,7 +946,7 @@
 
     if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread) {
 #ifdef WIN32
-      switch_file_write(tech_pvt->SkypiaxHandles.fdesc[1], "sciutati", &howmany);  // let's the controldev_thread die
+      switch_file_write(tech_pvt->SkypiaxHandles.fdesc[1], "sciutati", &howmany);   // let's the controldev_thread die
 #else /* WIN32 */
       howmany = write(tech_pvt->SkypiaxHandles.fdesc[1], "sciutati", howmany);
 #endif /* WIN32 */
@@ -959,13 +954,14 @@
 
     if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread) {
 #ifdef WIN32
-      if (SendMessage(tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) { // let's the do_skype_thread die
+      if (SendMessage(tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) {  // let's the do_skype_thread die
         ERRORA("WHY FALSE HERE? %d\n", SKYPIAX_P_LOG, GetLastError());
       }
 #else
       XEvent e;
       Atom atom1 =
-        XInternAtom(tech_pvt->SkypiaxHandles.disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False);
+        XInternAtom(tech_pvt->SkypiaxHandles.disp, "SKYPECONTROLAPI_MESSAGE_BEGIN",
+                    False);
       memset(&e, 0, sizeof(e));
       e.xclient.type = ClientMessage;
       e.xclient.message_type = atom1;   /*  leading message */
@@ -973,7 +969,8 @@
       e.xclient.window = tech_pvt->SkypiaxHandles.skype_win;
       e.xclient.format = 8;
 
-      XSendEvent(tech_pvt->SkypiaxHandles.disp, tech_pvt->SkypiaxHandles.win, False, 0, &e);
+      XSendEvent(tech_pvt->SkypiaxHandles.disp, tech_pvt->SkypiaxHandles.win, False, 0,
+                 &e);
       XSync(tech_pvt->SkypiaxHandles.disp, False);
 #endif
     }

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	Sun Jan 11 06:15:27 2009
@@ -154,77 +154,6 @@
 
 #endif //WIN32
 
-#if 0
-private_t {
-  char interface_id[80];
-  char name[80];
-  char dialplan[80];
-  char context[80];
-  char dial_regex[256];
-  char fail_dial_regex[256];
-  char hold_music[256];
-  char type[256];
-  char X11_display[256];
-#ifdef WIN32
-  unsigned short tcp_cli_port;
-  unsigned short tcp_srv_port;
-#else
-  int tcp_cli_port;
-  int tcp_srv_port;
-#endif
-  struct SkypiaxHandles SkypiaxHandles;
-
-  int interface_state;          /*!< \brief 'state' of the interface (channel) */
-  char language[80];            /*!< \brief default Asterisk dialplan language for this interface */
-  char exten[80];               /*!< \brief default Asterisk dialplan extension for this interface */
-  int skypiax_sound_rate;       /*!< \brief rate of the sound device, in Hz, eg: 8000 */
-  switch_file_t *skypiax_sound_capt_fd; /*!< \brief file descriptor for sound capture dev */
-  char callid_name[50];
-  char callid_number[50];
-  double playback_boost;
-  double capture_boost;
-  int stripmsd;
-  switch_thread_t *skype_thread;
-  char skype_call_id[512];
-  int skype_call_ongoing;
-  char skype_friends[4096];
-  char skype_fullname[512];
-  char skype_displayname[512];
-  int skype_callflow;           /*!< \brief 'callflow' of the skype interface (as opposed to phone interface) */
-  int skype;                    /*!< \brief config flag, bool, Skype support on this interface (0 if false, -1 if true) */
-  int control_to_send;
-#ifdef WIN32
-  switch_file_t *audiopipe[2];
-  switch_file_t *audioskypepipe[2];
-#else                           /* WIN32 */
-  int audiopipe[2];
-  int audioskypepipe[2];
-#endif                          /* WIN32 */
-  switch_thread_t *tcp_srv_thread;
-  switch_thread_t *tcp_cli_thread;
-  switch_thread_t *skypiax_do_controldev_thread_thread;
-  switch_thread_t *skypiax_do_skype_thread_thread;
-  short audiobuf[SAMPLES_PER_FRAME];
-  int audiobuf_is_loaded;
-
-  //int phonebook_listing;
-  //int phonebook_querying;
-  //int phonebook_listing_received_calls;
-
-  //int phonebook_first_entry;
-  //int phonebook_last_entry;
-  //int phonebook_number_lenght;
-  //int phonebook_text_lenght;
-  FILE *phonebook_writing_fp;
-  int skypiax_dir_entry_extension_prefix;
-  void *tech_pvt;
-  char skype_user[256];
-  char skype_password[256];
-};
-
-typedef private_t private_t;
-#endif
-
 struct private_object {
   unsigned int flags;
   switch_codec_t read_codec;
@@ -303,9 +232,6 @@
   char skype_user[256];
   char skype_password[256];
 
-
-
-
 };
 
 typedef struct private_object private_t;
@@ -313,10 +239,10 @@
 void *SWITCH_THREAD_FUNC do_skype_thread(switch_thread_t * thread, void *obj);
 void skypiax_tech_init(private_t * tech_pvt, switch_core_session_t * session);
 switch_status_t skypiax_skypeaudio_read(private_t * tech_pvt);
-int skypiax_skypeaudio_init(private_t *p);
-int skypiax_skype_write(private_t *p, char *msg_to_skype);
-int skypiax_skype_read(private_t *p);
+int skypiax_skypeaudio_init(private_t * p);
+int skypiax_skype_write(private_t * p, char *msg_to_skype);
+int skypiax_skype_read(private_t * p);
 
-int skypiax_skype_call(private_t *p, char *idest, int timeout,
+int skypiax_skype_call(private_t * p, char *idest, int timeout,
                        switch_core_session_t * session);
-int skypiax_skype_senddigit(private_t *p, char digit);
+int skypiax_skype_senddigit(private_t * p, char digit);

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sun Jan 11 06:15:27 2009
@@ -108,8 +108,8 @@
 
         if ((SAMPLERATE_SKYPIAX - 8000) == 0) {
 
-  ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]);
-  ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
+          ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]);
+          ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
           if (len > 0) {
             a = 0;
             for (i = 0; i < len / sizeof(short); i++) {
@@ -156,8 +156,8 @@
           }
         } else if (SAMPLERATE_SKYPIAX == 16000) {
 
-  //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]);
-  //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
+          //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]);
+          //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
           if (len > 0) {
             if (len == SAMPLES_PER_FRAME * sizeof(short)) {
 #ifdef WIN32
@@ -288,7 +288,7 @@
   memset(&my_addr, 0, sizeof(my_addr));
   my_addr.sin_family = AF_INET;
   my_addr.sin_addr.s_addr = htonl(0x7f000001);  /* use the localhost */
-  my_addr.sin_port = htons(tech_pvt->tcp_cli_port);    //FIXME configurable!
+  my_addr.sin_port = htons(tech_pvt->tcp_cli_port); //FIXME configurable!
 
   if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
     ERRORA("socket Error\n", SKYPIAX_P_LOG);
@@ -438,12 +438,14 @@
   return NULL;
 }
 
-int skypiax_skypeaudio_init(private_t *tech_pvt)
+int skypiax_skypeaudio_init(private_t * tech_pvt)
 {
 
 #ifdef WIN32
   switch_status_t rv;
-  rv = switch_file_pipe_create(&tech_pvt->audiopipe[0], &tech_pvt->audiopipe[1], skypiax_module_pool);
+  rv =
+    switch_file_pipe_create(&tech_pvt->audiopipe[0], &tech_pvt->audiopipe[1],
+                            skypiax_module_pool);
   rv =
     switch_file_pipe_create(&tech_pvt->audioskypepipe[0], &tech_pvt->audioskypepipe[1],
                             skypiax_module_pool);
@@ -496,8 +498,8 @@
     samples = read(tech_pvt->audiopipe[0], tech_pvt->read_frame.data, samples);
 #endif /* WIN32 */
 
-  //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]);
-  //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
+    //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]);
+    //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
     if (samples != SAMPLES_PER_FRAME * sizeof(short)) {
       if (samples)
         ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG,
@@ -599,7 +601,8 @@
     break;
   default:
     if (p && tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
-      if (uiMessage == tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
+      if (uiMessage ==
+          tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
         switch (ulParam) {
         case SKYPECONTROLAPI_ATTACH_SUCCESS:
           if (!tech_pvt->SkypiaxHandles.api_connected) {
@@ -618,7 +621,8 @@
             SendMessage(HWND_BROADCAST,
                         tech_pvt->SkypiaxHandles.
                         win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
-                        (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, 0);
+                        (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle,
+                        0);
           }
           break;
         case SKYPECONTROLAPI_ATTACH_REFUSED:
@@ -634,7 +638,8 @@
             SendMessage(HWND_BROADCAST,
                         tech_pvt->SkypiaxHandles.
                         win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
-                        (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, 0);
+                        (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle,
+                        0);
           }
           break;
         default:
@@ -652,7 +657,7 @@
   return (lReturnCode);
 }
 
-int win32_Initialize_CreateWindowClass(private_t *tech_pvt)
+int win32_Initialize_CreateWindowClass(private_t * tech_pvt)
 {
   unsigned char *paucUUIDString;
   RPC_STATUS lUUIDResult;
@@ -669,7 +674,8 @@
       WNDCLASS oWindowClass;
 
       strcpy(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, "Skype-API-Skypiax-");
-      strcat(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, (char *) paucUUIDString);
+      strcat(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName,
+             (char *) paucUUIDString);
 
       oWindowClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
       oWindowClass.lpfnWndProc = (WNDPROC) & skypiax_skype_present;
@@ -694,7 +700,7 @@
   return (fReturnStatus);
 }
 
-void win32_DeInitialize_DestroyWindowClass(private_t *tech_pvt)
+void win32_DeInitialize_DestroyWindowClass(private_t * tech_pvt)
 {
   UnregisterClass(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName,
                   tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle);
@@ -702,17 +708,18 @@
     tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle = NULL;
 }
 
-int win32_Initialize_CreateMainWindow(private_t *tech_pvt)
+int win32_Initialize_CreateMainWindow(private_t * tech_pvt)
 {
   tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle =
     CreateWindowEx(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE,
                    tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, "",
                    WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT,
-                   128, 128, NULL, 0, tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle, p);
+                   128, 128, NULL, 0, tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle,
+                   p);
   return (tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL ? 1 : 0);
 }
 
-void win32_DeInitialize_DestroyMainWindow(private_t *tech_pvt)
+void win32_DeInitialize_DestroyMainWindow(private_t * tech_pvt)
 {
   if (tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL)
     DestroyWindow(tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle),
@@ -831,10 +838,9 @@
 
   //XLockDisplay(disp);
   status =
-    XGetWindowProperty(SkypiaxHandles->disp,
-                       DefaultRootWindow(SkypiaxHandles->disp), skype_inst, 0, 1,
-                       False, XA_WINDOW, &type_ret, &format_ret, &nitems_ret,
-                       &bytes_after_ret, &prop);
+    XGetWindowProperty(SkypiaxHandles->disp, DefaultRootWindow(SkypiaxHandles->disp),
+                       skype_inst, 0, 1, False, XA_WINDOW, &type_ret, &format_ret,
+                       &nitems_ret, &bytes_after_ret, &prop);
   //XUnlockDisplay(disp);
 
   /*  sanity check */
@@ -986,7 +992,7 @@
 }
 #endif // WIN32
 
-int skypiax_skype_write(private_t *tech_pvt, char *msg_to_skype)
+int skypiax_skype_write(private_t * tech_pvt, char *msg_to_skype)
 {
 #ifdef WIN32
   static char acInputRow[1024];
@@ -1050,7 +1056,7 @@
 
 }
 
-int skypiax_skype_read(private_t *tech_pvt)
+int skypiax_skype_read(private_t * tech_pvt)
 {
 
   char read_from_pipe[4096];
@@ -1280,15 +1286,16 @@
                  SKYPIAX_P_LOG, messaggio, obj, id, prop, value, where ? where : "NULL");
 
             if (!strcasecmp(prop, "PARTNER_HANDLE")) {
-              strncpy(tech_pvt->callid_number, value, sizeof(tech_pvt->callid_number) - 1);
+              strncpy(tech_pvt->callid_number, value,
+                      sizeof(tech_pvt->callid_number) - 1);
               WARNINGA
                 ("the skype_call %s caller PARTNER_HANDLE (tech_pvt->callid_number) is: %s\n",
                  SKYPIAX_P_LOG, id, tech_pvt->callid_number);
               return CALLFLOW_INCOMING_RING;
             }
             if (!strcasecmp(prop, "PARTNER_DISPNAME")) {
-              snprintf(tech_pvt->callid_name, sizeof(tech_pvt->callid_name) - 1, "%s%s%s", value,
-                       where ? " " : "", where ? where : "");
+              snprintf(tech_pvt->callid_name, sizeof(tech_pvt->callid_name) - 1, "%s%s%s",
+                       value, where ? " " : "", where ? where : "");
               WARNINGA
                 ("the skype_call %s caller PARTNER_DISPNAME (tech_pvt->callid_name) is: %s\n",
                  SKYPIAX_P_LOG, id, tech_pvt->callid_name);
@@ -1349,7 +1356,7 @@
                 if (tech_pvt->interface_state != SKYPIAX_STATE_DIALING) {
                   /* we are not calling out */
 
-                  if (!strlen(tech_pvt->skype_call_id)) {  //FIXME
+                  if (!strlen(tech_pvt->skype_call_id)) {   //FIXME
                     /* we are not inside an active call */
                     tech_pvt->skype_callflow = CALLFLOW_STATUS_RINGING;
                     tech_pvt->interface_state = SKYPIAX_STATE_RING;
@@ -1369,7 +1376,8 @@
                     if (option_debug)
                       DEBUGA_SKYPE("We answered a Skype RING on skype_call %s\n",
                                    SKYPIAX_P_LOG, id);
-                    strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
+                    strncpy(tech_pvt->skype_call_id, id,
+                            sizeof(tech_pvt->skype_call_id) - 1);
                   } else {
                     /* we're owned, we're in a call, let's refuse */
                     sprintf(msg_to_skype, "ALTER CALL %s END HANGUP", id);
@@ -1385,7 +1393,8 @@
                   tech_pvt->skype_callflow = CALLFLOW_STATUS_RINGING;
                   tech_pvt->interface_state = SKYPIAX_STATE_RINGING;
                   //FIXME ast_queue_control(tech_pvt->owner, SKYPIAX_CONTROL_RINGING);
-                  strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
+                  strncpy(tech_pvt->skype_call_id, id,
+                          sizeof(tech_pvt->skype_call_id) - 1);
                   DEBUGA_SKYPE("Our remote party in skype_call %s is RINGING\n",
                                SKYPIAX_P_LOG, id);
                 }
@@ -1452,7 +1461,8 @@
                     DEBUGA_SKYPE
                       ("we tried to call Skype on skype_call %s and Skype has now REFUSED\n",
                        SKYPIAX_P_LOG, id);
-                  strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
+                  strncpy(tech_pvt->skype_call_id, id,
+                          sizeof(tech_pvt->skype_call_id) - 1);
                   tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
                   tech_pvt->skype_call_id[0] = '\0';
                   if (option_debug > 100) {
@@ -1493,14 +1503,16 @@
                   switch_threadattr_detach_set(thd_attr, 1);
                   switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
                   switch_thread_create(&tech_pvt->tcp_srv_thread, thd_attr,
-                                       skypiax_do_tcp_srv_thread, tech_pvt, skypiax_module_pool);
+                                       skypiax_do_tcp_srv_thread, tech_pvt,
+                                       skypiax_module_pool);
                   DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPIAX_P_LOG);
 
                   switch_threadattr_create(&thd_attr, skypiax_module_pool);
                   switch_threadattr_detach_set(thd_attr, 1);
                   switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
                   switch_thread_create(&tech_pvt->tcp_cli_thread, thd_attr,
-                                       skypiax_do_tcp_cli_thread, tech_pvt, skypiax_module_pool);
+                                       skypiax_do_tcp_cli_thread, tech_pvt,
+                                       skypiax_module_pool);
                   DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG);
                   switch_sleep(100000);
                   sprintf(msg_to_skype, "ALTER CALL %s SET_OUTPUT PORT=\"%d\"", id,
@@ -1530,10 +1542,13 @@
                        switch_core_session_request(skypiax_endpoint_interface,
                                                    NULL)) != 0) {
                     switch_core_session_add_stream(session, NULL);
-                      channel = switch_core_session_get_channel(session);
-                      skypiax_tech_init(tech_pvt, session);
+                    channel = switch_core_session_get_channel(session);
+                    skypiax_tech_init(tech_pvt, session);
 #if 0
-                    if ((tech_pvt = (private_t *) switch_core_session_alloc(session, sizeof(private_t))) != 0) {
+                    if ((tech_pvt =
+                         (private_t *) switch_core_session_alloc(session,
+                                                                 sizeof(private_t))) !=
+                        0) {
                       channel = switch_core_session_get_channel(session);
                       skypiax_tech_init(tech_pvt, session);
                     } else {
@@ -1545,9 +1560,11 @@
 
                     if ((tech_pvt->caller_profile =
                          switch_caller_profile_new(switch_core_session_get_pool(session),
-                                                   "skypiax", "XML", tech_pvt->callid_name,
-                                                   tech_pvt->callid_number, NULL, "calling_ani",
-                                                   NULL, NULL, "mod_skypiax", "public",
+                                                   "skypiax", "XML",
+                                                   tech_pvt->callid_name,
+                                                   tech_pvt->callid_number, NULL,
+                                                   "calling_ani", NULL, NULL,
+                                                   "mod_skypiax", "public",
                                                    "5000")) != 0) {
                       char name[128];
                       //switch_snprintf(name, sizeof(name), "skypiax/%s/%s", tech_pvt->name, tech_pvt->caller_profile->destination_number);
@@ -1611,7 +1628,7 @@
   return 0;
 }
 
-int skypiax_skype_senddigit(private_t *tech_pvt, char digit)
+int skypiax_skype_senddigit(private_t * tech_pvt, char digit)
 {
   char msg_to_skype[1024];
   if (option_debug > 10) {
@@ -1630,7 +1647,7 @@
   return 0;
 }
 
-int skypiax_skype_call(private_t *tech_pvt, char *idest, int timeout,
+int skypiax_skype_call(private_t * tech_pvt, char *idest, int timeout,
                        switch_core_session_t * session)
 {
   char *rdest;


From gmaruzz at freeswitch.org  Sun Jan 11 05:28:39 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 07:28:39 -0600
Subject: [Freeswitch-svn] [commit] r11121 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 07:28:39 2009
New Revision: 11121

Log:
skypiax: beginning cleaning

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Sun Jan 11 07:28:39 2009
@@ -2,7 +2,7 @@
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_skypiax_load);
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skypiax_shutdown);
-SWITCH_MODULE_DEFINITION(mod_skypiax, mod_skypiax_load, mod_skypiax_shutdown, NULL);    //mod_skypiax_runtime);
+SWITCH_MODULE_DEFINITION(mod_skypiax, mod_skypiax_load, mod_skypiax_shutdown, NULL);
 
 static struct {
   int debug;
@@ -152,7 +152,7 @@
 
   if (strlen(tech_pvt->skype_call_id)) {
     //switch_thread_cond_signal(tech_pvt->cond);
-    WARNINGA("hanging up skype call: %s\n", SKYPIAX_P_LOG, tech_pvt->skype_call_id);
+    DEBUGA_SKYPE("hanging up skype call: %s\n", SKYPIAX_P_LOG, tech_pvt->skype_call_id);
     sprintf(msg_to_skype, "ALTER CALL %s HANGUP", tech_pvt->skype_call_id);
     skypiax_skype_write(tech_pvt, msg_to_skype);
   }
@@ -260,7 +260,7 @@
   private_t *tech_pvt = switch_core_session_get_private(session);
   switch_assert(tech_pvt != NULL);
 
-  NOTICA("DTMF: %c\n", SKYPIAX_P_LOG, dtmf->digit);
+  DEBUGA_SKYPE("DTMF: %c\n", SKYPIAX_P_LOG, dtmf->digit);
 
   skypiax_skype_senddigit(tech_pvt, dtmf->digit);
 
@@ -411,7 +411,7 @@
     break;
   default:
     {
-      WARNINGA("MSG_ID=%d\n", SKYPIAX_P_LOG, msg->message_id);
+      DEBUGA_SKYPE("MSG_ID=%d\n", SKYPIAX_P_LOG, msg->message_id);
     }
     break;
   }
@@ -493,7 +493,6 @@
             DEBUGA_SKYPE("globals.SKYPIAX_INTERFACES[%d].name=|||%s|||?\n", SKYPIAX_P_LOG,
                          i, globals.SKYPIAX_INTERFACES[i].name);
             tech_pvt = &globals.SKYPIAX_INTERFACES[i];  //FIXME
-            //globals.SKYPIAX_INTERFACES[i].tech_pvt = tech_pvt;  //FIXME
             found = 1;
             break;
           }
@@ -527,15 +526,6 @@
       snprintf(name, sizeof(name), "skypiax/%s", outbound_profile->destination_number);
       //snprintf(name, sizeof(name), "skypiax/%s", tech_pvt->name);
       switch_channel_set_name(channel, name);
-      NOTICA("outbound_profile->destination_number=|||%s|||\n", SKYPIAX_P_LOG,
-             outbound_profile->destination_number);
-      NOTICA("outbound_profile->username=|||%s|||\n", SKYPIAX_P_LOG,
-             outbound_profile->username);
-      NOTICA("outbound_profile->caller_id_name=|||%s|||\n", SKYPIAX_P_LOG,
-             outbound_profile->caller_id_name);
-      NOTICA("outbound_profile->caller_id_number=|||%s|||\n", SKYPIAX_P_LOG,
-             outbound_profile->caller_id_number);
-
       caller_profile = switch_caller_profile_clone(*new_session, outbound_profile);
       switch_channel_set_caller_profile(channel, caller_profile);
       tech_pvt->caller_profile = caller_profile;
@@ -560,7 +550,7 @@
  * \brief This thread runs during a call, and monitor the interface serial port for signaling, like hangup, caller id, etc
  *
  */
-static void *SWITCH_THREAD_FUNC skypiax_do_controldev_thread(switch_thread_t * thread,
+static void *SWITCH_THREAD_FUNC skypiax_signaling_thread_func(switch_thread_t * thread,
                                                              void *obj)
 {
   private_t *tech_pvt = obj;
@@ -569,7 +559,7 @@
 
   DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
 
-  DEBUGA_SKYPE("In skypiax_do_controldev_thread: started, p=%p\n", SKYPIAX_P_LOG,
+  DEBUGA_SKYPE("In skypiax_signaling_thread_func: started, p=%p\n", SKYPIAX_P_LOG,
                (void *) tech_pvt);
 
   while (forever) {
@@ -789,8 +779,8 @@
 
       if (interface_id && interface_id < SKYPIAX_MAX_INTERFACES) {
         private_t newconf;
-        switch_threadattr_t *do_skype_thd_attr = NULL;
-        switch_threadattr_t *skypiax_do_controldev_thread_thd_attr = NULL;
+        switch_threadattr_t *skypiax_skypeapi_thread_attr = NULL;
+        switch_threadattr_t *skypiax_signaling_thread_attr = NULL;
 
         memset(&newconf, '\0', sizeof(newconf));
         globals.SKYPIAX_INTERFACES[interface_id] = newconf;
@@ -849,25 +839,25 @@
           ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].dialplan=%s\n",
            SKYPIAX_P_LOG, interface_id,
            globals.SKYPIAX_INTERFACES[interface_id].dialplan);
-        NOTICA("STARTING interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
+        DEBUGA_SKYPE("STARTING interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
 
-        switch_threadattr_create(&do_skype_thd_attr, skypiax_module_pool);
-        switch_threadattr_stacksize_set(do_skype_thd_attr, SWITCH_THREAD_STACKSIZE);
+        switch_threadattr_create(&skypiax_skypeapi_thread_attr, skypiax_module_pool);
+        switch_threadattr_stacksize_set(skypiax_skypeapi_thread_attr, SWITCH_THREAD_STACKSIZE);
         switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id].
-                             skypiax_do_skype_thread_thread, do_skype_thd_attr,
-                             do_skype_thread, &globals.SKYPIAX_INTERFACES[interface_id],
+                             skypiax_skypeapi_thread, skypiax_skypeapi_thread_attr,
+                             skypiax_skypeapi_thread_func, &globals.SKYPIAX_INTERFACES[interface_id],
                              skypiax_module_pool);
 
         switch_sleep(100000);
 
-        switch_threadattr_create(&skypiax_do_controldev_thread_thd_attr,
+        switch_threadattr_create(&skypiax_signaling_thread_attr,
                                  skypiax_module_pool);
-        switch_threadattr_stacksize_set(skypiax_do_controldev_thread_thd_attr,
+        switch_threadattr_stacksize_set(skypiax_signaling_thread_attr,
                                         SWITCH_THREAD_STACKSIZE);
         switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id].
-                             skypiax_do_controldev_thread_thread,
-                             skypiax_do_controldev_thread_thd_attr,
-                             skypiax_do_controldev_thread,
+                             skypiax_signaling_thread,
+                             skypiax_signaling_thread_attr,
+                             skypiax_signaling_thread_func,
                              &globals.SKYPIAX_INTERFACES[interface_id],
                              skypiax_module_pool);
 
@@ -878,7 +868,7 @@
         while (globals.SKYPIAX_INTERFACES[interface_id].SkypiaxHandles.api_connected == 0) {
           switch_sleep(1000);
         }
-        NOTICA("STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
+        DEBUGA_SKYPE("STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
 
       } else {
         ERRORA("interface id %d is higher than SKYPIAX_MAX_INTERFACES (%d)\n",
@@ -944,7 +934,7 @@
   for (interface_id = 0; interface_id < SKYPIAX_MAX_INTERFACES; interface_id++) {
     tech_pvt = &globals.SKYPIAX_INTERFACES[interface_id];
 
-    if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread) {
+    if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_signaling_thread) {
 #ifdef WIN32
       switch_file_write(tech_pvt->SkypiaxHandles.fdesc[1], "sciutati", &howmany);   // let's the controldev_thread die
 #else /* WIN32 */
@@ -952,9 +942,9 @@
 #endif /* WIN32 */
     }
 
-    if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread) {
+    if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_skypeapi_thread) {
 #ifdef WIN32
-      if (SendMessage(tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) {  // let's the do_skype_thread die
+      if (SendMessage(tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) {  // let's the skypiax_skypeapi_thread_func die
         ERRORA("WHY FALSE HERE? %d\n", SKYPIAX_P_LOG, GetLastError());
       }
 #else
@@ -978,15 +968,15 @@
       x--;
       switch_yield(20000);
     }
-    if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread) {
+    if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_signaling_thread) {
       switch_thread_join(&status,
                          globals.SKYPIAX_INTERFACES[interface_id].
-                         skypiax_do_controldev_thread_thread);
+                         skypiax_signaling_thread);
     }
-    if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread) {
+    if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_skypeapi_thread) {
       switch_thread_join(&status,
                          globals.SKYPIAX_INTERFACES[interface_id].
-                         skypiax_do_skype_thread_thread);
+                         skypiax_skypeapi_thread);
     }
   }
   return SWITCH_STATUS_SUCCESS;

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	Sun Jan 11 07:28:39 2009
@@ -41,8 +41,6 @@
 #include 
 #include 
 #include 
-#else //WIN32
-//FIXME include?
 #endif //WIN32
 
 #ifdef _MSC_VER
@@ -53,7 +51,6 @@
 
 #define SAMPLERATE_SKYPIAX 16000
 #define SAMPLES_PER_FRAME SAMPLERATE_SKYPIAX/50
-//#define SKYPIAX_SVN_VERSION "SVN 123456"
 #define SKYPIAX_SVN_VERSION SWITCH_VERSION_REVISION
 
 typedef enum {
@@ -164,7 +161,6 @@
   switch_caller_profile_t *caller_profile;
   switch_mutex_t *mutex;
   switch_mutex_t *flag_mutex;
-  //private_t *p;
   //switch_thread_cond_t *cond;
 
   char interface_id[80];
@@ -195,7 +191,6 @@
   double playback_boost;
   double capture_boost;
   int stripmsd;
-  switch_thread_t *skype_thread;
   char skype_call_id[512];
   int skype_call_ongoing;
   char skype_friends[4096];
@@ -213,8 +208,8 @@
 #endif                          /* WIN32 */
   switch_thread_t *tcp_srv_thread;
   switch_thread_t *tcp_cli_thread;
-  switch_thread_t *skypiax_do_controldev_thread_thread;
-  switch_thread_t *skypiax_do_skype_thread_thread;
+  switch_thread_t *skypiax_signaling_thread;
+  switch_thread_t *skypiax_skypeapi_thread;
   short audiobuf[SAMPLES_PER_FRAME];
   int audiobuf_is_loaded;
 
@@ -228,7 +223,6 @@
   //int phonebook_text_lenght;
   FILE *phonebook_writing_fp;
   int skypiax_dir_entry_extension_prefix;
-  //void *tech_pvt;
   char skype_user[256];
   char skype_password[256];
 
@@ -236,13 +230,13 @@
 
 typedef struct private_object private_t;
 
-void *SWITCH_THREAD_FUNC do_skype_thread(switch_thread_t * thread, void *obj);
+void *SWITCH_THREAD_FUNC skypiax_skypeapi_thread_func(switch_thread_t * thread, void *obj);
 void skypiax_tech_init(private_t * tech_pvt, switch_core_session_t * session);
 switch_status_t skypiax_skypeaudio_read(private_t * tech_pvt);
-int skypiax_skypeaudio_init(private_t * p);
-int skypiax_skype_write(private_t * p, char *msg_to_skype);
-int skypiax_skype_read(private_t * p);
+int skypiax_skypeaudio_init(private_t * tech_pvt);
+int skypiax_skype_write(private_t * tech_pvt, char *msg_to_skype);
+int skypiax_skype_read(private_t * tech_pvt);
 
-int skypiax_skype_call(private_t * p, char *idest, int timeout,
+int skypiax_skype_call(private_t * tech_pvt, char *idest, int timeout,
                        switch_core_session_t * session);
-int skypiax_skype_senddigit(private_t * p, char digit);
+int skypiax_skype_senddigit(private_t * tech_pvt, char digit);

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sun Jan 11 07:28:39 2009
@@ -460,9 +460,6 @@
   }
 #endif /* WIN32 */
 
-  ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]);
-  ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
-
   if (option_debug > 10) {
     DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
   }
@@ -728,7 +725,7 @@
 
 DWORD win32_dwThreadId;
 
-void *SWITCH_THREAD_FUNC do_skype_thread(switch_thread_t * thread, void *obj)
+void *SWITCH_THREAD_FUNC skypiax_skypeapi_thread_func(switch_thread_t * thread, void *obj)
 {
   /*  create window class */
   /*    create dummy/hidden window for processing messages */
@@ -877,7 +874,7 @@
   switch_sleep(1000);
 }
 
-void *SWITCH_THREAD_FUNC do_skype_thread(switch_thread_t * thread, void *obj)
+void *SWITCH_THREAD_FUNC skypiax_skypeapi_thread_func(switch_thread_t * thread, void *obj)
 {
 
   private_t *tech_pvt = obj;
@@ -1288,7 +1285,7 @@
             if (!strcasecmp(prop, "PARTNER_HANDLE")) {
               strncpy(tech_pvt->callid_number, value,
                       sizeof(tech_pvt->callid_number) - 1);
-              WARNINGA
+              DEBUGA_SKYPE
                 ("the skype_call %s caller PARTNER_HANDLE (tech_pvt->callid_number) is: %s\n",
                  SKYPIAX_P_LOG, id, tech_pvt->callid_number);
               return CALLFLOW_INCOMING_RING;
@@ -1296,7 +1293,7 @@
             if (!strcasecmp(prop, "PARTNER_DISPNAME")) {
               snprintf(tech_pvt->callid_name, sizeof(tech_pvt->callid_name) - 1, "%s%s%s",
                        value, where ? " " : "", where ? where : "");
-              WARNINGA
+              DEBUGA_SKYPE
                 ("the skype_call %s caller PARTNER_DISPNAME (tech_pvt->callid_name) is: %s\n",
                  SKYPIAX_P_LOG, id, tech_pvt->callid_name);
             }
@@ -1325,7 +1322,7 @@
               if (channel) {
                 switch_dtmf_t dtmf =
                   { (char) value[0], switch_core_default_dtmf_duration(0) };
-                NOTICA("%c DTMF %s\n", SKYPIAX_P_LOG, dtmf.digit,
+                DEBUGA_SKYPE("%c DTMF %s\n", SKYPIAX_P_LOG, dtmf.digit,
                        switch_channel_get_name(channel));
                 switch_mutex_lock(tech_pvt->flag_mutex);
                 switch_channel_queue_dtmf(channel, &dtmf);
@@ -1536,7 +1533,7 @@
                   //private_t *tech_pvt = NULL;
                   switch_channel_t *channel = NULL;
 
-                  NOTICA("New Inbound Channel!\n", SKYPIAX_P_LOG);
+                  DEBUGA_SKYPE("New Inbound Channel!\n", SKYPIAX_P_LOG);
 
                   if ((session =
                        switch_core_session_request(skypiax_endpoint_interface,
@@ -1580,7 +1577,6 @@
                       switch_core_session_destroy(&session);
                     }
                   }
-                  //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id);
                   switch_channel_mark_answered(channel);
                 } else {
                   switch_core_session_t *session = NULL;
@@ -1635,7 +1631,7 @@
     DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
   }
 
-  NOTICA("DIGIT received: %c\n", SKYPIAX_P_LOG, digit);
+  DEBUGA_SKYPE("DIGIT received: %c\n", SKYPIAX_P_LOG, digit);
 
   sprintf(msg_to_skype, "SET CALL %s DTMF %c", tech_pvt->skype_call_id, digit);
 
@@ -1665,9 +1661,7 @@
   rdest = strchr(idest, '/');
   *rdest++ = '\0';
 
-  if (option_debug)
-    DEBUGA_SKYPE("Calling Skype, rdest is: %s\n", SKYPIAX_P_LOG, rdest);
-  NOTICA("Calling Skype, rdest is: %s\n", SKYPIAX_P_LOG, rdest);
+  DEBUGA_SKYPE("Calling Skype, rdest is: %s\n", SKYPIAX_P_LOG, rdest);
   skypiax_skype_write(tech_pvt, "SET AGC OFF");
   switch_sleep(10000);
   skypiax_skype_write(tech_pvt, "SET AEC OFF");


From gmaruzz at freeswitch.org  Sun Jan 11 05:43:41 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 07:43:41 -0600
Subject: [Freeswitch-svn] [commit] r11122 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 07:43:41 2009
New Revision: 11122

Log:
skypiax: cosmetics

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Sun Jan 11 07:43:41 2009
@@ -839,7 +839,7 @@
           ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].dialplan=%s\n",
            SKYPIAX_P_LOG, interface_id,
            globals.SKYPIAX_INTERFACES[interface_id].dialplan);
-        DEBUGA_SKYPE("STARTING interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
+        NOTICA("STARTING interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
 
         switch_threadattr_create(&skypiax_skypeapi_thread_attr, skypiax_module_pool);
         switch_threadattr_stacksize_set(skypiax_skypeapi_thread_attr, SWITCH_THREAD_STACKSIZE);
@@ -868,7 +868,7 @@
         while (globals.SKYPIAX_INTERFACES[interface_id].SkypiaxHandles.api_connected == 0) {
           switch_sleep(1000);
         }
-        DEBUGA_SKYPE("STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
+        NOTICA("STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
 
       } else {
         ERRORA("interface id %d is higher than SKYPIAX_MAX_INTERFACES (%d)\n",


From gmaruzz at freeswitch.org  Sun Jan 11 05:44:23 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 07:44:23 -0600
Subject: [Freeswitch-svn] [commit] r11123 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 07:44:22 2009
New Revision: 11123

Log:
skypiax: indent -gnu -ts4 -br -brs -cdw -lp -ce -nbfda -npcs -nprs -npsl -nbbo -saf -sai -saw -cs -bbo -nhnl -nut -sob -l90

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Sun Jan 11 07:44:22 2009
@@ -551,7 +551,7 @@
  *
  */
 static void *SWITCH_THREAD_FUNC skypiax_signaling_thread_func(switch_thread_t * thread,
-                                                             void *obj)
+                                                              void *obj)
 {
   private_t *tech_pvt = obj;
   int res;
@@ -842,21 +842,21 @@
         NOTICA("STARTING interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
 
         switch_threadattr_create(&skypiax_skypeapi_thread_attr, skypiax_module_pool);
-        switch_threadattr_stacksize_set(skypiax_skypeapi_thread_attr, SWITCH_THREAD_STACKSIZE);
+        switch_threadattr_stacksize_set(skypiax_skypeapi_thread_attr,
+                                        SWITCH_THREAD_STACKSIZE);
         switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id].
                              skypiax_skypeapi_thread, skypiax_skypeapi_thread_attr,
-                             skypiax_skypeapi_thread_func, &globals.SKYPIAX_INTERFACES[interface_id],
+                             skypiax_skypeapi_thread_func,
+                             &globals.SKYPIAX_INTERFACES[interface_id],
                              skypiax_module_pool);
 
         switch_sleep(100000);
 
-        switch_threadattr_create(&skypiax_signaling_thread_attr,
-                                 skypiax_module_pool);
+        switch_threadattr_create(&skypiax_signaling_thread_attr, skypiax_module_pool);
         switch_threadattr_stacksize_set(skypiax_signaling_thread_attr,
                                         SWITCH_THREAD_STACKSIZE);
         switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id].
-                             skypiax_signaling_thread,
-                             skypiax_signaling_thread_attr,
+                             skypiax_signaling_thread, skypiax_signaling_thread_attr,
                              skypiax_signaling_thread_func,
                              &globals.SKYPIAX_INTERFACES[interface_id],
                              skypiax_module_pool);

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	Sun Jan 11 07:44:22 2009
@@ -230,7 +230,8 @@
 
 typedef struct private_object private_t;
 
-void *SWITCH_THREAD_FUNC skypiax_skypeapi_thread_func(switch_thread_t * thread, void *obj);
+void *SWITCH_THREAD_FUNC skypiax_skypeapi_thread_func(switch_thread_t * thread,
+                                                      void *obj);
 void skypiax_tech_init(private_t * tech_pvt, switch_core_session_t * session);
 switch_status_t skypiax_skypeaudio_read(private_t * tech_pvt);
 int skypiax_skypeaudio_init(private_t * tech_pvt);

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sun Jan 11 07:44:22 2009
@@ -1323,7 +1323,7 @@
                 switch_dtmf_t dtmf =
                   { (char) value[0], switch_core_default_dtmf_duration(0) };
                 DEBUGA_SKYPE("%c DTMF %s\n", SKYPIAX_P_LOG, dtmf.digit,
-                       switch_channel_get_name(channel));
+                             switch_channel_get_name(channel));
                 switch_mutex_lock(tech_pvt->flag_mutex);
                 switch_channel_queue_dtmf(channel, &dtmf);
                 switch_set_flag(tech_pvt, TFLAG_DTMF);


From gmaruzz at freeswitch.org  Sun Jan 11 06:30:59 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 08:30:59 -0600
Subject: [Freeswitch-svn] [commit] r11124 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 08:30:59 2009
New Revision: 11124

Log:
skypiax: compile and works on windows

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sun Jan 11 08:30:59 2009
@@ -563,7 +563,7 @@
 {
   LRESULT lReturnCode;
   int fIssueDefProc;
-  //private_t *p = NULL;
+  private_t *tech_pvt = NULL;
 
   lReturnCode = 0;
   fIssueDefProc = 0;
@@ -571,7 +571,7 @@
   switch (uiMessage) {
   case WM_CREATE:
     tech_pvt = (private_t *) ((LPCREATESTRUCT) ulParam)->lpCreateParams;
-    SetWindowLong(hWindow, GWL_USERDATA, (LONG) p);
+    SetWindowLong(hWindow, GWL_USERDATA, (LONG) tech_pvt);
     DEBUGA_SKYPE("got CREATE\n", SKYPIAX_P_LOG);
     break;
   case WM_DESTROY:
@@ -597,13 +597,13 @@
     }
     break;
   default:
-    if (p && tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
+    if (tech_pvt && tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
       if (uiMessage ==
           tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) {
         switch (ulParam) {
         case SKYPECONTROLAPI_ATTACH_SUCCESS:
           if (!tech_pvt->SkypiaxHandles.api_connected) {
-            NOTICA("\n\n\tConnected to Skype API!\n", SKYPIAX_P_LOG);
+            DEBUGA_SKYPE("\n\n\tConnected to Skype API!\n", SKYPIAX_P_LOG);
             tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam;
             tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle =
               tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle;
@@ -712,7 +712,7 @@
                    tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, "",
                    WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT,
                    128, 128, NULL, 0, tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle,
-                   p);
+                   tech_pvt);
   return (tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL ? 1 : 0);
 }
 
@@ -749,8 +749,8 @@
 
   if (tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0
       && tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) {
-    if (win32_Initialize_CreateWindowClass(p)) {
-      if (win32_Initialize_CreateMainWindow(p)) {
+    if (win32_Initialize_CreateWindowClass(tech_pvt)) {
+      if (win32_Initialize_CreateMainWindow(tech_pvt)) {
         if (SendMessage
             (HWND_BROADCAST,
              tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover,
@@ -767,9 +767,9 @@
             }
           }
         }
-        win32_DeInitialize_DestroyMainWindow(p);
+        win32_DeInitialize_DestroyMainWindow(tech_pvt);
       }
-      win32_DeInitialize_DestroyWindowClass(p);
+      win32_DeInitialize_DestroyWindowClass(tech_pvt);
     }
   }
 
@@ -1020,8 +1020,6 @@
       ERRORA
         ("Sending message failed - probably Skype crashed.\n\nPlease shutdown Skypiax (Asterisk), then restart Skype from the menu, then launch Skypiax and try again.\n",
          SKYPIAX_P_LOG);
-      tech_pvt->skype = 0;
-      tech_pvt->skype_thread = NULL;
       if (option_debug > 100) {
         DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);
       }


From gmaruzz at freeswitch.org  Sun Jan 11 08:36:09 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 10:36:09 -0600
Subject: [Freeswitch-svn] [commit] r11125 - in
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax: . configs
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 10:36:09 2009
New Revision: 11125

Log:
skypiax: various configuration tweakings, both in the code and in the config files

Removed:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/public.xml
Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/default.xml
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/wait.bat
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/default.xml
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/default.xml	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/default.xml	Sun Jan 11 10:36:09 2009
@@ -267,13 +267,13 @@
     
     
       
-	
+	
       
     
     
     
       
-	
+	
       
     
 

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml	Sun Jan 11 10:36:09 2009
@@ -1,11 +1,10 @@
 
   
     
-    
-    
     
     
-    
+    
+    
     
     
     
@@ -15,280 +14,197 @@
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
-
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
     
 
     
 	
 	
-	
+	
 	
 	
 	
 	
-	
-    
-
-
-
-	
-    
-      
-      
-      
-      
-      
-      
-      
-	   
-	  
-	  
-    
-    
-      
-      
-      
-      
-      
-      
-      
-	   
-	  
-    
-    
-      
-      
-      
-      
-      
-      
-      
-	   
-	  
-	  
-    
-    
-      
-      
-      
-      
-      
-      
-      
-	   
-	  
-	  
-    
-    
-      
-      
-      
-      
-      
-      
-      
-	   
-	  
     
   
 

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat	Sun Jan 11 10:36:09 2009
@@ -1,45 +1,46 @@
 echo off
-REM you have to adjust MYPATH to where the Skype executable is
-set MYPATH=%PATH%;C:\Program Files\Skype\Phone
+REM you have to adjust PATH to where the Skype executable is
+set PATH=%PATH%;C:\Program Files\Skype\Phone\
 
-echo %MYPATH%
+echo %PATH%
 
+REM start a Skype client instance that will login to the Skype network using the "username password" you give to it. Here xxx would be the password and skypiax1 the username
 start Skype.exe /secondary /username:skypiax1 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax2 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax3 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax4 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax5 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax6 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax7 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax8 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax9 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax10 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax11 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax12 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax13 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax14 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax15 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax16 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax17 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax18 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax19 /password:xxx
-call wait 5
+call wait 7
 start Skype.exe /secondary /username:skypiax20 /password:xxx

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/wait.bat
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/wait.bat	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/wait.bat	Sun Jan 11 10:36:09 2009
@@ -1,4 +1,3 @@
-echo off
 @ping 127.0.0.1 -n 2 -w 1000 > nul
 @ping 127.0.0.1 -n %1% -w 1000> nul
 

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Sun Jan 11 10:36:09 2009
@@ -9,6 +9,8 @@
   char *ip;
   int port;
   char *dialplan;
+  char *destination;
+  char *context;
   char *codec_string;
   char *codec_order[SWITCH_MAX_CODECS];
   int codec_order_last;
@@ -29,10 +31,11 @@
 int running = 1;
 
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_dialplan, globals.dialplan);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_context, globals.context);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_destination, globals.destination);
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_string, globals.codec_string);
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_rates_string,
                                   globals.codec_rates_string);
-SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_ip, globals.ip);
 
 static switch_status_t channel_on_init(switch_core_session_t * session);
 static switch_status_t channel_on_hangup(switch_core_session_t * session);
@@ -624,9 +627,6 @@
       } else if (!strcmp(var, "port")) {
         globals.port = atoi(val);
         DEBUGA_SKYPE("globals.port=%d\n", SKYPIAX_P_LOG, globals.port);
-      } else if (!strcmp(var, "ip")) {
-        set_global_ip(val);
-        DEBUGA_SKYPE("globals.ip=%s\n", SKYPIAX_P_LOG, globals.ip);
       } else if (!strcmp(var, "codec-master")) {
         if (!strcasecmp(val, "us")) {
           switch_set_flag(&globals, GFLAG_MY_CODEC_PREFS);
@@ -635,6 +635,12 @@
       } else if (!strcmp(var, "dialplan")) {
         set_global_dialplan(val);
         DEBUGA_SKYPE("globals.dialplan=%s\n", SKYPIAX_P_LOG, globals.dialplan);
+      } else if (!strcmp(var, "destination")) {
+        set_global_destination(val);
+        DEBUGA_SKYPE("globals.destination=%s\n", SKYPIAX_P_LOG, globals.destination);
+      } else if (!strcmp(var, "context")) {
+        set_global_context(val);
+        DEBUGA_SKYPE("globals.context=%s\n", SKYPIAX_P_LOG, globals.context);
       } else if (!strcmp(var, "codec-prefs")) {
         set_global_codec_string(val);
         DEBUGA_SKYPE("globals.codec_string=%s\n", SKYPIAX_P_LOG, globals.codec_string);
@@ -662,6 +668,7 @@
       char *name = (char *) switch_xml_attr(myinterface, "name");
       char *context = "default";
       char *dialplan = "XML";
+      char *destination = "5000";
       char *tonegroup = NULL;
       char *digit_timeout = NULL;
       char *max_digits = NULL;
@@ -674,7 +681,6 @@
       char *tcp_cli_port = NULL;
       char *tcp_srv_port = NULL;
       char *skype_user = NULL;
-      char *skype_password = NULL;
 
       uint32_t interface_id = 0, to = 0, max = 0;
 
@@ -690,6 +696,8 @@
           context = val;
         } else if (!strcasecmp(var, "dialplan")) {
           dialplan = val;
+        } else if (!strcasecmp(var, "destination")) {
+          destination = val;
         } else if (!strcasecmp(var, "dial-regex")) {
           dial_regex = val;
         } else if (!strcasecmp(var, "enable-callerid")) {
@@ -700,8 +708,6 @@
           hold_music = val;
         } else if (!strcasecmp(var, "skype_user")) {
           skype_user = val;
-        } else if (!strcasecmp(var, "skype_password")) {
-          skype_password = val;
         } else if (!strcasecmp(var, "tcp_cli_port")) {
           tcp_cli_port = val;
         } else if (!strcasecmp(var, "tcp_srv_port")) {
@@ -720,10 +726,6 @@
         continue;
       }
 
-      if (!skype_password) {
-        ERRORA("interface missing REQUIRED param 'skype_password'\n", SKYPIAX_P_LOG);
-        continue;
-      }
       if (!X11_display) {
         ERRORA("interface missing REQUIRED param 'X11_display'\n", SKYPIAX_P_LOG);
         continue;
@@ -804,10 +806,10 @@
                           X11_display);
         switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].skype_user,
                           skype_user);
-        switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].skype_password,
-                          skype_password);
         switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].context, context);
         switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].dialplan, dialplan);
+        switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].destination, destination);
+        switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].context, context);
 
         DEBUGA_SKYPE
           ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].X11_display=%s\n",
@@ -818,10 +820,6 @@
            SKYPIAX_P_LOG, interface_id,
            globals.SKYPIAX_INTERFACES[interface_id].skype_user);
         DEBUGA_SKYPE
-          ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].skype_password=%s\n",
-           SKYPIAX_P_LOG, interface_id,
-           globals.SKYPIAX_INTERFACES[interface_id].skype_password);
-        DEBUGA_SKYPE
           ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port=%d\n",
            SKYPIAX_P_LOG, interface_id,
            globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port);
@@ -839,6 +837,14 @@
           ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].dialplan=%s\n",
            SKYPIAX_P_LOG, interface_id,
            globals.SKYPIAX_INTERFACES[interface_id].dialplan);
+        DEBUGA_SKYPE
+          ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].destination=%s\n",
+           SKYPIAX_P_LOG, interface_id,
+           globals.SKYPIAX_INTERFACES[interface_id].destination);
+        DEBUGA_SKYPE
+          ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].context=%s\n",
+           SKYPIAX_P_LOG, interface_id,
+           globals.SKYPIAX_INTERFACES[interface_id].context);
         NOTICA("STARTING interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
 
         switch_threadattr_create(&skypiax_skypeapi_thread_attr, skypiax_module_pool);
@@ -890,6 +896,10 @@
                      i, globals.SKYPIAX_INTERFACES[i].context);
         DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].dialplan=%s\n", SKYPIAX_P_LOG,
                      i, i, globals.SKYPIAX_INTERFACES[i].dialplan);
+        DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].destination=%s\n", SKYPIAX_P_LOG,
+                     i, i, globals.SKYPIAX_INTERFACES[i].destination);
+        DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].context=%s\n", SKYPIAX_P_LOG,
+                     i, i, globals.SKYPIAX_INTERFACES[i].context);
       }
     }
   }

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	Sun Jan 11 10:36:09 2009
@@ -225,6 +225,7 @@
   int skypiax_dir_entry_extension_prefix;
   char skype_user[256];
   char skype_password[256];
+  char destination[256];
 
 };
 

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sun Jan 11 10:36:09 2009
@@ -1006,7 +1006,7 @@
     DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG);
   }
   sprintf(acInputRow, "%s", msg_to_skype);
-  if (option_debug > 1)
+  if (option_debug > 100)
     DEBUGA_SKYPE("acInputRow: |||%s||||\n", SKYPIAX_P_LOG, acInputRow);
   /*  send command to skype */
   oCopyData.dwData = 0;
@@ -1555,12 +1555,12 @@
 
                     if ((tech_pvt->caller_profile =
                          switch_caller_profile_new(switch_core_session_get_pool(session),
-                                                   "skypiax", "XML",
+                                                   "skypiax", tech_pvt->dialplan,
                                                    tech_pvt->callid_name,
                                                    tech_pvt->callid_number, NULL,
-                                                   "calling_ani", NULL, NULL,
-                                                   "mod_skypiax", "public",
-                                                   "5000")) != 0) {
+                                                   NULL, NULL, NULL,
+                                                   "mod_skypiax", tech_pvt->context,
+                                                   tech_pvt->destination)) != 0) {
                       char name[128];
                       //switch_snprintf(name, sizeof(name), "skypiax/%s/%s", tech_pvt->name, tech_pvt->caller_profile->destination_number);
                       switch_snprintf(name, sizeof(name), "skypiax/%s", tech_pvt->name);


From gmaruzz at freeswitch.org  Sun Jan 11 08:45:18 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 10:45:18 -0600
Subject: [Freeswitch-svn] [commit] r11126 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 10:45:18 2009
New Revision: 11126

Log:
skypiax: comments in windows batchfiles

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/wait.bat

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat	Sun Jan 11 10:45:18 2009
@@ -1,4 +1,7 @@
 echo off
+REM
+REM you MUST use the new Skype BETA (4.x) for Windows, older versions (3.x) cannot be started this way
+REM
 REM you have to adjust PATH to where the Skype executable is
 set PATH=%PATH%;C:\Program Files\Skype\Phone\
 

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/wait.bat
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/wait.bat	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/wait.bat	Sun Jan 11 10:45:18 2009
@@ -1,3 +1,4 @@
+REM would you believe there is no sleep() in standard windows batchfiles?
 @ping 127.0.0.1 -n 2 -w 1000 > nul
 @ping 127.0.0.1 -n %1% -w 1000> nul
 


From gmaruzz at freeswitch.org  Sun Jan 11 09:19:05 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 11:19:05 -0600
Subject: [Freeswitch-svn] [commit] r11127 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 11:19:05 2009
New Revision: 11127

Log:
skypiax: startskype.sh tweaking

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh	Sun Jan 11 11:19:05 2009
@@ -5,128 +5,128 @@
 # the enable= module parameter tells how many cards to start. For each additional card, add a comma and a 1
 # manually configure the first 8 Skype client instances to use the hw:Dummy_0, the next 8 instances to use hw:Dummy_1, etc for all three devices (Play, Capture, Ring)
 modprobe snd-dummy enable=1,1,1
-sleep 5
+sleep 3
 
 #start the fake X server on a given port
 /usr/bin/Xvfb :101 &
-sleep 5
+sleep 3
 
 # start a Skype client instance that will connect to the X server above, and will login to the Skype network using the "username password" you send to it on stdin. Here xxx would be the password and skypiax1 the username
 echo "skypiax1 xxx"| DISPLAY=:101 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :102 &
-sleep 5
+sleep 3
 
 echo "skypiax2 xxx"| DISPLAY=:102 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :103 &
-sleep 5
+sleep 3
 
 echo "skypiax3 xxx"| DISPLAY=:103 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :104 &
-sleep 5
+sleep 3
 
 echo "skypiax4 xxx"| DISPLAY=:104 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :105 &
-sleep 5
+sleep 3
 
 echo "skypiax5 xxx"| DISPLAY=:105 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :106 &
-sleep 5
+sleep 3
 
 echo "skypiax6 xxx"| DISPLAY=:106 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :107 &
-sleep 5
+sleep 3
 
 echo "skypiax7 xxx"| DISPLAY=:107 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :108 &
-sleep 5
+sleep 3
 
 echo "skypiax8 xxx"| DISPLAY=:108 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :109 &
-sleep 5
+sleep 3
 
 echo "skypiax9 xxx"| DISPLAY=:109 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :110 &
-sleep 5
+sleep 3
 
 echo "skypiax10 xxx"| DISPLAY=:110 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :111 &
-sleep 5
+sleep 3
 
 echo "skypiax11 xxx"| DISPLAY=:111 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :112 &
-sleep 5
+sleep 3
 
 echo "skypiax12 xxx"| DISPLAY=:112 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :113 &
-sleep 5
+sleep 3
 
 echo "skypiax13 xxx"| DISPLAY=:113 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :114 &
-sleep 5
+sleep 3
 
 echo "skypiax14 xxx"| DISPLAY=:114 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :115 &
-sleep 5
+sleep 3
 
 echo "skypiax15 xxx"| DISPLAY=:115 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :116 &
-sleep 5
+sleep 3
 
 echo "skypiax16 xxx"| DISPLAY=:116 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :117 &
-sleep 5
+sleep 3
 
 echo "skypiax17 xxx"| DISPLAY=:117 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :118 &
-sleep 5
+sleep 3
 
 echo "skypiax18 xxx"| DISPLAY=:118 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :119 &
-sleep 5
+sleep 3
 
 echo "skypiax19 xxx"| DISPLAY=:119 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 /usr/bin/Xvfb :120 &
-sleep 5
+sleep 3
 
 echo "skypiax20 xxx"| DISPLAY=:120 /usr/bin/skype --pipelogin &
 
-sleep 10
+sleep 7
 


From gmaruzz at freeswitch.org  Sun Jan 11 09:35:14 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 11:35:14 -0600
Subject: [Freeswitch-svn] [commit] r11128 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 11:35:14 2009
New Revision: 11128

Log:
skypiax: added README file

Added:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README

Added: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README
==============================================================================
--- (empty file)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README	Sun Jan 11 11:35:14 2009
@@ -0,0 +1,204 @@
+#########################################################
+#########################################################
+#########################################################
+
+  An example of installation
+
+#########################################################
+#########################################################
+#########################################################
+
+Install ubuntu 8.04 LTS server (Released April 2008 and maintained until April 2013) with *only* OpenSSH Server. (we used the 64bit edition)
+
+Login at the real keyboard as the user you choose during install
+
+Check the IP address with ifconfig
+
+Logout
+
+===============================
+Login via ssh as the user you choose during install
+
+maruzz at 8-04-srv:~$
+maruzz at 8-04-srv:~$ sudo su
+[sudo] password for maruzz:
+root at 8-04-srv:/home/maruzz# passwd
+Enter new UNIX password:
+Retype new UNIX password:
+passwd: password updated successfully
+root at 8-04-srv:/home/maruzz#
+root at 8-04-srv:/home/maruzz# apt-get update && apt-get -y upgrade
+root at 8-04-srv:/home/maruzz# apt-get update && apt-get -y dist-upgrade
+root at 8-04-srv:/home/maruzz# reboot
+
+===============================
+Login as root via ssh
+
+root at 8-04-srv:~# apt-get update && apt-get -y dist-upgrade
+root at 8-04-srv:/home/maruzz# reboot
+
+===============================
+
+Now, let's begin the real installation
+
+root at 8-04-srv:~# apt-get -y install build-essential subversion automake autoconf wget libtool libncurses5-dev xvfb libx11-dev libasound2-dev
+root at 8-04-srv:~# svn co http://svn.freeswitch.org/svn/freeswitch/branches/gmaruzz freeswitch_gmaruzz
+root at 8-04-srv:~# cd freeswitch_gmaruzz/
+root at 8-04-srv:~/freeswitch_gmaruzz# ./bootstrap.sh
+root at 8-04-srv:~/freeswitch_gmaruzz# ./configure
+root at 8-04-srv:~/freeswitch_gmaruzz# make && make install && make hd-sounds-install && make hd-moh-install && make samples
+
+*** go to have something to drink-eat-read-whatever
+*** test that FS can be started
+
+root at 8-04-srv:~/freeswitch_gmaruzz# /usr/local/freeswitch/bin/freeswitch
+freeswitch at 8-04-srv> ...
+
+*** copy the skypiax configuration file
+root at 8-04-srv:~/freeswitch_gmaruzz# cp src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml /usr/local/freeswitch/conf/autoload_configs/
+
+*** now, let's get and install the Skype client
+root at 8-04-srv:~/freeswitch_gmaruzz# cd ..
+root at 8-04-srv:~#
+root at 8-04-srv:~# apt-get -y install ia32-libs lib32asound2 libc6-i386 lib32gcc1 lib32stdc++6 lib32ncurses5 lib32z1 libasound2-plugins
+root at 8-04-srv:~# wget -c http://www.skype.com/go/getskype-linux-ubuntu-amd64
+root at 8-04-srv:~# dpkg -i skype_ubuntu-2.0.0.72-1_amd64.deb
+
+*** now, let's get the skype configuration directory we prepared on another (desktop) machine
+*** on "How to prepare the configuration directory of Skype clients", see below
+root at 8-04-srv:~# cp /mnt/root/configskypenew.tgz ./
+root at 8-04-srv:~# tar xzf configskypenew.tgz
+root at 8-04-srv:~# chown root.root .Skype
+root at 8-04-srv:~#
+
+**** almost ready!
+
+**** let's edit the skypiax config
+root at 8-04-srv:~/freeswitch_gmaruzz# vi /usr/local/freeswitch/conf/autoload_configs/skypiax.conf.xml
+
+**** let's edit the startskype script
+**** remember to add the removing of all the installed snd-* modules
+root at 8-04-srv:~/freeswitch_gmaruzz# cp src/mod/endpoints/mod_skypiax/configs/startskype.sh ./
+root at 8-04-srv:~/freeswitch_gmaruzz# vi startskype.sh
+
+**** start the X servers and the Skype clients
+root at 8-04-srv:~/freeswitch_gmaruzz# sh ./startskype.sh
+
+**** this is the situation you want after startskype.sh
+root at 8-04-srv:~/freeswitch_gmaruzz# lsmod | grep snd
+snd_dummy              22016  0
+snd_pcm                99336  1 snd_dummy
+snd_timer              35080  1 snd_pcm
+snd                    78024  3 snd_dummy,snd_pcm,snd_timer
+snd_page_alloc         20368  1 snd_pcm
+soundcore              17568  1 snd
+root at 8-04-srv:~/freeswitch_gmaruzz#
+
+
+**** start FS and the load skypiax!
+root at 8-04-srv:~/freeswitch_gmaruzz# /usr/local/freeswitch/bin/freeswitch
+freeswitch at 8-04-srv> load mod_skypiax
+
+
+
+=============================================
+
+top - 18:14:26 up  2:02,  2 users,  load average: 0.03, 0.08, 0.04
+Tasks: 111 total,   1 running, 110 sleeping,   0 stopped,   0 zombie
+Cpu(s):  0.1%us,  0.3%sy,  0.0%ni, 99.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
+Mem:   3096688k total,  1835100k used,  1261588k free,   137688k buffers
+Swap:   248968k total,        0k used,   248968k free,  1020888k cached
+
+  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
+ 8272 root      20   0  320m  30m 4848 S    0  1.0   0:00.56 freeswitch
+ 7905 root      20   0 58520  27m  10m S    0  0.9   0:03.25 skype
+ 7937 root      20   0 59356  26m  10m S    0  0.9   0:03.01 skype
+ 8093 root      20   0 58524  26m  10m S    0  0.9   0:03.03 skype
+ 7981 root      20   0 58376  26m  10m S    0  0.9   0:02.72 skype
+ 8157 root      20   0 59452  26m  10m S    0  0.9   0:02.49 skype
+ 7889 root      20   0 57888  26m  10m S    0  0.9   0:03.03 skype
+ 8189 root      20   0 58544  26m  10m S    0  0.9   0:02.62 skype
+ 7953 root      20   0 58400  26m  10m S    0  0.9   0:03.27 skype
+ 7997 root      20   0 57988  26m  10m S    1  0.9   0:03.00 skype
+ 8029 root      20   0 58456  26m  10m S    0  0.9   0:02.57 skype
+ 8045 root      20   0 58368  26m  10m S    0  0.9   0:02.70 skype
+ 8077 root      20   0 58444  26m  10m S    0  0.9   0:02.69 skype
+ 8109 root      20   0 59564  26m  10m S    0  0.9   0:02.75 skype
+ 8061 root      20   0 57984  26m  10m S    0  0.9   0:02.67 skype
+ 7921 root      20   0 58388  26m  10m S    0  0.9   0:02.92 skype
+ 7873 root      20   0 58492  26m  10m S    1  0.9   0:03.83 skype
+ 8125 root      20   0 58404  26m  10m S    1  0.9   0:02.89 skype
+ 8013 root      20   0 58460  26m  10m S    0  0.9   0:03.88 skype
+ 8173 root      20   0 58468  26m  10m S    0  0.9   0:02.55 skype
+ 8141 root      20   0 58232  26m  10m S    0  0.9   0:02.88 skype
+ 7884 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.33 Xvfb
+ 8024 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.30 Xvfb
+ 8040 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.32 Xvfb
+ 8072 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.29 Xvfb
+ 7900 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.32 Xvfb
+ 7916 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.32 Xvfb
+ 8120 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.31 Xvfb
+ 8152 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.29 Xvfb
+ 8168 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.28 Xvfb
+ 8184 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.28 Xvfb
+ 7868 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.31 Xvfb
+ 7932 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.32 Xvfb
+ 7948 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.32 Xvfb
+ 7964 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.33 Xvfb
+ 7992 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.31 Xvfb
+ 8008 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.31 Xvfb
+ 8056 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.30 Xvfb
+...some more Xvfb
+
+=============================================
+
+20 incoming concurrent skype calls listening to moh at 16khz:
+
+top - 18:40:04 up  2:27,  2 users,  load average: 0.14, 0.13, 0.06
+Tasks: 111 total,   1 running, 110 sleeping,   0 stopped,   0 zombie
+Cpu(s): 18.6%us,  4.5%sy,  0.0%ni, 76.4%id,  0.0%wa,  0.1%hi,  0.4%si,  0.0%st
+Mem:   3096688k total,  1858460k used,  1238228k free,   137692k buffers
+Swap:   248968k total,        0k used,   248968k free,  1023148k cached
+
+  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
+ 8866 root      20   0  336m  35m 5016 S    9  1.2   0:21.23 freeswitch
+ 8812 root      20   0 84632  28m  10m S    6  0.9   0:14.02 skype
+ 8580 root      20   0 84252  27m  10m S    6  0.9   0:28.19 skype
+ 8713 root      20   0 84716  27m  10m S    6  0.9   0:18.06 skype
+ 8628 root      20   0 84268  27m  10m S    7  0.9   0:24.37 skype
+ 8793 root      20   0 84756  27m  10m S    6  0.9   0:14.24 skype
+ 8664 root      20   0 84140  27m  10m S    6  0.9   0:23.19 skype
+ 8745 root      20   0 84628  27m  10m S    6  0.9   0:16.85 skype
+ 8644 root      20   0 84588  27m  10m S    6  0.9   0:22.81 skype
+ 8697 root      20   0 84516  27m  10m S    6  0.9   0:21.03 skype
+ 8514 root      20   0 83164  27m  10m S    7  0.9   0:29.47 skype
+ 8564 root      20   0 84496  27m  10m S    4  0.9   0:28.65 skype
+ 8681 root      20   0 84632  27m  10m S    6  0.9   0:23.20 skype
+ 8532 root      20   0 83528  27m  10m S    6  0.9   0:28.39 skype
+ 8612 root      20   0 84460  27m  10m S    6  0.9   0:24.70 skype
+ 8729 root      20   0 84368  27m  10m S    8  0.9   0:18.86 skype
+ 8761 root      20   0 84644  27m  10m S    6  0.9   0:16.70 skype
+ 8777 root      20   0 83752  27m  10m S    7  0.9   0:16.19 skype
+ 8596 root      20   0 83692  27m  10m S    7  0.9   0:26.49 skype
+ 8831 root      20   0 83568  27m  10m S    7  0.9   0:13.13 skype
+ 8548 root      20   0 83336  27m  10m S    6  0.9   0:30.67 skype
+ 8575 root      20   0 43636 9.8m 2232 S    0  0.3   0:00.63 Xvfb
+ 8543 root      20   0 43636 9.8m 2232 S    0  0.3   0:00.64 Xvfb
+ 8527 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.65 Xvfb
+ 8591 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.60 Xvfb
+ 8658 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.58 Xvfb
+ 8724 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.64 Xvfb
+ 8740 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.65 Xvfb
+ 8509 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.66 Xvfb
+ 8607 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.61 Xvfb
+ 8623 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.57 Xvfb
+ 8692 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.55 Xvfb
+ 8756 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.55 Xvfb
+ 8772 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.60 Xvfb
+ 8788 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.56 Xvfb
+ 8823 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.59 Xvfb
+ 8639 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.58 Xvfb
+ 8676 root      20   0 43624 9.8m 2232 S    0  0.3   0:00.55 Xvfb
+...some more Xvfb
+
+


From gmaruzz at freeswitch.org  Sun Jan 11 10:44:16 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 12:44:16 -0600
Subject: [Freeswitch-svn] [commit] r11129 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 12:44:16 2009
New Revision: 11129

Log:
skypiax: added configs/skypiax_auth.c file

Added:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax_auth.c

Added: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax_auth.c
==============================================================================
--- (empty file)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax_auth.c	Sun Jan 11 12:44:16 2009
@@ -0,0 +1,195 @@
+//gcc -Wall -ggdb skypiax_auth.c -o skypiax_auth -lX11
+#include 
+#include 
+#include 
+#include 
+#include 
+
+struct SkypiaxHandles {
+  Window skype_win;
+  Display *disp;
+  Window win;
+  int api_connected;
+  int fdesc[2];
+};
+
+int skypiax_skype_send_message(struct SkypiaxHandles *SkypiaxHandles,
+                               const char *message_P)
+{
+
+  Window w_P;
+  Display *disp;
+  Window handle_P;
+
+  w_P = SkypiaxHandles->skype_win;
+  disp = SkypiaxHandles->disp;
+  handle_P = SkypiaxHandles->win;
+
+  Atom atom1 = XInternAtom(disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False);
+  Atom atom2 = XInternAtom(disp, "SKYPECONTROLAPI_MESSAGE", False);
+  unsigned int pos = 0;
+  unsigned int len = strlen(message_P);
+  XEvent e;
+
+  memset(&e, 0, sizeof(e));
+  e.xclient.type = ClientMessage;
+  e.xclient.message_type = atom1;   /*  leading message */
+  e.xclient.display = disp;
+  e.xclient.window = handle_P;
+  e.xclient.format = 8;
+
+  do {
+    unsigned int i;
+    for (i = 0; i < 20 && i + pos <= len; ++i)
+      e.xclient.data.b[i] = message_P[i + pos];
+    XSendEvent(disp, w_P, False, 0, &e);
+
+    e.xclient.message_type = atom2; /*  following messages */
+    pos += i;
+  } while (pos <= len);
+
+  XSync(disp, False);
+
+  return 1;
+}
+
+int skypiax_skype_present(struct SkypiaxHandles *SkypiaxHandles)
+{
+  Atom skype_inst = XInternAtom(SkypiaxHandles->disp, "_SKYPE_INSTANCE", True);
+
+  Atom type_ret;
+  int format_ret;
+  unsigned long nitems_ret;
+  unsigned long bytes_after_ret;
+  unsigned char *prop;
+  int status;
+
+  status =
+    XGetWindowProperty(SkypiaxHandles->disp, DefaultRootWindow(SkypiaxHandles->disp),
+                       skype_inst, 0, 1, False, XA_WINDOW, &type_ret, &format_ret,
+                       &nitems_ret, &bytes_after_ret, &prop);
+
+  /*  sanity check */
+  if (status != Success || format_ret != 32 || nitems_ret != 1) {
+    SkypiaxHandles->skype_win = (Window) - 1;
+    printf("Skype instance not found\n");
+    return 0;
+  }
+
+  SkypiaxHandles->skype_win = *(const unsigned long *) prop & 0xffffffff;
+  printf("Skype instance found with id #%d\n", 
+               (unsigned int) SkypiaxHandles->skype_win);
+  return 1;
+}
+
+void skypiax_skype_clean_disp(void *data)
+{
+
+  int *dispptr;
+  int disp;
+
+  dispptr = data;
+  disp = *dispptr;
+
+  if (disp) {
+    close(disp);
+  } else {
+  }
+  usleep(1000);
+}
+
+int main(int argc, char *argv[])
+{
+
+  struct SkypiaxHandles SkypiaxHandles;
+  char buf[512];
+  Display *disp = NULL;
+  Window root = -1;
+  Window win = -1;
+  char *dispname;
+
+  if(argc==2)
+	  dispname=argv[1];
+  else
+	  dispname=":0.0";
+
+  disp = XOpenDisplay(dispname);
+  if (!disp) {
+    printf("Cannot open X Display '%s', exiting\n", dispname);
+    return -1;
+  }
+
+  int xfd;
+  xfd = XConnectionNumber(disp);
+
+  SkypiaxHandles.disp = disp;
+
+  if (skypiax_skype_present(&SkypiaxHandles)) {
+    root = DefaultRootWindow(disp);
+    win =
+      XCreateSimpleWindow(disp, root, 0, 0, 1, 1, 0,
+                          BlackPixel(disp, DefaultScreen(disp)), BlackPixel(disp,
+                                                                            DefaultScreen
+                                                                            (disp)));
+
+    SkypiaxHandles.win = win;
+
+    snprintf(buf, 512, "NAME skypiax");
+
+    if (!skypiax_skype_send_message(&SkypiaxHandles, buf)) {
+      printf ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n");
+      return -1;
+    }
+
+    snprintf(buf, 512, "PROTOCOL 6");
+    if (!skypiax_skype_send_message(&SkypiaxHandles, buf)) {
+      printf ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n");
+      return -1;
+    }
+
+    /* perform an events loop */
+    XEvent an_event;
+    char buf[21];               /*  can't be longer */
+    char buffer[17000];
+    char *b;
+    int i;
+
+    b = buffer;
+
+    while (1) {
+      XNextEvent(disp, &an_event);
+      switch (an_event.type) {
+      case ClientMessage:
+
+        if (an_event.xclient.format != 8)
+          break;
+
+        for (i = 0; i < 20 && an_event.xclient.data.b[i] != '\0'; ++i)
+          buf[i] = an_event.xclient.data.b[i];
+
+        buf[i] = '\0';
+
+        strcat(buffer, buf);
+
+        if (i < 20) {           /* last fragment */
+          unsigned int howmany;
+
+          howmany = strlen(b) + 1;
+
+          printf("RECEIVED==> %s\n", b);
+          memset(buffer, '\0', 17000);
+        }
+
+        break;
+      default:
+        break;
+      }
+    }
+  } else {
+
+      printf ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n");
+      return -1;
+  }
+      return 0;
+
+}


From gmaruzz at freeswitch.org  Sun Jan 11 11:05:47 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 13:05:47 -0600
Subject: [Freeswitch-svn] [commit] r11130 - in
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax: . configs
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 13:05:47 2009
New Revision: 11130

Log:
skypiax: added README.skypiax_auth

Added:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/README.skypiax_auth
Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Added: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/README.skypiax_auth
==============================================================================
--- (empty file)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/README.skypiax_auth	Sun Jan 11 13:05:47 2009
@@ -0,0 +1,45 @@
+How to use skypiax_auth 
+
+You will use skypiax_auth only at the setup moment, to make the Skype client asking you to authorize "skypiax" to connect to the same Skype client.
+
+Then you copy the .Skype configuration directory of the user that has launched Skype (eg: /home/maruzz/.Skype if you are maruzz) on the home directory of the user that will start Skype on the server (eg: root).
+
+Compile skypiax_auth:
+$ gcc -Wall -ggdb skypiax_auth.c -o skypiax_auth -lX11
+
+Start the Skype client on a desktop linux machine, logout from your autologin username if any, and login with the username and password you want to use for skypiax
+
+Configure the Skype client to use the right audio devices, to not update, to not make "events", etc etc...
+
+Then, when satisfied, use skypiax_auth (that simulates FS-skypiax connecting to the Skype client). The Skype client will ask you to be authorized to let "skypiax" connect.
+
+
+############################
+first time you use skypiax_auth
+############################
+$ ./skypiax_auth 
+Skype instance found with id #27263062
+RECEIVED==> ERROR 68
+RECEIVED==> OK
+
+############################
+Give the auth to the Skype client, and tell him not to ask again
+Then Ctrl-C to exit from skypiax_auth
+############################
+
+
+Close (Quit) the Skype client from the tray icon, so it saves its config.
+Then, relaunch the Skype client
+
+############################
+you use skypiax_auth again
+############################
+$ ./skypiax_auth 
+Skype instance found with id #27263062
+RECEIVED==> OK
+RECEIVED==> PROTOCOL 6
+RECEIVED==> CONNSTATUS ONLINE
+RECEIVED==> CURRENTUSERHANDLE gmaruzz3
+RECEIVED==> USERSTATUS INVISIBLE
+
+

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Sun Jan 11 13:05:47 2009
@@ -498,9 +498,8 @@
     //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]);
     //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
     if (samples != SAMPLES_PER_FRAME * sizeof(short)) {
-      if (samples)
-        ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG,
-               samples, SAMPLES_PER_FRAME * sizeof(short));
+      //if (samples)
+        //ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG, samples, SAMPLES_PER_FRAME * sizeof(short));
       assert(samples == SAMPLES_PER_FRAME * sizeof(short)); //do a crash, please
       //do nothing
     } else {


From gmaruzz at freeswitch.org  Sun Jan 11 11:07:33 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 13:07:33 -0600
Subject: [Freeswitch-svn] [commit] r11131 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Sun Jan 11 13:07:33 2009
New Revision: 11131

Log:
skypiax: updated README

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README	Sun Jan 11 13:07:33 2009
@@ -65,7 +65,7 @@
 root at 8-04-srv:~# dpkg -i skype_ubuntu-2.0.0.72-1_amd64.deb
 
 *** now, let's get the skype configuration directory we prepared on another (desktop) machine
-*** on "How to prepare the configuration directory of Skype clients", see below
+*** on "How to prepare the configuration directory of Skype clients", see configs/README.skypiax_auth
 root at 8-04-srv:~# cp /mnt/root/configskypenew.tgz ./
 root at 8-04-srv:~# tar xzf configskypenew.tgz
 root at 8-04-srv:~# chown root.root .Skype


From mrene at freeswitch.org  Sun Jan 11 13:41:56 2009
From: mrene at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 11 Jan 2009 15:41:56 -0600
Subject: [Freeswitch-svn] [commit] r11132 -
	freeswitch/trunk/scripts/contrib/mrene/mod_limit
Message-ID: 

Author: mrene
Date: Sun Jan 11 15:41:56 2009
New Revision: 11132

Log:
Cleanup

Removed:
   freeswitch/trunk/scripts/contrib/mrene/mod_limit/


From gmaruzz at freeswitch.org  Mon Jan 12 01:59:36 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 03:59:36 -0600
Subject: [Freeswitch-svn] [commit] r11133 - in
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax: . configs
Message-ID: 

Author: gmaruzz
Date: Mon Jan 12 03:59:35 2009
New Revision: 11133

Log:
skypiax: X11_errors_trap() X11_errors_untrap()

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax_auth.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax_auth.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax_auth.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax_auth.c	Mon Jan 12 03:59:35 2009
@@ -13,6 +13,32 @@
   int fdesc[2];
 };
 
+XErrorHandler old_handler = 0;
+int xerror = 0;
+  char *dispname;
+
+int X11_errors_handler(Display * dpy, XErrorEvent * err)
+{
+  (void) dpy;
+
+  xerror = err->error_code;
+  printf("\n\nReceived error code %d from X Server on display '%s'\n\n", xerror, dispname);
+  return 0;                     /*  ignore the error */
+}
+
+static void X11_errors_trap(void)
+{
+  xerror = 0;
+  old_handler = XSetErrorHandler(X11_errors_handler);
+}
+
+static int X11_errors_untrap(void)
+{
+  XSetErrorHandler(old_handler);
+  return (xerror != BadValue) && (xerror != BadWindow);
+}
+
+
 int skypiax_skype_send_message(struct SkypiaxHandles *SkypiaxHandles,
                                const char *message_P)
 {
@@ -20,6 +46,7 @@
   Window w_P;
   Display *disp;
   Window handle_P;
+  int ok;
 
   w_P = SkypiaxHandles->skype_win;
   disp = SkypiaxHandles->disp;
@@ -31,6 +58,7 @@
   unsigned int len = strlen(message_P);
   XEvent e;
 
+
   memset(&e, 0, sizeof(e));
   e.xclient.type = ClientMessage;
   e.xclient.message_type = atom1;   /*  leading message */
@@ -38,6 +66,7 @@
   e.xclient.window = handle_P;
   e.xclient.format = 8;
 
+  X11_errors_trap();
   do {
     unsigned int i;
     for (i = 0; i < 20 && i + pos <= len; ++i)
@@ -49,6 +78,11 @@
   } while (pos <= len);
 
   XSync(disp, False);
+  ok = X11_errors_untrap();
+
+  if (!ok)
+    printf("Sending message failed with status %d\n", xerror);
+
 
   return 1;
 }
@@ -64,20 +98,22 @@
   unsigned char *prop;
   int status;
 
+  X11_errors_trap();
   status =
     XGetWindowProperty(SkypiaxHandles->disp, DefaultRootWindow(SkypiaxHandles->disp),
                        skype_inst, 0, 1, False, XA_WINDOW, &type_ret, &format_ret,
                        &nitems_ret, &bytes_after_ret, &prop);
 
+  X11_errors_untrap();
   /*  sanity check */
   if (status != Success || format_ret != 32 || nitems_ret != 1) {
     SkypiaxHandles->skype_win = (Window) - 1;
-    printf("Skype instance not found\n");
+    printf("Skype instance not found on display '%s'\n", dispname);
     return 0;
   }
 
   SkypiaxHandles->skype_win = *(const unsigned long *) prop & 0xffffffff;
-  printf("Skype instance found with id #%d\n", 
+  printf("Skype instance found on display '%s', with id #%d\n", dispname,
                (unsigned int) SkypiaxHandles->skype_win);
   return 1;
 }
@@ -106,7 +142,6 @@
   Display *disp = NULL;
   Window root = -1;
   Window win = -1;
-  char *dispname;
 
   if(argc==2)
 	  dispname=argv[1];
@@ -137,13 +172,13 @@
     snprintf(buf, 512, "NAME skypiax");
 
     if (!skypiax_skype_send_message(&SkypiaxHandles, buf)) {
-      printf ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n");
+      printf ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch skypiax_auth again\n");
       return -1;
     }
 
     snprintf(buf, 512, "PROTOCOL 6");
     if (!skypiax_skype_send_message(&SkypiaxHandles, buf)) {
-      printf ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n");
+      printf ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch skypiax_auth again\n");
       return -1;
     }
 
@@ -186,8 +221,7 @@
       }
     }
   } else {
-
-      printf ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n");
+      printf ("Skype client not found on display '%s'. Please run/restart Skype manually and launch skypiax_auth again\n\n\n", dispname);
       return -1;
   }
       return 0;

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Mon Jan 12 03:59:35 2009
@@ -5,6 +5,13 @@
 extern switch_endpoint_interface_t *skypiax_endpoint_interface;
 extern int running;
 
+/*************************************/
+#ifndef WIN32
+XErrorHandler old_handler = 0;
+int xerror = 0;
+#endif /* WIN32 */
+/*************************************/
+
 static void *SWITCH_THREAD_FUNC skypiax_do_tcp_srv_thread(switch_thread_t * thread,
                                                           void *obj)
 {
@@ -778,6 +785,31 @@
 }
 
 #else /* NOT WIN32 */
+
+int X11_errors_handler(Display * dpy, XErrorEvent * err)
+{
+  (void) dpy;
+  private_t *tech_pvt = NULL;
+
+  xerror = err->error_code;
+  ERRORA("Received error code %d from X Server\n\n", SKYPIAX_P_LOG, xerror);
+  return 0;                     /*  ignore the error */
+}
+
+static void X11_errors_trap(void)
+{
+  xerror = 0;
+  old_handler = XSetErrorHandler(X11_errors_handler);
+}
+
+static int X11_errors_untrap(void)
+{
+  XSetErrorHandler(old_handler);
+  return (xerror != BadValue) && (xerror != BadWindow);
+}
+
+
+
 int skypiax_skype_send_message(struct SkypiaxHandles *SkypiaxHandles,
                                const char *message_P)
 {
@@ -785,6 +817,8 @@
   Window w_P;
   Display *disp;
   Window handle_P;
+  int ok;
+  private_t *tech_pvt = NULL;
 
   w_P = SkypiaxHandles->skype_win;
   disp = SkypiaxHandles->disp;
@@ -803,6 +837,7 @@
   e.xclient.window = handle_P;
   e.xclient.format = 8;
 
+  X11_errors_trap();
   //XLockDisplay(disp);
   do {
     unsigned int i;
@@ -815,6 +850,10 @@
   } while (pos <= len);
 
   XSync(disp, False);
+  ok = X11_errors_untrap();
+
+  if (!ok)
+    ERRORA("Sending message failed with status %d\n", SKYPIAX_P_LOG, xerror);
   //XUnlockDisplay(disp);
 
   return 1;
@@ -832,12 +871,14 @@
   int status;
   private_t *tech_pvt = NULL;
 
+  X11_errors_trap();
   //XLockDisplay(disp);
   status =
     XGetWindowProperty(SkypiaxHandles->disp, DefaultRootWindow(SkypiaxHandles->disp),
                        skype_inst, 0, 1, False, XA_WINDOW, &type_ret, &format_ret,
                        &nitems_ret, &bytes_after_ret, &prop);
   //XUnlockDisplay(disp);
+  X11_errors_untrap();
 
   /*  sanity check */
   if (status != Success || format_ret != 32 || nitems_ret != 1) {


From gmaruzz at freeswitch.org  Mon Jan 12 03:07:47 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 05:07:47 -0600
Subject: [Freeswitch-svn] [commit] r11134 - in
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax: . configs
Message-ID: 

Author: gmaruzz
Date: Mon Jan 12 05:07:47 2009
New Revision: 11134

Log:
docs

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/README.skypiax_auth
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README	Mon Jan 12 05:07:47 2009
@@ -2,7 +2,36 @@
 #########################################################
 #########################################################
 
-  An example of installation
+WHAT IS SKYPIAX
+
+This software (Skypiax) uses the Skype API but is not endorsed, 
+     certified or otherwise approved in any way by Skype. 
+
+#########################################################
+#########################################################
+#########################################################
+
+Skypiax is an endpoint (channel driver) that use the Skype client as an interface to the Skype network, and allows incoming and outgoing Skype calls from/to FreeSWITCH. 
+
+Think at Skypiax as similar to OpenZAP for analog lines: for each channel you need an interface (a Skype client). So, for eg, for two concurrent calls, you will need two channels, and two Skype clients running on your machine.
+
+On Linux the Skype client uses a lot of CPU. To lower its CPU consumption, you can use the Xvfb "fake" X server and (more important) the snd-dummy ALSA "fake" sound driver. 
+
+On a Linux machine with 3GB ram and a quad core intel6600, we got no problem with 20 concurrent calls, and plenty of room for adding more Skypiax channels.
+
+On Windows, no need to do anything special, the Skype client is lighter on CPU.
+
+More info on skypiax:	http://wiki.freeswitch.org/wiki/Skypiax
+			http://www.celliax.org
+
+Skypiax has been contributed to the community by:
+			Giovanni Maruzzelli 
+			(gmaruzz at gmail dot com)
+#########################################################
+#########################################################
+#########################################################
+
+  An example of Skypiax installation on FreeSWITCH Linux
 
 #########################################################
 #########################################################
@@ -57,6 +86,9 @@
 *** copy the skypiax configuration file
 root at 8-04-srv:~/freeswitch_gmaruzz# cp src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml /usr/local/freeswitch/conf/autoload_configs/
 
+*** optionally, copy the dialplan configuration file that contains the "skypiax" modifications (eg: you can call "sip:skype/remote_skypename__OR__skypeout_phonenumber" for calling via the Skype network from a SIP softphone to remote_skypename or to a phone number via SkypeOut, or you can call the "2908" extension from any phone to be bridged to the Skype Test Call)
+root at 8-04-srv:~/freeswitch_gmaruzz# cp src/mod/endpoints/mod_skypiax/configs/default.xml /usr/local/freeswitch/conf/dialplan/
+
 *** now, let's get and install the Skype client
 root at 8-04-srv:~/freeswitch_gmaruzz# cd ..
 root at 8-04-srv:~#
@@ -65,7 +97,7 @@
 root at 8-04-srv:~# dpkg -i skype_ubuntu-2.0.0.72-1_amd64.deb
 
 *** now, let's get the skype configuration directory we prepared on another (desktop) machine
-*** on "How to prepare the configuration directory of Skype clients", see configs/README.skypiax_auth
+*** on "How to prepare the configuration directory of Skype clients on Linux", see configs/README.skypiax_auth
 root at 8-04-srv:~# cp /mnt/root/configskypenew.tgz ./
 root at 8-04-srv:~# tar xzf configskypenew.tgz
 root at 8-04-srv:~# chown root.root .Skype
@@ -102,6 +134,7 @@
 
 
 =============================================
+20 idle skypiax channels:
 
 top - 18:14:26 up  2:02,  2 users,  load average: 0.03, 0.08, 0.04
 Tasks: 111 total,   1 running, 110 sleeping,   0 stopped,   0 zombie

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/README.skypiax_auth
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/README.skypiax_auth	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/README.skypiax_auth	Mon Jan 12 05:07:47 2009
@@ -1,18 +1,34 @@
-How to use skypiax_auth 
+#######################################
+HOW TO USE SKYPIAX_AUTH 
+#######################################
 
-You will use skypiax_auth only at the setup moment, to make the Skype client asking you to authorize "skypiax" to connect to the same Skype client.
+You will use skypiax_auth only at the setup moment, to force the Skype client to ask you to authorize "skypiax" to connect to it.
 
 Then you copy the .Skype configuration directory of the user that has launched Skype (eg: /home/maruzz/.Skype if you are maruzz) on the home directory of the user that will start Skype on the server (eg: root).
 
 Compile skypiax_auth:
 $ gcc -Wall -ggdb skypiax_auth.c -o skypiax_auth -lX11
 
-Start the Skype client on a desktop linux machine, logout from your autologin username if any, and login with the username and password you want to use for skypiax
+Then:
 
-Configure the Skype client to use the right audio devices, to not update, to not make "events", etc etc...
+1) Start the Skype client on a desktop linux machine, logout from your autologin username if any, and login with the username and password you want to use for skypiax
 
-Then, when satisfied, use skypiax_auth (that simulates FS-skypiax connecting to the Skype client). The Skype client will ask you to be authorized to let "skypiax" connect.
+2) Configure the Skype client to use the right audio devices, to not update, to not make "events", etc etc...
 
+3) Then, when satisfied, use skypiax_auth (that simulates FS-skypiax connecting to the Skype client). The Skype client will ask you to be authorized to let "skypiax" connect.
+
+4) Give the authorization and check the "not ask me again" option.
+
+5) Close (Quit) the Skype client from the tray icon, so it saves its config.
+
+6) Then, relaunch the Skype client and use skypiax_auth again, just to be sure it now succeed.
+
+7) Close (Quit) the Skype client from the tray icon, so it saves its config.
+
+*** Do the steps 1-7 for all Skype usernames you will want to use on the server (eg: one Skype username per channel)
+
+When finished wityh all the Skype usernames:
+Copy or targzip the .Skype directory and all its content on the home directory of the server user that will launch the Skype client(s).
 
 ############################
 first time you use skypiax_auth

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.conf.xml	Mon Jan 12 05:07:47 2009
@@ -29,6 +29,7 @@
 	
 	
     
+    
   
 

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.bat	Mon Jan 12 05:07:47 2009
@@ -12,38 +12,41 @@
 call wait 7
 start Skype.exe /secondary /username:skypiax2 /password:xxx
 call wait 7
-start Skype.exe /secondary /username:skypiax3 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax4 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax5 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax6 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax7 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax8 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax9 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax10 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax11 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax12 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax13 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax14 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax15 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax16 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax17 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax18 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax19 /password:xxx
-call wait 7
-start Skype.exe /secondary /username:skypiax20 /password:xxx
+REM 
+REM Following Skype client instances are commented out
+REM
+REM start Skype.exe /secondary /username:skypiax3 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax4 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax5 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax6 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax7 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax8 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax9 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax10 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax11 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax12 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax13 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax14 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax15 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax16 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax17 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax18 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax19 /password:xxx
+REM call wait 7
+REM start Skype.exe /secondary /username:skypiax20 /password:xxx

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh	Mon Jan 12 05:07:47 2009
@@ -21,112 +21,116 @@
 echo "skypiax2 xxx"| DISPLAY=:102 /usr/bin/skype --pipelogin &
 
 sleep 7
-/usr/bin/Xvfb :103 &
-sleep 3
-
-echo "skypiax3 xxx"| DISPLAY=:103 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :104 &
-sleep 3
-
-echo "skypiax4 xxx"| DISPLAY=:104 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :105 &
-sleep 3
-
-echo "skypiax5 xxx"| DISPLAY=:105 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :106 &
-sleep 3
-
-echo "skypiax6 xxx"| DISPLAY=:106 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :107 &
-sleep 3
-
-echo "skypiax7 xxx"| DISPLAY=:107 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :108 &
-sleep 3
-
-echo "skypiax8 xxx"| DISPLAY=:108 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :109 &
-sleep 3
-
-echo "skypiax9 xxx"| DISPLAY=:109 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :110 &
-sleep 3
-
-echo "skypiax10 xxx"| DISPLAY=:110 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :111 &
-sleep 3
-
-echo "skypiax11 xxx"| DISPLAY=:111 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :112 &
-sleep 3
-
-echo "skypiax12 xxx"| DISPLAY=:112 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :113 &
-sleep 3
-
-echo "skypiax13 xxx"| DISPLAY=:113 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :114 &
-sleep 3
-
-echo "skypiax14 xxx"| DISPLAY=:114 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :115 &
-sleep 3
-
-echo "skypiax15 xxx"| DISPLAY=:115 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :116 &
-sleep 3
-
-echo "skypiax16 xxx"| DISPLAY=:116 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :117 &
-sleep 3
-
-echo "skypiax17 xxx"| DISPLAY=:117 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :118 &
-sleep 3
-
-echo "skypiax18 xxx"| DISPLAY=:118 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :119 &
-sleep 3
-
-echo "skypiax19 xxx"| DISPLAY=:119 /usr/bin/skype --pipelogin &
-
-sleep 7
-/usr/bin/Xvfb :120 &
-sleep 3
-
-echo "skypiax20 xxx"| DISPLAY=:120 /usr/bin/skype --pipelogin &
-
-sleep 7
 
+#################################################################
+# Following X server Skype client instances are commented out
+#################################################################
+###/usr/bin/Xvfb :103 &
+###sleep 3
+###
+###echo "skypiax3 xxx"| DISPLAY=:103 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :104 &
+###sleep 3
+###
+###echo "skypiax4 xxx"| DISPLAY=:104 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :105 &
+###sleep 3
+###
+###echo "skypiax5 xxx"| DISPLAY=:105 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :106 &
+###sleep 3
+###
+###echo "skypiax6 xxx"| DISPLAY=:106 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :107 &
+###sleep 3
+###
+###echo "skypiax7 xxx"| DISPLAY=:107 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :108 &
+###sleep 3
+###
+###echo "skypiax8 xxx"| DISPLAY=:108 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :109 &
+###sleep 3
+###
+###echo "skypiax9 xxx"| DISPLAY=:109 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :110 &
+###sleep 3
+###
+###echo "skypiax10 xxx"| DISPLAY=:110 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :111 &
+###sleep 3
+###
+###echo "skypiax11 xxx"| DISPLAY=:111 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :112 &
+###sleep 3
+###
+###echo "skypiax12 xxx"| DISPLAY=:112 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :113 &
+###sleep 3
+###
+###echo "skypiax13 xxx"| DISPLAY=:113 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :114 &
+###sleep 3
+###
+###echo "skypiax14 xxx"| DISPLAY=:114 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :115 &
+###sleep 3
+###
+###echo "skypiax15 xxx"| DISPLAY=:115 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :116 &
+###sleep 3
+###
+###echo "skypiax16 xxx"| DISPLAY=:116 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :117 &
+###sleep 3
+###
+###echo "skypiax17 xxx"| DISPLAY=:117 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :118 &
+###sleep 3
+###
+###echo "skypiax18 xxx"| DISPLAY=:118 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :119 &
+###sleep 3
+###
+###echo "skypiax19 xxx"| DISPLAY=:119 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###/usr/bin/Xvfb :120 &
+###sleep 3
+###
+###echo "skypiax20 xxx"| DISPLAY=:120 /usr/bin/skype --pipelogin &
+###
+###sleep 7
+###


From gmaruzz at freeswitch.org  Mon Jan 12 03:50:49 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 05:50:49 -0600
Subject: [Freeswitch-svn] [commit] r11135 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Mon Jan 12 05:50:49 2009
New Revision: 11135

Log:
removed mod_skypiax_stuff.c

Removed:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax_stuff.c


From gmaruzz at freeswitch.org  Mon Jan 12 04:12:05 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 06:12:05 -0600
Subject: [Freeswitch-svn] [commit] r11136 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Mon Jan 12 06:12:05 2009
New Revision: 11136

Log:
docs

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README	Mon Jan 12 06:12:05 2009
@@ -11,22 +11,38 @@
 #########################################################
 #########################################################
 
-Skypiax is an endpoint (channel driver) that use the Skype client as an interface to the Skype network, and allows incoming and outgoing Skype calls from/to FreeSWITCH. 
+Skypiax is an endpoint (channel driver) that use the Skype client as an interface to the Skype network, and allows incoming and outgoing Skype calls from/to FreeSWITCH (that can be bridged, originated, answered, etc. as in all other endpoints, eg sofia/SIP).
 
-Think at Skypiax as similar to OpenZAP for analog lines: for each channel you need an interface (a Skype client). So, for eg, for two concurrent calls, you will need two channels, and two Skype clients running on your machine.
+Think at Skypiax as similar to OpenZAP for analog lines: for each channel you need an interface (a Skype client). So, for eg, for two concurrent calls, you will need two channels, two Skype clients running on server.
 
-On Linux the Skype client uses a lot of CPU. To lower its CPU consumption, you can use the Xvfb "fake" X server and (more important) the snd-dummy ALSA "fake" sound driver. 
+If your server's Skype client(s) has got the Skype credits, Skypiax works for SkypeOut calls too.
 
-On a Linux machine with 3GB ram and a quad core intel6600, we got no problem with 20 concurrent calls, and plenty of room for adding more Skypiax channels.
+You can use it from the dialplan, eg with the provided modified "default.xml" dialplan, you can call "sip:skype/remote_skypename__OR__skypeout_phonenumber" for calling via the Skype network from a SIP softphone to remote_skypename or to a phone number via SkypeOut, or you can call the "2908" extension from any phone to be bridged to the Skype Test Call).
+
+With the provided skypiax.conf.xml all incoming Skype calls will be routed to the "5000" extension, the IVR in default FreeSWITCH installation.
+
+On Linux the Skype client uses a lot of CPU. To lower its CPU consumption, you can use the Xvfb "fake" X server and (more important) the snd-dummy ALSA "fake" sound driver. Scripts are provided for this. But for a low number of channels it would works with regular X servers and ALSA drivers.
+
+On a Linux machine with 3GB ram and a quad core intel6600, we got no problem with 20 concurrent calls, and plenty of room for adding more Skypiax channels (100? not tested).
 
 On Windows, no need to do anything special, the Skype client is lighter on CPU.
 
-More info on skypiax:	http://wiki.freeswitch.org/wiki/Skypiax
-			http://www.celliax.org
+
+''Skypiax is now pre-beta, but usable for testing and finding bugs :-).''
+
+
+'''You can download Skypiax source code with subversion with the command:'''
+
+svn co http://svn.freeswitch.org/svn/freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax mod_skypiax
+then, follow the README file in the mod_skypiax directory.
+
+More info on skypiax:   
+http://wiki.freeswitch.org/wiki/Skypiax
+http://www.celliax.org
 
 Skypiax has been contributed to the community by:
-			Giovanni Maruzzelli 
-			(gmaruzz at gmail dot com)
+Giovanni Maruzzelli (gmaruzz at gmail dot com)
+
 #########################################################
 #########################################################
 #########################################################


From anthm at freeswitch.org  Mon Jan 12 09:12:09 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 11:12:09 -0600
Subject: [Freeswitch-svn] [commit] r11137 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Mon Jan 12 11:12:09 2009
New Revision: 11137

Log:
fix regression from change last week

Modified:
   freeswitch/trunk/src/switch_core_io.c

Modified: freeswitch/trunk/src/switch_core_io.c
==============================================================================
--- freeswitch/trunk/src/switch_core_io.c	(original)
+++ freeswitch/trunk/src/switch_core_io.c	Mon Jan 12 11:12:09 2009
@@ -805,7 +805,8 @@
 	}
 
 	if (session->write_codec) {
-		if (write_frame->codec->implementation->decoded_bytes_per_packet == session->write_codec->implementation->decoded_bytes_per_packet) {
+		if (!ptime_mismatch && 
+			write_frame->codec->implementation->decoded_bytes_per_packet == session->write_codec->implementation->decoded_bytes_per_packet) {
 			perfect = TRUE;
 		} else {
 			if (!session->raw_write_buffer) {


From gmaruzz at freeswitch.org  Mon Jan 12 09:29:26 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 11:29:26 -0600
Subject: [Freeswitch-svn] [commit] r11138 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Mon Jan 12 11:29:26 2009
New Revision: 11138

Log:
skypiax: implemented anthm suggested changes, no more pointer to session in pvt, use uuid instead

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Mon Jan 12 11:29:26 2009
@@ -59,6 +59,8 @@
 
 static switch_status_t skypiax_codec(private_t * tech_pvt, int sample_rate, int codec_ms)
 {
+switch_core_session_t *session=NULL;
+
   if (switch_core_codec_init
       (&tech_pvt->read_codec, "L16", NULL, sample_rate, codec_ms, 1,
        SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
@@ -79,8 +81,12 @@
   tech_pvt->read_frame.rate = sample_rate;
   tech_pvt->read_frame.codec = &tech_pvt->read_codec;
 
-  switch_core_session_set_read_codec(tech_pvt->session, &tech_pvt->read_codec);
-  switch_core_session_set_write_codec(tech_pvt->session, &tech_pvt->write_codec);
+  session = switch_core_session_locate(tech_pvt->session_uuid_str);
+
+  switch_core_session_set_read_codec(session, &tech_pvt->read_codec);
+  switch_core_session_set_write_codec(session, &tech_pvt->write_codec);
+
+  switch_core_session_rwunlock(session);
 
   return SWITCH_STATUS_SUCCESS;
 
@@ -97,7 +103,7 @@
   switch_mutex_init(&tech_pvt->flag_mutex, SWITCH_MUTEX_NESTED,
                     switch_core_session_get_pool(session));
   switch_core_session_set_private(session, tech_pvt);
-  tech_pvt->session = session;
+  switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(session), sizeof(tech_pvt->session_uuid_str));
   if (skypiax_codec(tech_pvt, SAMPLERATE_SKYPIAX, 20) != SWITCH_STATUS_SUCCESS) {
     ERRORA("skypiax_codec FAILED\n", SKYPIAX_P_LOG);
   } else {
@@ -577,7 +583,7 @@
       DEBUGA_SKYPE("skype call ended\n", SKYPIAX_P_LOG);
 
       if (tech_pvt) {
-        session = tech_pvt->session;
+	session = switch_core_session_locate(tech_pvt->session_uuid_str);
 
         if (session) {
           channel = switch_core_session_get_channel(session);
@@ -587,13 +593,13 @@
             ERRORA("no channel?\n", SKYPIAX_P_LOG);
           }
         } else {
-          ERRORA("no session?\n", SKYPIAX_P_LOG);
+          DEBUGA_SKYPE("no session\n", SKYPIAX_P_LOG);
         }
       } else {
         ERRORA("no tech_pvt?\n", SKYPIAX_P_LOG);
       }
       tech_pvt->interface_state = SKYPIAX_STATE_DOWN;
-      tech_pvt->session = NULL; //FIXME
+      memset(tech_pvt->session_uuid_str, '\0', sizeof(tech_pvt->session_uuid_str));
     }
   }
   DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG);

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	Mon Jan 12 11:29:26 2009
@@ -157,7 +157,7 @@
   switch_codec_t write_codec;
   switch_frame_t read_frame;
   unsigned char databuf[SWITCH_RECOMMENDED_BUFFER_SIZE];
-  switch_core_session_t *session;
+  char 	session_uuid_str[SWITCH_UUID_FORMATTED_LENGTH+1];
   switch_caller_profile_t *caller_profile;
   switch_mutex_t *mutex;
   switch_mutex_t *flag_mutex;

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Mon Jan 12 11:29:26 2009
@@ -1353,8 +1353,7 @@
 
               DEBUGA_SKYPE("Call %s received a DTMF: %s\n", SKYPIAX_P_LOG, id, value);
 
-              //tech_pvt = p;
-              session = tech_pvt->session;
+	      session = switch_core_session_locate(tech_pvt->session_uuid_str);
               channel = switch_core_session_get_channel(session);
 
               if (channel) {
@@ -1566,7 +1565,7 @@
 
                 //FIXME *new_session=switch_loadable_module_create_interface(skypiax_endpoint_interface, pool);
 
-                if (!tech_pvt->session) {   //FIXME FIXME FIXME 
+                if (!strlen(tech_pvt->session_uuid_str)) {   
                   switch_core_session_t *session = NULL;
                   //private_t *tech_pvt = NULL;
                   switch_channel_t *channel = NULL;
@@ -1620,10 +1619,10 @@
                   switch_core_session_t *session = NULL;
                   switch_channel_t *channel = NULL;
 
-                  if (tech_pvt->session) {
-                    session = tech_pvt->session;
+                  if (strlen(tech_pvt->session_uuid_str)) {
+		    session = switch_core_session_locate(tech_pvt->session_uuid_str);
                   } else {
-                    ERRORA("No tech_pvt->session???\n", SKYPIAX_P_LOG);
+                    ERRORA("No session???\n", SKYPIAX_P_LOG);
                   }
                   if (session) {
                     channel = switch_core_session_get_channel(session);
@@ -1714,7 +1713,7 @@
     }
     return -1;
   }
-  tech_pvt->session = session;
+  switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(session), sizeof(tech_pvt->session_uuid_str));
   caller_profile = tech_pvt->caller_profile;
   caller_profile->destination_number = rdest;
 


From gmaruzz at freeswitch.org  Mon Jan 12 09:30:42 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 11:30:42 -0600
Subject: [Freeswitch-svn] [commit] r11139 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Mon Jan 12 11:30:42 2009
New Revision: 11139

Log:
skypiax: indent -gnu -ts4 -br -brs -cdw -lp -ce -nbfda -npcs -nprs -npsl -nbbo -saf -sai -saw -cs -bbo -nhnl -nut -sob -l90

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Mon Jan 12 11:30:42 2009
@@ -59,7 +59,7 @@
 
 static switch_status_t skypiax_codec(private_t * tech_pvt, int sample_rate, int codec_ms)
 {
-switch_core_session_t *session=NULL;
+  switch_core_session_t *session = NULL;
 
   if (switch_core_codec_init
       (&tech_pvt->read_codec, "L16", NULL, sample_rate, codec_ms, 1,
@@ -103,7 +103,8 @@
   switch_mutex_init(&tech_pvt->flag_mutex, SWITCH_MUTEX_NESTED,
                     switch_core_session_get_pool(session));
   switch_core_session_set_private(session, tech_pvt);
-  switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(session), sizeof(tech_pvt->session_uuid_str));
+  switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(session),
+                     sizeof(tech_pvt->session_uuid_str));
   if (skypiax_codec(tech_pvt, SAMPLERATE_SKYPIAX, 20) != SWITCH_STATUS_SUCCESS) {
     ERRORA("skypiax_codec FAILED\n", SKYPIAX_P_LOG);
   } else {
@@ -583,7 +584,7 @@
       DEBUGA_SKYPE("skype call ended\n", SKYPIAX_P_LOG);
 
       if (tech_pvt) {
-	session = switch_core_session_locate(tech_pvt->session_uuid_str);
+        session = switch_core_session_locate(tech_pvt->session_uuid_str);
 
         if (session) {
           channel = switch_core_session_get_channel(session);
@@ -814,7 +815,8 @@
                           skype_user);
         switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].context, context);
         switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].dialplan, dialplan);
-        switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].destination, destination);
+        switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].destination,
+                          destination);
         switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].context, context);
 
         DEBUGA_SKYPE
@@ -849,8 +851,7 @@
            globals.SKYPIAX_INTERFACES[interface_id].destination);
         DEBUGA_SKYPE
           ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].context=%s\n",
-           SKYPIAX_P_LOG, interface_id,
-           globals.SKYPIAX_INTERFACES[interface_id].context);
+           SKYPIAX_P_LOG, interface_id, globals.SKYPIAX_INTERFACES[interface_id].context);
         NOTICA("STARTING interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
 
         switch_threadattr_create(&skypiax_skypeapi_thread_attr, skypiax_module_pool);
@@ -902,10 +903,10 @@
                      i, globals.SKYPIAX_INTERFACES[i].context);
         DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].dialplan=%s\n", SKYPIAX_P_LOG,
                      i, i, globals.SKYPIAX_INTERFACES[i].dialplan);
-        DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].destination=%s\n", SKYPIAX_P_LOG,
-                     i, i, globals.SKYPIAX_INTERFACES[i].destination);
-        DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].context=%s\n", SKYPIAX_P_LOG,
-                     i, i, globals.SKYPIAX_INTERFACES[i].context);
+        DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].destination=%s\n",
+                     SKYPIAX_P_LOG, i, i, globals.SKYPIAX_INTERFACES[i].destination);
+        DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].context=%s\n", SKYPIAX_P_LOG, i,
+                     i, globals.SKYPIAX_INTERFACES[i].context);
       }
     }
   }

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h	Mon Jan 12 11:30:42 2009
@@ -157,7 +157,7 @@
   switch_codec_t write_codec;
   switch_frame_t read_frame;
   unsigned char databuf[SWITCH_RECOMMENDED_BUFFER_SIZE];
-  char 	session_uuid_str[SWITCH_UUID_FORMATTED_LENGTH+1];
+  char session_uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
   switch_caller_profile_t *caller_profile;
   switch_mutex_t *mutex;
   switch_mutex_t *flag_mutex;

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Mon Jan 12 11:30:42 2009
@@ -506,7 +506,7 @@
     //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]);
     if (samples != SAMPLES_PER_FRAME * sizeof(short)) {
       //if (samples)
-        //ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG, samples, SAMPLES_PER_FRAME * sizeof(short));
+      //ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG, samples, SAMPLES_PER_FRAME * sizeof(short));
       assert(samples == SAMPLES_PER_FRAME * sizeof(short)); //do a crash, please
       //do nothing
     } else {
@@ -808,8 +808,6 @@
   return (xerror != BadValue) && (xerror != BadWindow);
 }
 
-
-
 int skypiax_skype_send_message(struct SkypiaxHandles *SkypiaxHandles,
                                const char *message_P)
 {
@@ -1353,7 +1351,7 @@
 
               DEBUGA_SKYPE("Call %s received a DTMF: %s\n", SKYPIAX_P_LOG, id, value);
 
-	      session = switch_core_session_locate(tech_pvt->session_uuid_str);
+              session = switch_core_session_locate(tech_pvt->session_uuid_str);
               channel = switch_core_session_get_channel(session);
 
               if (channel) {
@@ -1565,7 +1563,7 @@
 
                 //FIXME *new_session=switch_loadable_module_create_interface(skypiax_endpoint_interface, pool);
 
-                if (!strlen(tech_pvt->session_uuid_str)) {   
+                if (!strlen(tech_pvt->session_uuid_str)) {
                   switch_core_session_t *session = NULL;
                   //private_t *tech_pvt = NULL;
                   switch_channel_t *channel = NULL;
@@ -1596,9 +1594,9 @@
                          switch_caller_profile_new(switch_core_session_get_pool(session),
                                                    "skypiax", tech_pvt->dialplan,
                                                    tech_pvt->callid_name,
-                                                   tech_pvt->callid_number, NULL,
-                                                   NULL, NULL, NULL,
-                                                   "mod_skypiax", tech_pvt->context,
+                                                   tech_pvt->callid_number, NULL, NULL,
+                                                   NULL, NULL, "mod_skypiax",
+                                                   tech_pvt->context,
                                                    tech_pvt->destination)) != 0) {
                       char name[128];
                       //switch_snprintf(name, sizeof(name), "skypiax/%s/%s", tech_pvt->name, tech_pvt->caller_profile->destination_number);
@@ -1620,7 +1618,7 @@
                   switch_channel_t *channel = NULL;
 
                   if (strlen(tech_pvt->session_uuid_str)) {
-		    session = switch_core_session_locate(tech_pvt->session_uuid_str);
+                    session = switch_core_session_locate(tech_pvt->session_uuid_str);
                   } else {
                     ERRORA("No session???\n", SKYPIAX_P_LOG);
                   }
@@ -1713,7 +1711,8 @@
     }
     return -1;
   }
-  switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(session), sizeof(tech_pvt->session_uuid_str));
+  switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(session),
+                     sizeof(tech_pvt->session_uuid_str));
   caller_profile = tech_pvt->caller_profile;
   caller_profile->destination_number = rdest;
 


From intralanman at freeswitch.org  Mon Jan 12 09:41:26 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 11:41:26 -0600
Subject: [Freeswitch-svn] [commit] r11140 - freeswitch/branches/ctrix
Message-ID: 

Author: intralanman
Date: Mon Jan 12 11:41:26 2009
New Revision: 11140

Log:


Added:
   freeswitch/branches/ctrix/


From ctrix at freeswitch.org  Mon Jan 12 09:48:43 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 11:48:43 -0600
Subject: [Freeswitch-svn] [commit] r11141 -
	freeswitch/branches/ctrix/mod_airpe
Message-ID: 

Author: ctrix
Date: Mon Jan 12 11:48:43 2009
New Revision: 11141

Log:
Initial empty dir for mod_airpe



Added:
   freeswitch/branches/ctrix/mod_airpe/


From gmaruzz at freeswitch.org  Mon Jan 12 09:50:34 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 11:50:34 -0600
Subject: [Freeswitch-svn] [commit] r11142 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Mon Jan 12 11:50:34 2009
New Revision: 11142

Log:
skypiax: implemented anthm suggested changes, fixed switch_core_session_rwunlock(session), indented again

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Mon Jan 12 11:50:34 2009
@@ -590,8 +590,10 @@
           channel = switch_core_session_get_channel(session);
           if (channel) {
             switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
+            switch_core_session_rwunlock(session);
           } else {
             ERRORA("no channel?\n", SKYPIAX_P_LOG);
+            switch_core_session_rwunlock(session);
           }
         } else {
           DEBUGA_SKYPE("no session\n", SKYPIAX_P_LOG);

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Mon Jan 12 11:50:34 2009
@@ -1364,6 +1364,7 @@
                 switch_set_flag(tech_pvt, TFLAG_DTMF);
                 switch_mutex_unlock(tech_pvt->flag_mutex);
               }
+              switch_core_session_rwunlock(session);
             }
 
             if (!strcasecmp(prop, "FAILUREREASON")) {
@@ -1634,6 +1635,7 @@
                     ERRORA("No channel???\n", SKYPIAX_P_LOG);
                   }
 
+                  switch_core_session_rwunlock(session);
                 }
 
               } else {


From anthm at freeswitch.org  Mon Jan 12 10:37:44 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 12:37:44 -0600
Subject: [Freeswitch-svn] [commit] r11143 -
	freeswitch/trunk/src/mod/endpoints/mod_sofia
Message-ID: 

Author: anthm
Date: Mon Jan 12 12:37:44 2009
New Revision: 11143

Log:
cache read_codec implementation to reduce risk of race conditions

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	Mon Jan 12 12:37:44 2009
@@ -709,14 +709,14 @@
 					}
 					
 					if (tech_pvt->check_frames++ < MAX_CODEC_CHECK_FRAMES) {
-						if (!tech_pvt->read_codec.implementation->encoded_bytes_per_packet) {
+						if (!tech_pvt->read_impl.encoded_bytes_per_packet) {
 							tech_pvt->check_frames = MAX_CODEC_CHECK_FRAMES;
 							goto skip;
 						}
 
-						if (tech_pvt->last_ts && tech_pvt->read_frame.datalen != tech_pvt->read_codec.implementation->encoded_bytes_per_packet) {
+						if (tech_pvt->last_ts && tech_pvt->read_frame.datalen != tech_pvt->read_impl.encoded_bytes_per_packet) {
 							switch_size_t codec_ms = (int)(tech_pvt->read_frame.timestamp - 
-														   tech_pvt->last_ts) / (tech_pvt->read_codec.implementation->samples_per_second / 1000);
+														   tech_pvt->last_ts) / (tech_pvt->read_impl.samples_per_second / 1000);
 
 							if ((codec_ms % 10) != 0) {
 								tech_pvt->check_frames = MAX_CODEC_CHECK_FRAMES;
@@ -768,8 +768,8 @@
 									}
 									
 									if (rtp_timeout_sec) {
-										tech_pvt->max_missed_packets = (tech_pvt->read_codec.implementation->samples_per_second * rtp_timeout_sec) /
-											tech_pvt->read_codec.implementation->samples_per_packet;
+										tech_pvt->max_missed_packets = (tech_pvt->read_impl.samples_per_second * rtp_timeout_sec) /
+											tech_pvt->read_impl.samples_per_packet;
 										
 										switch_rtp_set_max_missed_packets(tech_pvt->rtp_session, tech_pvt->max_missed_packets);
 										if (!rtp_hold_timeout_sec) {
@@ -778,13 +778,13 @@
 									}
 									
 									if (rtp_hold_timeout_sec) {
-										tech_pvt->max_missed_hold_packets = (tech_pvt->read_codec.implementation->samples_per_second * rtp_hold_timeout_sec) /
-											tech_pvt->read_codec.implementation->samples_per_packet;
+										tech_pvt->max_missed_hold_packets = (tech_pvt->read_impl.samples_per_second * rtp_hold_timeout_sec) /
+											tech_pvt->read_impl.samples_per_packet;
 									}
 									
 									if (switch_rtp_change_interval(tech_pvt->rtp_session, 
 																   tech_pvt->codec_ms * 1000,
-																   tech_pvt->read_codec.implementation->samples_per_packet
+																   tech_pvt->read_impl.samples_per_packet
 																   ) != SWITCH_STATUS_SUCCESS) {
 										switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
 										
@@ -806,10 +806,10 @@
 					}
 				skip:
 					
-					if ((bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_packet)) {
+					if ((bytes = tech_pvt->read_impl.encoded_bytes_per_packet)) {
 						frames = (tech_pvt->read_frame.datalen / bytes);
 					}
-					tech_pvt->read_frame.samples = (int) (frames * tech_pvt->read_codec.implementation->samples_per_packet);
+					tech_pvt->read_frame.samples = (int) (frames * tech_pvt->read_impl.samples_per_packet);
 
 					if (tech_pvt->read_frame.datalen == 0) {
 						continue;
@@ -872,13 +872,13 @@
 	switch_set_flag_locked(tech_pvt, TFLAG_WRITING);
 
 	if (!switch_test_flag(frame, SFF_CNG) && !switch_test_flag(frame, SFF_PROXY_PACKET)) {
-		if (tech_pvt->read_codec.implementation->encoded_bytes_per_packet) {
-			bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_packet;
+		if (tech_pvt->read_impl.encoded_bytes_per_packet) {
+			bytes = tech_pvt->read_impl.encoded_bytes_per_packet;
 			frames = ((int) frame->datalen / bytes);
 		} else
 			frames = 1;
 
-		samples = frames * tech_pvt->read_codec.implementation->samples_per_packet;
+		samples = frames * tech_pvt->read_impl.samples_per_packet;
 	}
 
 	tech_pvt->timestamp_send += samples;

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	Mon Jan 12 12:37:44 2009
@@ -553,6 +553,8 @@
 	uint32_t last_codec_ms;
 	nua_event_t want_event;
 	switch_rtp_bug_flag_t rtp_bugs;
+	switch_codec_implementation_t read_impl;
+	switch_codec_implementation_t write_impl;
 };
 
 struct callback_t {

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	Mon Jan 12 12:37:44 2009
@@ -1654,9 +1654,13 @@
 		switch_goto_status(SWITCH_STATUS_FALSE, end);
 	}
 
+	tech_pvt->read_impl = *tech_pvt->read_codec.implementation;
+	tech_pvt->write_impl = *tech_pvt->write_codec.implementation;
+
+
 	if (switch_rtp_ready(tech_pvt->rtp_session)) {
 		switch_assert(tech_pvt->read_codec.implementation);
-		switch_rtp_set_default_samples_per_interval(tech_pvt->rtp_session, tech_pvt->read_codec.implementation->samples_per_packet);
+		switch_rtp_set_default_samples_per_interval(tech_pvt->rtp_session, tech_pvt->read_impl.samples_per_packet);
 	}
 
 	tech_pvt->read_frame.rate = tech_pvt->rm_rate;
@@ -1669,7 +1673,7 @@
 
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Set Codec %s %s/%ld %d ms %d samples\n",
 					  switch_channel_get_name(tech_pvt->channel), tech_pvt->iananame, tech_pvt->rm_rate, tech_pvt->codec_ms,
-					  tech_pvt->read_codec.implementation->samples_per_packet);
+					  tech_pvt->read_impl.samples_per_packet);
 	tech_pvt->read_frame.codec = &tech_pvt->read_codec;
 
 	tech_pvt->write_codec.agreed_pt = tech_pvt->agreed_pt;
@@ -1832,8 +1836,8 @@
 		goto end;
 	}
 
-	bw = tech_pvt->read_codec.implementation->bits_per_second;
-	ms = tech_pvt->read_codec.implementation->microseconds_per_packet;
+	bw = tech_pvt->read_impl.bits_per_second;
+	ms = tech_pvt->read_impl.microseconds_per_packet;
 
 	if (myflags) {
 		flags = myflags;
@@ -1892,7 +1896,7 @@
 						  tech_pvt->local_sdp_audio_ip,
 						  tech_pvt->local_sdp_audio_port,
 						  tech_pvt->remote_sdp_audio_ip,
-						  tech_pvt->remote_sdp_audio_port, tech_pvt->agreed_pt, tech_pvt->read_codec.implementation->microseconds_per_packet / 1000);
+						  tech_pvt->remote_sdp_audio_port, tech_pvt->agreed_pt, tech_pvt->read_impl.microseconds_per_packet / 1000);
 	}
 
 	switch_snprintf(tmp, sizeof(tmp), "%d", tech_pvt->local_sdp_audio_port);
@@ -1934,7 +1938,7 @@
 						  tech_pvt->local_sdp_audio_ip,
 						  tech_pvt->local_sdp_audio_port,
 						  tech_pvt->remote_sdp_audio_ip,
-						  tech_pvt->remote_sdp_audio_port, tech_pvt->agreed_pt, tech_pvt->read_codec.implementation->microseconds_per_packet / 1000);
+						  tech_pvt->remote_sdp_audio_port, tech_pvt->agreed_pt, tech_pvt->read_impl.microseconds_per_packet / 1000);
 
 	} else {
 		timer_name = tech_pvt->profile->timer_name;
@@ -1949,7 +1953,7 @@
 										   tech_pvt->remote_sdp_audio_ip,
 										   tech_pvt->remote_sdp_audio_port,
 										   tech_pvt->agreed_pt,
-										   tech_pvt->read_codec.implementation->samples_per_packet,
+										   tech_pvt->read_impl.samples_per_packet,
 										   tech_pvt->codec_ms * 1000,
 										   (switch_rtp_flag_t) flags, timer_name, &err, switch_core_session_get_pool(tech_pvt->session));
 
@@ -1982,7 +1986,7 @@
 				}
 			}
 
-			stun_ping = (ival * tech_pvt->read_codec.implementation->samples_per_second) / tech_pvt->read_codec.implementation->samples_per_packet;
+			stun_ping = (ival * tech_pvt->read_impl.samples_per_second) / tech_pvt->read_impl.samples_per_packet;
 		}
 
 		tech_pvt->ssrc = switch_rtp_get_ssrc(tech_pvt->rtp_session);
@@ -2012,7 +2016,7 @@
 			} else {
 				int qlen;
 
-				qlen = len / (tech_pvt->read_codec.implementation->microseconds_per_packet / 1000);
+				qlen = len / (tech_pvt->read_impl.microseconds_per_packet / 1000);
 
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Setting Jitterbuffer to %dms (%d frames)\n", len, qlen);
 				switch_rtp_activate_jitter_buffer(tech_pvt->rtp_session, qlen);
@@ -2034,8 +2038,8 @@
 		}
 
 		if (rtp_timeout_sec) {
-			tech_pvt->max_missed_packets = (tech_pvt->read_codec.implementation->samples_per_second * rtp_timeout_sec) /
-				tech_pvt->read_codec.implementation->samples_per_packet;
+			tech_pvt->max_missed_packets = (tech_pvt->read_impl.samples_per_second * rtp_timeout_sec) /
+				tech_pvt->read_impl.samples_per_packet;
 
 			switch_rtp_set_max_missed_packets(tech_pvt->rtp_session, tech_pvt->max_missed_packets);
 			if (!rtp_hold_timeout_sec) {
@@ -2044,8 +2048,8 @@
 		}
 
 		if (rtp_hold_timeout_sec) {
-			tech_pvt->max_missed_hold_packets = (tech_pvt->read_codec.implementation->samples_per_second * rtp_hold_timeout_sec) /
-				tech_pvt->read_codec.implementation->samples_per_packet;
+			tech_pvt->max_missed_hold_packets = (tech_pvt->read_impl.samples_per_second * rtp_hold_timeout_sec) /
+				tech_pvt->read_impl.samples_per_packet;
 		}
 
 		if (tech_pvt->te) {


From gmaruzz at freeswitch.org  Mon Jan 12 11:03:07 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 13:03:07 -0600
Subject: [Freeswitch-svn] [commit] r11144 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Message-ID: 

Author: gmaruzz
Date: Mon Jan 12 13:03:06 2009
New Revision: 11144

Log:
docs

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README	Mon Jan 12 13:03:06 2009
@@ -17,7 +17,9 @@
 
 If your server's Skype client(s) has got the Skype credits, Skypiax works for SkypeOut calls too.
 
-You can use it from the dialplan, eg with the provided modified "default.xml" dialplan, you can call "sip:skype/remote_skypename__OR__skypeout_phonenumber" for calling via the Skype network from a SIP softphone to remote_skypename or to a phone number via SkypeOut, or you can call the "2908" extension from any phone to be bridged to the Skype Test Call).
+You can use it from the dialplan, eg with the provided modified "default.xml" dialplan, you can call a "skype uri" that's the word 'skype' followed by a slash and a destination: "skype/remote_skypename__OR__skypeout_phonenumber" for calling via the Skype network. Eg "skype/echo123" or "skype/+18007844444".
+
+You can use the "skype uri" of the provided dialplan also directly for a SIP softphone, eg X-Lite. 
 
 With the provided skypiax.conf.xml all incoming Skype calls will be routed to the "5000" extension, the IVR in default FreeSWITCH installation.
 
@@ -25,7 +27,7 @@
 
 On a Linux machine with 3GB ram and a quad core intel6600, we got no problem with 20 concurrent calls, and plenty of room for adding more Skypiax channels (100? not tested).
 
-On Windows, no need to do anything special, the Skype client is lighter on CPU.
+On Windows, no need to do anything special, the Skype client is lighter on CPU. 
 
 
 ''Skypiax is now pre-beta, but usable for testing and finding bugs :-).''


From anthm at freeswitch.org  Mon Jan 12 11:12:09 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 13:12:09 -0600
Subject: [Freeswitch-svn] [commit] r11145 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Mon Jan 12 13:12:09 2009
New Revision: 11145

Log:
adjust buffering sizes to allow resampling of high defination audio codecs so they can be transcoded to lower and higher levels

Modified:
   freeswitch/trunk/src/switch_core_file.c

Modified: freeswitch/trunk/src/switch_core_file.c
==============================================================================
--- freeswitch/trunk/src/switch_core_file.c	(original)
+++ freeswitch/trunk/src/switch_core_file.c	Mon Jan 12 13:12:09 2009
@@ -204,11 +204,12 @@
 
 		if (fh->resampler->to_len < want || fh->resampler->to_len > orig_len) {
 			if (!fh->buffer) {
-				switch_buffer_create_dynamic(&fh->buffer, fh->resampler->to_len * 4, fh->resampler->to_len * 8, fh->resampler->to_len * 32);
+				int factor = fh->resampler->to_len * fh->samplerate / 1000;
+				switch_buffer_create_dynamic(&fh->buffer, factor, factor, 0);
 				switch_assert(fh->buffer);
 			}
 			if (!fh->dbuf) {
-				fh->dbuflen = fh->resampler->to_len * 10;
+				fh->dbuflen = want * 2;
 				fh->dbuf = switch_core_alloc(fh->memory_pool, fh->dbuflen);
 			}
 			switch_assert(fh->resampler->to_len <= fh->dbuflen);
@@ -217,7 +218,7 @@
 			switch_buffer_write(fh->buffer, fh->dbuf, fh->resampler->to_len * 2);
 
 			if (switch_buffer_inuse(fh->buffer) < want * 2) {
-				*len = want - fh->resampler->to_len;
+				*len = want;
 				goto more;
 			}
 			*len = switch_buffer_read(fh->buffer, data, orig_len * 2) / 2;


From anthm at freeswitch.org  Mon Jan 12 11:36:04 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 13:36:04 -0600
Subject: [Freeswitch-svn] [commit] r11146 -
	freeswitch/trunk/src/mod/endpoints/mod_sofia
Message-ID: 

Author: anthm
Date: Mon Jan 12 13:36:04 2009
New Revision: 11146

Log:
make rtp bug compensation configurable

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	Mon Jan 12 13:36:04 2009
@@ -433,6 +433,7 @@
 	sofia_presence_type_t pres_type;
 	sofia_media_options_t media_options;
 	uint32_t force_subscription_expires;
+	switch_rtp_bug_flag_t auto_rtp_bugs;
 };
 
 struct private_object {

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	Mon Jan 12 13:36:04 2009
@@ -1208,6 +1208,31 @@
 	}
 }
 
+static void parse_rtp_bugs(sofia_profile_t *profile, const char *str)
+{
+	if (switch_stristr("clear", str)) {
+		profile->auto_rtp_bugs = 0;
+	}
+
+	if (switch_stristr("CISCO_SKIP_MARK_BIT_2833", str)) {
+		profile->auto_rtp_bugs |= RTP_BUG_CISCO_SKIP_MARK_BIT_2833;
+	}
+
+	if (switch_stristr("~CISCO_SKIP_MARK_BIT_2833", str)) {
+		profile->auto_rtp_bugs &= ~RTP_BUG_CISCO_SKIP_MARK_BIT_2833;
+	}
+	
+	if (switch_stristr("SONUS_SEND_INVALID_TIMESTAMP_2833", str)) {
+		profile->auto_rtp_bugs |= RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833;
+	}
+
+	if (switch_stristr("~SONUS_SEND_INVALID_TIMESTAMP_2833", str)) {
+		profile->auto_rtp_bugs &= ~RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833;
+	}
+
+
+}
+
 switch_status_t reconfig_sofia(sofia_profile_t *profile)
 {
 	switch_xml_t cfg, xml = NULL, xprofile, profiles, gateways_tag, domain_tag, domains_tag, aliases_tag, alias_tag, settings, param;
@@ -1250,6 +1275,8 @@
 					char *val = (char *) switch_xml_attr_soft(param, "value");
 					if (!strcasecmp(var, "debug")) {
 						profile->debug = atoi(val);
+					} else if (!strcasecmp(var, "auto-rtp-bugs")) {
+						parse_rtp_bugs(profile, val);
 					} else if (!strcasecmp(var, "user-agent-string")) { 
 						profile->user_agent = switch_core_strdup(profile->pool, val);
 					} else if (!strcasecmp(var, "dtmf-type")) {
@@ -1639,6 +1666,8 @@
 					goto done;
 				}
 
+				profile->auto_rtp_bugs = RTP_BUG_CISCO_SKIP_MARK_BIT_2833 | RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833;
+
 				profile->pool = pool;
 				profile->user_agent = SOFIA_USER_AGENT;
 
@@ -1694,6 +1723,8 @@
 						if (switch_true(val)) {
 							profile->rport_level = 2;
 						}
+					} else if (!strcasecmp(var, "auto-rtp-bugs")) {
+						parse_rtp_bugs(profile, val);
 					} else if (!strcasecmp(var, "dbname")) {
 						profile->dbname = switch_core_strdup(profile->pool, val);
 					} else if (!strcasecmp(var, "presence-hosts")) {

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	Mon Jan 12 13:36:04 2009
@@ -2275,19 +2275,25 @@
 	}
 
 	if ((tech_pvt->origin = switch_core_session_strdup(session, (char *) sdp->sdp_origin->o_username))) {
-		if (strstr(tech_pvt->origin, "CiscoSystemsSIP-GW-UserAgent")) {
-			tech_pvt->rtp_bugs |= RTP_BUG_CISCO_SKIP_MARK_BIT_2833;
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Activate Buggy RFC2833 Mode!\n");
-		}
 
-		if (strstr(tech_pvt->origin, "Sonus_UAC")) {
-			tech_pvt->rtp_bugs |= RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833;
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, 
-							  "Hello,\nI see you have a Sonus!\n"
-							  "FYI, Sonus cannot follow the RFC on the proper way to send DTMF.\n"
-							  "Sadly, my creator had to spend several hours figuring this out so I thought you'd like to know that!\n"
-							  "Don't worry, DTMF will work but you may want to ask them to fix it......\n"
-							  );
+		if (tech_pvt->profile->auto_rtp_bugs & RTP_BUG_CISCO_SKIP_MARK_BIT_2833) {
+
+			if (strstr(tech_pvt->origin, "CiscoSystemsSIP-GW-UserAgent")) {
+				tech_pvt->rtp_bugs |= RTP_BUG_CISCO_SKIP_MARK_BIT_2833;
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Activate Buggy RFC2833 Mode!\n");
+			}
+		}
+		
+		if (tech_pvt->profile->auto_rtp_bugs & RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833) {
+			if (strstr(tech_pvt->origin, "Sonus_UAC")) {
+				tech_pvt->rtp_bugs |= RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833;
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, 
+								  "Hello,\nI see you have a Sonus!\n"
+								  "FYI, Sonus cannot follow the RFC on the proper way to send DTMF.\n"
+								  "Sadly, my creator had to spend several hours figuring this out so I thought you'd like to know that!\n"
+								  "Don't worry, DTMF will work but you may want to ask them to fix it......\n"
+								  );
+			}
 		}
 	}
 


From anthm at freeswitch.org  Mon Jan 12 11:38:41 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 13:38:41 -0600
Subject: [Freeswitch-svn] [commit] r11147 -
	freeswitch/trunk/conf/sip_profiles
Message-ID: 

Author: anthm
Date: Mon Jan 12 13:38:41 2009
New Revision: 11147

Log:
add example

Modified:
   freeswitch/trunk/conf/sip_profiles/internal.xml

Modified: freeswitch/trunk/conf/sip_profiles/internal.xml
==============================================================================
--- freeswitch/trunk/conf/sip_profiles/internal.xml	(original)
+++ freeswitch/trunk/conf/sip_profiles/internal.xml	Mon Jan 12 13:38:41 2009
@@ -180,6 +180,17 @@
     
     
     
+
+    
+    
+    
   
 
 


From brian at freeswitch.org  Mon Jan 12 12:35:37 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 14:35:37 -0600
Subject: [Freeswitch-svn] [commit] r11148 -
	freeswitch/trunk/src/mod/xml_int/mod_xml_rpc
Message-ID: 

Author: brian
Date: Mon Jan 12 14:35:37 2009
New Revision: 11148

Log:
add text/xml

Modified:
   freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c

Modified: freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
==============================================================================
--- freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	(original)
+++ freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	Mon Jan 12 14:35:37 2009
@@ -540,7 +540,7 @@
 			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "FreeSWITCH-Domain", fs_domain);
 		if (path_info)
 			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-Path-Info", path_info);
-		switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-URI", r->requestInfo.uri);
+			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-URI", r->requestInfo.uri);
 		if (r->requestInfo.query)
 			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-QUERY", r->requestInfo.query);
 		if (r->requestInfo.host)
@@ -659,6 +659,8 @@
 		ResponseAddField(r, "Content-Type", "text/html");
 	} else if (text) {
 		ResponseAddField(r, "Content-Type", "text/plain");
+	} else if (xml) {
+		ResponseAddField(r, "Content-Type", "text/xml");
 	}
 
 	for (i = 0; i < r->response_headers.size; i++) {


From anthm at freeswitch.org  Mon Jan 12 14:18:49 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 16:18:49 -0600
Subject: [Freeswitch-svn] [commit] r11149 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Mon Jan 12 16:18:48 2009
New Revision: 11149

Log:
yet another rfc 2833 patch.....

Modified:
   freeswitch/trunk/src/switch_rtp.c

Modified: freeswitch/trunk/src/switch_rtp.c
==============================================================================
--- freeswitch/trunk/src/switch_rtp.c	(original)
+++ freeswitch/trunk/src/switch_rtp.c	Mon Jan 12 16:18:48 2009
@@ -111,6 +111,7 @@
 	unsigned int out_digit_dur;
 	uint16_t in_digit_seq;
 	uint32_t in_digit_ts;
+	uint32_t in_digit_sanity;
 	uint32_t timestamp_dtmf;
 	uint16_t last_duration;
 	uint32_t flip;
@@ -1014,6 +1015,7 @@
 
 	switch_mutex_lock(rtp_session->flag_mutex);
 	switch_set_flag(rtp_session, SWITCH_RTP_FLAG_BREAK);
+	switch_set_flag(rtp_session, SWITCH_RTP_FLAG_FLUSH);
 	
 	if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_NOBLOCK)) {
 		switch_mutex_unlock(rtp_session->flag_mutex);
@@ -1351,6 +1353,8 @@
 			switch_core_timer_next(&rtp_session->timer);
 		}
 
+	recvfrom:
+
 		bytes = sizeof(rtp_msg_t);
 		status = switch_socket_recvfrom(rtp_session->from_addr, rtp_session->sock_input, 0, (void *) &rtp_session->recv_msg, &bytes);
 
@@ -1358,13 +1362,92 @@
 			ret = (int) bytes;
 			goto end;
 		}
+
+		if (rtp_session->dtmf_data.in_digit_sanity && !--rtp_session->dtmf_data.in_digit_sanity) {
+			rtp_session->dtmf_data.last_digit = 0;
+			rtp_session->dtmf_data.in_digit_ts = 0;
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed DTMF sanity check.\n");
+		}
+
+		/* RFC2833 ... like all RFC RE: VoIP, guaranteed to drive you to insanity! 
+		   We know the real rules here, but if we enforce them, it's an interop nightmare so,
+		   we put up with as much as we can so we don't have to deal with being punished for
+		   doing it right. Nice guys finish last!
+		 */
+		if (bytes && !switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA) && 
+			!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PASS_RFC2833) && rtp_session->recv_msg.header.pt == rtp_session->te) {
+			unsigned char *packet = (unsigned char *) rtp_session->recv_msg.body;
+			int end = packet[1] & 0x80 ? 1 : 0;
+			uint16_t duration = (packet[2] << 8) + packet[3];
+			char key = switch_rfc2833_to_char(packet[0]);
+			uint16_t in_digit_seq = ntohs((uint16_t) rtp_session->recv_msg.header.seq);
+			uint32_t ts = htonl(rtp_session->recv_msg.header.ts);
+
+			rtp_session->dtmf_data.in_digit_sanity = 2000;
+
+			if (in_digit_seq > rtp_session->dtmf_data.in_digit_seq) {
+
+				rtp_session->dtmf_data.in_digit_seq = in_digit_seq;
+
+#ifdef DEBUG_2833
+				
+				printf("read: %c %u %u %u %u %d %d\n", 
+					   key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, ts, duration, rtp_session->recv_msg.header.m, end);
+#endif
+
+				if (rtp_session->dtmf_data.last_duration > duration && ts == rtp_session->dtmf_data.in_digit_ts) {
+					rtp_session->dtmf_data.flip++;
+				}
+				
+				if (end) {
+					if (rtp_session->dtmf_data.in_digit_ts) {
+						switch_dtmf_t dtmf = { key, duration };
+
+						if (ts > rtp_session->dtmf_data.in_digit_ts) {
+							dtmf.duration += (ts - rtp_session->dtmf_data.in_digit_ts);
+						}
+						if (rtp_session->dtmf_data.flip) {
+							dtmf.duration += rtp_session->dtmf_data.flip * 0xFFFF;
+							rtp_session->dtmf_data.flip = 0;
+#ifdef DEBUG_2833
+							printf("you're welcome!\n");
+#endif
+						}
+
+#ifdef DEBUG_2833
+						printf("done digit=%c ts=%u start_ts=%u dur=%u ddur=%u\n", 
+							   dtmf.digit, ts, rtp_session->dtmf_data.in_digit_ts, duration, dtmf.duration);
+#endif
+						switch_rtp_queue_rfc2833_in(rtp_session, &dtmf);
+						rtp_session->dtmf_data.last_digit = rtp_session->dtmf_data.first_digit;
+
+						rtp_session->dtmf_data.in_digit_ts = 0;
+						rtp_session->dtmf_data.in_digit_sanity = 0;
+						do_cng = 1;
+					} else {
+						switch_cond_next();
+						goto recvfrom;
+					}
+
+				} else if (!rtp_session->dtmf_data.in_digit_ts) {
+					rtp_session->dtmf_data.in_digit_ts = ts;
+					rtp_session->dtmf_data.first_digit = key;
+				}
+
+				rtp_session->dtmf_data.last_duration = duration;
+#ifdef DEBUG_2833
+			} else {
+				printf("drop: %c %u %u %u %u %d %d\n", key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, ts, duration, m, end);
+#endif
+			}
+		}
 		
-		if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_FLUSH)) {
-			do_flush(rtp_session);
-			switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_FLUSH);
-			bytes = 0;
+		if (rtp_session->dtmf_data.in_digit_ts) {
+			switch_cond_next();
+			goto recvfrom;
 		}
 
+
 		if (rtp_session->max_missed_packets) {
 			if (bytes) {
 				rtp_session->missed_count = 0;
@@ -1379,11 +1462,16 @@
 		if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_BREAK) || (bytes && bytes == 4 && *((int *)&rtp_session->recv_msg) == UINT_MAX)) {
 			switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_BREAK);
 			do_2833(rtp_session);
-			rtp_flush_read_buffer(rtp_session);
 			bytes = 0;
 			return_cng_frame();
 		}
 
+		if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_FLUSH)) {
+			do_flush(rtp_session);
+			switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_FLUSH);
+			bytes = 0;
+		}
+		
 		if (bytes && bytes < 5) {
 			continue;
 		}
@@ -1541,63 +1629,7 @@
 		}
 
 
-
-		/* RFC2833 ... like all RFC RE: VoIP, guaranteed to drive you to insanity! 
-		   We know the real rules here, but if we enforce them, it's an interop nightmare so,
-		   we put up with as much as we can so we don't have to deal with being punished for
-		   doing it right. Nice guys finish last!
-		 */
-		if (bytes && !switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PASS_RFC2833) && rtp_session->recv_msg.header.pt == rtp_session->te) {
-			unsigned char *packet = (unsigned char *) rtp_session->recv_msg.body;
-			int end = packet[1] & 0x80 ? 1 : 0;
-			uint16_t duration = (packet[2] << 8) + packet[3];
-			char key = switch_rfc2833_to_char(packet[0]);
-			uint16_t in_digit_seq = ntohs((uint16_t) rtp_session->recv_msg.header.seq);
-
-			if (in_digit_seq > rtp_session->dtmf_data.in_digit_seq) {
-				uint32_t ts = htonl(rtp_session->recv_msg.header.ts);
-				//int m = rtp_session->recv_msg.header.m;
-
-				rtp_session->dtmf_data.in_digit_seq = in_digit_seq;
-
-				//printf("%c %u %u %u\n", key, in_digit_seq, ts, duration);
-
-				if (rtp_session->dtmf_data.last_duration > duration && ts == rtp_session->dtmf_data.in_digit_ts) {
-					rtp_session->dtmf_data.flip++;
-				}
-
-				if (end) {
-					if (rtp_session->dtmf_data.in_digit_ts) {
-						switch_dtmf_t dtmf = { key, duration };
-
-						if (ts > rtp_session->dtmf_data.in_digit_ts) {
-							dtmf.duration += (ts - rtp_session->dtmf_data.in_digit_ts);
-						}
-						if (rtp_session->dtmf_data.flip) {
-							dtmf.duration += rtp_session->dtmf_data.flip * 0xFFFF;
-							rtp_session->dtmf_data.flip = 0;
-							//printf("you're welcome!\n");
-						}
-						//printf("done digit=%c ts=%u start_ts=%u dur=%u ddur=%u\n", 
-						//dtmf.digit, ts, rtp_session->dtmf_data.in_digit_ts, duration, dtmf.duration);
-						switch_rtp_queue_rfc2833_in(rtp_session, &dtmf);
-						switch_set_flag_locked(rtp_session, SWITCH_RTP_FLAG_BREAK);
-						rtp_session->dtmf_data.last_digit = rtp_session->dtmf_data.first_digit;
-					}
-					rtp_session->dtmf_data.in_digit_ts = 0;
-				} else if (!rtp_session->dtmf_data.in_digit_ts) {
-					rtp_session->dtmf_data.in_digit_ts = ts;
-					rtp_session->dtmf_data.first_digit = key;
-				}
-
-				rtp_session->dtmf_data.last_duration = duration;
-
-			}
-
-			do_cng = 1;
-		}
-
-	  timer_check:
+	timer_check:
 
 		if (do_cng) {
 			uint8_t *data = (uint8_t *) rtp_session->recv_msg.body;
@@ -1703,10 +1735,6 @@
 	}
 	switch_mutex_unlock(rtp_session->dtmf_data.dtmf_mutex);
 
-	if (bytes) {
-		rtp_flush_read_buffer(rtp_session);
-	}
-
 	return bytes;
 }
 


From brian at freeswitch.org  Mon Jan 12 14:38:17 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 16:38:17 -0600
Subject: [Freeswitch-svn] [commit] r11150 -
	freeswitch/trunk/src/mod/xml_int/mod_xml_rpc
Message-ID: 

Author: brian
Date: Mon Jan 12 16:38:17 2009
New Revision: 11150

Log:
fix missing ref

Modified:
   freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c

Modified: freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
==============================================================================
--- freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	(original)
+++ freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	Mon Jan 12 16:38:17 2009
@@ -674,7 +674,7 @@
 	switch_snprintf(buf, sizeof(buf), "Connection: close\r\n");
 	ConnWrite(r->conn, buf, (uint32_t) strlen(buf));
 
-	if (html || text) {
+	if (html || text || xml) {
 		ConnWrite(r->conn, "\r\n", 2);
 	}
 


From brian at freeswitch.org  Mon Jan 12 14:38:53 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 16:38:53 -0600
Subject: [Freeswitch-svn] [commit] r11151 - freeswitch/trunk
Message-ID: 

Author: brian
Date: Mon Jan 12 16:38:52 2009
New Revision: 11151

Log:
add 48k sound targets

Modified:
   freeswitch/trunk/Makefile.am

Modified: freeswitch/trunk/Makefile.am
==============================================================================
--- freeswitch/trunk/Makefile.am	(original)
+++ freeswitch/trunk/Makefile.am	Mon Jan 12 16:38:52 2009
@@ -32,15 +32,20 @@
 moh: sounds-music-8000
 moh-install: sounds-music-8000-install
 
-hd-sounds: sounds-en-us-callie-8000 sounds-en-us-callie-16000
-hd-sounds-install: sounds-en-us-callie-8000-install sounds-en-us-callie-16000-install
-hd-moh: sounds-music-8000 sounds-music-16000
-hd-moh-install: sounds-music-8000-install sounds-music-16000-install
-
-uhd-sounds: sounds-en-us-callie-8000 sounds-en-us-callie-16000 sounds-en-us-callie-32000
-uhd-sounds-install: sounds-en-us-callie-8000-install sounds-en-us-callie-16000-install sounds-en-us-callie-32000-install
-uhd-moh: sounds-music-8000 sounds-music-16000 sounds-music-32000
-uhd-moh-install: sounds-music-8000-install sounds-music-16000-install sounds-music-32000-install
+hd-sounds: sounds sounds-en-us-callie-16000
+hd-sounds-install: sounds-install sounds-en-us-callie-16000-install
+hd-moh: moh sounds-music-16000
+hd-moh-install: moh-install sounds-music-16000-install
+
+uhd-sounds: hd-sounds sounds-en-us-callie-32000
+uhd-sounds-install: hd-sounds-install sounds-en-us-callie-32000-install
+uhd-moh: hd-moh sounds-music-32000
+uhd-moh-install: hd-moh-install sounds-music-32000-install
+
+cd-sounds: uhd-sounds sounds-en-us-callie-48000
+cd-sounds-install: uhd-sounds-install sounds-en-us-callie-48000-install
+cd-moh: uhd-moh sounds-music-48000
+cd-moh-install: uhd-moh-install sounds-music-48000-install
 
 libdir = @libdir@
 bindir = @bindir@


From anthm at freeswitch.org  Mon Jan 12 15:14:56 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 17:14:56 -0600
Subject: [Freeswitch-svn] [commit] r11152 - in freeswitch/trunk/src: .
	mod/formats/mod_local_stream
Message-ID: 

Author: anthm
Date: Mon Jan 12 17:14:55 2009
New Revision: 11152

Log:
fix another buffering regression

Modified:
   freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c
   freeswitch/trunk/src/switch_core_file.c

Modified: freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c
==============================================================================
--- freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c	(original)
+++ freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c	Mon Jan 12 17:14:55 2009
@@ -32,7 +32,7 @@
  */
 #include 
 /* for apr_pstrcat */
-#define DEFAULT_PREBUFFER_SIZE 1024 * 32
+#define DEFAULT_PREBUFFER_SIZE 1024 * 64
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_local_stream_load);
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_local_stream_shutdown);

Modified: freeswitch/trunk/src/switch_core_file.c
==============================================================================
--- freeswitch/trunk/src/switch_core_file.c	(original)
+++ freeswitch/trunk/src/switch_core_file.c	Mon Jan 12 17:14:55 2009
@@ -158,8 +158,9 @@
 		int asis = switch_test_flag(fh, SWITCH_FILE_NATIVE);
 
 		if (!switch_test_flag(fh, SWITCH_FILE_BUFFER_DONE)) {
-			if (!switch_buffer_inuse(fh->pre_buffer)) {
-				rlen = asis ? fh->pre_buffer_datalen : fh->pre_buffer_datalen / 2;
+			rlen = asis ? fh->pre_buffer_datalen : fh->pre_buffer_datalen / 2;
+
+			if (switch_buffer_inuse(fh->pre_buffer) < rlen * 2) {
 				if ((status = fh->file_interface->file_read(fh, fh->pre_buffer_data, &rlen)) != SWITCH_STATUS_SUCCESS || !rlen) {
 					switch_set_flag(fh, SWITCH_FILE_BUFFER_DONE);
 				} else {


From ctrix at freeswitch.org  Mon Jan 12 15:24:44 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 17:24:44 -0600
Subject: [Freeswitch-svn] [commit] r11153 - in
	freeswitch/branches/ctrix/mod_airpe: . config
Message-ID: 

Author: ctrix
Date: Mon Jan 12 17:24:44 2009
New Revision: 11153

Log:
Initial import of airpe...
Not yet fully working, don't expect too much.



Added:
   freeswitch/branches/ctrix/mod_airpe/airpe_api.c
   freeswitch/branches/ctrix/mod_airpe/airpe_apps.c
   freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
   freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c
   freeswitch/branches/ctrix/mod_airpe/airpe_if_win32.c
   freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c
   freeswitch/branches/ctrix/mod_airpe/config/
   freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.h

Added: freeswitch/branches/ctrix/mod_airpe/airpe_api.c
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_api.c	Mon Jan 12 17:24:44 2009
@@ -0,0 +1,262 @@
+/* 
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II 
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH mod_airpe.
+ *
+ * The Initial Developer of the Original Code is
+ * Massimo Cetra 
+ *
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Thanks to gmaruzz for his work on skypiax (both * and freeswitch).
+ * Some of his code inspired this module
+ *
+ */
+
+#include "mod_airpe.h"
+
+#define AIRPE_MOODTEXT_SYNTAX "airpe_moodtext  "
+SWITCH_STANDARD_API(airpe_moodtext_command)
+{
+    int argc = 0;
+    char *argv[2] = { 0 };
+    char *mycmd  = NULL;
+    char *client = NULL;
+    airpe_interface_t *airpe = NULL;
+
+    if (!switch_strlen_zero(cmd) && (mycmd = strdup(cmd))) {
+	argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+	switch_assert(argv[0]);
+    }
+
+    if ( argc < 1 ) {
+	stream->write_function(stream, "-USAGE: %s\n", AIRPE_MOODTEXT_SYNTAX);
+	goto done;
+    }
+
+    client = argv[0];
+    airpe = airpe_find_interface(client);
+
+    if ( !airpe ) {
+	stream->write_function(stream, "-ERR interface not found for client ");
+	stream->write_function(stream, client);
+	stream->write_function(stream, "\n");
+	goto done;
+    } 
+
+    if ( argc == 1 ) {
+        stream->write_function(stream, "+OK: ");
+	if ( airpe->mood_text )
+	    stream->write_function(stream, airpe->mood_text);
+	else
+	    stream->write_function(stream, "UNKNOWN");
+	stream->write_function(stream, "\n");
+    }
+    else {
+	if ( airpe_set_mood_text(airpe, argv[1]) != SWITCH_STATUS_SUCCESS ) {
+	    stream->write_function(stream, "-ERR cannot send message to the client\n");
+	    goto done;
+	}
+	else {
+	    char buf[SKYPE_MSG_LEN];
+	    snprintf(buf, SKYPE_MSG_LEN, "SET PROFILE MOOD_TEXT %s", airpe->mood_text );
+	    airpe_cmd_write(airpe, buf);
+	}
+	stream->write_function(stream, "+OK mood_text set.\n");
+    }
+
+ done:
+    return SWITCH_STATUS_SUCCESS;
+}
+
+#define AIRPE_INFO_SYNTAX "airpe_status "
+SWITCH_STANDARD_API(airpe_info_command)
+{
+    int argc = 0;
+    char *argv[4] = { 0 };
+    char *mycmd  = NULL;
+    char *client = NULL;
+    char buf[512];
+    airpe_interface_t *airpe = NULL;
+
+    if (!switch_strlen_zero(cmd) && (mycmd = strdup(cmd))) {
+	argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+	switch_assert(argv[0]);
+    }
+
+    if ( argc < 1 ) {
+	stream->write_function(stream, "-USAGE: %s\n", AIRPE_INFO_SYNTAX);
+	goto done;
+    }
+
+    client = argv[0];
+    airpe = airpe_find_interface(client);
+
+    if ( !airpe ) {
+	stream->write_function(stream, "-ERR interface not found for client ");
+	stream->write_function(stream, client);
+	stream->write_function(stream, "\n");
+	goto done;
+    } 
+
+    switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Client name", airpe->name);
+    stream->write_function(stream, buf);
+    switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Dialplan", airpe->dialplan);
+    stream->write_function(stream, buf);
+    switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Context", airpe->context);
+    stream->write_function(stream, buf);
+    switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Destination", airpe->destination);
+    stream->write_function(stream, buf);
+    switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Skype username", airpe->skype_user);
+    stream->write_function(stream, buf);
+    if ( airpe->audio_in_port > 0 )
+	switch_snprintf(buf, sizeof(buf), "%-20s: %d\n", "Audio in port", airpe->audio_in_port);
+    else
+	switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Audio in port", "NOT SET");
+    stream->write_function(stream, buf);
+    if ( airpe->audio_in_port > 0 )
+	switch_snprintf(buf, sizeof(buf), "%-20s: %d\n", "Audio out port", airpe->audio_out_port);
+    else
+	switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Audio out port", "NOT SET");
+    stream->write_function(stream, buf);
+
+    switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Connection status", skype_conn_status_string(airpe->conn_status) );
+    stream->write_function(stream, buf);
+    switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Client status", skype_user_status_string(airpe->user_status) );
+    stream->write_function(stream, buf);
+
+    switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Skype version", (airpe->skype_version) ? airpe->skype_version : "Unknown" );
+    stream->write_function(stream, buf);
+    switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Mood text", (airpe->mood_text ) ? airpe->mood_text : "Unknown" );
+    stream->write_function(stream, buf);
+
+ done:
+    return SWITCH_STATUS_SUCCESS;
+}
+
+#define AIRPE_STATUS_SYNTAX "airpe_status  "
+SWITCH_STANDARD_API(airpe_status_command)
+{
+    int argc = 0;
+    char *argv[4] = { 0 };
+    char *mycmd  = NULL;
+    char *client = NULL;
+    char *cstatus= NULL;
+    airpe_interface_t *airpe = NULL;
+
+    if (!switch_strlen_zero(cmd) && (mycmd = strdup(cmd))) {
+	argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+	switch_assert(argv[0]);
+    }
+
+    if ( argc < 1 ) {
+	stream->write_function(stream, "-USAGE: %s\n", AIRPE_STATUS_SYNTAX);
+	goto done;
+    }    
+
+    client = argv[0];
+    if ( argc > 1 ) 
+	cstatus = argv[1];
+
+    airpe = airpe_find_interface(client);
+
+    if ( !airpe ) {
+	stream->write_function(stream, "-ERR interface not found: \n");
+	stream->write_function(stream, client);
+	stream->write_function(stream, "\n");
+	goto done;
+    } 
+
+    if ( !cstatus ) {
+	const char *str_status = NULL;
+	str_status = skype_user_status_string( airpe->user_status );
+	stream->write_function(stream, "+OK status is ");
+	if ( str_status )
+	    stream->write_function(stream, str_status);
+	else
+	    stream->write_function(stream, "... uhmmm, ehmm, DUNNO... ");
+	stream->write_function(stream, "\n");
+    }
+    else {
+	char buf[SKYPE_MSG_LEN];
+	const char *str_status = NULL;
+
+	if      ( !strncasecmp(cstatus, "unknown", sizeof("unknown") ) )
+	    str_status = skype_user_status_string(USER_STATUS_UNKNOWN);
+	else if ( !strncasecmp(cstatus, "online", sizeof("online") ) )
+	    str_status = skype_user_status_string(USER_STATUS_ONLINE);
+	else if ( !strncasecmp(cstatus, "offline", sizeof("offline") ) )
+	    str_status = skype_user_status_string(USER_STATUS_OFFLINE);
+	else if ( !strncasecmp(cstatus, "skypeme", sizeof("skypeme") ) )
+	    str_status = skype_user_status_string(USER_STATUS_SKYPEME);
+	else if ( !strncasecmp(cstatus, "away", sizeof("away") ) )
+	    str_status = skype_user_status_string(USER_STATUS_AWAY);
+	else if ( !strncasecmp(cstatus, "na", sizeof("na") ) )
+	    str_status = skype_user_status_string(USER_STATUS_NA);
+	else if ( !strncasecmp(cstatus, "dnd", sizeof("dnd") ) )
+	    str_status = skype_user_status_string(USER_STATUS_DND);
+	else if ( !strncasecmp(cstatus, "invisible", sizeof("invisible") ) )
+	    str_status = skype_user_status_string(USER_STATUS_INVISIBLE);
+	else if ( !strncasecmp(cstatus, "loggedout", sizeof("loggedout") ) )
+	    str_status = skype_user_status_string(USER_STATUS_LOGGEDOUT);
+
+	if ( str_status ) {
+	    snprintf(buf, SKYPE_MSG_LEN, "SET USERSTATUS %s", cstatus );
+	    if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS ) {
+		stream->write_function(stream, "-ERR cannot send message to the client\n");
+		goto done;
+	    }
+	    stream->write_function(stream, "+OK status set.\n");
+	}
+	else {
+	    stream->write_function(stream, "-ERR invalid status string\n");
+	}
+    }
+
+ done:
+    return SWITCH_STATUS_SUCCESS;
+}
+
+
+
+switch_status_t airpe_register_api( switch_loadable_module_interface_t **module_interface ) {
+
+    switch_api_interface_t *api;
+
+    switch_console_set_complete("add airpe_moodtext ");
+    SWITCH_ADD_API(api, "airpe_moodtext", "sets the mood text of an airpe client", airpe_moodtext_command, AIRPE_MOODTEXT_SYNTAX);
+
+    switch_console_set_complete("add airpe_info ");
+    SWITCH_ADD_API(api, "airpe_info", "shows the status of an airpe client", airpe_info_command, AIRPE_INFO_SYNTAX);
+
+    switch_console_set_complete("add airpe_status ");
+    SWITCH_ADD_API(api, "airpe_status", "sets the status of an airpe client", airpe_status_command, AIRPE_STATUS_SYNTAX);
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
+ */

Added: freeswitch/branches/ctrix/mod_airpe/airpe_apps.c
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_apps.c	Mon Jan 12 17:24:44 2009
@@ -0,0 +1,56 @@
+/* 
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II 
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH mod_airpe.
+ *
+ * The Initial Developer of the Original Code is
+ * Massimo Cetra 
+ *
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Thanks to gmaruzz for his work on skypiax (both * and freeswitch).
+ * Some of his code inspired this module
+ *
+ */
+
+#include "mod_airpe.h"
+
+SWITCH_STANDARD_APP(airpe_app_test) 
+{
+}
+
+
+switch_status_t airpe_register_apps( switch_loadable_module_interface_t **module_interface ) {
+    switch_application_interface_t *app_interface;
+
+    SWITCH_ADD_APP(app_interface, "airpe_test", "test text", "test text", airpe_app_test, "", SAF_SUPPORT_NOMEDIA);
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
+ */
+

Added: freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	Mon Jan 12 17:24:44 2009
@@ -0,0 +1,770 @@
+/* 
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II 
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH mod_airpe.
+ *
+ * The Initial Developer of the Original Code is
+ * Massimo Cetra 
+ *
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Thanks to gmaruzz for his work on skypiax (both * and freeswitch).
+ * Some of his code inspired this module
+ *
+ */
+
+#include "mod_airpe.h"
+
+static struct {
+    USER_STATUS 	status;
+    const char		*name;
+} user_status_names[] = {
+    { USER_STATUS_UNKNOWN,	"UNKNOWN" },
+    { USER_STATUS_ONLINE,	"ONLINE" },
+    { USER_STATUS_OFFLINE,	"OFFLINE" },
+    { USER_STATUS_SKYPEME,	"SKYPEME" },
+    { USER_STATUS_AWAY,		"AWAY" },
+    { USER_STATUS_NA,		"NA" },
+    { USER_STATUS_DND,		"DND" },
+    { USER_STATUS_INVISIBLE,	"INVISIBLE" },
+    { USER_STATUS_LOGGEDOUT,	"LOGGEDOUT" },
+};
+
+static struct {
+    CONN_STATUS 	status;
+    const char		*name;
+} connection_status_names[] = {
+    { CONN_STATUS_UNKNOWN,	"UNKNOWN" },
+    { CONN_STATUS_OFFLINE,	"OFFLINE" },
+    { CONN_STATUS_CONNECTING,	"CONNECTING" },
+    { CONN_STATUS_PAUSING,	"PAUSING" },
+    { CONN_STATUS_ONLINE,	"ONLINE" },
+};
+
+/* ************************************************************************* */
+
+const char *skype_user_status_string(USER_STATUS st) {
+    int t;
+    const char *ret = NULL;
+
+    for ( t = 0; t < sizeof(user_status_names) / sizeof(user_status_names[0]); t++ ) {
+	if ( user_status_names[t].status == st ) {
+	    ret = user_status_names[t].name;
+	    break;
+	}
+    }
+    return ret;
+}
+
+USER_STATUS skype_user_status(const char *str) {
+    int t;
+    USER_STATUS ret = USER_STATUS_UNKNOWN;
+
+    for ( t = 0; t < sizeof(user_status_names) / sizeof(user_status_names[0]); t++ ) {
+	if ( !strncasecmp(user_status_names[t].name, str, strlen(user_status_names[t].name) ) ) {
+	    ret = user_status_names[t].status;
+	    break;
+	}
+    }
+    return ret;
+}
+
+/* ************************************************************************* */
+
+const char *skype_conn_status_string(CONN_STATUS st) {
+    int t;
+    const char *ret = NULL;
+
+    for ( t = 0; t < sizeof(connection_status_names) / sizeof(connection_status_names[0]); t++ ) {
+	if ( connection_status_names[t].status == st ) {
+	    ret = connection_status_names[t].name;
+	    break;
+	}
+    }
+    return ret;
+}
+
+CONN_STATUS skype_conn_status(const char *str) {
+    int t;
+    CONN_STATUS ret = CONN_STATUS_UNKNOWN;
+
+    for ( t = 0; t < sizeof(connection_status_names) / sizeof(connection_status_names[0]); t++ ) {
+	if ( !strncasecmp(connection_status_names[t].name, str, strlen(connection_status_names[t].name) ) ) {
+	    ret = connection_status_names[t].status;
+	    break;
+	}
+    }
+    return ret;
+}
+
+/* ************************************************************************* */
+
+switch_status_t	airpe_set_version(airpe_interface_t *airpe, char *string) {
+    assert(airpe);
+    switch_safe_free(airpe->skype_version);
+    if ( string )
+	airpe->skype_version = strdup(string);
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t	airpe_set_mood_text(airpe_interface_t *airpe, char *string) {
+    assert(airpe);
+    switch_safe_free(airpe->mood_text);
+    if ( string )
+        airpe->mood_text = strdup(string);
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t	airpe_set_partner_displayname(airpe_interface_t *airpe, char *string) {
+    assert(airpe);
+    switch_safe_free(airpe->partner_displayname);
+    if ( string )
+	airpe->partner_displayname = strdup(string);
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t	airpe_set_partner_handle(airpe_interface_t *airpe, char *string) {
+    assert(airpe);
+    switch_safe_free(airpe->partner_handle);
+    if ( string )
+	airpe->partner_handle = strdup(string);
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t airpe_cmd_write(airpe_interface_t *airpe, char *msg) {
+    if ( airpe->debug )
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "msg to airpe client %s: %s\n", airpe->name, msg);
+    return airpe_skype_send_message(airpe->skype_window, msg);
+}
+
+switch_status_t airpe_originate(airpe_interface_t *airpe, char *dest) {
+    char msg[SKYPE_MSG_LEN];
+
+    /*
+    Those commands are outdated and shouldn't be used
+    Documented so that no one adds them.
+    airpe_cmd_write(p, "SET AGC OFF");
+    airpe_cmd_write(p, "SET AEC OFF");
+    */
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "airpe client %s: Originating to %s\n", airpe->name, dest);
+
+    snprintf(msg, sizeof(msg), "CALL %s", dest);
+
+    if ( (airpe_cmd_write(airpe, msg) != SWITCH_STATUS_SUCCESS) ) {
+	return SWITCH_STATUS_FALSE;
+    }
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t airpe_explicit_hangup(airpe_interface_t *airpe) {
+    char buf[SKYPE_MSG_LEN];
+
+    if ( airpe->active_call_id > 0 ) {
+	snprintf(buf, sizeof(buf), "SET CALL %d STATUS FINISHED", airpe->active_call_id);
+	return airpe_cmd_write(airpe, buf);
+    }
+    return SWITCH_STATUS_FALSE;
+}
+
+
+
+/*****************************************************************************
+    SKYPE AUDIO
+ *****************************************************************************/
+
+switch_status_t airpe_hangup( private_object_t *pvt ) {
+    airpe_interface_t *airpe;
+
+    assert(pvt);
+    assert(pvt->session);
+    assert(pvt->airpe);
+    
+    airpe = pvt->airpe;
+
+    if ( airpe->audio_in_active_socket ) {
+	switch_socket_shutdown(airpe->audio_in_active_socket, SWITCH_SHUTDOWN_READWRITE);
+	switch_socket_close(airpe->audio_in_active_socket);
+	airpe->audio_in_active_socket = 0;
+    }
+
+    if ( airpe->audio_out_active_socket ) {
+	switch_socket_shutdown(airpe->audio_out_active_socket, SWITCH_SHUTDOWN_READWRITE);
+	switch_socket_close(airpe->audio_out_active_socket);
+	airpe->audio_out_active_socket = 0;
+    }
+
+    airpe->tech_pvt = NULL;
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t airpe_audio_write( private_object_t *pvt, switch_frame_t *frame ) {
+    switch_socket_t *inbound_socket = NULL;
+    switch_memory_pool_t *pool;
+    airpe_interface_t *airpe;
+    switch_status_t rv;
+    switch_size_t mlen;
+    char *mbuf;
+
+    assert(pvt);
+    assert(pvt->session);
+    assert(pvt->airpe);
+    
+    airpe = pvt->airpe;
+    pool = switch_core_session_get_pool(pvt->session);
+
+    if ( !airpe->audio_in_active_socket ) {
+	rv = switch_socket_accept(&inbound_socket, airpe->audio_in_socket, pool);
+        if ( rv == SWITCH_STATUS_SUCCESS ) {
+	    airpe->audio_in_active_socket = inbound_socket;
+	    switch_sleep(100000);
+	}
+	else {
+	    return SWITCH_STATUS_FALSE;
+	}
+    }
+
+    mbuf = frame->data;
+    mlen = frame->datalen;
+    rv = switch_socket_send(airpe->audio_in_active_socket, mbuf, &mlen);
+
+    return rv;
+}
+
+switch_status_t airpe_audio_read( private_object_t *pvt ) {
+    switch_socket_t *inbound_socket = NULL;
+    switch_memory_pool_t *pool;
+    airpe_interface_t *airpe;
+    switch_status_t rv;
+    switch_size_t mlen;
+    char *ptr;
+
+    assert(pvt);
+    assert(pvt->session);
+    assert(pvt->airpe);
+    
+    airpe = pvt->airpe;
+    pool = switch_core_session_get_pool(pvt->session);
+
+    if ( !airpe->audio_out_active_socket ) {
+	rv = switch_socket_accept(&inbound_socket, airpe->audio_out_socket, pool);
+        if ( rv == SWITCH_STATUS_SUCCESS ) {
+	    airpe->audio_out_active_socket = inbound_socket;
+	    switch_sleep(100000);
+	}
+	else {
+	    return SWITCH_STATUS_FALSE;
+	}
+    }
+
+    pvt->read_frame.datalen = 0;
+    ptr = pvt->read_frame.data;
+    mlen = sizeof(pvt->databuf);
+    rv = switch_socket_recv(airpe->audio_out_active_socket, ptr, &mlen);
+
+    if ( (rv==SWITCH_STATUS_SUCCESS) ) {
+	    pvt->read_frame.datalen = mlen;
+    }
+//    if ( mlen == 0 )
+//	return SWITCH_STATUS_SUCCESS;
+
+    return rv;
+}
+
+/*****************************************************************************
+    SKYPE CONTROL MESSAGES
+ *****************************************************************************/
+
+static switch_status_t airpe_manage_incoming_call( airpe_interface_t *airpe, int callid ) {
+    char chan_name[256];
+    switch_channel_t *channel = NULL;
+    switch_core_session_t *new_session = NULL;
+    private_object_t *tech_pvt = NULL;
+
+    new_session = airpe_request_session(NULL);
+    if ( !new_session ) {
+	return SWITCH_STATUS_FALSE;
+    }
+
+    switch_core_session_add_stream(new_session, NULL);
+
+    tech_pvt = (private_object_t *) switch_core_session_alloc(new_session, sizeof(private_object_t));
+    if ( !tech_pvt ) {
+	switch_core_session_destroy(&new_session);
+	return SWITCH_STATUS_FALSE;
+    }
+    memset(tech_pvt, 0, sizeof(private_object_t));
+
+    channel = switch_core_session_get_channel(new_session);
+    assert(channel);
+
+    if ( airpe_tech_init(tech_pvt, new_session) != SWITCH_STATUS_SUCCESS ) {
+	switch_core_session_destroy(&new_session);
+	return SWITCH_STATUS_FALSE;
+    }
+    tech_pvt->airpe = airpe;
+
+    switch_snprintf(chan_name, sizeof(chan_name), MODNAME"/%s", airpe->name);
+    switch_channel_set_name(channel, chan_name);
+
+    tech_pvt->caller_profile = switch_caller_profile_new( switch_core_session_get_pool(new_session),
+                                    	    airpe->name, 	/* Username */
+					    airpe->dialplan,	/* Diaplan */
+					    airpe->partner_displayname,	/* cid_name */
+                                    	    airpe->partner_handle, 	/* cid_number */
+					    NULL, 		/* network_addr */
+					    NULL,		/* ani */
+                                            NULL, 		/* aniii */
+					    NULL, 		/* rdnis */
+					    MODNAME, 		/* source */
+					    airpe->context,	/* context */
+                                    	    airpe->destination	/* destination_number */
+					);
+
+    if ( !tech_pvt->caller_profile ) {
+	switch_core_session_destroy(&new_session);
+	return SWITCH_STATUS_FALSE;
+    }
+    else
+	switch_channel_set_caller_profile(channel, tech_pvt->caller_profile);
+
+
+    switch_set_flag(tech_pvt, TFLAG_INBOUND);
+    airpe->active_call_id = callid;
+    switch_channel_set_state(channel, CS_INIT);
+
+    if ( switch_core_session_thread_launch(new_session) != SWITCH_STATUS_SUCCESS ) {
+	airpe->active_call_id = 0;
+    	switch_core_session_destroy(&new_session);
+	return SWITCH_STATUS_FALSE;
+    }
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t airpe_manage_call_status( airpe_interface_t *airpe, int callid, const char *status ) {
+    char buf[SKYPE_MSG_LEN];
+    switch_core_session_t *session = NULL;
+    switch_channel_t *channel = NULL;
+
+    if ( airpe->active_call_id && airpe->active_call_id != callid ) {
+ADEBUG("CASE 1 - different call\n");
+	if      ( !strncmp(status, "UNPLACED", strlen("UNPLACED")) ) {	    
+	    snprintf(buf, sizeof(buf), "SET CALL %d STATUS FINISHED", callid);
+	    airpe_cmd_write(airpe, buf);
+	}
+	else {
+	    ADEBUG("*** (%d/%d) Unmanaged status %s\n", airpe->active_call_id, callid, status);
+	}
+
+    }
+    else if ( airpe->active_call_id && airpe->active_call_id == callid ) {
+ADEBUG("CASE 2 - my call\n");
+	if ( airpe->tech_pvt ) {
+	    assert(airpe->tech_pvt);
+	    session = airpe->tech_pvt->session;
+	    assert(session);
+
+	    channel = switch_core_session_get_channel(session);
+    	    assert(channel);
+	}
+
+	if ( !strncmp(status, "ROUTING", strlen("ROUTING")) ) {
+	}
+	else if ( !strncmp(status, "RINGING", strlen("RINGING")) ) {
+	    //if ( switch_test_flag(tech_pvt, TFLAG_OUTBOUND) ) {
+		//switch_channel_set_state(channel, CS_RINGING);
+	    switch_core_session_queue_indication(session, SWITCH_MESSAGE_INDICATE_RINGING);
+	    switch_channel_mark_ring_ready(channel);
+	    //}
+
+	    snprintf(buf, sizeof(buf), "ALTER CALL %d SET_INPUT PORT=\"%d\"", callid, airpe->audio_in_port);
+	    airpe_cmd_write(airpe, buf);
+	    snprintf(buf, sizeof(buf), "ALTER CALL %d SET_OUTPUT PORT=\"%d\"", callid, airpe->audio_out_port);
+	    airpe_cmd_write(airpe, buf);
+
+
+
+	    switch_channel_set_state(channel, CS_ROUTING);
+
+	}
+	else if ( !strncmp(status, "INPROGRESS", strlen("INPROGRESS")) ) {
+	    snprintf(buf, sizeof(buf), "ALTER CALL %d STOP_VIDEO_SEND", callid );
+	    airpe_cmd_write(airpe, buf);
+	    snprintf(buf, sizeof(buf), "ALTER CALL %d STOP_VIDEO_RECEIVE", callid );
+	    airpe_cmd_write(airpe, buf);
+
+	    if ( channel ) {
+	        switch_channel_mark_answered(channel);
+	    }
+	    else {
+		if ( airpe_manage_incoming_call(airpe, callid) != SWITCH_STATUS_SUCCESS ) {
+		    snprintf(buf, sizeof(buf), "ALTER CALL %d END HANGUP", callid );
+		    airpe_cmd_write(airpe, buf);
+		    airpe->active_call_id = 0;
+		}
+	    }
+	}
+	else if ( !strncmp(status, "FINISHED", strlen("FINISHED")) ) {
+	    if ( channel )
+	        switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
+	    airpe->active_call_id = 0;
+	}
+	else if ( !strncmp(status, "FAILED", strlen("FAILED")) ) {
+	    if ( channel )
+	        switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+	    airpe->active_call_id = 0;
+	}
+	else if ( !strncmp(status, "CANCELLED", strlen("CANCELLED")) ) {
+	    if ( channel )
+	        switch_channel_hangup(channel, SWITCH_CAUSE_ORIGINATOR_CANCEL);
+	    airpe->active_call_id = 0;
+	}
+	else if ( !strncmp(status, "REFUSED", strlen("REFUSED")) ) {
+	    if ( channel )
+	        switch_channel_hangup(channel, SWITCH_CAUSE_CALL_REJECTED);
+	    airpe->active_call_id = 0;
+	}
+	else if ( !strncmp(status, "MISSED", strlen("MISSED")) ) {
+	    if ( channel )
+	        switch_channel_hangup(channel, SWITCH_CAUSE_NO_ANSWER);
+	    airpe->active_call_id = 0;
+	}
+	else if ( !strncmp(status, "UNPLACED", strlen("UNPLACED")) ) {
+	}
+	else {
+ADEBUG("Unmanaged status \n");
+	}
+    }
+    else {
+ADEBUG("CASE 3 - no calls online\n");
+	if      ( !strncmp(status, "UNPLACED", strlen("UNPLACED")) ) {	    
+	    airpe->active_call_id = callid;
+	}
+	else if ( !strncmp(status, "RINGING", strlen("RINGING")) ) {
+	    airpe->active_call_id = callid;
+	    snprintf(buf, sizeof(buf), "ALTER CALL %d ANSWER", callid );
+	    airpe_cmd_write(airpe, buf);
+	}
+	else {
+	    ADEBUG("--- (%d/%d) Unmanaged status %s\n", airpe->active_call_id, callid, status);
+	}
+    }
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t airpe_manage_skype_msg( airpe_interface_t *airpe, const char *msg ) {
+    char *buf = NULL;
+    int argc = 0;
+    char *argv[9] = { 0 };
+
+    assert(airpe);
+    assert(msg);
+
+    if ( airpe->debug )
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "airpe client %s: %s\n", airpe->name, msg);
+
+    buf = strdup(msg);
+    argc = switch_separate_string(buf, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+
+    if ( argc == 0 ) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "airpe client %s: %s - Message without arguments? uh?\n", airpe->name, msg);
+	free(buf);
+	return  SWITCH_STATUS_FALSE;
+    }
+
+
+
+    if      ( !strncmp( buf, "CURRENTUSERHANDLE", strlen("CURRENTUSERHANDLE")) ) {
+	/* The username that the client is using. */
+	// TODO ... if the user handle mismatches, disconnect the channel or simply disable
+	// all operations
+    }
+    else if ( !strncmp( buf, "USERSTATUS", strlen("USERSTATUS")) && argc > 1 ) {
+	/* The status of the user of the client (ex: NA, ONLINE) */
+	airpe->user_status = skype_user_status(argv[1]);
+    }
+    else if ( !strncmp( buf, "PROTOCOL", strlen("PROTOCOL")) && argc > 1 ) {
+	/* The protocol of the client */
+	airpe->protocol = atoi(argv[1]);
+    }
+    else if ( !strncmp( buf, "CLEAR", strlen("CLEAR")) ) {
+	/* something has been cleared in the UI - Ignored */
+    }
+    else if ( !strncmp( buf, "PONG", strlen("PONG")) ) {
+	/* keepalive */
+	airpe_skype_watchdog_reset(airpe->skype_window);
+    }
+    else if ( !strncmp( buf, "CONNSTATUS", strlen("CONNSTATUS")) && argc >= 2 ) {
+	/* The connection status of the client (ex: ONLINE) */
+	airpe->conn_status = skype_conn_status( argv[1] );
+    }
+    else if ( !strncmp( buf, "USER", strlen("USER")) ) {
+	/* Updates about the users of our list - ignored */
+    }
+    else if ( !strncmp( buf, "GROUP", strlen("GROUP")) ) {
+	/* Updates about the groups of our list - ignored */
+    }
+    else if ( !strncmp( buf, "CONTACTS", strlen("CONTACTS")) ) {
+	/* Other messages referring to the contact list - ignored */
+    }
+    else if ( !strncmp( buf, "OK", strlen("OK")) ) {
+	/* Acknowledge - ignored */
+    }
+    else if ( !strncmp( buf, "AUTOAWAY", strlen("AUTOAWAY")) ) {
+	/* Autoaway - ignored */
+    }
+//TODO: RECEIVEDAUTHREQUEST - Add a config option to authorize or forget about it.
+    else if ( !strncmp( buf, "MUTE", strlen("MUTE")) && argc >= 2 ) {
+	if ( !strncmp(argv[1], "ON", 2) ) { 
+	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "airpe client %s: I don't like to be muted...\n", airpe->name);
+	    airpe_cmd_write(airpe, "MUTE OFF");
+	}
+    }
+    else if ( !strncmp( buf, "CHATMESSAGE", strlen("CHATMESSAGE")) ) {
+	/* a message has been received (unknown content) - ignored */
+    }
+    else if ( !strncmp( buf, "CHAT", strlen("CHAT")) && argc >=2 ) {
+	/* Chat status - ignored. */
+	if ( airpe->protocol > 6 ) {
+	    //TODO : ALTER CHAT  DISBAND - Doesn't seems to work on linux
+	    char buf[SKYPE_MSG_LEN] = "";
+	    snprintf(buf, sizeof(buf), "ALTER CHAT %s DISBAND", argv[1]);
+	    airpe_cmd_write(airpe, buf);
+	}
+    }
+    else if ( !strncmp( buf, "CHATMEMBER", strlen("CHATMEMBER")) ) {
+	/* Informations about the chat members - ignored */
+    }
+    else if ( !strncmp( buf, "PROFILE", strlen("PROFILE")) && argc >= 2 ) {
+	if ( !strncmp(argv[1], "MOOD_TEXT", strlen("MOOD_TEXT")) ) {
+	    char *tmp = NULL;
+	    char *mood;
+	    tmp = strdup(msg);
+	    if ( tmp  ) {
+		mood = strstr(tmp, "PROFILE MOOD_TEXT ");
+		if ( mood ) {
+		    mood += strlen("PROFILE MOOD_TEXT ");
+		    airpe_set_mood_text(airpe, mood);
+		}
+		switch_safe_free(tmp);
+	    }
+	}
+    }
+    else if ( !strncmp( buf, "SKYPEVERSION", strlen("SKYPEVERSION")) ) {
+	airpe_set_version(airpe, argv[1]);
+    }
+    else if ( !strncmp( buf, "CALL", strlen("CALL")) && argc >= 3 ) {
+	char *cmd = argv[2];
+	int callid = atoi(argv[1]);
+
+	if ( !strncmp(cmd, "DURATION", strlen("DURATION")) ) {
+	    /* Ignore the duration that is updated every second */
+	    if ( callid != airpe->active_call_id ) {
+		char buf[SKYPE_MSG_LEN] = "";
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "airpe client %s: hanging up unknown call id %d\n", airpe->name, callid);
+		snprintf(buf, sizeof(buf), "SET CALL %d STATUS FINISHED", callid);
+		airpe_cmd_write(airpe, buf);
+	    }
+	    //TODO: maybe we could consider this message as a keepalive signal
+	}
+	else if ( !strncmp(cmd, "STATUS", strlen("STATUS")) && argc >=4 ) {
+	    char *callstatus = argv[3];
+	    airpe_manage_call_status( airpe, callid, callstatus );
+	}
+	else if ( !strncmp(cmd, "CONF_ID", strlen("CONF_ID")) ) {
+	    char buf[SKYPE_MSG_LEN];
+
+	    if ( !airpe->active_call_id ) {
+		airpe_set_partner_displayname(airpe, NULL);
+		airpe_set_partner_handle(airpe, NULL);
+
+		snprintf(buf, sizeof(buf), "GET CALL %d PARTNER_DISPNAME", callid);
+		airpe_cmd_write(airpe, buf);
+
+		snprintf(buf, sizeof(buf), "GET CALL %d PARTNER_HANDLE", callid);
+		airpe_cmd_write(airpe, buf);
+
+		airpe_cmd_write(airpe, "PING");
+	    }
+	    else {
+		snprintf(buf, sizeof(buf), "ALTER CALL %d END HANGUP", callid );
+		airpe_cmd_write(airpe, buf);
+	    }
+	}
+	else if ( !strncmp(cmd, "VAA_INPUT_STATUS", strlen("VAA_INPUT_STATUS")) ) {
+	    /* Let's ignore */
+	}
+	else if ( !strncmp(cmd, "DTMF", strlen("DTMF")) ) {
+	    /* This is an incoming DTMF */
+	    switch_core_session_t *session;
+	    switch_channel_t *channel;
+	    switch_dtmf_t dtmf = { 0, switch_core_default_dtmf_duration(0) };
+	    const char *signal_ptr;
+	    int tmp;
+
+	    assert(airpe->tech_pvt);
+    	    session = airpe->tech_pvt->session;
+	    assert(session);
+	    channel = switch_core_session_get_channel(session);
+	    assert(channel);
+
+	    signal_ptr = argv[3];
+
+	    if (*signal_ptr && (*signal_ptr == '*' || *signal_ptr == '#' || *signal_ptr == 'A' || *signal_ptr == 'B' || *signal_ptr == 'C' || *signal_ptr == 'D')) {
+		dtmf.digit = *signal_ptr;
+	    } else {
+		tmp = atoi(signal_ptr);
+		dtmf.digit = switch_rfc2833_to_char(tmp);
+	    }
+
+	    switch_mutex_lock(airpe->tech_pvt->flag_mutex);
+	    switch_channel_queue_dtmf(channel, &dtmf);
+	    switch_mutex_unlock(airpe->tech_pvt->flag_mutex);
+	}
+	else if ( !strncmp(cmd, "FAILUREREASON", strlen("FAILUREREASON")) && argc >=2 ) {
+	    airpe->last_fail_reason = atoi(argv[1]);
+	    airpe_cmd_write(airpe, "CLEAR CALLHISTORY ALL");
+	}
+	else if ( !strncmp(cmd, "SEEN", strlen("SEEN")) && argc >=4 ) {
+	    /*
+	    char buf[SKYPE_MSG_LEN] = "";
+	    char *seenstatus = argv[3];
+	    if ( !strncmp(seenstatus, "FALSE", strlen("FALSE")) ) {
+		snprintf(buf, sizeof(buf), "SET CALL %d SEEN", callid);
+	        airpe_cmd_write(airpe, buf);
+	    }
+	    */
+	    airpe_cmd_write(airpe, "CLEAR CALLHISTORY ALL");
+	}
+	else if ( !strncmp(cmd, "PARTNER_DISPNAME", strlen("PARTNER_DISPNAME")) && argc >=2 ) {
+	    char *data, *tmp = NULL;
+	    tmp = strdup(msg);
+	    if ( tmp && (callid == airpe->active_call_id) ) {
+		data = strstr(tmp, "PARTNER_DISPNAME ");
+		if ( data ) {
+		    data += strlen("PARTNER_DISPNAME ");
+		    airpe_set_partner_displayname(airpe, data);
+		}
+	    }
+	    switch_safe_free(tmp);
+	}
+	else if ( !strncmp(cmd, "PARTNER_HANDLE", strlen("PARTNER_HANDLE")) && argc >=2 ) {
+	    char *data, *tmp = NULL;
+	    tmp = strdup(msg);
+	    if ( tmp && (callid == airpe->active_call_id) ) {
+		data = strstr(tmp, "PARTNER_HANDLE ");
+		if ( data ) {
+		    data += strlen("PARTNER_HANDLE ");
+		    airpe_set_partner_handle(airpe, data);
+		}
+		switch_safe_free(tmp);
+	    }
+	}
+	else {
+	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "CALL ID %d\n", callid);
+	}
+    }
+    else if ( !strncmp( buf, "DTMF", strlen("DTMF")) && argc>3 ) {
+	/* We are alerted that a DTMF we was sent to the other party - Ignored */
+    }
+    else if ( !strncmp( msg, "ERROR 68", strlen("ERROR 68")) ) {
+	/* The client needs authorization. Probably we reconnected to a new skype window. */
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Airpe client %s needs authorization.\n", airpe->name);
+	switch_sleep(1000000);
+	airpe_on_connect_messages(airpe, airpe->protocol);
+    }
+    else if ( !strncmp( msg, "ALTER CALL", strlen("ALTER CALL")) ) {
+	/* The response to our hangup - Ignored */
+    }
+    else if ( !strncmp( msg, "SET CALL", strlen("SET CALL")) ) {
+	/* Ignoring by now */
+    }
+    else if ( !strncmp( buf, "ERROR", strlen("ERROR")) ) {
+	//TODO If we are in the middle of a call, hangup
+    }
+    else {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unmanaged message\n");
+    }
+
+    switch_safe_free(buf);
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t airpe_on_connect_messages( airpe_interface_t *airpe, int protocol ) {
+	char buf[SKYPE_MSG_LEN] = "";
+
+	snprintf(buf, sizeof(buf), "NAME airpe");
+	if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS )
+    	    return SWITCH_STATUS_FALSE;
+	snprintf(buf, sizeof(buf), "PROTOCOL %d", protocol);
+	if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS )
+    	    return SWITCH_STATUS_FALSE;
+	snprintf(buf, sizeof(buf), "CLEAR CALLHISTORY ALL");
+	if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS )
+    	    return SWITCH_STATUS_FALSE;
+	snprintf(buf, sizeof(buf), "CLEAR CHATHISTORY");
+	if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS )
+    	    return SWITCH_STATUS_FALSE;
+	snprintf(buf, sizeof(buf), "GET SKYPEVERSION");
+	if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS )
+    	    return SWITCH_STATUS_FALSE;
+	snprintf(buf, sizeof(buf), "GET PROFILE MOOD_TEXT");
+	if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS )
+    	    return SWITCH_STATUS_FALSE;
+	snprintf(buf, sizeof(buf), "GET PROFILE FULLNAME");
+	if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS )
+    	    return SWITCH_STATUS_FALSE;
+	snprintf(buf, sizeof(buf), "GET CONNSTATUS");
+	if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS )
+    	    return SWITCH_STATUS_FALSE;
+	snprintf(buf, sizeof(buf), "SET AUTOAWAY OFF");
+	if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS )
+    	    return SWITCH_STATUS_FALSE;
+	snprintf(buf, sizeof(buf), "SET MUTE OFF");
+	if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS )
+    	    return SWITCH_STATUS_FALSE;
+
+	/* 
+	    The following two raise an error on linux, even if are supported from protocol 6 upwards.
+	    That's not a big problem so we'll send them.
+	 */
+
+	snprintf(buf, sizeof(buf), "SET PCSPEAKER OFF");
+	if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS )
+    	    return SWITCH_STATUS_FALSE;
+	snprintf(buf, sizeof(buf), "SET SILENT_MODE ON");
+	if ( airpe_cmd_write(airpe, buf) != SWITCH_STATUS_SUCCESS )
+    	    return SWITCH_STATUS_FALSE;
+
+	return SWITCH_STATUS_SUCCESS;
+}
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
+ */

Added: freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c	Mon Jan 12 17:24:44 2009
@@ -0,0 +1,19 @@
+
+#include "mod_airpe.h"
+
+#if defined (MACOSX) || defined(DARWIN)
+
+#error OSX Not yet supported
+
+#endif
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
+ */

Added: freeswitch/branches/ctrix/mod_airpe/airpe_if_win32.c
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_win32.c	Mon Jan 12 17:24:44 2009
@@ -0,0 +1,19 @@
+
+#include "mod_airpe.h"
+
+#ifdef WIN32
+
+#error WIN32 Not yet supported
+
+#endif
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
+ */

Added: freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c	Mon Jan 12 17:24:44 2009
@@ -0,0 +1,355 @@
+/* 
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II 
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH mod_airpe.
+ *
+ * The Initial Developer of the Original Code is
+ * Massimo Cetra 
+ *
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Thanks to gmaruzz for his work on skypiax (both * and freeswitch).
+ * Some of his code inspired this module
+ *
+ */
+
+#if defined (__GNUC__) && !(defined (MACOSX) || defined(DARWIN) ) 
+    
+#include "mod_airpe.h"
+
+#include 
+#include 
+#include 
+
+#define X11_MSG_LEN	20
+
+struct skype_window_handler_s {
+    Display 	*disp;
+    Window 	win;
+    uint8_t	api_connected;
+    int 	fdesc[2];
+    Window 	skype_win;
+    int		watchdog;
+};
+
+
+
+
+static XErrorHandler old_handler = 0;
+static int xerror = 0;
+
+static int xerrhandler(Display *dpy, XErrorEvent *err)
+{
+    xerror = err->error_code;
+    /* Return 0 so that the error is ignored */
+    return 0; 
+}
+
+static void trap_errors()
+{
+    xerror = 0;
+    old_handler = XSetErrorHandler(xerrhandler);
+}
+
+static int untrap_errors()
+{
+    XSetErrorHandler(old_handler);
+    return (xerror != BadValue) && (xerror != BadWindow);
+}
+
+switch_status_t airpe_skype_watchdog_reset(skype_window_handler_t *window) {
+    window->watchdog = 0;
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t airpe_skype_watchdog_increment(skype_window_handler_t *window) {
+    window->watchdog++;
+
+    if ( window->watchdog >= 5 ) {
+    }
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+skype_window_handler_t *skype_window_alloc( switch_memory_pool_t *pool) {
+    return switch_core_alloc( pool, sizeof(skype_window_handler_t));
+}
+
+switch_status_t skype_restart( skype_window_handler_t *window, const char *params ) {
+
+    switch_log_printf(	SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, 
+			"HEY! where is my skype window gone ? Restarting skype for client...\n");
+/*
+
+    TODO AND TO USE
+
+    int fid;
+    const char *args[] = { "skype", "--actiondispatch", params, 0 };
+
+    if((fid = fork()) == 0) {
+	if(execvp("skype", (char *const*)args) == -1) {
+	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe client: cannot launch Skype, error %d: %s.\n", errno, strerror(errno) );
+	    return SWITCH_STATUS_FALSE;
+	}
+    }
+    else if(fid == -1) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe client: cannot launch Skype.\n");
+	return SWITCH_STATUS_FALSE;
+    }
+*/
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t airpe_skype_send_message(skype_window_handler_t *window, const char *message_P) {
+    Window w_P;
+    Display *disp;
+    Window handle_P;
+    Atom atom1;
+    Atom atom2;
+    unsigned int pos;
+    unsigned int len;
+    XEvent xev;
+    int ok;
+
+    w_P 	= window->skype_win;
+    disp 	= window->disp;
+    handle_P 	= window->win;
+
+    atom1 = XInternAtom(disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False);
+    atom2 = XInternAtom(disp, "SKYPECONTROLAPI_MESSAGE", False);
+    pos = 0;
+    len = strlen(message_P);
+
+    memset(&xev, 0, sizeof(XEvent));
+    xev.xclient.type 		= ClientMessage;
+    xev.xclient.message_type 	= atom1;
+    xev.xclient.display 	= disp;
+    xev.xclient.window 		= handle_P;
+    xev.xclient.format 		= 8;
+
+    trap_errors();
+    do {
+	unsigned int i;
+	for (i = 0; i < 20 && i + pos <= len; ++i)
+    	    xev.xclient.data.b[i] = message_P[i + pos];
+	XSendEvent(disp, w_P, False, 0, &xev);
+
+	xev.xclient.message_type = atom2;
+	pos += i;
+    } while (pos <= len);
+
+    XSync(disp, False);
+    ok = untrap_errors();
+    if (!ok) { 
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe client X11 error.\n");
+	airpe_skype_avalaible(window);
+    }
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t airpe_skype_avalaible(skype_window_handler_t *window)
+{
+
+    Atom skype_inst;
+    Atom type_ret;
+    int format_ret;
+    unsigned long nitems_ret;
+    unsigned long bytes_after_ret;
+    unsigned char *prop;
+    int status, ok;
+
+    skype_inst = XInternAtom(window->disp, "_SKYPE_INSTANCE", True);
+
+    trap_errors();
+    status = XGetWindowProperty(
+			window->disp,
+        		DefaultRootWindow(window->disp), 
+			skype_inst, 
+			0, 
+			1,
+        		False, 
+			XA_WINDOW, 
+			&type_ret, 
+			&format_ret, 
+			&nitems_ret,
+        		&bytes_after_ret, &prop);
+
+    ok = untrap_errors();
+    if (!ok) { 
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe client X11 error.\n");
+	airpe_skype_avalaible(window);
+    }
+
+    /*  sanity check */
+    if (status != Success || format_ret != 32 || nitems_ret != 1) {
+	window->skype_win = (Window) - 1;
+	return SWITCH_STATUS_FALSE;
+    }
+
+    window->skype_win = *(const unsigned long *) prop & 0xffffffff;
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+
+
+/*****************************************************************************
+    THREADS
+ *****************************************************************************/
+
+void *SWITCH_THREAD_FUNC airpe_skype_thread(switch_thread_t * thread, void *obj) {
+
+    skype_window_handler_t *skype_window = NULL;
+    airpe_interface_t *airpe = NULL;
+    Display *disp = NULL;
+    Window root = -1;
+    Window win = -1;
+    int xfd;
+
+    assert(obj);
+
+    airpe = obj;
+
+    skype_window = airpe->skype_window;
+    assert(skype_window);
+
+    disp = XOpenDisplay(airpe->X11_display);
+    if (!disp) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe client %s: cannot open display %s\n", airpe->name, airpe->X11_display);
+	return NULL;
+    }
+
+    xfd = XConnectionNumber(disp);
+    fcntl(xfd, F_SETFD, FD_CLOEXEC);
+
+    skype_window->disp = disp;
+
+    if ( airpe_skype_avalaible(skype_window) == SWITCH_STATUS_SUCCESS ) {
+	root = DefaultRootWindow(disp);
+	win  = XCreateSimpleWindow(
+				disp, 
+				root, 
+				0, 0, 1, 1, 0,
+                        	BlackPixel(disp, DefaultScreen(disp)), 
+				BlackPixel(disp, DefaultScreen(disp))
+				);
+
+	skype_window->win = win;
+
+	if ( airpe_on_connect_messages( airpe, 6 ) != SWITCH_STATUS_SUCCESS ) {
+	    switch_log_printf(	SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, 
+				"airpe client %s. Failed to send handshake messages\n", 
+				airpe->name);
+    	    return NULL;
+	}
+
+	// perform an events loop
+	XEvent an_event;
+	char buf[X11_MSG_LEN + 2] = ""; 
+	char buffer[SKYPE_MSG_LEN] = "";
+	int i;
+	fd_set rset;
+	int x11_fd;
+	int empty_loops = 0;
+
+	airpe->running = 1;
+	XFlush(disp);
+        x11_fd = ConnectionNumber(disp);
+
+	while ( airpe->running ) {
+	    FD_ZERO(&rset);
+	    FD_SET( x11_fd, &rset);
+
+	    struct timeval timeout;
+	    int ret;
+
+	    timeout.tv_usec = 10 * 1000;
+	    ret = select(x11_fd+1, &rset, 0, 0, &timeout);
+
+	    if ( !airpe->running ) /* Quick way to skip the loop when we are signaled to exit. */
+		break;
+
+	    if ( ret <=0 ) {
+		empty_loops ++;
+		if ( empty_loops >= 250 ) {
+	            airpe_cmd_write(airpe, "PING");
+		    airpe_skype_watchdog_increment(skype_window);
+		    empty_loops = 0;
+		}
+		continue;
+	    }
+
+	    airpe_skype_watchdog_reset(skype_window);
+
+	    /* Process all the pending messages queued (not only one) */
+	    while ( XPending(disp) ) 
+	    {
+		XNextEvent(disp, &an_event);
+
+		switch (an_event.type) 
+	        {
+    		    case ClientMessage:
+			if (an_event.xclient.format != 8)
+        		    break;
+
+			for (i = 0; i < X11_MSG_LEN && an_event.xclient.data.b[i] != '\0'; ++i) {
+        		    buf[i] = an_event.xclient.data.b[i];
+			}
+    			buf[i] = '\0';
+
+			strcat(buffer, buf);
+
+			if (i < X11_MSG_LEN) { 
+			    unsigned int howmany;
+			    howmany = strlen(buffer) + 1;
+			    airpe_manage_skype_msg( airpe, buffer);
+			    memset(&buffer, 0, sizeof(buffer));
+			}
+    			break;
+		    default:
+			if ( airpe->debug )
+			    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "airpe client %s: unknown event\n", airpe->name);
+			break;
+		}
+	    }
+	}
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "airpe client %s: exiting thread\n", airpe->name);
+
+	/* Hangup our call, if we have one */
+	airpe_explicit_hangup(airpe);
+
+    } else {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe client %s: skype not running on display %s\n", airpe->name, airpe->X11_display);
+    }
+
+  return NULL;
+}
+
+#endif
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
+ */

Added: freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml	Mon Jan 12 17:24:44 2009
@@ -0,0 +1,36 @@
+
+  
+    
+
+    
+    
+    
+    
+  
+
+  
+  
+    
+	
+	
+
+	
+	
+	
+	
+
+	
+	
+
+	
+	
+	
+
+	
+	
+	
+    
+  
+
+

Added: freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	Mon Jan 12 17:24:44 2009
@@ -0,0 +1,868 @@
+/* 
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II 
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH mod_airpe.
+ *
+ * The Initial Developer of the Original Code is
+ * Massimo Cetra 
+ *
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Thanks to gmaruzz for his work on skypiax (both * and freeswitch).
+ * Some of his code inspired this module
+ *
+ */
+
+#include "mod_airpe.h"
+
+/*****************************************************************************
+    MODULE PRIVATE STRUCTS && FUNCTIONS
+ *****************************************************************************/
+
+static switch_endpoint_interface_t *airpe_endpoint_interface;
+
+static struct {
+    char *dialplan;
+    char *context;
+    char *destination;
+    int  audio_tcp_port_start;
+
+    switch_mutex_t *mutex;
+    switch_hash_t  *interfaces_hash;
+    int  last_port_used;
+} globals;
+
+static switch_memory_pool_t *airpe_module_pool = NULL;
+
+
+airpe_interface_t *airpe_find_interface( const char *name) {
+    return switch_core_hash_find(globals.interfaces_hash, name);
+}
+
+
+/*****************************************************************************
+    TECH STUFF
+ *****************************************************************************/
+
+static switch_status_t airpe_codec_init(private_object_t * tech_pvt, int sample_rate, int codec_ms) {
+    airpe_interface_t *airpe = NULL;
+
+    if ( switch_core_codec_init(&tech_pvt->read_codec, "L16", NULL, sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, NULL) != SWITCH_STATUS_SUCCESS) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe client: %s - Cannot init read codec.\n", airpe->name);
+	return SWITCH_STATUS_FALSE;
+    }
+
+    if ( switch_core_codec_init(&tech_pvt->write_codec, "L16", NULL, sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, NULL) != SWITCH_STATUS_SUCCESS ) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe client: %s - Cannot init write codec.\n", airpe->name);
+	switch_core_codec_destroy(&tech_pvt->read_codec);
+	return SWITCH_STATUS_FALSE;
+    }
+
+    tech_pvt->read_frame.rate = sample_rate;
+    tech_pvt->read_frame.codec = &tech_pvt->read_codec;
+
+    switch_core_session_set_read_codec(tech_pvt->session, &tech_pvt->read_codec);
+    switch_core_session_set_write_codec(tech_pvt->session, &tech_pvt->write_codec);
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t airpe_tech_init( private_object_t * tech_pvt, switch_core_session_t * session ) {
+
+    tech_pvt->read_frame.data = tech_pvt->databuf;
+    tech_pvt->read_frame.buflen = sizeof(tech_pvt->databuf);
+
+    switch_mutex_init(&tech_pvt->mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session));
+    switch_mutex_init(&tech_pvt->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session));
+
+    switch_core_session_set_private(session, tech_pvt);
+    tech_pvt->session = session;
+    return airpe_codec_init(tech_pvt, CODEC_SAMPLE_RATE, CODEC_INTERVAL_MS);
+}
+
+static switch_socket_t *airpe_socket_create( const char *host, int port ) {
+    switch_status_t rv;
+    switch_socket_t *new_sock = NULL;
+    switch_sockaddr_t *sa;
+
+    rv = switch_sockaddr_info_get(&sa, host, AF_INET, port, 0, airpe_module_pool);
+    if ( rv != SWITCH_STATUS_SUCCESS ) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Socket Creation Error! (1)\n");
+	return NULL;
+    }
+
+    rv = switch_socket_create(&new_sock, AF_INET, SOCK_STREAM, SWITCH_PROTO_TCP, airpe_module_pool);
+    if ( rv != SWITCH_STATUS_SUCCESS ) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Socket Creation Error! (2)\n");
+	return NULL;
+    }
+
+    rv = switch_socket_opt_set(new_sock, SWITCH_SO_REUSEADDR, 1);
+    if ( rv != SWITCH_STATUS_SUCCESS ) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Socket Creation Error! (3)\n");
+	return NULL;
+    }
+
+    rv = switch_socket_opt_set(new_sock, SWITCH_SO_NONBLOCK, 1);
+    if ( rv != SWITCH_STATUS_SUCCESS ) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Socket Creation Error! (3)\n");
+	return NULL;
+    }
+
+    rv = switch_socket_bind(new_sock, sa);
+    if ( rv != SWITCH_STATUS_SUCCESS ) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Socket Creation Error! (4)\n");
+	return NULL;
+    }
+
+    rv = switch_socket_listen(new_sock, 5);
+    if ( rv != SWITCH_STATUS_SUCCESS ) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Socket Creation Error! (5)\n");
+	return NULL;
+    }
+
+    return new_sock;
+}
+
+static int fetch_next_port(void) {
+    int port = 0;
+
+    if ( !globals.last_port_used )
+	globals.last_port_used = globals.audio_tcp_port_start;
+
+    switch_mutex_lock(globals.mutex);
+    port = globals.last_port_used;
+    globals.last_port_used++;
+    switch_mutex_unlock(globals.mutex);
+
+    return port;
+}
+
+static switch_status_t airpe_audio_sockets_create( airpe_interface_t *airpe ) {
+    switch_socket_t *new_sock;
+    int port;
+
+    new_sock = NULL;
+    while ( !new_sock ) {
+	port = fetch_next_port();
+	if ( airpe->debug )
+	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Assigning in port %d for client %s\n", port, airpe->name);
+	new_sock = airpe_socket_create("127.0.0.1", port);    
+	if ( new_sock ) {
+	    airpe->audio_in_socket = new_sock;
+	    airpe->audio_in_port   = port;
+	}
+    }
+
+    new_sock = NULL;
+    while ( !new_sock ) {
+	port = fetch_next_port();
+	if ( airpe->debug )
+	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Assigning out port %d for client %s\n", port, airpe->name);
+	new_sock = airpe_socket_create("127.0.0.1", port);    
+	if ( new_sock ) {
+	    airpe->audio_out_socket = new_sock;
+	    airpe->audio_out_port   = port;
+	}
+    }
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+
+static switch_status_t airpe_start_client(airpe_interface_t *airpe) {
+
+    switch_threadattr_t *attr_skype = NULL;
+
+    airpe->user_status = USER_STATUS_UNKNOWN;
+    airpe->conn_status = CONN_STATUS_UNKNOWN;
+    airpe->call_status = CALL_STATUS_UNKNOWN;
+
+    airpe_audio_sockets_create(airpe);
+
+    switch_threadattr_create(&attr_skype, airpe_module_pool);
+    //switch_threadattr_detach_set(attr_skype, 1);
+    switch_threadattr_stacksize_set(attr_skype, SWITCH_THREAD_STACKSIZE);
+
+    switch_thread_create(&airpe->airpe_thread_skype, 
+			attr_skype,
+                        airpe_skype_thread, 
+			airpe,
+                        airpe_module_pool);
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t airpe_stop_client(airpe_interface_t *airpe) {
+
+    if ( airpe->audio_in_socket ) {
+	if ( airpe->debug )
+	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Shutting down socket on port %d for client %s\n", airpe->audio_in_port, airpe->name);
+	airpe->audio_in_port = 0;
+	switch_socket_shutdown(airpe->audio_in_socket, SWITCH_SHUTDOWN_READWRITE);
+	switch_socket_close(airpe->audio_in_socket);
+    }
+
+    if ( airpe->audio_out_socket ) {
+	if ( airpe->debug )
+	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Shutting down socket on port %d for client %s\n", airpe->audio_out_port, airpe->name);
+	airpe->audio_out_port = 0;
+	switch_socket_shutdown(airpe->audio_out_socket, SWITCH_SHUTDOWN_READWRITE);
+	switch_socket_close(airpe->audio_out_socket);
+    }
+
+    airpe_set_version(airpe, NULL);
+    airpe_set_mood_text(airpe, NULL);
+    airpe_set_partner_displayname(airpe, NULL);
+    airpe_set_partner_handle(airpe, NULL);
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+switch_core_session_t *airpe_request_session( switch_memory_pool_t **pool ) {
+    /* I prefer not to expose airpe_endpoint_interface out of this file. */
+    return switch_core_session_request(airpe_endpoint_interface, pool);
+}
+
+
+/*****************************************************************************
+    CHANNEL STATE HANDLERS
+ *****************************************************************************/
+
+static switch_status_t channel_on_init(switch_core_session_t * session)
+{
+    switch_channel_t *channel;
+    private_object_t *tech_pvt = NULL;
+
+    channel = switch_core_session_get_channel(session);
+    assert(channel);
+
+    tech_pvt = switch_core_session_get_private(session);
+    assert(tech_pvt);
+    assert(tech_pvt->airpe);
+
+    tech_pvt->airpe->tech_pvt = tech_pvt;
+
+    if ( switch_test_flag(tech_pvt, TFLAG_OUTBOUND) ) {
+	airpe_originate(tech_pvt->airpe, tech_pvt->destination );
+	// TODO if fail switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+    }
+
+    if ( switch_test_flag(tech_pvt, TFLAG_INBOUND) ) {
+	char buf[SKYPE_MSG_LEN];
+	snprintf(buf, sizeof(buf), "ALTER CALL %d SET_INPUT PORT=\"%d\"", tech_pvt->airpe->active_call_id, tech_pvt->airpe->audio_in_port);
+	airpe_cmd_write(tech_pvt->airpe, buf);
+	snprintf(buf, sizeof(buf), "ALTER CALL %d SET_OUTPUT PORT=\"%d\"", tech_pvt->airpe->active_call_id, tech_pvt->airpe->audio_out_port);
+	airpe_cmd_write(tech_pvt->airpe, buf);
+
+        switch_channel_set_state(channel, CS_ROUTING);
+    }
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t channel_on_routing(switch_core_session_t * session) {
+    char buf[SKYPE_MSG_LEN];
+    switch_channel_t *channel = NULL;
+    private_object_t *tech_pvt = NULL;
+
+    channel = switch_core_session_get_channel(session);
+    assert(channel);
+
+    tech_pvt = switch_core_session_get_private(session);
+    assert(tech_pvt);
+
+    if ( switch_test_flag(tech_pvt, TFLAG_INBOUND) ) {
+        snprintf(buf, sizeof(buf), "ALTER CALL %d ANSWER", tech_pvt->airpe->active_call_id);
+        airpe_cmd_write(tech_pvt->airpe, buf);
+    }
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t channel_on_execute(switch_core_session_t * session) {
+    switch_channel_t *channel = NULL;
+    private_object_t *tech_pvt = NULL;
+
+    channel = switch_core_session_get_channel(session);
+    assert(channel);
+
+    tech_pvt = switch_core_session_get_private(session);
+    assert(tech_pvt);
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t channel_on_hangup(switch_core_session_t * session)
+{
+    switch_channel_t *channel = NULL;
+    private_object_t *tech_pvt = NULL;
+    airpe_interface_t *airpe = NULL;
+    char msg[SKYPE_MSG_LEN];
+
+    channel = switch_core_session_get_channel(session);
+    assert(channel);
+
+    tech_pvt = switch_core_session_get_private(session);
+    assert(tech_pvt);
+
+    airpe = tech_pvt->airpe;
+    assert(airpe);
+
+    if ( airpe->active_call_id ) {
+	snprintf(msg, sizeof(msg), "ALTER CALL %d HANGUP", airpe->active_call_id);
+	airpe_cmd_write(airpe, msg);
+//	airpe->active_call_id = 0;
+//	airpe->tech_pvt = NULL;
+    }
+
+    airpe_hangup( tech_pvt );
+
+    if (tech_pvt->read_codec.implementation) {
+	switch_core_codec_destroy(&tech_pvt->read_codec);
+    }
+
+    if (tech_pvt->write_codec.implementation) {
+	switch_core_codec_destroy(&tech_pvt->write_codec);
+    }
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t channel_on_exchange_media(switch_core_session_t * session) {
+    return SWITCH_STATUS_SUCCESS;
+}
+
+/*****************************************************************************
+    CHANNEL IO INTERFACE / ROUTINES
+ *****************************************************************************/
+static switch_call_cause_t channel_outgoing_channel(
+		    switch_core_session_t 	*session,
+                    switch_event_t 		*var_event,
+                    switch_caller_profile_t	*outbound_profile,
+                    switch_core_session_t 	**new_session,
+                    switch_memory_pool_t 	**pool,
+                    switch_originate_flag_t	flags) 
+{
+    switch_caller_profile_t *caller_profile = NULL;
+    private_object_t *tech_pvt = NULL;
+    switch_channel_t *channel = NULL;
+
+    assert(outbound_profile);
+
+    /* New session creation */
+    *new_session = airpe_request_session(pool);
+    if ( *new_session ) 
+    {
+	char *chan_interface = NULL;
+	char *chan_destination = NULL;
+
+	switch_core_session_add_stream(*new_session, NULL);
+
+	tech_pvt = (private_object_t *) switch_core_session_alloc(*new_session, sizeof(private_object_t));
+
+	if ( tech_pvt ) {
+	    channel = switch_core_session_get_channel(*new_session);
+	    if ( airpe_tech_init( tech_pvt, *new_session ) != SWITCH_STATUS_SUCCESS ) {
+	        switch_core_session_destroy(new_session);
+		return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
+	    }
+	} else {
+	    switch_core_session_destroy(new_session);
+	    return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
+	}
+
+
+	chan_interface = switch_core_session_strdup( *new_session, outbound_profile->destination_number);
+	if (( chan_destination = strchr(chan_interface, '/'))) {
+		*chan_destination++ = '\0';
+	}	
+	if ( !chan_interface || !chan_destination ) {
+	    switch_core_session_destroy(new_session);
+	    return SWITCH_CAUSE_INVALID_NUMBER_FORMAT;
+	}
+
+	if ( (tech_pvt->airpe = airpe_find_interface(chan_interface))==NULL ) {
+	    switch_core_session_destroy(new_session);
+	    return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
+	}
+	tech_pvt->destination = chan_destination;
+
+	if ( tech_pvt->airpe->active_call_id != 0 ) {
+	    /* We're busy, man! */
+	    switch_core_session_destroy(new_session);
+	    return SWITCH_CAUSE_REQUESTED_CHAN_UNAVAIL;
+	}
+
+	if (outbound_profile) {
+	    char name[128];
+	    snprintf(name, sizeof(name), "airpe/%s", outbound_profile->destination_number);
+	    switch_channel_set_name(channel, name);
+	    caller_profile = switch_caller_profile_clone(*new_session, outbound_profile);
+	    switch_channel_set_caller_profile(channel, caller_profile);
+	    tech_pvt->caller_profile = caller_profile;
+	} 
+	else 
+	{
+	    switch_core_session_destroy(new_session);
+    	    return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
+	}
+
+	switch_channel_set_flag(channel, CF_OUTBOUND);	
+	switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND);
+	switch_channel_set_state(channel, CS_INIT);
+	return SWITCH_CAUSE_SUCCESS;
+    }
+    else 
+    {
+	return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
+    }
+}
+
+static switch_status_t channel_read_frame(switch_core_session_t * session,
+                                          switch_frame_t ** frame, 
+					  switch_io_flag_t flags,
+                                          int stream_id)
+{
+    switch_channel_t *channel = NULL;
+    private_object_t *tech_pvt = NULL;
+    switch_byte_t *data;
+
+    channel = switch_core_session_get_channel(session);
+    assert(channel);
+
+    tech_pvt = switch_core_session_get_private(session);
+    assert(tech_pvt);
+
+    tech_pvt->read_frame.flags = SFF_NONE;
+    *frame = NULL;
+
+    if ( airpe_audio_read(tech_pvt) != SWITCH_STATUS_SUCCESS) {
+	ADEBUG("airpe_audio_read ERROR\n");
+	return SWITCH_STATUS_FALSE;
+    }
+
+    if (!tech_pvt->read_frame.datalen) {
+	goto cng;
+    }
+
+    *frame = &tech_pvt->read_frame;
+
+    return SWITCH_STATUS_SUCCESS;
+
+cng:
+    data = (switch_byte_t *) tech_pvt->read_frame.data;
+    data[0] = 65;
+    data[1] = 0;
+    tech_pvt->read_frame.datalen = 2;
+    tech_pvt->read_frame.flags = SFF_CNG;
+    *frame = &tech_pvt->read_frame;
+    return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t channel_write_frame(switch_core_session_t * session,
+                                           switch_frame_t * frame, 
+					    switch_io_flag_t flags,
+                                           int stream_id)
+{
+    switch_channel_t *channel = NULL;
+    private_object_t *tech_pvt = NULL;
+    airpe_interface_t *airpe = NULL;
+    switch_status_t rv;
+
+    channel = switch_core_session_get_channel(session);
+    assert(channel);
+
+    tech_pvt = switch_core_session_get_private(session);
+    assert(tech_pvt);
+
+    if ( !tech_pvt->airpe ) {
+	return SWITCH_STATUS_FALSE;
+    }
+
+    airpe = tech_pvt->airpe;
+
+    rv = airpe_audio_write(tech_pvt, frame);
+    return rv;
+}
+
+static switch_status_t channel_kill_channel(switch_core_session_t * session, int sig)
+{
+    switch_channel_t *channel = NULL;
+    private_object_t *tech_pvt = NULL;
+
+    channel = switch_core_session_get_channel(session);
+    assert(channel);
+
+    tech_pvt = switch_core_session_get_private(session);
+    assert(tech_pvt);
+
+    switch (sig) {
+	case SWITCH_SIG_KILL:
+	    break;
+    case SWITCH_SIG_BREAK:
+	    break;
+    default:
+	//TODO Log unhandled signal
+	break;
+  }
+
+  return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t channel_send_dtmf(switch_core_session_t * session, const switch_dtmf_t * dtmf) {
+    private_object_t *tech_pvt = switch_core_session_get_private(session);
+    airpe_interface_t *airpe;
+    char buf[SKYPE_MSG_LEN];
+
+    switch_assert(tech_pvt);
+
+    airpe = tech_pvt->airpe;
+
+    if ( airpe->active_call_id ) {
+	snprintf(buf, sizeof(buf), "SET CALL %d DTMF %c", airpe->active_call_id, dtmf->digit);
+	airpe_cmd_write(airpe, buf);
+    }
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t channel_receive_message(switch_core_session_t * session, switch_core_session_message_t * msg)
+{
+    switch_channel_t *channel;
+    private_object_t *tech_pvt;
+
+    channel = switch_core_session_get_channel(session);
+    assert(channel);
+
+    tech_pvt = (private_object_t *) switch_core_session_get_private(session);
+    assert(tech_pvt);
+
+    switch (msg->message_id) {
+	case SWITCH_MESSAGE_INDICATE_ANSWER:
+	    ADEBUG("received message indicate answer...\n");
+/*
+    	    //switch_answer_channel(session);
+	    char buf[SKYPE_MSG_LEN];
+	    snprintf(buf, sizeof(buf), "ALTER CALL %d ANSWER", tech_pvt->airpe->active_call_id );
+	    airpe_cmd_write(tech_pvt->airpe, buf);
+*/
+	    break;
+	case SWITCH_MESSAGE_INDICATE_UNBRIDGE:
+	    ADEBUG("received message indicate unbridge...\n");
+	    break;
+	case SWITCH_MESSAGE_INDICATE_TRANSCODING_NECESSARY:
+	    ADEBUG("received message indicate transcode necessary...\n");
+	    break;
+	case SWITCH_MESSAGE_INDICATE_AUDIO_SYNC:
+	    ADEBUG("received message indicate audio sync...\n");
+	    break;
+	case SWITCH_MESSAGE_INDICATE_TRANSFER:
+	    ADEBUG("received message indicate transfer...\n");
+	    break;
+	default:
+	    ADEBUG("Unmanaged received message... %d\n", msg->message_id);
+	    break;
+    }
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t channel_receive_event(switch_core_session_t * session, switch_event_t * event)
+{
+    char *body = NULL;
+    switch_channel_t *channel;
+    private_object_t *tech_pvt;
+
+    channel = switch_core_session_get_channel(session);
+    assert(channel);
+
+    tech_pvt = (private_object_t *) switch_core_session_get_private(session);
+    assert(tech_pvt);
+
+    body = switch_event_get_body(event);
+
+    if (!body) {
+	body = "";
+    }
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+
+/*****************************************************************************
+    CONFIGURATION
+ *****************************************************************************/
+
+static switch_status_t load_config(void) {
+    switch_xml_t    	cfg, 
+			xml, 
+			global_settings, 
+			param, 
+			clients, 
+			client;
+    switch_memory_pool_t *pool;
+
+    pool = airpe_module_pool;
+    
+    if (!(xml = switch_xml_open_cfg("airpe.conf", &cfg, NULL))) {
+	return SWITCH_STATUS_TERM;
+    }
+
+    if ( (global_settings = switch_xml_child(cfg, "globals") ) ) {
+	for (param = switch_xml_child(global_settings, "param"); param; param = param->next) {
+    	    char *var = (char *) switch_xml_attr_soft(param, "name");
+    	    char *val = (char *) switch_xml_attr_soft(param, "value");
+
+    	    if (!strcmp(var, "dialplan")) {
+		globals.dialplan = switch_core_strdup(pool, val);
+	    } else if (!strcmp(var, "context")) {
+		globals.context = switch_core_strdup(pool, val);
+	    } else if (!strcmp(var, "destination")) {
+		globals.destination = switch_core_strdup(pool, val);
+	    } else if (!strcmp(var, "audio-tcp-port_start")) {
+		globals.audio_tcp_port_start = atoi(val);
+	    }
+	}
+    }
+
+    if ( globals.audio_tcp_port_start <= 0 ) {
+	globals.audio_tcp_port_start = 21000;
+    }
+
+    if ( !globals.dialplan )
+	globals.dialplan = switch_core_strdup(pool, "XML");
+    if ( !globals.context )
+	globals.context = switch_core_strdup(pool, "default");
+    if ( !globals.destination )
+	globals.destination = switch_core_strdup(pool, "4321");
+
+    if ((clients = switch_xml_child(cfg, "clients"))) {
+
+	for (client = switch_xml_child(clients, "client"); client; client = client->next) 
+	{
+    	    char *name 		= (char *) switch_xml_attr(client, "name");
+    	    char *context 	= NULL;
+    	    char *dialplan 	= NULL;
+    	    char *destination 	= NULL;
+    	    char *X11_display 	= NULL;
+    	    char *skype_user 	= NULL;
+    	    char *skype_password= NULL;
+	    char *cid_name	= NULL;
+	    char *cid_num	= NULL;
+	    int	 debug		= 0;
+
+    	    airpe_interface_t 	*newconf = NULL;
+
+	    if (!name) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No name attribute. Skipping unnamed client.\n");
+		continue;
+    	    }
+
+	    if ( (newconf = switch_core_hash_find(globals.interfaces_hash, name)) ) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Duplicated client %s. Skipping\n", name);
+		continue;
+	    }
+
+	    for (param = switch_xml_child(client, "param"); param; param = param->next) {
+    		char *var = (char *) switch_xml_attr_soft(param, "name");
+    		char *val = (char *) switch_xml_attr_soft(param, "value");
+
+    		if        (!strcasecmp(var, "debug")) {
+		    debug = switch_true(val) ? 1 : 0;
+    		} else if (!strcasecmp(var, "context")) {
+        	    context = val;
+    		} else if (!strcasecmp(var, "dialplan")) {
+		    dialplan = val;
+    		} else if (!strcasecmp(var, "destination")) {
+		    destination = val;
+    		} else if (!strcasecmp(var, "skype-user")) {
+        	    skype_user = val;
+    		} else if (!strcasecmp(var, "skype-password")) {
+        	    skype_password = val;
+    		} else if (!strcasecmp(var, "X11-display")) {
+        	    X11_display = val;
+    		} else if (!strcasecmp(var, "cid-name")) {
+        	    cid_name = val;
+    		} else if (!strcasecmp(var, "cid-num")) {
+        	    cid_num = val;
+    		}
+		else
+		    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unknown config param %s\n", var);
+	    }
+	    if (!skype_user) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No skype-user param for client %s. Skipping\n", name);
+    		continue;
+	    }
+	    if (!skype_password) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No skype-password param for client %s. Skipping\n", name);
+    		continue;
+    	    }
+    	    if (!X11_display) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No X11-display param for client %s. Skipping\n", name);
+    		continue;
+    	    }
+
+	    if ( !dialplan )
+		dialplan = globals.dialplan;
+	    if ( !context )
+		context = globals.context;
+	    if ( !destination )
+		destination = globals.destination;
+
+	    newconf = (airpe_interface_t *) switch_core_alloc( pool, sizeof(airpe_interface_t) );
+
+	    if ( newconf ) {
+		switch_status_t status;
+
+		memset(newconf, 0, sizeof(airpe_interface_t));
+
+		newconf->name     	= switch_core_strdup(pool, name);
+		newconf->dialplan 	= switch_core_strdup(pool, dialplan);
+		newconf->context  	= switch_core_strdup(pool, context);
+		newconf->destination  	= switch_core_strdup(pool, destination);
+		newconf->skype_user  	= switch_core_strdup(pool, skype_user);
+		newconf->skype_password = switch_core_strdup(pool, skype_password);
+		newconf->X11_display  	= switch_core_strdup(pool, X11_display);
+		newconf->audio_in_port  = 0;
+		newconf->audio_in_port  = 0;
+		newconf->debug  	= debug;
+
+		newconf->skype_window = skype_window_alloc(pool);
+
+		if ( newconf->skype_window ) {
+		    status = airpe_start_client(newconf);
+
+		    if ( status == SWITCH_STATUS_SUCCESS ) {
+			switch_core_hash_insert(globals.interfaces_hash, name, newconf);
+		    }
+		    else {
+			// LOG OUR ERROR
+		    }
+		}
+		else {
+		    // LOG OUR ERROR
+		}
+
+	    }
+	    else {
+		//TODO LOG ERROR ABOUT CREATING INTERFACE
+	    }
+	}
+
+    }
+
+    switch_xml_free(xml);
+    return SWITCH_STATUS_SUCCESS;
+}
+
+
+/*****************************************************************************
+    MODULE INITIALIZATION FUNCTIONS
+ *****************************************************************************/
+
+static switch_state_handler_table_t airpe_state_handlers = {
+    /*.on_init */ 		channel_on_init,
+    /*.on_routing */ 		channel_on_routing,
+    /*.on_execute */ 		channel_on_execute,
+    /*.on_hangup */ 		channel_on_hangup,
+    /*.on_exchange_media*/	channel_on_exchange_media,
+    /*.on_soft_execute */ 	NULL
+};
+
+static switch_io_routines_t airpe_io_routines = {
+    /*.outgoing_channel */	channel_outgoing_channel,
+    /*.read_frame */		channel_read_frame,
+    /*.write_frame */		channel_write_frame,
+    /*.kill_channel */		channel_kill_channel,
+    /*.send_dtmf */		channel_send_dtmf,
+    /*.receive_message */	channel_receive_message,
+    /*.receive_event */ 	channel_receive_event
+};
+
+SWITCH_MODULE_LOAD_FUNCTION(mod_airpe_load);
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_airpe_shutdown);
+SWITCH_MODULE_DEFINITION(mod_airpe, mod_airpe_load, mod_airpe_shutdown, NULL);
+
+SWITCH_MODULE_LOAD_FUNCTION(mod_airpe_load)
+{
+    airpe_module_pool = pool;
+
+    memset(&globals, 0, sizeof(globals));
+
+    switch_core_hash_init(&globals.interfaces_hash, pool);
+    switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, pool);
+
+    load_config();
+
+    *module_interface = switch_loadable_module_create_module_interface(pool, modname);
+
+    airpe_endpoint_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE);
+
+    airpe_endpoint_interface->interface_name = "airpe";
+    airpe_endpoint_interface->io_routines    = &airpe_io_routines;
+    airpe_endpoint_interface->state_handler  = &airpe_state_handlers;
+
+    airpe_register_api( &*module_interface );
+    airpe_register_apps( &*module_interface );
+
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_airpe_shutdown)
+{
+    switch_memory_pool_t *pool;
+    airpe_interface_t *airpe;
+    switch_hash_index_t *hi;
+    void *val;
+
+    pool = airpe_module_pool;
+
+    for (hi = switch_hash_first(NULL, globals.interfaces_hash); hi; hi = switch_hash_next(hi)) {
+	switch_hash_this(hi, NULL, NULL, &val);
+	airpe = ( airpe_interface_t *) val;
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Shutting down airpe client: %s\n", airpe->name);
+	airpe->running = 0;
+	/* Wake up the socket */
+	airpe_cmd_write(airpe, "PING");
+	airpe_stop_client(airpe);
+	/*
+	we won't delete the hash element. we're going to destroy the whole pool 
+	switch_core_hash_delete(globals.interfaces_hash, airpe->name); 
+	*/
+    }
+    switch_yield(500000);
+
+    /* TODO... should we check that all interfaces has been switched off ? */
+
+    switch_core_hash_destroy(&globals.interfaces_hash);
+    switch_core_destroy_memory_pool(&pool);
+    return SWITCH_STATUS_UNLOAD;
+}
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
+ */

Added: freeswitch/branches/ctrix/mod_airpe/mod_airpe.h
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	Mon Jan 12 17:24:44 2009
@@ -0,0 +1,235 @@
+/* 
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II 
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH mod_airpe.
+ *
+ * The Initial Developer of the Original Code is
+ * Massimo Cetra 
+ *
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Thanks to gmaruzz for his work on skypiax (both * and freeswitch).
+ * Some of his code inspired this module
+ *
+ */
+
+#include 
+#include 
+
+#define MODNAME "airpe"
+
+#define SKYPE_MSG_LEN	1024
+
+#define CODEC_SAMPLE_RATE	16000
+#define CODEC_INTERVAL_MS	20
+#define FRAMES_PER_SECOND	1000 / CODEC_INTERVAL_MS
+#define	SAMPLES_PER_FRAME	CODEC_SAMPLE_RATE / FRAMES_PER_SECOND
+
+#define ADEBUG(...)  switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, __VA_ARGS__ );
+
+typedef enum {
+    CONN_STATUS_UNKNOWN,
+    CONN_STATUS_OFFLINE,
+    CONN_STATUS_CONNECTING,
+    CONN_STATUS_PAUSING,
+    CONN_STATUS_ONLINE,
+} CONN_STATUS;
+
+typedef enum {
+    USER_STATUS_UNKNOWN,
+    USER_STATUS_ONLINE,
+    USER_STATUS_OFFLINE,
+    USER_STATUS_SKYPEME,
+    USER_STATUS_AWAY,
+    USER_STATUS_NA,
+    USER_STATUS_DND,
+    USER_STATUS_INVISIBLE,
+    USER_STATUS_LOGGEDOUT
+} USER_STATUS;
+
+typedef enum {
+    CALL_STATUS_UNKNOWN,
+    CALL_STATUS_UNPLACED,
+    CALL_STATUS_ROUTING,
+    CALL_STATUS_EARLYMEDIA,
+    CALL_STATUS_FAILED,
+    CALL_STATUS_RINGING,
+    CALL_STATUS_INPROGRESS,
+    CALL_STATUS_ONHOLD,
+    CALL_STATUS_LOCALHOLD,
+    CALL_STATUS_REMOTEHOLD,
+    CALL_STATUS_FINISHED,
+    CALL_STATUS_MISSED,
+    CALL_STATUS_REFUSED,
+    CALL_STATUS_BUSY,
+    CALL_STATUS_CANCELLED,
+    CALL_STATUS_TRANSFERRING,			/* Protocol 7 */
+    CALL_STATUS_TRANSFERRED,			/* Protocol 7 */
+
+    CALL_STATUS_VM_BUFFERING_GREETING,
+    CALL_STATUS_VM_PLAYING_GREETING,
+    CALL_STATUS_VM_RECORDING,
+    CALL_STATUS_VM_UPLOADING,
+    CALL_STATUS_VM_SENT,
+    CALL_STATUS_VM_CANCELLED ,
+    CALL_STATUS_VM_FAILED,
+    CALL_STATUS_WAITING_REDIAL_COMMAND,		
+    CALL_STATUS_REDIAL_PENDING,			/* Protocol 8 */
+
+} CALL_STATUS;
+
+typedef enum {
+    FAILURE_CODE_MISC			= 1,
+    FAILURE_CODE_BAD_DESTINATION_NUM	= 2,
+    FAILURE_CODE_USER_OFFLINE		= 3,
+    FAILURE_CODE_NO_PROXY_FOUND		= 4,
+    FAILURE_CODE_SESSION_TERMINATED	= 5,
+    FAILURE_CODE_NO_CODEC_FOUND		= 6,
+    FAILURE_CODE_LOCAL_SOUND_ERR	= 7,
+    FAILURE_CODE_REMOTE_SOUND_ERR	= 8,
+    FAILURE_CODE_CALL_BLOCKED		= 9,
+    FAILURE_CODE_RECIPIENT_NOT_FRIEND	= 10,
+    FAILURE_CODE_CALL_UNAUTHORIZED	= 11,
+    FAILURE_CODE_SOUND_REC_ERR		= 12,    
+} FAILURE_CODES;
+
+
+typedef enum {
+  TFLAG_INBOUND 	= (1 << 1),
+  TFLAG_OUTBOUND	= (1 << 2),
+/*
+  TFLAG_IO 		= (1 << 0),
+  TFLAG_DTMF 		= (1 << 3),
+  TFLAG_VOICE 		= (1 << 4),
+  TFLAG_HANGUP 		= (1 << 5),
+  TFLAG_LINEAR 		= (1 << 6),
+  TFLAG_CODEC 		= (1 << 7),
+  TFLAG_BREAK 		= (1 << 8),
+  TFLAG_ANSWER 		= (1 << 9)
+*/
+} TFLAGS;
+
+typedef struct skype_window_handler_s skype_window_handler_t;
+
+typedef struct airpe_interface_s airpe_interface_t;
+typedef struct private_object_s private_object_t;
+
+struct airpe_interface_s {
+    char 			*name;
+    int  			debug;
+    char 			*dialplan;
+    char 			*context;
+    char 			*destination;
+    char 			*X11_display;
+    char 			*skype_user;
+    char 			*skype_password;
+
+    int 			audio_in_port;
+    int 			audio_out_port;
+    switch_socket_t		*audio_in_socket;
+    switch_socket_t		*audio_out_socket;
+    switch_socket_t		*audio_in_active_socket;
+    switch_socket_t		*audio_out_active_socket;
+
+    switch_thread_t 		*airpe_thread_skype;
+    skype_window_handler_t 	*skype_window;
+
+    int				protocol;
+    USER_STATUS			user_status;
+    CALL_STATUS			call_status;
+    CONN_STATUS			conn_status;
+
+    char			*skype_version;
+    char			*mood_text;
+    int 			active_call_id;
+    int				last_fail_reason;
+    int				running;
+    private_object_t		*tech_pvt;
+    char			*partner_displayname;
+    char			*partner_handle;
+};
+
+struct private_object_s {
+    unsigned int 		flags;
+    switch_mutex_t 		*flag_mutex;
+    switch_mutex_t 		*mutex;
+
+    airpe_interface_t 		*airpe;
+    switch_core_session_t	*session;
+    switch_caller_profile_t 	*caller_profile;
+    char			*destination;
+
+    switch_codec_t 		read_codec;
+    switch_codec_t 		write_codec;
+    switch_frame_t 		read_frame;
+    uint8_t 			databuf[SWITCH_RECOMMENDED_BUFFER_SIZE];
+};
+
+
+/* CORE */
+airpe_interface_t *airpe_find_interface( const char *name);
+switch_core_session_t *airpe_request_session( switch_memory_pool_t **pool );
+switch_status_t airpe_tech_init( private_object_t * tech_pvt, switch_core_session_t * session );
+
+/* API */
+switch_status_t airpe_register_api( switch_loadable_module_interface_t **module_interface );
+
+/* APPS */
+switch_status_t airpe_register_apps( switch_loadable_module_interface_t **module_interface );
+
+/* INTERFACE - COMMON FUNCTIONS */
+const char *skype_user_status_string(USER_STATUS st);
+USER_STATUS skype_user_status(const char *str);
+const char *skype_conn_status_string(CONN_STATUS st);
+CONN_STATUS skype_conn_status(const char *str);
+
+switch_status_t	airpe_set_version(airpe_interface_t *airpe, char *string);
+switch_status_t	airpe_set_mood_text(airpe_interface_t *airpe, char *string);
+switch_status_t	airpe_set_partner_displayname(airpe_interface_t *airpe, char *string);
+switch_status_t	airpe_set_partner_handle(airpe_interface_t *airpe, char *string);
+
+switch_status_t airpe_hangup( private_object_t *pvt );
+switch_status_t airpe_audio_read( private_object_t *pvt );
+switch_status_t airpe_audio_write( private_object_t *pvt, switch_frame_t *frame );
+
+switch_status_t airpe_cmd_write(airpe_interface_t *p, char *msg);
+switch_status_t airpe_originate(airpe_interface_t *p, char *dest);
+switch_status_t airpe_explicit_hangup(airpe_interface_t *airpe);
+switch_status_t airpe_manage_skype_msg( airpe_interface_t *airpe, const char *msg );
+
+switch_status_t airpe_on_connect_messages( airpe_interface_t *airpe, int protocol );
+
+/* INTERFACE - PLATFORM DEPENDANT FUNCTIONS */
+switch_status_t airpe_skype_watchdog_reset(skype_window_handler_t *window);
+switch_status_t airpe_skype_watchdog_increment(skype_window_handler_t *window);
+skype_window_handler_t *skype_window_alloc( switch_memory_pool_t *pool);
+switch_status_t airpe_skype_avalaible(skype_window_handler_t *window);
+switch_status_t skype_restart( skype_window_handler_t *airpe, const char *params );
+switch_status_t airpe_skype_send_message(skype_window_handler_t *window, const char *message_P);
+void *SWITCH_THREAD_FUNC airpe_skype_thread(switch_thread_t * thread, void *obj);
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
+ */


From ctrix at freeswitch.org  Mon Jan 12 15:26:39 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 17:26:39 -0600
Subject: [Freeswitch-svn] [commit] r11154 -
	freeswitch/branches/ctrix/mod_airpe
Message-ID: 

Author: ctrix
Date: Mon Jan 12 17:26:39 2009
New Revision: 11154

Log:
Ohhh and empty docs are important, as well as the Makefile.



Added:
   freeswitch/branches/ctrix/mod_airpe/INSTALL
   freeswitch/branches/ctrix/mod_airpe/Makefile
   freeswitch/branches/ctrix/mod_airpe/README

Added: freeswitch/branches/ctrix/mod_airpe/INSTALL
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/INSTALL	Mon Jan 12 17:26:39 2009
@@ -0,0 +1,2 @@
+
+Nothing to read here as well.

Added: freeswitch/branches/ctrix/mod_airpe/Makefile
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/Makefile	Mon Jan 12 17:26:39 2009
@@ -0,0 +1,11 @@
+BASE=../../../..
+
+MODNAME=mod_airpe
+
+LOCAL_LDFLAGS=-lX11
+LOCAL_OBJS=airpe_if_common.o airpe_api.o airpe_apps.o airpe_if_x11.o airpe_if_osx.o airpe_if_win32.o
+LOCAL_SOURCES=airpe_if_common.c airpe_api.c airpe_apps.c airpe_if_x11.c airpe_if_osx.c airpe_if_win32.c
+
+include ../../../../build/modmake.rules
+
+

Added: freeswitch/branches/ctrix/mod_airpe/README
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/README	Mon Jan 12 17:26:39 2009
@@ -0,0 +1,2 @@
+
+Nothing to read, sorry


From brian at freeswitch.org  Mon Jan 12 19:56:41 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 21:56:41 -0600
Subject: [Freeswitch-svn] [commit] r11155 - freeswitch/trunk/src
Message-ID: 

Author: brian
Date: Mon Jan 12 21:56:40 2009
New Revision: 11155

Log:
If you were to be in a 32k or 48k conference and play an 8k or 16k file into either one you would over run this buffer.




Modified:
   freeswitch/trunk/src/switch_core_file.c

Modified: freeswitch/trunk/src/switch_core_file.c
==============================================================================
--- freeswitch/trunk/src/switch_core_file.c	(original)
+++ freeswitch/trunk/src/switch_core_file.c	Mon Jan 12 21:56:40 2009
@@ -204,13 +204,13 @@
 			switch_resample_process(fh->resampler, fh->resampler->from, fh->resampler->from_len, fh->resampler->to, fh->resampler->to_size, 0);
 
 		if (fh->resampler->to_len < want || fh->resampler->to_len > orig_len) {
+			int factor = fh->resampler->to_len * fh->samplerate / 1000;
 			if (!fh->buffer) {
-				int factor = fh->resampler->to_len * fh->samplerate / 1000;
 				switch_buffer_create_dynamic(&fh->buffer, factor, factor, 0);
 				switch_assert(fh->buffer);
 			}
 			if (!fh->dbuf) {
-				fh->dbuflen = want * 2;
+				fh->dbuflen = want * factor;
 				fh->dbuf = switch_core_alloc(fh->memory_pool, fh->dbuflen);
 			}
 			switch_assert(fh->resampler->to_len <= fh->dbuflen);


From brian at freeswitch.org  Mon Jan 12 21:17:07 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 23:17:07 -0600
Subject: [Freeswitch-svn] [commit] r11156 - freeswitch/trunk/src
Message-ID: 

Author: brian
Date: Mon Jan 12 23:17:07 2009
New Revision: 11156

Log:
doh I did that wrong

Modified:
   freeswitch/trunk/src/switch_core_file.c

Modified: freeswitch/trunk/src/switch_core_file.c
==============================================================================
--- freeswitch/trunk/src/switch_core_file.c	(original)
+++ freeswitch/trunk/src/switch_core_file.c	Mon Jan 12 23:17:07 2009
@@ -204,13 +204,13 @@
 			switch_resample_process(fh->resampler, fh->resampler->from, fh->resampler->from_len, fh->resampler->to, fh->resampler->to_size, 0);
 
 		if (fh->resampler->to_len < want || fh->resampler->to_len > orig_len) {
-			int factor = fh->resampler->to_len * fh->samplerate / 1000;
 			if (!fh->buffer) {
+				int factor = fh->resampler->to_len * fh->samplerate / 1000;
 				switch_buffer_create_dynamic(&fh->buffer, factor, factor, 0);
 				switch_assert(fh->buffer);
 			}
 			if (!fh->dbuf) {
-				fh->dbuflen = want * factor;
+				fh->dbuflen = want * 4;
 				fh->dbuf = switch_core_alloc(fh->memory_pool, fh->dbuflen);
 			}
 			switch_assert(fh->resampler->to_len <= fh->dbuflen);


From brian at freeswitch.org  Mon Jan 12 21:22:21 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 12 Jan 2009 23:22:21 -0600
Subject: [Freeswitch-svn] [commit] r11157 - freeswitch/trunk/src
Message-ID: 

Author: brian
Date: Mon Jan 12 23:22:21 2009
New Revision: 11157

Log:
sigh

Modified:
   freeswitch/trunk/src/switch_core_file.c

Modified: freeswitch/trunk/src/switch_core_file.c
==============================================================================
--- freeswitch/trunk/src/switch_core_file.c	(original)
+++ freeswitch/trunk/src/switch_core_file.c	Mon Jan 12 23:22:21 2009
@@ -210,7 +210,7 @@
 				switch_assert(fh->buffer);
 			}
 			if (!fh->dbuf) {
-				fh->dbuflen = want * 4;
+				fh->dbuflen = want * 8;
 				fh->dbuf = switch_core_alloc(fh->memory_pool, fh->dbuflen);
 			}
 			switch_assert(fh->resampler->to_len <= fh->dbuflen);


From gmaruzz at freeswitch.org  Tue Jan 13 01:55:53 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 03:55:53 -0600
Subject: [Freeswitch-svn] [commit] r11158 -
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs
Message-ID: 

Author: gmaruzz
Date: Tue Jan 13 03:55:53 2009
New Revision: 11158

Log:
docs

Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/README.skypiax_auth

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/README.skypiax_auth
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/README.skypiax_auth	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/README.skypiax_auth	Tue Jan 13 03:55:53 2009
@@ -11,23 +11,19 @@
 
 Then:
 
-1) Start the Skype client on a desktop linux machine, logout from your autologin username if any, and login with the username and password you want to use for skypiax
-
-2) Configure the Skype client to use the right audio devices, to not update, to not make "events", etc etc...
-
-3) Then, when satisfied, use skypiax_auth (that simulates FS-skypiax connecting to the Skype client). The Skype client will ask you to be authorized to let "skypiax" connect.
-
+1) on a Linux desktop machine, rmmod all the snd* modules
+2) on the desktop machine, modprobe snd-dummy
+3) on the desktop machine, logout from your autologin username if any, launch the Skype client and login as the username you'll use on server
+4) on the desktop machine, set the desktop client to use the "hw:dummy" audio device, to not update, to not make "events", etc etc... Make and receive a couple of test calls. Please note that you (and the remote party) will hear nothing (you're using the snd-dummy "fake" audio driver), that's ok.
+3) on the desktop machine, when satisfied of the Skype client setup, use skypiax_auth (that simulates FS-skypiax connecting to the Skype client). The Skype client will ask you to be authorized to let "skypiax" connect.
 4) Give the authorization and check the "not ask me again" option.
-
 5) Close (Quit) the Skype client from the tray icon, so it saves its config.
-
 6) Then, relaunch the Skype client and use skypiax_auth again, just to be sure it now succeed.
-
 7) Close (Quit) the Skype client from the tray icon, so it saves its config.
 
 *** Do the steps 1-7 for all Skype usernames you will want to use on the server (eg: one Skype username per channel)
 
-When finished wityh all the Skype usernames:
+When finished with all the Skype usernames:
 Copy or targzip the .Skype directory and all its content on the home directory of the server user that will launch the Skype client(s).
 
 ############################


From gmaruzz at freeswitch.org  Tue Jan 13 04:40:46 2009
From: gmaruzz at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 06:40:46 -0600
Subject: [Freeswitch-svn] [commit] r11159 - in
	freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax: . configs
Message-ID: 

Author: gmaruzz
Date: Tue Jan 13 06:40:46 2009
New Revision: 11159

Log:
skypiax: added Xserver (Xvfb) authorization file

Added:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.X.conf
Modified:
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README
   freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/README	Tue Jan 13 06:40:46 2009
@@ -131,6 +131,9 @@
 root at 8-04-srv:~/freeswitch_gmaruzz# cp src/mod/endpoints/mod_skypiax/configs/startskype.sh ./
 root at 8-04-srv:~/freeswitch_gmaruzz# vi startskype.sh
 
+**** let's copy the X servers' auth config file
+root at 8-04-srv:~/freeswitch_gmaruzz#cp src/mod/endpoints/mod_skypiax/configs/skypiax.X.conf /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf
+
 **** start the X servers and the Skype clients
 root at 8-04-srv:~/freeswitch_gmaruzz# sh ./startskype.sh
 

Added: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.X.conf
==============================================================================
--- (empty file)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/skypiax.X.conf	Tue Jan 13 06:40:46 2009
@@ -0,0 +1 @@
+localhost

Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh	(original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/configs/startskype.sh	Tue Jan 13 06:40:46 2009
@@ -8,14 +8,14 @@
 sleep 3
 
 #start the fake X server on a given port
-/usr/bin/Xvfb :101 &
+/usr/bin/Xvfb :101 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 sleep 3
 
 # start a Skype client instance that will connect to the X server above, and will login to the Skype network using the "username password" you send to it on stdin. Here xxx would be the password and skypiax1 the username
 echo "skypiax1 xxx"| DISPLAY=:101 /usr/bin/skype --pipelogin &
 
 sleep 7
-/usr/bin/Xvfb :102 &
+/usr/bin/Xvfb :102 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 sleep 3
 
 echo "skypiax2 xxx"| DISPLAY=:102 /usr/bin/skype --pipelogin &
@@ -25,109 +25,109 @@
 #################################################################
 # Following X server Skype client instances are commented out
 #################################################################
-###/usr/bin/Xvfb :103 &
+###/usr/bin/Xvfb :103 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax3 xxx"| DISPLAY=:103 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :104 &
+###/usr/bin/Xvfb :104 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax4 xxx"| DISPLAY=:104 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :105 &
+###/usr/bin/Xvfb :105 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax5 xxx"| DISPLAY=:105 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :106 &
+###/usr/bin/Xvfb :106 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax6 xxx"| DISPLAY=:106 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :107 &
+###/usr/bin/Xvfb :107 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax7 xxx"| DISPLAY=:107 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :108 &
+###/usr/bin/Xvfb :108 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax8 xxx"| DISPLAY=:108 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :109 &
+###/usr/bin/Xvfb :109 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax9 xxx"| DISPLAY=:109 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :110 &
+###/usr/bin/Xvfb :110 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax10 xxx"| DISPLAY=:110 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :111 &
+###/usr/bin/Xvfb :111 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax11 xxx"| DISPLAY=:111 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :112 &
+###/usr/bin/Xvfb :112 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax12 xxx"| DISPLAY=:112 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :113 &
+###/usr/bin/Xvfb :113 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax13 xxx"| DISPLAY=:113 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :114 &
+###/usr/bin/Xvfb :114 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax14 xxx"| DISPLAY=:114 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :115 &
+###/usr/bin/Xvfb :115 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax15 xxx"| DISPLAY=:115 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :116 &
+###/usr/bin/Xvfb :116 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax16 xxx"| DISPLAY=:116 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :117 &
+###/usr/bin/Xvfb :117 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax17 xxx"| DISPLAY=:117 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :118 &
+###/usr/bin/Xvfb :118 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax18 xxx"| DISPLAY=:118 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :119 &
+###/usr/bin/Xvfb :119 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax19 xxx"| DISPLAY=:119 /usr/bin/skype --pipelogin &
 ###
 ###sleep 7
-###/usr/bin/Xvfb :120 &
+###/usr/bin/Xvfb :120 -auth /usr/local/freeswitch/conf/autoload_configs/skypiax.X.conf &
 ###sleep 3
 ###
 ###echo "skypiax20 xxx"| DISPLAY=:120 /usr/bin/skype --pipelogin &


From anthm at freeswitch.org  Tue Jan 13 09:56:35 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 11:56:35 -0600
Subject: [Freeswitch-svn] [commit] r11160 - in freeswitch/trunk/src: .
	mod/endpoints/mod_portaudio
Message-ID: 

Author: anthm
Date: Tue Jan 13 11:56:35 2009
New Revision: 11160

Log:
MODENDP-169

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
   freeswitch/trunk/src/switch_rtp.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Tue Jan 13 11:56:35 2009
@@ -801,6 +801,7 @@
 	}
 
 	globals.indev = globals.outdev = globals.ringdev = -1;
+	globals.sample_rate = 8000;
 
 	if ((settings = switch_xml_child(cfg, "settings"))) {
 		for (param = switch_xml_child(settings, "param"); param; param = param->next) {
@@ -821,7 +822,7 @@
 				globals.sample_rate = atoi(val);
 			} else if (!strcmp(var, "codec-ms")) {
 				int tmp = atoi(val);
-				if (SWITCH_ACCEPTABLE_INTERVAL(tmp)) {
+				if (switch_check_interval(globals.sample_rate, tmp)) {
 					globals.codec_ms = tmp;
 				} else {
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,

Modified: freeswitch/trunk/src/switch_rtp.c
==============================================================================
--- freeswitch/trunk/src/switch_rtp.c	(original)
+++ freeswitch/trunk/src/switch_rtp.c	Tue Jan 13 11:56:35 2009
@@ -1007,6 +1007,13 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
+static void ping_socket(switch_rtp_t *rtp_session)
+{
+	uint32_t o = UINT_MAX;
+	switch_size_t len = sizeof(o);
+	switch_socket_sendto(rtp_session->sock_input, rtp_session->local_addr, 0, (void *) &o, &len);
+}
+
 SWITCH_DECLARE(void) switch_rtp_break(switch_rtp_t *rtp_session)
 {
 	if (!switch_rtp_ready(rtp_session)) {
@@ -1023,9 +1030,7 @@
 	}
 
 	if (rtp_session->sock_input) {
-		uint32_t o = UINT_MAX;
-		switch_size_t len = sizeof(o);
-		switch_socket_sendto(rtp_session->sock_input, rtp_session->local_addr, 0, (void *) &o, &len);
+		ping_socket(rtp_session);
 	}
 	switch_mutex_unlock(rtp_session->flag_mutex);
 }
@@ -1037,6 +1042,7 @@
 	if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO)) {
 		switch_clear_flag(rtp_session, SWITCH_RTP_FLAG_IO);
 		if (rtp_session->sock_input) {
+			ping_socket(rtp_session);
 			switch_socket_shutdown(rtp_session->sock_input, SWITCH_SHUTDOWN_READWRITE);
 		}
 		if (rtp_session->sock_output && rtp_session->sock_output != rtp_session->sock_input) {


From anthm at freeswitch.org  Tue Jan 13 11:02:48 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 13:02:48 -0600
Subject: [Freeswitch-svn] [commit] r11161 - in freeswitch/trunk/src: .
	include mod/endpoints/mod_sofia
Message-ID: 

Author: anthm
Date: Tue Jan 13 13:02:48 2009
New Revision: 11161

Log:
reset rtp media timer when we get a reinvite

Modified:
   freeswitch/trunk/src/include/switch_rtp.h
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
   freeswitch/trunk/src/switch_rtp.c

Modified: freeswitch/trunk/src/include/switch_rtp.h
==============================================================================
--- freeswitch/trunk/src/include/switch_rtp.h	(original)
+++ freeswitch/trunk/src/include/switch_rtp.h	Tue Jan 13 13:02:48 2009
@@ -168,7 +168,7 @@
 
 SWITCH_DECLARE(char *) switch_rtp_get_remote_host(switch_rtp_t *rtp_session);
 SWITCH_DECLARE(switch_port_t) switch_rtp_get_remote_port(switch_rtp_t *rtp_session);
-
+SWITCH_DECLARE(void) switch_rtp_reset_media_timer(switch_rtp_t *rtp_session);
 SWITCH_DECLARE(void) switch_rtp_set_max_missed_packets(switch_rtp_t *rtp_session, uint32_t max);
 
 /*! 

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	Tue Jan 13 13:02:48 2009
@@ -1817,6 +1817,10 @@
 	switch_assert(tech_pvt != NULL);
 	switch_mutex_lock(tech_pvt->sofia_mutex);
 
+	if (switch_rtp_ready(tech_pvt->rtp_session)) {
+		switch_rtp_reset_media_timer(tech_pvt->rtp_session);
+	}
+
 	if ((var = switch_channel_get_variable(tech_pvt->channel, SOFIA_SECURE_MEDIA_VARIABLE)) && switch_true(var)) {
 		switch_set_flag_locked(tech_pvt, TFLAG_SECURE);
 	}

Modified: freeswitch/trunk/src/switch_rtp.c
==============================================================================
--- freeswitch/trunk/src/switch_rtp.c	(original)
+++ freeswitch/trunk/src/switch_rtp.c	Tue Jan 13 13:02:48 2009
@@ -608,6 +608,11 @@
 	rtp_session->max_missed_packets = max;
 }
 
+SWITCH_DECLARE(void) switch_rtp_reset_media_timer(switch_rtp_t *rtp_session)
+{
+	rtp_session->missed_count = 0;
+}
+
 SWITCH_DECLARE(char *) switch_rtp_get_remote_host(switch_rtp_t *rtp_session)
 {
 	return switch_strlen_zero(rtp_session->remote_host_str) ? "0.0.0.0" : rtp_session->remote_host_str;


From silik0n at freeswitch.org  Tue Jan 13 13:43:26 2009
From: silik0n at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 16:43:26 -0500
Subject: [Freeswitch-svn] [commit] r11071 -
	freeswitch/trunk/src/mod/applications/mod_easyroute
Message-ID: 

Author: silik0n
Date: Tue Jan 13 16:43:25 2009
New Revision: 11071

Log:
useless comments

Modified:
   freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c

Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	Tue Jan 13 16:43:25 2009
@@ -332,15 +332,6 @@
 			stream->write_function(stream, "Number    \tLimit     \tGroup    \tAcctCode  \tDialstring\n");
 			stream->write_function(stream, "%-10s\t%-10s\t%-10s\t%-10s\t%s\n", destnum, results.limit, results.group, results.acctcode, results.dialstring);
 		} else {
-
-			/*      char    limit[16];
-        			char    destnum[16];
-        			char    dialstring[256];
-        			char    group[16];
-        			char    acctcode[17];
-        			char    translated[17];
-			*/
-
 			if (!strncasecmp(argv[1], "dialstring", 10)) {
 				stream->write_function(stream, "%s", results.dialstring);
 			} else if (!strncasecmp(argv[1], "translated", 10)) {


From brian at freeswitch.org  Tue Jan 13 13:43:55 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 15:43:55 -0600
Subject: [Freeswitch-svn] [commit] r11162 - in freeswitch/trunk:
	src/mod/formats/mod_local_stream support-d
Message-ID: 

Author: brian
Date: Tue Jan 13 15:43:55 2009
New Revision: 11162

Log:
buffer regressions

Modified:
   freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c
   freeswitch/trunk/support-d/.emacs

Modified: freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c
==============================================================================
--- freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c	(original)
+++ freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c	Tue Jan 13 15:43:55 2009
@@ -183,7 +183,7 @@
 
 			fname = path_buf;
 			fh.prebuf = source->prebuf;
-			fh.pre_buffer_datalen = 65536;
+			fh.pre_buffer_datalen = source->prebuf;
 
 			if (switch_core_file_open(&fh,
 									  (char *) fname,
@@ -206,16 +206,23 @@
 			while (RUNNING) {
 				switch_core_timer_next(&timer);
 				olen = source->samples;
+				int is_open = switch_test_flag((&fh), SWITCH_FILE_OPEN);
 
-				if (switch_core_file_read(&fh, abuf, &olen) != SWITCH_STATUS_SUCCESS || !olen) {
-					switch_core_file_close(&fh);
-					break;
+				if (is_open) {
+					if (switch_core_file_read(&fh, abuf, &olen) != SWITCH_STATUS_SUCCESS || !olen) {
+						switch_core_file_close(&fh);
+					}
+
+					switch_buffer_write(audio_buffer, abuf, olen * 2);
 				}
 
-				switch_buffer_write(audio_buffer, abuf, olen * 2);
 				used = switch_buffer_inuse(audio_buffer);
 
-				if (used >= source->prebuf || (source->total && used > source->samples * 2)) {
+				if (!used && !is_open) {
+					break;
+				}
+
+				if (!is_open || used >= source->prebuf || (source->total && used > source->samples * 2)) {
 					used = switch_buffer_read(audio_buffer, dist_buf, source->samples * 2);
 					if (source->total) {
 
@@ -285,6 +292,9 @@
 	char *alt_path = NULL;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
 
+	/* already buffering a step back, so always disable it */
+	handle->pre_buffer_datalen = 0;
+
 	if (switch_test_flag(handle, SWITCH_FILE_FLAG_WRITE)) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "This format does not support writing!\n");
 		return SWITCH_STATUS_FALSE;

Modified: freeswitch/trunk/support-d/.emacs
==============================================================================
--- freeswitch/trunk/support-d/.emacs	(original)
+++ freeswitch/trunk/support-d/.emacs	Tue Jan 13 15:43:55 2009
@@ -7,7 +7,7 @@
 ;(setq cperl-hairy t)
 (global-unset-key "\C-h")
 (global-set-key "\C-h" 'delete-backward-char)
-(load "/usr/share/emacs/site-lisp/rng-auto.el")
+;(load "/usr/share/emacs/site-lisp/rng-auto.el")
 
 (require 'cc-mode)
 (defun my-build-tab-stop-list (width)


From brian at freeswitch.org  Tue Jan 13 15:16:13 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 17:16:13 -0600
Subject: [Freeswitch-svn] [commit] r11163 - freeswitch/trunk/build
Message-ID: 

Author: brian
Date: Tue Jan 13 17:16:12 2009
New Revision: 11163

Log:
more info

Modified:
   freeswitch/trunk/build/Makefile

Modified: freeswitch/trunk/build/Makefile
==============================================================================
--- freeswitch/trunk/build/Makefile	(original)
+++ freeswitch/trunk/build/Makefile	Tue Jan 13 17:16:12 2009
@@ -14,6 +14,9 @@
 	@echo " +       (uhd-sounds includes hd-sounds, sounds) +"
 	@echo " +       (hd-sounds includes sounds)             +"
 	@echo " +       ------------------------------------    +"
+	@echo " +               $(MAKE) cd-sounds-install          +"  
+	@echo " +               $(MAKE) cd-moh-install             +"  
+	@echo " +                                               +"
 	@echo " +               $(MAKE) uhd-sounds-install         +"  
 	@echo " +               $(MAKE) uhd-moh-install            +"  
 	@echo " +                                               +"


From silik0n at freeswitch.org  Tue Jan 13 15:18:01 2009
From: silik0n at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 18:18:01 -0500
Subject: [Freeswitch-svn] [commit] r11072 -
	freeswitch/trunk/src/mod/applications/mod_easyroute
Message-ID: 

Author: silik0n
Date: Tue Jan 13 18:18:00 2009
New Revision: 11072

Log:
clean up a little more

Modified:
   freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c

Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	Tue Jan 13 18:18:00 2009
@@ -44,11 +44,11 @@
 
 typedef struct easyroute_results{
 	char	limit[16];
-        char	destnum[16];
-        char	dialstring[256];
-        char	group[16];
+	char	destnum[16];
+	char	dialstring[256];
+	char	group[16];
 	char	acctcode[17];
-        char	translated[17];
+	char	translated[17];
 } easyroute_results_t;
 
 
@@ -170,7 +170,7 @@
 		if (switch_odbc_handle_exec(globals.master_odbc, "select count(*) from gateways", NULL) != SWITCH_STATUS_SUCCESS) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot find  SQL Database! (Where\'s the gateways table\?\?)\n");
 		}
-    	} else {
+	} else {
 #endif
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot Open ODBC Connection (did you enable it?!)\n");
 #ifdef SWITCH_HAVE_ODBC


From silik0n at freeswitch.org  Tue Jan 13 15:22:04 2009
From: silik0n at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 18:22:04 -0500
Subject: [Freeswitch-svn] [commit] r11073 -
	freeswitch/trunk/src/mod/applications/mod_commands
Message-ID: 

Author: silik0n
Date: Tue Jan 13 18:22:04 2009
New Revision: 11073

Log:
clean up formatting

Modified:
   freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c

Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	Tue Jan 13 18:22:04 2009
@@ -253,7 +253,7 @@
 		switch_event_destroy(¶ms);
 	}
 
- end:
+  end:
 
 	switch_safe_free(group_name);
 	
@@ -485,7 +485,7 @@
 		stream->write_function(stream, "%s", digest);
 	}
 
-    return SWITCH_STATUS_SUCCESS;
+	return SWITCH_STATUS_SUCCESS;
 }
 
 SWITCH_STANDARD_API(url_decode_function)
@@ -502,7 +502,7 @@
 	stream->write_function(stream, "%s", reply);
 
 	switch_safe_free(data);
-    return SWITCH_STATUS_SUCCESS;
+	return SWITCH_STATUS_SUCCESS;
 }
 
 SWITCH_STANDARD_API(eval_function)
@@ -546,7 +546,7 @@
 		free(expanded);
 	}
 
-    return SWITCH_STATUS_SUCCESS;
+	return SWITCH_STATUS_SUCCESS;
 }
 
 SWITCH_STANDARD_API(module_exists_function)
@@ -559,7 +559,7 @@
 		}		
 	}
 
-    return SWITCH_STATUS_SUCCESS;
+	return SWITCH_STATUS_SUCCESS;
 }
 
 SWITCH_STANDARD_API(domain_exists_function)
@@ -594,7 +594,7 @@
 	stream->write_function(stream, "%s", reply);
 
 	switch_safe_free(data);
-    return SWITCH_STATUS_SUCCESS;
+	return SWITCH_STATUS_SUCCESS;
 
 }
 
@@ -1151,7 +1151,7 @@
 			p++;
 		}
 	}
- end:
+  end:
 
 	if (switch_strlen_zero(cmd)) {
 		stream->write_function(stream, "-USAGE: %s\n", UNLOAD_SYNTAX);
@@ -1194,7 +1194,7 @@
 			p++;
 		}
 	}
- end:
+  end:
 
 	if (switch_strlen_zero(cmd)) {
 		stream->write_function(stream, "-USAGE: %s\n", UNLOAD_SYNTAX);
@@ -2270,7 +2270,7 @@
 		}
 	}
 
- bad:
+  bad:
 
 	stream->write_function(stream, "-ERR Invalid syntax. USAGE: %s\n", SCHED_SYNTAX);
 
@@ -2682,7 +2682,7 @@
 		holder.stream->write_function(holder.stream, "-ERR Cannot find format %s\n", as);
 	}
 
- end:
+  end:
 
 	switch_safe_free(mydata);
 
@@ -3100,17 +3100,17 @@
 #define SYSTEM_SYNTAX ""
 SWITCH_STANDARD_API(system_function)
 {
-    if (switch_strlen_zero(cmd)) {
-        stream->write_function(stream, "-USAGE: %s\n", SYSTEM_SYNTAX);
-        return SWITCH_STATUS_SUCCESS;
-    } 
-
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Executing command: %s\n", cmd);
-    if (switch_system(cmd, SWITCH_TRUE) < 0) {
-       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Failed to execute command: %s\n", cmd);
-    }
-    stream->write_function(stream, "+OK\n");
-    return SWITCH_STATUS_SUCCESS;
+	if (switch_strlen_zero(cmd)) {
+		stream->write_function(stream, "-USAGE: %s\n", SYSTEM_SYNTAX);
+		return SWITCH_STATUS_SUCCESS;
+	} 
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Executing command: %s\n", cmd);
+	if (switch_system(cmd, SWITCH_TRUE) < 0) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Failed to execute command: %s\n", cmd);
+	}
+	stream->write_function(stream, "+OK\n");
+	return SWITCH_STATUS_SUCCESS;
 }
 
 SWITCH_STANDARD_API(strftime_tz_api_function)
@@ -3246,7 +3246,7 @@
 	switch_console_set_complete("add fsctl shutdown restart asap");
 	switch_console_set_complete("add fsctl shutdown cancel");
 	switch_console_set_complete("add fsctl sps");
- 	switch_console_set_complete("add fsctl sync_clock");
+	switch_console_set_complete("add fsctl sync_clock");
 	switch_console_set_complete("add fsctl reclaim_mem");
 	switch_console_set_complete("add fsctl max_sessions");
 	switch_console_set_complete("add fsctl max_dtmf_duration");


From silik0n at freeswitch.org  Tue Jan 13 15:25:47 2009
From: silik0n at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 18:25:47 -0500
Subject: [Freeswitch-svn] [commit] r11074 -
	freeswitch/trunk/src/mod/applications/mod_dptools
Message-ID: 

Author: silik0n
Date: Tue Jan 13 18:25:47 2009
New Revision: 11074

Log:
clean up formatting

Modified:
   freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c

Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	Tue Jan 13 18:25:47 2009
@@ -603,14 +603,14 @@
 SWITCH_STANDARD_APP(presence_function)
 {
 	char *argv[6] = { 0 };
-    int argc;
-    char *mydata = NULL;
+	int argc;
+	char *mydata = NULL;
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 
 	if (switch_strlen_zero(data) || !(mydata = switch_core_session_strdup(session, data))) {
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID ARGS!\n");
-        return;
-    }
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID ARGS!\n");
+		return;
+	}
 
 	if ((argc = switch_separate_string(mydata, ' ', argv, sizeof(argv) / sizeof(argv[0]))) < 2) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID ARGS!\n");
@@ -2105,7 +2105,7 @@
 	}
 
 
- done:
+  done:
 
 	if (dest && dest != template) {
 		switch_safe_free(dest);


From silik0n at freeswitch.org  Tue Jan 13 15:27:55 2009
From: silik0n at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 18:27:55 -0500
Subject: [Freeswitch-svn] [commit] r11075 -
	freeswitch/trunk/src/mod/applications/mod_fifo
Message-ID: 

Author: silik0n
Date: Tue Jan 13 18:27:54 2009
New Revision: 11075

Log:
clean up formatting

Modified:
   freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c

Modified: freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c	Tue Jan 13 18:27:54 2009
@@ -389,16 +389,16 @@
 {
 	switch_hash_index_t *hi;
 	void *val;
-    const void *var;
+	const void *var;
 	switch_core_session_t *session;
-    switch_channel_t *channel;
+	switch_channel_t *channel;
 	int total = 0;
 
 	switch_mutex_lock(node->mutex);
 	for (hi = switch_hash_first(NULL, node->consumer_hash); hi; hi = switch_hash_next(hi)) {
 		switch_hash_this(hi, &var, NULL, &val);
 		session = (switch_core_session_t *) val;
-        channel = switch_core_session_get_channel(session);
+		channel = switch_core_session_get_channel(session);
 		if (!switch_channel_test_flag(channel, CF_BRIDGED)) {
 			total++;
 		}
@@ -1863,8 +1863,8 @@
 	
 	sql = switch_mprintf("delete from fifo_outbound where fifo_name='%q' and uuid = '%q'", fifo_name, digest);
 	switch_assert(sql);
-    fifo_execute_sql(sql, globals.sql_mutex);
-    free(sql);
+	fifo_execute_sql(sql, globals.sql_mutex);
+	free(sql);
 	
 	
 	switch_mutex_lock(globals.mutex);
@@ -1895,8 +1895,8 @@
 	
 	sql = switch_mprintf("delete from fifo_outbound where fifo_name='%q' and uuid = '%q' and hostname='%q'", fifo_name, digest, globals.hostname);
 	switch_assert(sql);
-    fifo_execute_sql(sql, globals.sql_mutex);
-    free(sql);
+	fifo_execute_sql(sql, globals.sql_mutex);
+	free(sql);
 }
 
 #define FIFO_MEMBER_API_SYNTAX "[add   [] [] [] | del  ]"
@@ -1956,7 +1956,7 @@
 		stream->write_function(stream, "%s", "+OK\n");
 	} else {
 		stream->write_function(stream, "%s", "-ERR Invalid!\n");
-        goto done;
+		goto done;
 	}
 
  done:


From silik0n at freeswitch.org  Tue Jan 13 15:38:13 2009
From: silik0n at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 17:38:13 -0600
Subject: [Freeswitch-svn] [commit] r11164 -
	freeswitch/trunk/src/mod/applications/mod_easyroute
Message-ID: 

Author: silik0n
Date: Tue Jan 13 17:38:12 2009
New Revision: 11164

Log:
Brian is getting new earrings

Modified:
   freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c

Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	Tue Jan 13 17:38:12 2009
@@ -44,11 +44,11 @@
 
 typedef struct easyroute_results{
 	char	limit[16];
-        char	destnum[16];
-        char	dialstring[256];
-        char	group[16];
+	char	destnum[16];
+	char	dialstring[256];
+	char	group[16];
 	char	acctcode[17];
-        char	translated[17];
+	char	translated[17];
 } easyroute_results_t;
 
 
@@ -170,7 +170,7 @@
 		if (switch_odbc_handle_exec(globals.master_odbc, "select count(*) from gateways", NULL) != SWITCH_STATUS_SUCCESS) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot find  SQL Database! (Where\'s the gateways table\?\?)\n");
 		}
-    	} else {
+	} else {
 #endif
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot Open ODBC Connection (did you enable it?!)\n");
 #ifdef SWITCH_HAVE_ODBC
@@ -257,7 +257,7 @@
 			switch_set_string(results->acctcode, pdata.acctcode);
 		}
 	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "DB Error Setting Default Route!\n");
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DB Error Setting Default Route!\n");
 		switch_set_string(results->limit, "9999");
 		switch_snprintf(results->dialstring, 256, "%s/%s@%s", globals.default_techprofile, dn, globals.default_gateway);
 		switch_set_string(results->group, "");
@@ -290,7 +290,7 @@
 	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
 		destnum = argv[0];
 		route_lookup(destnum, &results);
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "EASY ROUTE DEST: [%s]\n", results.dialstring);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "EASY ROUTE DEST: [%s]\n", results.dialstring);
 		switch_channel_set_variable(channel, "easy_destnum", results.destnum);
 		switch_channel_set_variable(channel, "easy_dialstring", results.dialstring);
 		switch_channel_set_variable(channel, "easy_group", results.group);
@@ -319,14 +319,34 @@
 	
 	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
 		destnum = argv[0];
+		if (argc < 1 || argc > 2){
+			stream->write_function(stream, "Invalid Input!\n");
+			return SWITCH_STATUS_SUCCESS;
+		} 
 		
 		if (!route_lookup(destnum, &results) == SWITCH_STATUS_SUCCESS) {
 			stream->write_function(stream, "No Match!\n");
 			return SWITCH_STATUS_SUCCESS;
 		}
-		
-		stream->write_function(stream, "Number    \tLimit     \tGroup    \tAcctCode  \tDialstring\n");
-		stream->write_function(stream, "%-10s\t%-10s\t%-10s\t%-10s\t%s\n", destnum, results.limit, results.group, results.acctcode, results.dialstring);
+		if (argc != 2){
+			stream->write_function(stream, "Number    \tLimit     \tGroup    \tAcctCode  \tDialstring\n");
+			stream->write_function(stream, "%-10s\t%-10s\t%-10s\t%-10s\t%s\n", destnum, results.limit, results.group, results.acctcode, results.dialstring);
+		} else {
+			if (!strncasecmp(argv[1], "dialstring", 10)) {
+				stream->write_function(stream, "%s", results.dialstring);
+			} else if (!strncasecmp(argv[1], "translated", 10)) {
+				stream->write_function(stream, "%s", results.translated);
+			} else if (!strncasecmp(argv[1], "limit", 5)) {
+				stream->write_function(stream, "%s", results.limit);
+			} else if (!strncasecmp(argv[1], "group", 5)) {
+				stream->write_function(stream, "%s", results.group);
+			} else if (!strncasecmp(argv[1], "acctcode", 8)) {
+				stream->write_function(stream, "%s", results.acctcode);
+			} else {
+				stream->write_function(stream, "Invalid Input!\n");
+				return SWITCH_STATUS_SUCCESS;
+			}
+		} 
 	} else {
 		stream->write_function(stream, "Invalid Input!\n");
 	}
@@ -354,7 +374,7 @@
 
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_easyroute_shutdown)
 {	
-	switch_odbc_handle_connect(globals.master_odbc);
+	switch_odbc_handle_disconnect(globals.master_odbc);
 	return SWITCH_STATUS_UNLOAD;
 }
 


From silik0n at freeswitch.org  Tue Jan 13 15:48:55 2009
From: silik0n at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 17:48:55 -0600
Subject: [Freeswitch-svn] [commit] r11165 -
	freeswitch/trunk/src/mod/applications/mod_dptools
Message-ID: 

Author: silik0n
Date: Tue Jan 13 17:48:55 2009
New Revision: 11165

Log:
tab cleanup

Modified:
   freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c

Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	Tue Jan 13 17:48:55 2009
@@ -603,14 +603,14 @@
 SWITCH_STANDARD_APP(presence_function)
 {
 	char *argv[6] = { 0 };
-    int argc;
-    char *mydata = NULL;
+	int argc;
+	char *mydata = NULL;
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 
 	if (switch_strlen_zero(data) || !(mydata = switch_core_session_strdup(session, data))) {
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID ARGS!\n");
-        return;
-    }
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID ARGS!\n");
+		return;
+	}
 
 	if ((argc = switch_separate_string(mydata, ' ', argv, sizeof(argv) / sizeof(argv[0]))) < 2) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID ARGS!\n");
@@ -2105,7 +2105,7 @@
 	}
 
 
- done:
+  done:
 
 	if (dest && dest != template) {
 		switch_safe_free(dest);


From brian at freeswitch.org  Tue Jan 13 15:51:17 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 13 Jan 2009 17:51:17 -0600
Subject: [Freeswitch-svn] [commit] r11166 - freeswitch/trunk/conf
Message-ID: 

Author: brian
Date: Tue Jan 13 17:51:17 2009
New Revision: 11166

Log:
test

Modified:
   freeswitch/trunk/conf/freeswitch.xml

Modified: freeswitch/trunk/conf/freeswitch.xml
==============================================================================
--- freeswitch/trunk/conf/freeswitch.xml	(original)
+++ freeswitch/trunk/conf/freeswitch.xml	Tue Jan 13 17:51:17 2009
@@ -16,6 +16,7 @@
     
     NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE 
 -->
+
 
 
   
-
 
 
   
+
 
 
   
-
 
 
   
   
   
-   
   
     
     
     


From mrene at freeswitch.org  Wed Jan 14 08:28:30 2009
From: mrene at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 10:28:30 -0600
Subject: [Freeswitch-svn] [commit] r11195 -
	freeswitch/trunk/src/mod/applications/mod_limit
Message-ID: 

Author: mrene
Date: Wed Jan 14 10:28:30 2009
New Revision: 11195

Log:
multi-line
testing



Modified:
   freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c

Modified: freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c	Wed Jan 14 10:28:30 2009
@@ -64,7 +64,7 @@
 };
 typedef struct limit_hash_item limit_hash_item_t;
 
-
+ 
 static char limit_sql[] =
 	"CREATE TABLE limit_data (\n"
 	"   hostname   VARCHAR(255),\n" "   realm      VARCHAR(255),\n" "   id         VARCHAR(255),\n" "   uuid       VARCHAR(255)\n" ");\n";


From silik0n at freeswitch.org  Wed Jan 14 09:53:46 2009
From: silik0n at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 11:53:46 -0600
Subject: [Freeswitch-svn] [commit] r11196 -
	freeswitch/trunk/src/mod/applications/mod_easyroute
Message-ID: 

Author: silik0n
Date: Wed Jan 14 11:53:46 2009
New Revision: 11196

Log:
Resolve   MODAPP-192

Modified:
   freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c

Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	Wed Jan 14 11:53:46 2009
@@ -191,7 +191,7 @@
 	return status;
 }
 
-static char SQL_LOOKUP[] = "SELECT gateways.gateway_ip, gateways.group, gateways.limit, gateways.techprofile, numbers.acctcode, numbers.translated from gateways, numbers where numbers.number = \"%s\" and numbers.gateway_id = gateways.gateway_id limit 1;";
+static char SQL_LOOKUP[] = "SELECT gateways.gateway_ip, gateways.group, gateways.limit, gateways.techprofile, numbers.acctcode, numbers.translated from gateways, numbers where numbers.number = '%s' and numbers.gateway_id = gateways.gateway_id limit 1;";
 
 static switch_status_t route_lookup(char *dn, easyroute_results_t *results)
 {	


From mikej at freeswitch.org  Wed Jan 14 09:57:15 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 11:57:15 -0600
Subject: [Freeswitch-svn] [commit] r11197 -
	freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket
Message-ID: 

Author: mikej
Date: Wed Jan 14 11:57:15 2009
New Revision: 11197

Log:
no need to be crass

Modified:
   freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs

Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs	(original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs	Wed Jan 14 11:57:15 2009
@@ -145,14 +145,14 @@
                     int pos = plainEvent.Body.IndexOf("\n\n");
                     if (pos < plainEvent.Body.Length - 2)
                     {
-                        Console.WriteLine("Fucked up event");
+                        Console.WriteLine("Invalid event");
                         Console.WriteLine("Header");
                         Console.WriteLine(headers);
                         Console.WriteLine("Body");
                         Console.WriteLine(plainEvent.Body);
                         Console.WriteLine("=========================== EVERYTHING in _text ==============================");
                         Console.WriteLine(_text);
-                        throw new InvalidDataException("Fucked up event: " + _text);
+                        throw new InvalidDataException("Invalid event: " + _text);
                     }
 
                     if (plainEvent.Body.Length < plainEvent.ContentLength)
@@ -178,4 +178,4 @@
                 _piecesToAppend.Enqueue(text);
         }
     }
-}
\ No newline at end of file
+}


From intralanman at freeswitch.org  Wed Jan 14 10:04:44 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 12:04:44 -0600
Subject: [Freeswitch-svn] [commit] r11198 - freeswitch/trunk
Message-ID: 

Author: intralanman
Date: Wed Jan 14 12:04:44 2009
New Revision: 11198

Log:
test



Added:
   freeswitch/trunk/test.txt

Added: freeswitch/trunk/test.txt
==============================================================================
--- (empty file)
+++ freeswitch/trunk/test.txt	Wed Jan 14 12:04:44 2009
@@ -0,0 +1 @@
+test


From intralanman at freeswitch.org  Wed Jan 14 10:05:27 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 12:05:27 -0600
Subject: [Freeswitch-svn] [commit] r11199 - freeswitch/trunk
Message-ID: 

Author: intralanman
Date: Wed Jan 14 12:05:26 2009
New Revision: 11199

Log:
whoops

Removed:
   freeswitch/trunk/test.txt


From anthm at freeswitch.org  Wed Jan 14 11:44:14 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 13:44:14 -0600
Subject: [Freeswitch-svn] [commit] r11200 - in freeswitch/trunk/src: .
	mod/formats/mod_shout
Message-ID: 

Author: anthm
Date: Wed Jan 14 13:44:14 2009
New Revision: 11200

Log:
fix buffering issue in mod_shout/core

Modified:
   freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c
   freeswitch/trunk/src/switch_core_file.c
   freeswitch/trunk/src/switch_ivr_play_say.c

Modified: freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c
==============================================================================
--- freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c	(original)
+++ freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c	Wed Jan 14 13:44:14 2009
@@ -116,6 +116,12 @@
 	int lame_ready;
 	int eof;
 	int channels;
+	int16_t *l;
+	switch_size_t llen;
+	int16_t *r;
+	switch_size_t rlen;
+	unsigned char *mp3buf;
+	switch_size_t mp3buflen;
 };
 
 typedef struct shout_context shout_context_t;
@@ -903,8 +909,7 @@
 static switch_status_t shout_file_write(switch_file_handle_t *handle, void *data, size_t *len)
 {
 	shout_context_t *context;
-	unsigned char mp3buf[8192] = "";
-	int rlen;
+	int rlen = 0;
 	int16_t *audio = data;
 	int nsamples = *len;
 
@@ -954,23 +959,32 @@
 		context->lame_ready = 1;
 	}
 
+	if (context->mp3buflen < nsamples * 4) {
+		context->mp3buflen = nsamples * 4;
+		context->mp3buf = switch_core_alloc(context->memory_pool, context->mp3buflen);
+	}
+
 	if (handle->channels == 2) {
-		int16_t l[4096] = { 0 };
-		int16_t r[4096] = { 0 };
 		int i, j = 0;
-
+		
+		if (context->llen < nsamples) {
+			context->l = switch_core_alloc(context->memory_pool, nsamples * 2);
+			context->r = switch_core_alloc(context->memory_pool, nsamples * 2);
+			context->llen = context->rlen = nsamples;
+		}
+		
 		for (i = 0; i < nsamples; i++) {
-			l[i] = audio[j++];
-			r[i] = audio[j++];
+			context->l[i] = audio[j++];
+			context->r[i] = audio[j++];
 		}
-
-		if ((rlen = lame_encode_buffer(context->gfp, l, r, nsamples, mp3buf, sizeof(mp3buf))) < 0) {
+		
+		if ((rlen = lame_encode_buffer(context->gfp, context->l, context->r, nsamples, context->mp3buf, context->mp3buflen)) < 0) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "MP3 encode error %d!\n", rlen);
 			return SWITCH_STATUS_FALSE;
 		}
 
 	} else if (handle->channels == 1) {
-		if ((rlen = lame_encode_buffer(context->gfp, audio, NULL, nsamples, mp3buf, sizeof(mp3buf))) < 0) {
+		if ((rlen = lame_encode_buffer(context->gfp, audio, NULL, nsamples, context->mp3buf, context->mp3buflen)) < 0) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "MP3 encode error %d!\n", rlen);
 			return SWITCH_STATUS_FALSE;
 		}
@@ -979,7 +993,7 @@
 	}
 
 	if (rlen) {
-		int ret = fwrite(mp3buf, 1, rlen, context->fp);
+		int ret = fwrite(context->mp3buf, 1, rlen, context->fp);
 		if (ret < 0) {
 			return SWITCH_STATUS_FALSE;
 		}
@@ -1445,7 +1459,7 @@
 		for (param = switch_xml_child(settings, "param"); param; param = param->next) {
 			char *var = (char *) switch_xml_attr_soft(param, "name");
 			char *val = (char *) switch_xml_attr_soft(param, "value");
-
+			
 			if (!strcmp(var, "decoder")) {
 				switch_set_string(globals.decoder, val);
 			} else if (!strcmp(var, "volume")) {

Modified: freeswitch/trunk/src/switch_core_file.c
==============================================================================
--- freeswitch/trunk/src/switch_core_file.c	(original)
+++ freeswitch/trunk/src/switch_core_file.c	Wed Jan 14 13:44:14 2009
@@ -119,7 +119,7 @@
 
 	if (fh->pre_buffer_datalen) {
 		//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Prebuffering %d bytes\n", (int)fh->pre_buffer_datalen);
-		switch_buffer_create_dynamic(&fh->pre_buffer, fh->pre_buffer_datalen, fh->pre_buffer_datalen / 2, 0);
+		switch_buffer_create_dynamic(&fh->pre_buffer, fh->pre_buffer_datalen * fh->channels, fh->pre_buffer_datalen * fh->channels / 2, 0);
 		fh->pre_buffer_data = switch_core_alloc(fh->memory_pool, fh->pre_buffer_datalen);
 	}
 
@@ -248,16 +248,20 @@
 	if (!switch_test_flag(fh, SWITCH_FILE_NATIVE) && fh->native_rate != fh->samplerate) {
 		if (!fh->resampler) {
 			if (switch_resample_create(&fh->resampler,
-									   fh->native_rate, orig_len, fh->samplerate, (uint32_t) orig_len, fh->memory_pool) != SWITCH_STATUS_SUCCESS) {
+									   fh->native_rate, 
+									   orig_len * fh->channels, 
+									   fh->samplerate, 
+									   (uint32_t) orig_len *fh->channels, 
+									   fh->memory_pool) != SWITCH_STATUS_SUCCESS) {
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Unable to create resampler!\n");
 				return SWITCH_STATUS_GENERR;
 			}
 		}
 
-		fh->resampler->from_len = switch_short_to_float(data, fh->resampler->from, (int) *len);
+		fh->resampler->from_len = switch_short_to_float(data, fh->resampler->from, (int) *len * fh->channels);
 		fh->resampler->to_len =
 			switch_resample_process(fh->resampler, fh->resampler->from, fh->resampler->from_len, fh->resampler->to, fh->resampler->to_size, 0);
-		if (fh->resampler->to_len > orig_len) {
+		if (fh->resampler->to_len > orig_len * fh->channels) {
 			if (!fh->dbuf) {
 				fh->dbuflen = fh->resampler->to_len * 2;
 				fh->dbuf = switch_core_alloc(fh->memory_pool, fh->dbuflen);
@@ -269,7 +273,7 @@
 			switch_float_to_short(fh->resampler->to, data, fh->resampler->to_len);
 		}
 
-		*len = fh->resampler->to_len;
+		*len = fh->resampler->to_len / fh->channels;
 
 	}
 
@@ -282,13 +286,14 @@
 		switch_size_t rlen, blen;
 		switch_status_t status = SWITCH_STATUS_SUCCESS;
 		int asis = switch_test_flag(fh, SWITCH_FILE_NATIVE);
-
-		switch_buffer_write(fh->pre_buffer, data, asis ? *len : *len * 2);
+		
+		switch_buffer_write(fh->pre_buffer, data, (asis ? *len : *len * 2) * fh->channels);
 
 		rlen = switch_buffer_inuse(fh->pre_buffer);
 		if (rlen >= fh->pre_buffer_datalen) {
 			blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen);
 			if (!asis) blen /= 2;
+			if (fh->channels) blen /= fh->channels;
 			if ((status = fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen)) != SWITCH_STATUS_SUCCESS) {
 				*len = 0;
 			}
@@ -354,9 +359,6 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
-	switch_clear_flag(fh, SWITCH_FILE_OPEN);
-	status = fh->file_interface->file_close(fh);
-
 	if (fh->buffer) {
 		switch_buffer_destroy(&fh->buffer);
 	}
@@ -369,6 +371,7 @@
 			while((rlen = switch_buffer_inuse(fh->pre_buffer))) {
 				blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen);
 				if (asis) blen /= 2;
+				if (fh->channels) blen /= fh->channels;
 				if (fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen) != SWITCH_STATUS_SUCCESS) {
 					break;
 				}
@@ -378,6 +381,9 @@
 		switch_buffer_destroy(&fh->pre_buffer);
 	}
 
+	switch_clear_flag(fh, SWITCH_FILE_OPEN);
+	status = fh->file_interface->file_close(fh);
+
 	switch_resample_destroy(&fh->resampler);
 
 	UNPROTECT_INTERFACE(fh->file_interface);

Modified: freeswitch/trunk/src/switch_ivr_play_say.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_play_say.c	(original)
+++ freeswitch/trunk/src/switch_ivr_play_say.c	Wed Jan 14 13:44:14 2009
@@ -420,6 +420,7 @@
 		}
 	}
 
+	fh->pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
 
 	if (switch_core_file_open(fh,
 							  file,


From brian at freeswitch.org  Wed Jan 14 12:29:17 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 14:29:17 -0600
Subject: [Freeswitch-svn] [commit] r11201 - in freeswitch/trunk/src: .
	include mod/applications/mod_dptools
Message-ID: 

Author: brian
Date: Wed Jan 14 14:29:16 2009
New Revision: 11201

Log:
 

You can use play and get digits in the dialplan as an application now.



Modified:
   freeswitch/trunk/src/include/switch_ivr.h
   freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
   freeswitch/trunk/src/switch_ivr_play_say.c

Modified: freeswitch/trunk/src/include/switch_ivr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_ivr.h	(original)
+++ freeswitch/trunk/src/include/switch_ivr.h	Wed Jan 14 14:29:16 2009
@@ -354,10 +354,10 @@
 														   uint32_t max_digits,
 														   uint32_t max_tries,
 														   uint32_t timeout,
-														   char *valid_terminators,
-														   char *audio_file,
-														   char *bad_input_audio_file, char *digit_buffer, uint32_t digit_buffer_length,
-														   char *digits_regex);
+														   const char *valid_terminators,
+														   const char *audio_file,
+														   const char *bad_input_audio_file, char *digit_buffer, uint32_t digit_buffer_length,
+														   const char *digits_regex);
 
 SWITCH_DECLARE(switch_status_t) switch_ivr_speak_text_handle(switch_core_session_t *session,
 															 switch_speech_handle_t *sh,

Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	Wed Jan 14 14:29:16 2009
@@ -1613,7 +1613,65 @@
 	switch_ivr_read(session, min_digits, max_digits, prompt_audio_file, var_name, digit_buffer, sizeof(digit_buffer), timeout, valid_terminators);
 }
 
+SWITCH_STANDARD_APP(play_and_get_digits_function)
+{
+	char *mydata;
+	char *argv[8] = { 0 };
+	int argc;
+	int32_t min_digits = 0;
+	int32_t max_digits = 0;
+	int32_t max_tries = 0;
+	int timeout = 1000;
+	char digit_buffer[128] = "";
+	const char *prompt_audio_file = NULL;
+	const char *bad_input_audio_file = NULL;
+	const char *valid_terminators = NULL;
+	const char *digits_regex = NULL;
+
+	if (!switch_strlen_zero(data) && (mydata = switch_core_session_strdup(session, data))) {
+		argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+	} else {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No arguments specified.\n");
+		return;
+	}
+
+	min_digits = atoi(argv[0]);
+
+	if (argc > 1) {
+		max_digits = atoi(argv[1]);
+	}
+
+	if (argc > 2) {
+		max_tries = atoi(argv[2]);
+	}
 
+	if (argc > 3) {
+		timeout = atoi(argv[3]);
+	}
+
+	if (argc > 4) {
+		valid_terminators = argv[4];
+	}
+
+	if (argc > 5) {
+		prompt_audio_file = argv[5];
+	}
+
+	if (argc > 6) {
+		bad_input_audio_file = argv[6];
+	}
+
+	if (argc > 7) {
+		digits_regex = argv[7];
+	}
+
+	if (switch_strlen_zero(valid_terminators)) {
+		valid_terminators = "#";
+	}
+
+	switch_play_and_get_digits(session, min_digits, max_digits, max_tries, timeout, valid_terminators,
+							   prompt_audio_file, bad_input_audio_file, digit_buffer, sizeof(digit_buffer), digits_regex);
+}
 
 #define SAY_SYNTAX "   "
 SWITCH_STANDARD_APP(say_function)
@@ -2554,6 +2612,8 @@
 	SWITCH_ADD_APP(app_interface, "playback", "Playback File", "Playback a file to the channel", playback_function, "", SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "att_xfer", "Attended Transfer", "Attended Transfer", att_xfer_function, "", SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "read", "Read Digits", "Read Digits", read_function, "     ", SAF_NONE);
+	SWITCH_ADD_APP(app_interface, "play_and_get_digits", "Play and get Digits", "Play and get Digits", 
+				   play_and_get_digits_function, "       ", SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "stop_record_session", "Stop Record Session", STOP_SESS_REC_DESC, stop_record_session_function, "", SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "record_session", "Record Session", SESS_REC_DESC, record_session_function, " [+]", SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "record", "Record File", "Record a file from the channels input", record_function,

Modified: freeswitch/trunk/src/switch_ivr_play_say.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_play_say.c	(original)
+++ freeswitch/trunk/src/switch_ivr_play_say.c	Wed Jan 14 14:29:16 2009
@@ -1500,12 +1500,12 @@
 														   uint32_t max_digits,
 														   uint32_t max_tries,
 														   uint32_t timeout,
-														   char *valid_terminators,
-														   char *prompt_audio_file,
-														   char *bad_input_audio_file, 
+														   const char *valid_terminators,
+														   const char *prompt_audio_file,
+														   const char *bad_input_audio_file, 
 														   char *digit_buffer, 
 														   uint32_t digit_buffer_length,
-														   char *digits_regex)
+														   const char *digits_regex)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 


From mikej at freeswitch.org  Wed Jan 14 12:38:50 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 14:38:50 -0600
Subject: [Freeswitch-svn] [commit] r11202 -
	freeswitch/trunk/src/mod/languages/mod_managed
Message-ID: 

Author: mikej
Date: Wed Jan 14 14:38:50 2009
New Revision: 11202

Log:
swigall

Modified:
   freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx

Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	Wed Jan 14 14:38:50 2009
@@ -21077,7 +21077,7 @@
   arg9 = (char *)jarg9; 
   arg10 = (uint32_t)jarg10; 
   arg11 = (char *)jarg11; 
-  result = (switch_status_t)switch_play_and_get_digits(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11);
+  result = (switch_status_t)switch_play_and_get_digits(arg1,arg2,arg3,arg4,arg5,(char const *)arg6,(char const *)arg7,(char const *)arg8,arg9,arg10,(char const *)arg11);
   jresult = result; 
   return jresult;
 }


From anthm at freeswitch.org  Wed Jan 14 12:46:02 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 14:46:02 -0600
Subject: [Freeswitch-svn] [commit] r11203 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Wed Jan 14 14:46:02 2009
New Revision: 11203

Log:
add extra sanity check

Modified:
   freeswitch/trunk/src/switch_core_io.c

Modified: freeswitch/trunk/src/switch_core_io.c
==============================================================================
--- freeswitch/trunk/src/switch_core_io.c	(original)
+++ freeswitch/trunk/src/switch_core_io.c	Wed Jan 14 14:46:02 2009
@@ -572,7 +572,7 @@
 	switch_assert(session != NULL);
 	switch_assert(frame != NULL);
 
-	if (switch_channel_get_state(session->channel) >= CS_HANGUP) {
+	if (!switch_channel_ready(session->channel)) {
 		return SWITCH_STATUS_FALSE;
 	}
 
@@ -605,14 +605,15 @@
 
 	switch_mutex_lock(session->codec_write_mutex);	
 
-	if (!(session->write_codec && session->write_codec->mutex && frame->codec)) {
+	if (!(session->write_codec && session->write_codec->mutex && frame->codec) || 
+		!switch_channel_ready(session->channel) || !switch_channel_media_ready(session->channel)) {
 		switch_mutex_unlock(session->codec_write_mutex);	
 		return SWITCH_STATUS_FALSE;
 	}
 
 	switch_mutex_lock(session->write_codec->mutex);
 	switch_mutex_lock(frame->codec->mutex);
-
+	
 
 	if ((session->write_codec && frame->codec && session->write_codec->implementation != frame->codec->implementation)) {
 		if (session->write_codec->implementation->codec_id == frame->codec->implementation->codec_id) {


From ctrix at freeswitch.org  Wed Jan 14 13:05:23 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 15:05:23 -0600
Subject: [Freeswitch-svn] [commit] r11204 -
	freeswitch/branches/ctrix/mod_airpe
Message-ID: 

Author: ctrix
Date: Wed Jan 14 15:05:23 2009
New Revision: 11204

Log:
Reworked all the call logic.
Big cleanups of unused code.
Should be almost working 100%!



Modified:
   freeswitch/branches/ctrix/mod_airpe/airpe_api.c
   freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.h

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_api.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_api.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_api.c	Wed Jan 14 15:05:23 2009
@@ -30,6 +30,13 @@
 
 #include "mod_airpe.h"
 
+/* 
+    TODO
+	block / authorize users
+	add / remove users from contact list
+*/
+
+
 #define AIRPE_MOODTEXT_SYNTAX "airpe_moodtext  "
 SWITCH_STANDARD_API(airpe_moodtext_command)
 {

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	Wed Jan 14 15:05:23 2009
@@ -146,10 +146,36 @@
     return SWITCH_STATUS_SUCCESS;
 }
 
+void airpe_clear_call_id(airpe_interface_t *airpe) {
+
+    airpe->active_call_id = 0;
+    switch_safe_free(airpe->active_session_uuid);
+    airpe->active_session_uuid = NULL;
+}
+
+switch_status_t	airpe_set_call_id(airpe_interface_t *airpe, int sk_id, char *fs_uuid) {
+    assert(airpe);
+
+    airpe->active_call_id = sk_id;
+
+    if ( fs_uuid ) {
+	switch_safe_free(airpe->active_session_uuid);
+	airpe->active_session_uuid = strdup(fs_uuid);
+    }
+
+    return SWITCH_STATUS_SUCCESS;
+}
+
+/* ************************************************************************* */
+
 switch_status_t airpe_cmd_write(airpe_interface_t *airpe, char *msg) {
+    switch_status_t status;
+
     if ( airpe->debug )
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "msg to airpe client %s: %s\n", airpe->name, msg);
-    return airpe_skype_send_message(airpe->skype_window, msg);
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "msg to airpe client %s: > %s\n", airpe->name, msg);
+
+    status = airpe_skype_send_message(airpe->skype_window, msg);
+    return status;
 }
 
 switch_status_t airpe_originate(airpe_interface_t *airpe, char *dest) {
@@ -161,7 +187,7 @@
     airpe_cmd_write(p, "SET AGC OFF");
     airpe_cmd_write(p, "SET AEC OFF");
     */
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "airpe client %s: Originating to %s\n", airpe->name, dest);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "airpe client %s: Originating to client %s\n", airpe->name, dest);
 
     snprintf(msg, sizeof(msg), "CALL %s", dest);
 
@@ -182,17 +208,14 @@
     return SWITCH_STATUS_FALSE;
 }
 
-
-
 /*****************************************************************************
     SKYPE AUDIO
  *****************************************************************************/
 
-switch_status_t airpe_hangup( private_object_t *pvt ) {
+switch_status_t airpe_call_shutdown( private_object_t *pvt ) {
     airpe_interface_t *airpe;
 
     assert(pvt);
-    assert(pvt->session);
     assert(pvt->airpe);
     
     airpe = pvt->airpe;
@@ -225,10 +248,14 @@
     assert(pvt);
     assert(pvt->session);
     assert(pvt->airpe);
-    
+
+    if ( !switch_test_flag(pvt, TFLAG_IO) )
+	return SWITCH_STATUS_SUCCESS;
+
     airpe = pvt->airpe;
     pool = switch_core_session_get_pool(pvt->session);
 
+
     if ( !airpe->audio_in_active_socket ) {
 	rv = switch_socket_accept(&inbound_socket, airpe->audio_in_socket, pool);
         if ( rv == SWITCH_STATUS_SUCCESS ) {
@@ -262,6 +289,9 @@
     airpe = pvt->airpe;
     pool = switch_core_session_get_pool(pvt->session);
 
+    if ( !switch_test_flag(pvt, TFLAG_IO) )
+	return SWITCH_STATUS_SUCCESS;
+
     if ( !airpe->audio_out_active_socket ) {
 	rv = switch_socket_accept(&inbound_socket, airpe->audio_out_socket, pool);
         if ( rv == SWITCH_STATUS_SUCCESS ) {
@@ -269,7 +299,7 @@
 	    switch_sleep(100000);
 	}
 	else {
-	    return SWITCH_STATUS_FALSE;
+	    return SWITCH_STATUS_SUCCESS;
 	}
     }
 
@@ -281,9 +311,6 @@
     if ( (rv==SWITCH_STATUS_SUCCESS) ) {
 	    pvt->read_frame.datalen = mlen;
     }
-//    if ( mlen == 0 )
-//	return SWITCH_STATUS_SUCCESS;
-
     return rv;
 }
 
@@ -320,7 +347,7 @@
     }
     tech_pvt->airpe = airpe;
 
-    switch_snprintf(chan_name, sizeof(chan_name), MODNAME"/%s", airpe->name);
+    switch_snprintf(chan_name, sizeof(chan_name), MODNAME"/%s/%s", airpe->name, airpe->destination);
     switch_channel_set_name(channel, chan_name);
 
     tech_pvt->caller_profile = switch_caller_profile_new( switch_core_session_get_pool(new_session),
@@ -346,11 +373,12 @@
 
 
     switch_set_flag(tech_pvt, TFLAG_INBOUND);
-    airpe->active_call_id = callid;
+    airpe_set_call_id(airpe, callid, switch_core_session_get_uuid(new_session) );
+
     switch_channel_set_state(channel, CS_INIT);
 
     if ( switch_core_session_thread_launch(new_session) != SWITCH_STATUS_SUCCESS ) {
-	airpe->active_call_id = 0;
+	airpe_clear_call_id(airpe);
     	switch_core_session_destroy(&new_session);
 	return SWITCH_STATUS_FALSE;
     }
@@ -363,8 +391,23 @@
     switch_core_session_t *session = NULL;
     switch_channel_t *channel = NULL;
 
+    if ( airpe->active_session_uuid ) {
+	session = switch_core_session_locate(airpe->active_session_uuid);
+	if ( session )
+	    channel = switch_core_session_get_channel(session);
+    }
+
+/*
+ADEBUG("MANAGING: %s - %d - %d - INB: %d - OUTB %d\n", 
+    (airpe->active_session_uuid) ? airpe->active_session_uuid : "NO SESSION UUID",
+    (session) ? 1 : 0,
+    (channel) ? 1 : 0,
+    (airpe->tech_pvt) ? switch_test_flag(airpe->tech_pvt, TFLAG_INBOUND) : -1,
+    (airpe->tech_pvt) ? switch_test_flag(airpe->tech_pvt, TFLAG_OUTBOUND): -1
+);
+*/
+
     if ( airpe->active_call_id && airpe->active_call_id != callid ) {
-ADEBUG("CASE 1 - different call\n");
 	if      ( !strncmp(status, "UNPLACED", strlen("UNPLACED")) ) {	    
 	    snprintf(buf, sizeof(buf), "SET CALL %d STATUS FINISHED", callid);
 	    airpe_cmd_write(airpe, buf);
@@ -375,102 +418,88 @@
 
     }
     else if ( airpe->active_call_id && airpe->active_call_id == callid ) {
-ADEBUG("CASE 2 - my call\n");
-	if ( airpe->tech_pvt ) {
-	    assert(airpe->tech_pvt);
-	    session = airpe->tech_pvt->session;
-	    assert(session);
-
-	    channel = switch_core_session_get_channel(session);
-    	    assert(channel);
-	}
-
 	if ( !strncmp(status, "ROUTING", strlen("ROUTING")) ) {
 	}
 	else if ( !strncmp(status, "RINGING", strlen("RINGING")) ) {
-	    //if ( switch_test_flag(tech_pvt, TFLAG_OUTBOUND) ) {
-		//switch_channel_set_state(channel, CS_RINGING);
-	    switch_core_session_queue_indication(session, SWITCH_MESSAGE_INDICATE_RINGING);
-	    switch_channel_mark_ring_ready(channel);
-	    //}
-
-	    snprintf(buf, sizeof(buf), "ALTER CALL %d SET_INPUT PORT=\"%d\"", callid, airpe->audio_in_port);
-	    airpe_cmd_write(airpe, buf);
-	    snprintf(buf, sizeof(buf), "ALTER CALL %d SET_OUTPUT PORT=\"%d\"", callid, airpe->audio_out_port);
-	    airpe_cmd_write(airpe, buf);
-
-
-
-	    switch_channel_set_state(channel, CS_ROUTING);
-
-	}
-	else if ( !strncmp(status, "INPROGRESS", strlen("INPROGRESS")) ) {
-	    snprintf(buf, sizeof(buf), "ALTER CALL %d STOP_VIDEO_SEND", callid );
-	    airpe_cmd_write(airpe, buf);
-	    snprintf(buf, sizeof(buf), "ALTER CALL %d STOP_VIDEO_RECEIVE", callid );
-	    airpe_cmd_write(airpe, buf);
-
-	    if ( channel ) {
-	        switch_channel_mark_answered(channel);
+	    if ( session && channel ) {
+		switch_channel_mark_ring_ready(channel);
 	    }
 	    else {
 		if ( airpe_manage_incoming_call(airpe, callid) != SWITCH_STATUS_SUCCESS ) {
 		    snprintf(buf, sizeof(buf), "ALTER CALL %d END HANGUP", callid );
 		    airpe_cmd_write(airpe, buf);
-		    airpe->active_call_id = 0;
+		    airpe_clear_call_id(airpe);
 		}
 	    }
 	}
+	else if ( !strncmp(status, "INPROGRESS", strlen("INPROGRESS")) ) {
+
+	    if ( channel && switch_test_flag(airpe->tech_pvt, TFLAG_OUTBOUND) ) {
+		snprintf(buf, sizeof(buf), "ALTER CALL %d SET_INPUT PORT=\"%d\"", callid, airpe->audio_in_port);
+		airpe_cmd_write(airpe, buf);
+		airpe_cmd_write(airpe, "PING");
+		snprintf(buf, sizeof(buf), "ALTER CALL %d SET_OUTPUT PORT=\"%d\"", callid, airpe->audio_out_port);
+		airpe_cmd_write(airpe, buf);
+		airpe_cmd_write(airpe, "PING");
+	        switch_set_flag(airpe->tech_pvt, TFLAG_IO);
+
+		snprintf(buf, sizeof(buf), "ALTER CALL %d STOP_VIDEO_SEND", callid );
+		airpe_cmd_write(airpe, buf);
+		snprintf(buf, sizeof(buf), "ALTER CALL %d STOP_VIDEO_RECEIVE", callid );
+		airpe_cmd_write(airpe, buf);
+
+	        switch_channel_answer(channel);
+	    }
+
+	}
 	else if ( !strncmp(status, "FINISHED", strlen("FINISHED")) ) {
 	    if ( channel )
 	        switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
-	    airpe->active_call_id = 0;
+	    airpe_clear_call_id(airpe);
 	}
 	else if ( !strncmp(status, "FAILED", strlen("FAILED")) ) {
 	    if ( channel )
 	        switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
-	    airpe->active_call_id = 0;
+	    airpe_clear_call_id(airpe);
 	}
 	else if ( !strncmp(status, "CANCELLED", strlen("CANCELLED")) ) {
 	    if ( channel )
 	        switch_channel_hangup(channel, SWITCH_CAUSE_ORIGINATOR_CANCEL);
-	    airpe->active_call_id = 0;
+	    airpe_clear_call_id(airpe);
 	}
 	else if ( !strncmp(status, "REFUSED", strlen("REFUSED")) ) {
 	    if ( channel )
 	        switch_channel_hangup(channel, SWITCH_CAUSE_CALL_REJECTED);
-	    airpe->active_call_id = 0;
+	    airpe_clear_call_id(airpe);
 	}
 	else if ( !strncmp(status, "MISSED", strlen("MISSED")) ) {
 	    if ( channel )
 	        switch_channel_hangup(channel, SWITCH_CAUSE_NO_ANSWER);
-	    airpe->active_call_id = 0;
+	    airpe_clear_call_id(airpe);
 	}
 	else if ( !strncmp(status, "UNPLACED", strlen("UNPLACED")) ) {
 	}
 	else {
-ADEBUG("Unmanaged status \n");
+	    ADEBUG("Unmanaged status \n");
 	}
     }
     else {
-ADEBUG("CASE 3 - no calls online\n");
-	if      ( !strncmp(status, "UNPLACED", strlen("UNPLACED")) ) {	    
-	    airpe->active_call_id = callid;
-	}
-	else if ( !strncmp(status, "RINGING", strlen("RINGING")) ) {
-	    airpe->active_call_id = callid;
-	    snprintf(buf, sizeof(buf), "ALTER CALL %d ANSWER", callid );
-	    airpe_cmd_write(airpe, buf);
+	if      ( !strncmp(status, "UNPLACED", strlen("UNPLACED")) ) {
+	    airpe_set_call_id(airpe, callid, NULL);
 	}
 	else {
 	    ADEBUG("--- (%d/%d) Unmanaged status %s\n", airpe->active_call_id, callid, status);
 	}
     }
 
+    if ( session ) 
+	switch_core_session_rwunlock(session);
+
     return SWITCH_STATUS_SUCCESS;
 }
 
 switch_status_t airpe_manage_skype_msg( airpe_interface_t *airpe, const char *msg ) {
+    switch_core_session_t *session = NULL;
     char *buf = NULL;
     int argc = 0;
     char *argv[9] = { 0 };
@@ -479,13 +508,16 @@
     assert(msg);
 
     if ( airpe->debug )
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "airpe client %s: %s\n", airpe->name, msg);
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "airpe client %s: < %s\n", airpe->name, msg);
+
+    if ( airpe->active_session_uuid )
+	session = switch_core_session_locate(airpe->active_session_uuid);
 
     buf = strdup(msg);
     argc = switch_separate_string(buf, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
 
-    if ( argc == 0 ) {
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "airpe client %s: %s - Message without arguments? uh?\n", airpe->name, msg);
+    if ( argc == 0  ) {
+	/* Empty message. Shit happens (TM) */
 	free(buf);
 	return  SWITCH_STATUS_FALSE;
     }
@@ -516,8 +548,14 @@
 	/* The connection status of the client (ex: ONLINE) */
 	airpe->conn_status = skype_conn_status( argv[1] );
     }
-    else if ( !strncmp( buf, "USER", strlen("USER")) ) {
-	/* Updates about the users of our list - ignored */
+    else if ( !strncmp( buf, "USER", strlen("USER")) && argc >= 2 ) {
+	/* Updates about the users of our list or new auth requests */
+	if ( !strncmp(argv[2], "RECEIVEDAUTHREQUEST", strlen("RECEIVEDAUTHREQUEST") ) ) {
+	    /* TODO add option to ignore such requests */
+	    char buf[SKYPE_MSG_LEN] = "";
+	    snprintf(buf, sizeof(buf), "SET USER %s ISAUTHORIZED TRUE", argv[1]);
+	    airpe_cmd_write(airpe, buf);
+	}
     }
     else if ( !strncmp( buf, "GROUP", strlen("GROUP")) ) {
 	/* Updates about the groups of our list - ignored */
@@ -531,7 +569,6 @@
     else if ( !strncmp( buf, "AUTOAWAY", strlen("AUTOAWAY")) ) {
 	/* Autoaway - ignored */
     }
-//TODO: RECEIVEDAUTHREQUEST - Add a config option to authorize or forget about it.
     else if ( !strncmp( buf, "MUTE", strlen("MUTE")) && argc >= 2 ) {
 	if ( !strncmp(argv[1], "ON", 2) ) { 
 	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "airpe client %s: I don't like to be muted...\n", airpe->name);
@@ -598,11 +635,10 @@
 
 		snprintf(buf, sizeof(buf), "GET CALL %d PARTNER_DISPNAME", callid);
 		airpe_cmd_write(airpe, buf);
-
 		snprintf(buf, sizeof(buf), "GET CALL %d PARTNER_HANDLE", callid);
 		airpe_cmd_write(airpe, buf);
 
-		airpe_cmd_write(airpe, "PING");
+		airpe_set_call_id(airpe, callid, NULL);
 	    }
 	    else {
 		snprintf(buf, sizeof(buf), "ALTER CALL %d END HANGUP", callid );
@@ -614,30 +650,28 @@
 	}
 	else if ( !strncmp(cmd, "DTMF", strlen("DTMF")) ) {
 	    /* This is an incoming DTMF */
-	    switch_core_session_t *session;
-	    switch_channel_t *channel;
-	    switch_dtmf_t dtmf = { 0, switch_core_default_dtmf_duration(0) };
-	    const char *signal_ptr;
-	    int tmp;
-
-	    assert(airpe->tech_pvt);
-    	    session = airpe->tech_pvt->session;
-	    assert(session);
-	    channel = switch_core_session_get_channel(session);
-	    assert(channel);
-
-	    signal_ptr = argv[3];
+	    if ( session ) {
+	        switch_channel_t *channel;
+		switch_dtmf_t dtmf = { 0, switch_core_default_dtmf_duration(0) };
+	        const char *signal_ptr;
+		int tmp;
+
+    	        channel = switch_core_session_get_channel(session);
+		assert(channel);
+
+	        signal_ptr = argv[3];
+
+		if (*signal_ptr && (*signal_ptr == '*' || *signal_ptr == '#' || *signal_ptr == 'A' || *signal_ptr == 'B' || *signal_ptr == 'C' || *signal_ptr == 'D')) {
+		    dtmf.digit = *signal_ptr;
+	        } else {
+	    	    tmp = atoi(signal_ptr);
+	    	    dtmf.digit = switch_rfc2833_to_char(tmp);
+		}
 
-	    if (*signal_ptr && (*signal_ptr == '*' || *signal_ptr == '#' || *signal_ptr == 'A' || *signal_ptr == 'B' || *signal_ptr == 'C' || *signal_ptr == 'D')) {
-		dtmf.digit = *signal_ptr;
-	    } else {
-		tmp = atoi(signal_ptr);
-		dtmf.digit = switch_rfc2833_to_char(tmp);
+		switch_mutex_lock(airpe->tech_pvt->flag_mutex);
+	        switch_channel_queue_dtmf(channel, &dtmf);
+		switch_mutex_unlock(airpe->tech_pvt->flag_mutex);
 	    }
-
-	    switch_mutex_lock(airpe->tech_pvt->flag_mutex);
-	    switch_channel_queue_dtmf(channel, &dtmf);
-	    switch_mutex_unlock(airpe->tech_pvt->flag_mutex);
 	}
 	else if ( !strncmp(cmd, "FAILUREREASON", strlen("FAILUREREASON")) && argc >=2 ) {
 	    airpe->last_fail_reason = atoi(argv[1]);
@@ -706,6 +740,9 @@
 
     switch_safe_free(buf);
 
+    if ( session ) 
+	switch_core_session_rwunlock(session);
+
     return SWITCH_STATUS_SUCCESS;
 }
 

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	Wed Jan 14 15:05:23 2009
@@ -196,7 +196,6 @@
     airpe_audio_sockets_create(airpe);
 
     switch_threadattr_create(&attr_skype, airpe_module_pool);
-    //switch_threadattr_detach_set(attr_skype, 1);
     switch_threadattr_stacksize_set(attr_skype, SWITCH_THREAD_STACKSIZE);
 
     switch_thread_create(&airpe->airpe_thread_skype, 
@@ -230,6 +229,7 @@
     airpe_set_mood_text(airpe, NULL);
     airpe_set_partner_displayname(airpe, NULL);
     airpe_set_partner_handle(airpe, NULL);
+    airpe_set_call_id(airpe, 0, NULL);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -263,21 +263,12 @@
 	// TODO if fail switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
     }
 
-    if ( switch_test_flag(tech_pvt, TFLAG_INBOUND) ) {
-	char buf[SKYPE_MSG_LEN];
-	snprintf(buf, sizeof(buf), "ALTER CALL %d SET_INPUT PORT=\"%d\"", tech_pvt->airpe->active_call_id, tech_pvt->airpe->audio_in_port);
-	airpe_cmd_write(tech_pvt->airpe, buf);
-	snprintf(buf, sizeof(buf), "ALTER CALL %d SET_OUTPUT PORT=\"%d\"", tech_pvt->airpe->active_call_id, tech_pvt->airpe->audio_out_port);
-	airpe_cmd_write(tech_pvt->airpe, buf);
-
-        switch_channel_set_state(channel, CS_ROUTING);
-    }
+    switch_channel_set_state(channel, CS_ROUTING);
 
     return SWITCH_STATUS_SUCCESS;
 }
 
 static switch_status_t channel_on_routing(switch_core_session_t * session) {
-    char buf[SKYPE_MSG_LEN];
     switch_channel_t *channel = NULL;
     private_object_t *tech_pvt = NULL;
 
@@ -287,11 +278,6 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt);
 
-    if ( switch_test_flag(tech_pvt, TFLAG_INBOUND) ) {
-        snprintf(buf, sizeof(buf), "ALTER CALL %d ANSWER", tech_pvt->airpe->active_call_id);
-        airpe_cmd_write(tech_pvt->airpe, buf);
-    }
-
     return SWITCH_STATUS_SUCCESS;
 }
 
@@ -313,7 +299,6 @@
     switch_channel_t *channel = NULL;
     private_object_t *tech_pvt = NULL;
     airpe_interface_t *airpe = NULL;
-    char msg[SKYPE_MSG_LEN];
 
     channel = switch_core_session_get_channel(session);
     assert(channel);
@@ -325,13 +310,11 @@
     assert(airpe);
 
     if ( airpe->active_call_id ) {
-	snprintf(msg, sizeof(msg), "ALTER CALL %d HANGUP", airpe->active_call_id);
-	airpe_cmd_write(airpe, msg);
-//	airpe->active_call_id = 0;
-//	airpe->tech_pvt = NULL;
+	char buf[SKYPE_MSG_LEN];
+	snprintf(buf, sizeof(buf), "ALTER CALL %d HANGUP", airpe->active_call_id);
+	airpe_cmd_write(airpe, buf);
     }
-
-    airpe_hangup( tech_pvt );
+    airpe_call_shutdown( tech_pvt );
 
     if (tech_pvt->read_codec.implementation) {
 	switch_core_codec_destroy(&tech_pvt->read_codec);
@@ -351,6 +334,7 @@
 /*****************************************************************************
     CHANNEL IO INTERFACE / ROUTINES
  *****************************************************************************/
+
 static switch_call_cause_t channel_outgoing_channel(
 		    switch_core_session_t 	*session,
                     switch_event_t 		*var_event,
@@ -422,9 +406,9 @@
 	    switch_core_session_destroy(new_session);
     	    return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
 	}
-
-	switch_channel_set_flag(channel, CF_OUTBOUND);	
-	switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND);
+	airpe_set_call_id(tech_pvt->airpe, 0, switch_core_session_get_uuid(*new_session) );
+	switch_channel_set_flag(channel, CF_OUTBOUND);
+	switch_set_flag(tech_pvt, TFLAG_OUTBOUND);
 	switch_channel_set_state(channel, CS_INIT);
 	return SWITCH_CAUSE_SUCCESS;
     }
@@ -453,7 +437,10 @@
     *frame = NULL;
 
     if ( airpe_audio_read(tech_pvt) != SWITCH_STATUS_SUCCESS) {
-	ADEBUG("airpe_audio_read ERROR\n");
+/*
+	if ( tech_pvt->airpe->debug )
+	    ADEBUG("airpe_audio_read ERROR\n");
+*/
 	return SWITCH_STATUS_FALSE;
     }
 
@@ -492,12 +479,19 @@
     assert(tech_pvt);
 
     if ( !tech_pvt->airpe ) {
+	ADEBUG("airpe_audio_write ERROR: no client\n");
 	return SWITCH_STATUS_FALSE;
     }
 
     airpe = tech_pvt->airpe;
 
     rv = airpe_audio_write(tech_pvt, frame);
+
+    if ( rv != SWITCH_STATUS_SUCCESS ) {
+	ADEBUG("airpe_audio_write ERROR\n");
+	return SWITCH_STATUS_FALSE;
+    }
+
     return rv;
 }
 
@@ -546,6 +540,7 @@
 {
     switch_channel_t *channel;
     private_object_t *tech_pvt;
+    airpe_interface_t *airpe;
 
     channel = switch_core_session_get_channel(session);
     assert(channel);
@@ -553,30 +548,57 @@
     tech_pvt = (private_object_t *) switch_core_session_get_private(session);
     assert(tech_pvt);
 
+    airpe = tech_pvt->airpe;
+    assert(airpe);
+
     switch (msg->message_id) {
 	case SWITCH_MESSAGE_INDICATE_ANSWER:
-	    ADEBUG("received message indicate answer...\n");
 /*
-    	    //switch_answer_channel(session);
-	    char buf[SKYPE_MSG_LEN];
-	    snprintf(buf, sizeof(buf), "ALTER CALL %d ANSWER", tech_pvt->airpe->active_call_id );
-	    airpe_cmd_write(tech_pvt->airpe, buf);
+	    if ( airpe->debug ) 
+		ADEBUG("received message indicate answer...\n");
 */
+	    if ( switch_test_flag(tech_pvt, TFLAG_INBOUND) ) {
+	        char buf[SKYPE_MSG_LEN];
+	        snprintf(buf, sizeof(buf), "ALTER CALL %d ANSWER\n", tech_pvt->airpe->active_call_id );
+		airpe_cmd_write(tech_pvt->airpe, buf);
+		snprintf(buf, sizeof(buf), "ALTER CALL %d SET_INPUT PORT=\"%d\"", tech_pvt->airpe->active_call_id, tech_pvt->airpe->audio_in_port);
+		airpe_cmd_write(tech_pvt->airpe, buf);
+		snprintf(buf, sizeof(buf), "ALTER CALL %d SET_OUTPUT PORT=\"%d\"", tech_pvt->airpe->active_call_id, tech_pvt->airpe->audio_out_port);
+		airpe_cmd_write(tech_pvt->airpe, buf);
+	        switch_set_flag(tech_pvt, TFLAG_IO);
+	    }
+	    break;
+/*
+	case SWITCH_MESSAGE_INDICATE_PROGRESS:
+	    if ( airpe->debug ) 
+		ADEBUG("received message indicate progress...\n");
+	    break;
+	case SWITCH_MESSAGE_INDICATE_BRIDGE:
+	    if ( airpe->debug ) 
+		ADEBUG("received message indicate bridge...\n");
 	    break;
 	case SWITCH_MESSAGE_INDICATE_UNBRIDGE:
-	    ADEBUG("received message indicate unbridge...\n");
+	    if ( airpe->debug ) 
+		ADEBUG("received message indicate unbridge...\n");
 	    break;
 	case SWITCH_MESSAGE_INDICATE_TRANSCODING_NECESSARY:
-	    ADEBUG("received message indicate transcode necessary...\n");
+	    if ( airpe->debug ) 
+		ADEBUG("received message indicate transcode necessary...\n");
 	    break;
 	case SWITCH_MESSAGE_INDICATE_AUDIO_SYNC:
-	    ADEBUG("received message indicate audio sync...\n");
+	    if ( airpe->debug ) 
+		ADEBUG("received message indicate audio sync...\n");
 	    break;
 	case SWITCH_MESSAGE_INDICATE_TRANSFER:
-	    ADEBUG("received message indicate transfer...\n");
+	    if ( airpe->debug ) 
+		ADEBUG("received message indicate transfer...\n");
 	    break;
+*/
 	default:
-	    ADEBUG("Unmanaged received message... %d\n", msg->message_id);
+/*
+	    if ( airpe->debug ) 
+		ADEBUG("Unmanaged received message... %d\n", msg->message_id);
+*/
 	    break;
     }
 
@@ -596,7 +618,6 @@
     assert(tech_pvt);
 
     body = switch_event_get_body(event);
-
     if (!body) {
 	body = "";
     }

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.h
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	Wed Jan 14 15:05:23 2009
@@ -112,15 +112,15 @@
 typedef enum {
   TFLAG_INBOUND 	= (1 << 1),
   TFLAG_OUTBOUND	= (1 << 2),
+  TFLAG_IO 		= (1 << 3),
 /*
-  TFLAG_IO 		= (1 << 0),
-  TFLAG_DTMF 		= (1 << 3),
   TFLAG_VOICE 		= (1 << 4),
-  TFLAG_HANGUP 		= (1 << 5),
-  TFLAG_LINEAR 		= (1 << 6),
-  TFLAG_CODEC 		= (1 << 7),
-  TFLAG_BREAK 		= (1 << 8),
-  TFLAG_ANSWER 		= (1 << 9)
+  TFLAG_DTMF 		= (1 << 5),
+  TFLAG_HANGUP 		= (1 << 6),
+  TFLAG_LINEAR 		= (1 << 7),
+  TFLAG_CODEC 		= (1 << 8),
+  TFLAG_BREAK 		= (1 << 9),
+  TFLAG_ANSWER 		= (1 <<10)
 */
 } TFLAGS;
 
@@ -157,6 +157,7 @@
     char			*skype_version;
     char			*mood_text;
     int 			active_call_id;
+    char 			*active_session_uuid;
     int				last_fail_reason;
     int				running;
     private_object_t		*tech_pvt;
@@ -202,8 +203,9 @@
 switch_status_t	airpe_set_mood_text(airpe_interface_t *airpe, char *string);
 switch_status_t	airpe_set_partner_displayname(airpe_interface_t *airpe, char *string);
 switch_status_t	airpe_set_partner_handle(airpe_interface_t *airpe, char *string);
+switch_status_t	airpe_set_call_id(airpe_interface_t *airpe, int sk_id, char *fs_uuid);
 
-switch_status_t airpe_hangup( private_object_t *pvt );
+switch_status_t airpe_call_shutdown( private_object_t *pvt );
 switch_status_t airpe_audio_read( private_object_t *pvt );
 switch_status_t airpe_audio_write( private_object_t *pvt, switch_frame_t *frame );
 


From ctrix at freeswitch.org  Wed Jan 14 15:13:28 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 17:13:28 -0600
Subject: [Freeswitch-svn] [commit] r11205 -
	freeswitch/trunk/src/mod/applications/mod_fax
Message-ID: 

Author: ctrix
Date: Wed Jan 14 17:13:28 2009
New Revision: 11205

Log:
Unbind the reloadxml event on module shutdown



Modified:
   freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c

Modified: freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c	Wed Jan 14 17:13:28 2009
@@ -808,6 +808,8 @@
 {
 	switch_memory_pool_t *pool = globals.pool;
 
+	switch_event_unbind(&NODE);
+
 	switch_core_destroy_memory_pool(&pool);
 	memset(&globals, 0, sizeof(globals));
 


From ctrix at freeswitch.org  Wed Jan 14 15:39:21 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 17:39:21 -0600
Subject: [Freeswitch-svn] [commit] r11206 - in
	freeswitch/branches/ctrix/mod_airpe: . config
Message-ID: 

Author: ctrix
Date: Wed Jan 14 17:39:21 2009
New Revision: 11206

Log:
Airpe: reloadxml configuration event - bindings and handler



Modified:
   freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
   freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.h

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	Wed Jan 14 17:39:21 2009
@@ -175,6 +175,8 @@
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "msg to airpe client %s: > %s\n", airpe->name, msg);
 
     status = airpe_skype_send_message(airpe->skype_window, msg);
+    /* Relax and calm down. Some skype clients don't like fast messages */
+    switch_sleep(10000);
     return status;
 }
 

Modified: freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml	(original)
+++ freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml	Wed Jan 14 17:39:21 2009
@@ -12,13 +12,17 @@
   
     
 	
-	
+	
 
 	
 	
 	
 	
 
+	
+
 	
 	
 
@@ -32,5 +36,4 @@
 	
     
   
-
 

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	Wed Jan 14 17:39:21 2009
@@ -630,7 +630,7 @@
     CONFIGURATION
  *****************************************************************************/
 
-static switch_status_t load_config(void) {
+static switch_status_t load_config( int reload ) {
     switch_xml_t    	cfg, 
 			xml, 
 			global_settings, 
@@ -695,11 +695,6 @@
 		continue;
     	    }
 
-	    if ( (newconf = switch_core_hash_find(globals.interfaces_hash, name)) ) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Duplicated client %s. Skipping\n", name);
-		continue;
-	    }
-
 	    for (param = switch_xml_child(client, "param"); param; param = param->next) {
     		char *var = (char *) switch_xml_attr_soft(param, "name");
     		char *val = (char *) switch_xml_attr_soft(param, "value");
@@ -746,43 +741,62 @@
 	    if ( !destination )
 		destination = globals.destination;
 
-	    newconf = (airpe_interface_t *) switch_core_alloc( pool, sizeof(airpe_interface_t) );
+	    if ( reload ) {
+		newconf = airpe_find_interface(name);
+	    }
+	    else {
+	        if ( (newconf = switch_core_hash_find(globals.interfaces_hash, name)) ) {
+		    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Duplicated client %s. Skipping\n", name);
+		    continue;
+		}
+	    }
+
+	    if ( !newconf ) {
+	        newconf = (airpe_interface_t *) switch_core_alloc( pool, sizeof(airpe_interface_t) );
+		if ( newconf )
+	    	    memset(newconf, 0, sizeof(airpe_interface_t));
+	    }
+
 
 	    if ( newconf ) {
 		switch_status_t status;
 
-		memset(newconf, 0, sizeof(airpe_interface_t));
-
 		newconf->name     	= switch_core_strdup(pool, name);
 		newconf->dialplan 	= switch_core_strdup(pool, dialplan);
 		newconf->context  	= switch_core_strdup(pool, context);
 		newconf->destination  	= switch_core_strdup(pool, destination);
+		newconf->debug  	= debug;
+
+		if ( reload ) {
+		    /* We won't update any other value on reload. */
+		    newconf->should_reload = 0;
+		    continue;
+		}
+
 		newconf->skype_user  	= switch_core_strdup(pool, skype_user);
 		newconf->skype_password = switch_core_strdup(pool, skype_password);
 		newconf->X11_display  	= switch_core_strdup(pool, X11_display);
 		newconf->audio_in_port  = 0;
 		newconf->audio_in_port  = 0;
-		newconf->debug  	= debug;
-
 		newconf->skype_window = skype_window_alloc(pool);
 
 		if ( newconf->skype_window ) {
 		    status = airpe_start_client(newconf);
-
 		    if ( status == SWITCH_STATUS_SUCCESS ) {
 			switch_core_hash_insert(globals.interfaces_hash, name, newconf);
 		    }
 		    else {
-			// LOG OUR ERROR
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Airpe: cannot start client %s.\n", newconf->name);
 		    }
 		}
 		else {
-		    // LOG OUR ERROR
+		    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Airpe: cannot alloc client %s.\n", newconf->name);
 		}
 
+
 	    }
 	    else {
-		//TODO LOG ERROR ABOUT CREATING INTERFACE
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Airpe: cannot alloc client %s.\n", newconf->name);
 	    }
 	}
 
@@ -792,11 +806,44 @@
     return SWITCH_STATUS_SUCCESS;
 }
 
+static void reloadxml_event_handler(switch_event_t *event)
+{
+    airpe_interface_t *airpe;
+    switch_hash_index_t *hi;
+    void *val;
+
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Reloading airpe configuration.\n");
+
+    /* First, mark all of them to be reloaded */
+    for (hi = switch_hash_first(NULL, globals.interfaces_hash); hi; hi = switch_hash_next(hi)) {
+	switch_hash_this(hi, NULL, NULL, &val);
+	airpe = ( airpe_interface_t *) val;
+	airpe->should_reload = 1;
+    }
+
+    /* Update the data of each client */
+    load_config(1);
+
+    /* Find eventual clients not updated and stop them */
+    for (hi = switch_hash_first(NULL, globals.interfaces_hash); hi; hi = switch_hash_next(hi)) {
+	switch_hash_this(hi, NULL, NULL, &val);
+	airpe = ( airpe_interface_t *) val;
+	if ( airpe->should_reload ) {
+	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Stopping airpe client %s.\n", airpe->name);
+	    switch_core_hash_delete(globals.interfaces_hash, airpe->name); 
+	    airpe_stop_client(airpe);
+	}
+    }
+
+}
+
 
 /*****************************************************************************
     MODULE INITIALIZATION FUNCTIONS
  *****************************************************************************/
 
+static switch_event_node_t *EVENT_NODE = NULL;
+
 static switch_state_handler_table_t airpe_state_handlers = {
     /*.on_init */ 		channel_on_init,
     /*.on_routing */ 		channel_on_routing,
@@ -829,7 +876,7 @@
     switch_core_hash_init(&globals.interfaces_hash, pool);
     switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, pool);
 
-    load_config();
+    load_config(0);
 
     *module_interface = switch_loadable_module_create_module_interface(pool, modname);
 
@@ -839,6 +886,11 @@
     airpe_endpoint_interface->io_routines    = &airpe_io_routines;
     airpe_endpoint_interface->state_handler  = &airpe_state_handlers;
 
+    if ((switch_event_bind_removable(modname, SWITCH_EVENT_RELOADXML, NULL, reloadxml_event_handler, NULL, &EVENT_NODE) != SWITCH_STATUS_SUCCESS)) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind our reloadxml handler!\n");
+	/* Not such severe to prevent loading */
+    }
+
     airpe_register_api( &*module_interface );
     airpe_register_apps( &*module_interface );
 
@@ -855,6 +907,8 @@
 
     pool = airpe_module_pool;
 
+    switch_event_unbind(&EVENT_NODE);
+
     for (hi = switch_hash_first(NULL, globals.interfaces_hash); hi; hi = switch_hash_next(hi)) {
 	switch_hash_this(hi, NULL, NULL, &val);
 	airpe = ( airpe_interface_t *) val;

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.h
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	Wed Jan 14 17:39:21 2009
@@ -154,6 +154,7 @@
     CALL_STATUS			call_status;
     CONN_STATUS			conn_status;
 
+    int				should_reload;
     char			*skype_version;
     char			*mood_text;
     int 			active_call_id;


From ctrix at freeswitch.org  Wed Jan 14 16:03:50 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 18:03:50 -0600
Subject: [Freeswitch-svn] [commit] r11207 - in
	freeswitch/branches/ctrix/mod_airpe: . config
Message-ID: 

Author: ctrix
Date: Wed Jan 14 18:03:50 2009
New Revision: 11207

Log:
Add option to let the client auto-auth incoming requests



Modified:
   freeswitch/branches/ctrix/mod_airpe/airpe_api.c
   freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
   freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c
   freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.h

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_api.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_api.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_api.c	Wed Jan 14 18:03:50 2009
@@ -152,6 +152,11 @@
     switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Mood text", (airpe->mood_text ) ? airpe->mood_text : "Unknown" );
     stream->write_function(stream, buf);
 
+    switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Debug", (airpe->debug ) ? "Yes" : "No" );
+    stream->write_function(stream, buf);
+    switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Auto-auth", (airpe->auto_auth) ? "Yes" : "No" );
+    stream->write_function(stream, buf);
+
  done:
     return SWITCH_STATUS_SUCCESS;
 }

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	Wed Jan 14 18:03:50 2009
@@ -553,10 +553,10 @@
     else if ( !strncmp( buf, "USER", strlen("USER")) && argc >= 2 ) {
 	/* Updates about the users of our list or new auth requests */
 	if ( !strncmp(argv[2], "RECEIVEDAUTHREQUEST", strlen("RECEIVEDAUTHREQUEST") ) ) {
-	    /* TODO add option to ignore such requests */
-	    char buf[SKYPE_MSG_LEN] = "";
-	    snprintf(buf, sizeof(buf), "SET USER %s ISAUTHORIZED TRUE", argv[1]);
-	    airpe_cmd_write(airpe, buf);
+	    if ( airpe->auto_auth ) {
+		snprintf(buf, sizeof(buf), "SET USER %s ISAUTHORIZED TRUE", argv[1]);
+		airpe_cmd_write(airpe, buf);
+	    }
 	}
     }
     else if ( !strncmp( buf, "GROUP", strlen("GROUP")) ) {
@@ -583,7 +583,7 @@
     else if ( !strncmp( buf, "CHAT", strlen("CHAT")) && argc >=2 ) {
 	/* Chat status - ignored. */
 	if ( airpe->protocol > 6 ) {
-	    //TODO : ALTER CHAT  DISBAND - Doesn't seems to work on linux
+	    /* ALTER CHAT  DISBAND - Doesn't seems to work on linux */
 	    char buf[SKYPE_MSG_LEN] = "";
 	    snprintf(buf, sizeof(buf), "ALTER CHAT %s DISBAND", argv[1]);
 	    airpe_cmd_write(airpe, buf);
@@ -616,13 +616,13 @@
 
 	if ( !strncmp(cmd, "DURATION", strlen("DURATION")) ) {
 	    /* Ignore the duration that is updated every second */
+	    /* TODO: maybe in the future we could consider this message as a keepalive signal */
 	    if ( callid != airpe->active_call_id ) {
 		char buf[SKYPE_MSG_LEN] = "";
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "airpe client %s: hanging up unknown call id %d\n", airpe->name, callid);
 		snprintf(buf, sizeof(buf), "SET CALL %d STATUS FINISHED", callid);
 		airpe_cmd_write(airpe, buf);
 	    }
-	    //TODO: maybe we could consider this message as a keepalive signal
 	}
 	else if ( !strncmp(cmd, "STATUS", strlen("STATUS")) && argc >=4 ) {
 	    char *callstatus = argv[3];
@@ -734,7 +734,11 @@
 	/* Ignoring by now */
     }
     else if ( !strncmp( buf, "ERROR", strlen("ERROR")) ) {
-	//TODO If we are in the middle of a call, hangup
+	/* If we are in the middle of a call, hangup */
+	if ( airpe->active_call_id ) {
+	    snprintf(buf, sizeof(buf), "ALTER CALL %d END HANGUP", airpe->active_call_id );
+	    airpe_cmd_write(airpe, buf);
+	}
     }
     else {
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unmanaged message\n");

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c	Wed Jan 14 18:03:50 2009
@@ -95,8 +95,7 @@
     switch_log_printf(	SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, 
 			"HEY! where is my skype window gone ? Restarting skype for client...\n");
 /*
-
-    TODO AND TO USE
+    TODO AND TO USE - Start skype client
 
     int fid;
     const char *args[] = { "skype", "--actiondispatch", params, 0 };

Modified: freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml	(original)
+++ freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml	Wed Jan 14 18:03:50 2009
@@ -19,6 +19,7 @@
 	
 	
 
+	
 	

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	Wed Jan 14 18:03:50 2009
@@ -260,7 +260,6 @@
 
     if ( switch_test_flag(tech_pvt, TFLAG_OUTBOUND) ) {
 	airpe_originate(tech_pvt->airpe, tech_pvt->destination );
-	// TODO if fail switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
     }
 
     switch_channel_set_state(channel, CS_ROUTING);
@@ -509,14 +508,13 @@
     switch (sig) {
 	case SWITCH_SIG_KILL:
 	    break;
-    case SWITCH_SIG_BREAK:
+	case SWITCH_SIG_BREAK:
 	    break;
-    default:
-	//TODO Log unhandled signal
-	break;
-  }
+	default:
+	    break;
+    }
 
-  return SWITCH_STATUS_SUCCESS;
+    return SWITCH_STATUS_SUCCESS;
 }
 
 static switch_status_t channel_send_dtmf(switch_core_session_t * session, const switch_dtmf_t * dtmf) {
@@ -686,6 +684,7 @@
     	    char *skype_password= NULL;
 	    char *cid_name	= NULL;
 	    char *cid_num	= NULL;
+	    int	 auto_auth	= 0;
 	    int	 debug		= 0;
 
     	    airpe_interface_t 	*newconf = NULL;
@@ -701,6 +700,8 @@
 
     		if        (!strcasecmp(var, "debug")) {
 		    debug = switch_true(val) ? 1 : 0;
+    		} else if (!strcasecmp(var, "auto-auth")) {
+		    auto_auth = switch_true(val) ? 1 : 0;
     		} else if (!strcasecmp(var, "context")) {
         	    context = val;
     		} else if (!strcasecmp(var, "dialplan")) {
@@ -765,6 +766,7 @@
 		newconf->dialplan 	= switch_core_strdup(pool, dialplan);
 		newconf->context  	= switch_core_strdup(pool, context);
 		newconf->destination  	= switch_core_strdup(pool, destination);
+		newconf->auto_auth  	= auto_auth;
 		newconf->debug  	= debug;
 
 		if ( reload ) {

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.h
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	Wed Jan 14 18:03:50 2009
@@ -139,6 +139,7 @@
     char 			*skype_user;
     char 			*skype_password;
 
+    int				auto_auth;
     int 			audio_in_port;
     int 			audio_out_port;
     switch_socket_t		*audio_in_socket;


From ctrix at freeswitch.org  Wed Jan 14 17:09:36 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 19:09:36 -0600
Subject: [Freeswitch-svn] [commit] r11208 -
	freeswitch/branches/ctrix/mod_airpe
Message-ID: 

Author: ctrix
Date: Wed Jan 14 19:09:35 2009
New Revision: 11208

Log:
An application, some events and some channel variables.



Modified:
   freeswitch/branches/ctrix/mod_airpe/airpe_api.c
   freeswitch/branches/ctrix/mod_airpe/airpe_apps.c
   freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.h

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_api.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_api.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_api.c	Wed Jan 14 19:09:35 2009
@@ -37,7 +37,7 @@
 */
 
 
-#define AIRPE_MOODTEXT_SYNTAX "airpe_moodtext  "
+#define AIRPE_MOODTEXT_SYNTAX "airpe_moodtext  [text]"
 SWITCH_STANDARD_API(airpe_moodtext_command)
 {
     int argc = 0;
@@ -67,11 +67,10 @@
     } 
 
     if ( argc == 1 ) {
-        stream->write_function(stream, "+OK: ");
 	if ( airpe->mood_text )
 	    stream->write_function(stream, airpe->mood_text);
 	else
-	    stream->write_function(stream, "UNKNOWN");
+	    stream->write_function(stream, "[UNKNOWN]");
 	stream->write_function(stream, "\n");
     }
     else {
@@ -91,7 +90,7 @@
     return SWITCH_STATUS_SUCCESS;
 }
 
-#define AIRPE_INFO_SYNTAX "airpe_status "
+#define AIRPE_INFO_SYNTAX "airpe_info "
 SWITCH_STANDARD_API(airpe_info_command)
 {
     int argc = 0;
@@ -161,7 +160,7 @@
     return SWITCH_STATUS_SUCCESS;
 }
 
-#define AIRPE_STATUS_SYNTAX "airpe_status  "
+#define AIRPE_STATUS_SYNTAX "airpe_status  [status]"
 SWITCH_STANDARD_API(airpe_status_command)
 {
     int argc = 0;
@@ -197,7 +196,6 @@
     if ( !cstatus ) {
 	const char *str_status = NULL;
 	str_status = skype_user_status_string( airpe->user_status );
-	stream->write_function(stream, "+OK status is ");
 	if ( str_status )
 	    stream->write_function(stream, str_status);
 	else
@@ -251,13 +249,13 @@
     switch_api_interface_t *api;
 
     switch_console_set_complete("add airpe_moodtext ");
-    SWITCH_ADD_API(api, "airpe_moodtext", "sets the mood text of an airpe client", airpe_moodtext_command, AIRPE_MOODTEXT_SYNTAX);
+    SWITCH_ADD_API(api, "airpe_moodtext", "gets/sets the mood text of an airpe client", airpe_moodtext_command, AIRPE_MOODTEXT_SYNTAX);
 
     switch_console_set_complete("add airpe_info ");
     SWITCH_ADD_API(api, "airpe_info", "shows the status of an airpe client", airpe_info_command, AIRPE_INFO_SYNTAX);
 
     switch_console_set_complete("add airpe_status ");
-    SWITCH_ADD_API(api, "airpe_status", "sets the status of an airpe client", airpe_status_command, AIRPE_STATUS_SYNTAX);
+    SWITCH_ADD_API(api, "airpe_status", "gets/sets the status of an airpe client", airpe_status_command, AIRPE_STATUS_SYNTAX);
 
     return SWITCH_STATUS_SUCCESS;
 }

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_apps.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_apps.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_apps.c	Wed Jan 14 19:09:35 2009
@@ -30,15 +30,67 @@
 
 #include "mod_airpe.h"
 
-SWITCH_STANDARD_APP(airpe_app_test) 
+#define AIRPE_SET_STATUS_SYNTAX " "
+SWITCH_STANDARD_APP(airpe_set_status)
 {
+    airpe_interface_t *airpe = NULL;
+    const char *str_status = NULL;
+    char buf[SKYPE_MSG_LEN];
+    char *client = NULL;
+    char *text = NULL;
+
+    client = (char *) data;
+    if ( (text = strchr(client,' ')) ) {
+	*text++ = '\0';
+    }
+
+    if ( switch_strlen_zero(client) ) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No client specified.\n");
+	return;
+    }
+
+    airpe = airpe_find_interface(client);
+
+    if ( !airpe ) {
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No airpe client matching name '%s' found.\n", client);
+	return;
+    }
+
+    if ( !switch_strlen_zero(text) ) {
+
+	if      ( !strncasecmp(text, "unknown", sizeof("unknown") ) )
+	    str_status = skype_user_status_string(USER_STATUS_UNKNOWN);
+	else if ( !strncasecmp(text, "online", sizeof("online") ) )
+	    str_status = skype_user_status_string(USER_STATUS_ONLINE);
+	else if ( !strncasecmp(text, "offline", sizeof("offline") ) )
+	    str_status = skype_user_status_string(USER_STATUS_OFFLINE);
+	else if ( !strncasecmp(text, "skypeme", sizeof("skypeme") ) )
+	    str_status = skype_user_status_string(USER_STATUS_SKYPEME);
+	else if ( !strncasecmp(text, "away", sizeof("away") ) )
+	    str_status = skype_user_status_string(USER_STATUS_AWAY);
+	else if ( !strncasecmp(text, "na", sizeof("na") ) )
+	    str_status = skype_user_status_string(USER_STATUS_NA);
+	else if ( !strncasecmp(text, "dnd", sizeof("dnd") ) )
+	    str_status = skype_user_status_string(USER_STATUS_DND);
+	else if ( !strncasecmp(text, "invisible", sizeof("invisible") ) )
+	    str_status = skype_user_status_string(USER_STATUS_INVISIBLE);
+	else if ( !strncasecmp(text, "loggedout", sizeof("loggedout") ) )
+	    str_status = skype_user_status_string(USER_STATUS_LOGGEDOUT);
+
+	if ( str_status ) {
+	    snprintf(buf, SKYPE_MSG_LEN, "SET USERSTATUS %s", str_status );
+	    airpe_cmd_write(airpe, buf);
+	}
+
+    }
+
 }
 
 
 switch_status_t airpe_register_apps( switch_loadable_module_interface_t **module_interface ) {
     switch_application_interface_t *app_interface;
 
-    SWITCH_ADD_APP(app_interface, "airpe_test", "test text", "test text", airpe_app_test, "", SAF_SUPPORT_NOMEDIA);
+    SWITCH_ADD_APP(app_interface, "airpe_set_status", "Sets the status of an airpe client", "Sets the status of an airpe client", airpe_set_status, AIRPE_SET_STATUS_SYNTAX, SAF_SUPPORT_NOMEDIA);
 
     return SWITCH_STATUS_SUCCESS;
 }

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	Wed Jan 14 19:09:35 2009
@@ -373,6 +373,8 @@
     else
 	switch_channel_set_caller_profile(channel, tech_pvt->caller_profile);
 
+    switch_channel_set_variable(channel, "airpe_client", airpe->name);
+    switch_channel_set_variable(channel, "airpe_user_status", skype_user_status_string(airpe->user_status) );
 
     switch_set_flag(tech_pvt, TFLAG_INBOUND);
     airpe_set_call_id(airpe, callid, switch_core_session_get_uuid(new_session) );
@@ -502,6 +504,8 @@
 
 switch_status_t airpe_manage_skype_msg( airpe_interface_t *airpe, const char *msg ) {
     switch_core_session_t *session = NULL;
+    switch_channel_t *channel = NULL;
+    switch_event_t *s_event = NULL;
     char *buf = NULL;
     int argc = 0;
     char *argv[9] = { 0 };
@@ -512,8 +516,11 @@
     if ( airpe->debug )
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "airpe client %s: < %s\n", airpe->name, msg);
 
-    if ( airpe->active_session_uuid )
+    if ( airpe->active_session_uuid ) {
 	session = switch_core_session_locate(airpe->active_session_uuid);
+	if ( session )
+	    channel = switch_core_session_get_channel(session);
+    }
 
     buf = strdup(msg);
     argc = switch_separate_string(buf, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
@@ -524,8 +531,6 @@
 	return  SWITCH_STATUS_FALSE;
     }
 
-
-
     if      ( !strncmp( buf, "CURRENTUSERHANDLE", strlen("CURRENTUSERHANDLE")) ) {
 	/* The username that the client is using. */
 	// TODO ... if the user handle mismatches, disconnect the channel or simply disable
@@ -553,9 +558,16 @@
     else if ( !strncmp( buf, "USER", strlen("USER")) && argc >= 2 ) {
 	/* Updates about the users of our list or new auth requests */
 	if ( !strncmp(argv[2], "RECEIVEDAUTHREQUEST", strlen("RECEIVEDAUTHREQUEST") ) ) {
+	    if (switch_event_create_subclass(&s_event, SWITCH_EVENT_CUSTOM, AIRPE_EVENT_AUTHREQUEST) == SWITCH_STATUS_SUCCESS) {
+		switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "client-name", airpe->name);
+		switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "auth_user", argv[1]);
+		switch_event_fire(&s_event);
+	    }
 	    if ( airpe->auto_auth ) {
 		snprintf(buf, sizeof(buf), "SET USER %s ISAUTHORIZED TRUE", argv[1]);
 		airpe_cmd_write(airpe, buf);
+
+
 	    }
 	}
     }
@@ -627,6 +639,11 @@
 	else if ( !strncmp(cmd, "STATUS", strlen("STATUS")) && argc >=4 ) {
 	    char *callstatus = argv[3];
 	    airpe_manage_call_status( airpe, callid, callstatus );
+	    if (switch_event_create_subclass(&s_event, SWITCH_EVENT_CUSTOM, AIRPE_EVENT_STATUSCHANGE) == SWITCH_STATUS_SUCCESS) {
+		switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "client-name", airpe->name);
+		switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "status", callstatus);
+		switch_event_fire(&s_event);
+	    }
 	}
 	else if ( !strncmp(cmd, "CONF_ID", strlen("CONF_ID")) ) {
 	    char buf[SKYPE_MSG_LEN];
@@ -652,15 +669,11 @@
 	}
 	else if ( !strncmp(cmd, "DTMF", strlen("DTMF")) ) {
 	    /* This is an incoming DTMF */
-	    if ( session ) {
-	        switch_channel_t *channel;
+	    if ( session && channel ) {
 		switch_dtmf_t dtmf = { 0, switch_core_default_dtmf_duration(0) };
 	        const char *signal_ptr;
 		int tmp;
 
-    	        channel = switch_core_session_get_channel(session);
-		assert(channel);
-
 	        signal_ptr = argv[3];
 
 		if (*signal_ptr && (*signal_ptr == '*' || *signal_ptr == '#' || *signal_ptr == 'A' || *signal_ptr == 'B' || *signal_ptr == 'C' || *signal_ptr == 'D')) {
@@ -670,9 +683,7 @@
 	    	    dtmf.digit = switch_rfc2833_to_char(tmp);
 		}
 
-		switch_mutex_lock(airpe->tech_pvt->flag_mutex);
 	        switch_channel_queue_dtmf(channel, &dtmf);
-		switch_mutex_unlock(airpe->tech_pvt->flag_mutex);
 	    }
 	}
 	else if ( !strncmp(cmd, "FAILUREREASON", strlen("FAILUREREASON")) && argc >=2 ) {
@@ -698,6 +709,8 @@
 		if ( data ) {
 		    data += strlen("PARTNER_DISPNAME ");
 		    airpe_set_partner_displayname(airpe, data);
+		    if ( channel )
+		        switch_channel_set_variable(channel, "airpe_partner_dispname", data);
 		}
 	    }
 	    switch_safe_free(tmp);
@@ -710,6 +723,8 @@
 		if ( data ) {
 		    data += strlen("PARTNER_HANDLE ");
 		    airpe_set_partner_handle(airpe, data);
+		    if ( channel )
+		        switch_channel_set_variable(channel, "airpe_partner_handle", data);
 		}
 		switch_safe_free(tmp);
 	    }
@@ -735,10 +750,13 @@
     }
     else if ( !strncmp( buf, "ERROR", strlen("ERROR")) ) {
 	/* If we are in the middle of a call, hangup */
+	/*
 	if ( airpe->active_call_id ) {
+	    char buf[SKYPE_MSG_LEN] = "";
 	    snprintf(buf, sizeof(buf), "ALTER CALL %d END HANGUP", airpe->active_call_id );
 	    airpe_cmd_write(airpe, buf);
 	}
+	*/
     }
     else {
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unmanaged message\n");

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	Wed Jan 14 19:09:35 2009
@@ -408,6 +408,10 @@
 	airpe_set_call_id(tech_pvt->airpe, 0, switch_core_session_get_uuid(*new_session) );
 	switch_channel_set_flag(channel, CF_OUTBOUND);
 	switch_set_flag(tech_pvt, TFLAG_OUTBOUND);
+
+	switch_channel_set_variable(channel, "airpe_client", tech_pvt->airpe->name);
+	switch_channel_set_variable(channel, "airpe_user_status", skype_user_status_string(tech_pvt->airpe->user_status) );
+
 	switch_channel_set_state(channel, CS_INIT);
 	return SWITCH_CAUSE_SUCCESS;
     }

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.h
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	Wed Jan 14 19:09:35 2009
@@ -33,6 +33,9 @@
 
 #define MODNAME "airpe"
 
+#define AIRPE_EVENT_AUTHREQUEST "airpe::authrequest"
+#define AIRPE_EVENT_STATUSCHANGE "airpe::statuschange"
+
 #define SKYPE_MSG_LEN	1024
 
 #define CODEC_SAMPLE_RATE	16000


From brian at freeswitch.org  Wed Jan 14 19:02:06 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 21:02:06 -0600
Subject: [Freeswitch-svn] [commit] r11209 -
	freeswitch/trunk/scripts/contrib/dschreiber
Message-ID: 

Author: brian
Date: Wed Jan 14 21:02:06 2009
New Revision: 11209

Log:
go go gadget ...

Added:
   freeswitch/trunk/scripts/contrib/dschreiber/


From dschreiber at freeswitch.org  Wed Jan 14 19:21:17 2009
From: dschreiber at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 21:21:17 -0600
Subject: [Freeswitch-svn] [commit] r11210 -
	freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill
Message-ID: 

Author: dschreiber
Date: Wed Jan 14 21:21:17 2009
New Revision: 11210

Log:
mod_nibblebill

This is a billing module created for FreeSWITCH. It's purpose is to allow real-time debiting of
credit or cash from a database while calls are in progress.

More info on the WIKI for mod_nibblebill



Added:
   freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/
   freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c

Added: freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c	Wed Jan 14 21:21:17 2009
@@ -0,0 +1,520 @@
+/* 
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II 
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Anthony Minessale II 
+ *
+ * The Initial Developer of this module is
+ * Darren Schreiber 
+ *
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Darren Schreiber 
+ *
+ * mod_nibblebill.c - Nibble Billing
+ * Set the session heartbeat on a call that has a billrate and deduct currency from
+ * a database table each "tick" of the billing until funds are depleted.
+ * Terminate the call upon depletion.
+ *
+ *
+ * TODO: Create an override flag so you can force a start-time for when billing should count *from*
+ * TODO: Fix what happens when the DB is not available
+ * TODO: Fix what happens when the DB queries fail (right now, all are acting like success)
+ * TODO: Make the actions function for when funds are depleted
+ * TODO: Add app and CLI commands (pause, resume, reset, flush, deduct_funds, add_funds)
+ * TODO: Add buffering abilities
+ * TODO: Make error handling for database, such that when the database is down (or not installed) we just log to a text file
+ * TODO: Make a sample .XML config file!
+ * FUTURE: Possibly make the hooks not tied per-channel, and instead just do this as a supervision style application with one thread that watches all calls
+ */
+
+#include 
+
+#ifdef SWITCH_HAVE_ODBC
+#include 
+#endif
+
+// Defaults
+//static char SQL_LOOKUP[] = "SELECT cash FROM accounts WHERE id=\"%s\"";
+static char SQL_SAVE[] = "UPDATE accounts SET cash=cash-%f WHERE id=\"%s\"";
+
+typedef struct {
+	switch_time_t lastts;	// Last time we did any billing
+	float total;	// Total amount billed so far
+} nibble_data_t;
+
+
+typedef struct nibblebill_results{
+	float	funds;
+
+	float	percall_max; // Overrides global on a per-user level
+	float	lowbal_amt;  //  ditto
+} nibblebill_results_t;
+
+
+/* Keep track of our config, event hooks and database connection variables, for this module only */
+static struct {
+	// Event hooks
+	switch_event_node_t *node;
+
+	// Global mutex (don't touch a session when it's already being touched)
+	switch_mutex_t *mutex;
+
+	// Global billing config options
+	float	percall_max_amt;	// Per-call billing limit (safety check, for fraud)
+	char	*percall_action;	// Exceeded length of per-call action
+	float	lowbal_amt;		// When we warn them they are near depletion
+	char	*lowbal_action;		// Low balance action
+	float	nobal_amt;		// Minimum amount that must remain in the account
+	char	*nobal_action;		// Drop action
+
+	// Database settings
+	char *db_username;
+	char *db_password;
+	char *db_dsn;
+	char *lookup_query;
+	char *save_query;
+#ifdef SWITCH_HAVE_ODBC
+	switch_odbc_handle_t *master_odbc;
+#else   
+	void *padding1;  // Keep structures same size
+#endif
+} globals;
+
+/**************************
+* Setup FreeSWITCH Macros *
+**************************/
+/* Define the module's load function */
+SWITCH_MODULE_LOAD_FUNCTION(mod_nibblebill_load);
+
+/* Define the module's shutdown function */
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_nibblebill_shutdown);
+
+/* Define the module's name, load function, shutdown function and runtime function */
+SWITCH_MODULE_DEFINITION(mod_nibblebill, mod_nibblebill_load, mod_nibblebill_shutdown, NULL);
+
+/* String setting functions */
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_db_username, globals.db_username);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_db_password, globals.db_password);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_db_dsn, globals.db_dsn);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_lookup_query, globals.lookup_query);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_save_query, globals.save_query);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_percall_action, globals.percall_action);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_lowbal_action, globals.lowbal_action);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_nobal_action, globals.nobal_action);
+
+
+
+static int nibblebill_callback(void *pArg, int argc, char **argv, char **columnNames)
+{
+	nibblebill_results_t *cbt = (nibblebill_results_t *) pArg;
+
+	cbt->funds = atof(argv[0]);
+
+	return 0;
+}
+
+
+
+static switch_status_t load_config(void)
+{
+	char *cf = "nibblebill.conf";
+	switch_xml_t cfg, xml = NULL, param, settings;
+	switch_status_t status = SWITCH_STATUS_SUCCESS;
+	
+	if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of %s failed\n", cf);
+		status = SWITCH_STATUS_SUCCESS;  // We don't fail because we can still write to a text file or buffer
+		goto done;
+	}
+	
+	if ((settings = switch_xml_child(cfg, "settings"))) {
+		for (param = switch_xml_child(settings, "param"); param; param = param->next) {
+			char *var = (char *) switch_xml_attr_soft(param, "name");
+			char *val = (char *) switch_xml_attr_soft(param, "value");
+			if (!strcasecmp(var, "db-username")) {
+				set_global_db_username(val);
+			} else if (!strcasecmp(var, "db-password")) {
+				set_global_db_password(val);
+			} else if (!strcasecmp(var, "db-dsn")) {
+				set_global_db_dsn(val);
+			} else if (!strcasecmp(var, "lookup_query")) {
+				set_global_lookup_query(val);
+			} else if (!strcasecmp(var, "save_query")) {
+				set_global_save_query(val);
+			} else if (!strcasecmp(var, "percall_action")) {
+				set_global_percall_action(val);
+			} else if (!strcasecmp(var, "lowbal_action")) {
+				set_global_lowbal_action(val);
+			} else if (!strcasecmp(var, "nobal_action")) {
+				set_global_nobal_action(val);
+			}
+		}
+	}
+	
+done:
+	if (switch_strlen_zero(globals.db_username)) {
+		set_global_db_username("phonebooth");
+	}
+	if (switch_strlen_zero(globals.db_password)) {
+		set_global_db_password("dev");
+	}
+	if (switch_strlen_zero(globals.db_dsn)) {
+	set_global_db_dsn("phonebooth");
+	}
+	if (switch_strlen_zero(globals.percall_action)) {
+		set_global_percall_action("hangup");
+	}
+	if (switch_strlen_zero(globals.lowbal_action)) {
+		set_global_lowbal_action("play ding");
+	}
+	if (switch_strlen_zero(globals.nobal_action)) {
+		set_global_nobal_action("hangup");
+	}
+	// Need to add defaults for the integers!
+
+
+#ifdef SWITCH_HAVE_ODBC
+	if (globals.db_dsn) {
+		if (!(globals.master_odbc = switch_odbc_handle_new(globals.db_dsn, globals.db_username, globals.db_password))) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot create handle to ODBC Database!\n");
+			status = SWITCH_STATUS_FALSE;
+			goto reallydone;
+		} else {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Opened ODBC Database handle!\n");
+		}
+		if (switch_odbc_handle_connect(globals.master_odbc) != SWITCH_ODBC_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot connect to ODBC driver/database %s (user: %s / pass %s)!\n", globals.db_dsn, globals.db_username, globals.db_password);
+			status = SWITCH_STATUS_FALSE;
+			goto reallydone;
+		} else {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Opened ODBC Database!\n");
+		}
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Connected ODBC DSN: %s\n", globals.db_dsn);
+    	} else {
+#endif
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "ODBC does not appear to be installed in the core\n");
+#ifdef SWITCH_HAVE_ODBC
+	}
+#endif
+
+
+#ifdef SWITCH_HAVE_ODBC
+reallydone:
+#endif
+
+	if (xml) {
+		switch_xml_free(xml);
+	}
+	return status;
+}
+
+
+void debug_event_handler(switch_event_t *event) {
+	switch_event_header_t *event_header = NULL;
+
+	 if (!event) {
+		return;
+	}
+
+	// Print out all event headers, for fun
+	if (event->headers) {
+		for (event_header = event->headers; event_header; event_header = event_header->next) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Header info: %s => %s\n", event_header->name, event_header->value);
+		}
+	}
+}
+
+
+static switch_status_t sched_billing(switch_core_session_t *session) {
+
+	switch_core_session_enable_heartbeat(session, 60);
+
+	return SWITCH_STATUS_SUCCESS;
+
+}
+
+/* This is where we actually charge the guy */
+/* This can be called anytime a call is in progress or at the end of a call before the session is destroyed */
+static switch_status_t do_billing(switch_core_session_t *session) {
+
+	// FS vars we will use
+	switch_channel_t *channel;
+	switch_caller_profile_t *profile;
+
+	// Local vars
+	nibble_data_t *nibble_data;
+	switch_time_t ts = switch_timestamp_now();
+	float billamount;
+        char date[80] = "";
+	char *uuid;
+        switch_size_t retsize;
+        switch_time_exp_t tm;
+
+	if (!session) {
+		// wtf? Why are we here?
+		return SWITCH_STATUS_GENERR;
+	}
+
+	uuid = switch_core_session_get_uuid(session);
+
+	// Get channel var
+	channel = switch_core_session_get_channel(session);
+	if (!channel) {
+		return SWITCH_STATUS_GENERR;
+	}
+
+	// Variables kept in FS but relevant only to this module
+	const char *billrate = switch_channel_get_variable(channel, "nibble_rate");
+	const char *billaccount = switch_channel_get_variable(channel, "nibble_account");
+
+	// Return if there's no billing information on this session
+	if (!billrate || !billaccount) {
+		return SWITCH_STATUS_GENERR;
+	}
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Attempting to bill at $%s per minute to account %s\n", billrate, billaccount);
+
+	// Get caller profile info from channel
+	profile = switch_channel_get_caller_profile(channel);
+
+	if (!profile) {
+		// No caller profile (why would this happen?)
+		return SWITCH_STATUS_GENERR;
+	}
+
+	if (profile->times->answered < 1) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Not billing %s - call is not in answered state\n", billaccount);
+		return SWITCH_STATUS_SUCCESS;
+	}
+
+	// Lock this session's data for this module while we tinker with it
+	if (globals.mutex) {
+		switch_mutex_lock(globals.mutex);
+	}
+
+	// Get our nibble data var. This will be NULL if it's our first call here for this session
+	nibble_data = (nibble_data_t *) switch_channel_get_private(channel, "_nibble_data_");
+
+	// Have we done any billing on this channel yet? If no, set up vars for doing so
+	if (!nibble_data) {
+		nibble_data = switch_core_session_alloc(session, sizeof(*nibble_data));
+		if (!nibble_data) {
+			switch_assert(nibble_data);
+		}
+		memset(nibble_data, 0, sizeof(*nibble_data));
+
+		// Setup new billing data (based on call answer time, in case this module started late with active calls)
+		nibble_data->lastts = profile->times->answered;		// Set the initial answer time to match when the call was really answered
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Beginning new billing on %s\n", uuid);
+	} else {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Last successful billing time was %s\n", date);
+	}
+
+	switch_time_exp_lt(&tm, nibble_data->lastts);
+	switch_strftime_nocheck(date, &retsize, sizeof(date), "%Y-%m-%d %T", &tm);
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%d seconds passed since last bill time of %s\n", (int) ((ts - nibble_data->lastts) / 1000000), date);
+
+
+	if ((ts - nibble_data->lastts) > 0) {
+		// Convert billrate into microseconds and multiply by # of microseconds that have passed
+		billamount = (atof(billrate) / 1000000 / 60) * ((ts - nibble_data->lastts));
+
+		// if ODBC call fails, we should return BEFORE updating the timestamp of last success!
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Billing $%f to %s (Call: %s / %f so far)\n", billamount, billaccount, uuid, nibble_data->total);
+
+		// DO ODBC BILLING HERE!
+#ifdef SWITCH_HAVE_ODBC
+		char sql[1024] = "";
+		nibblebill_results_t pdata;
+
+		memset(&pdata, 0, sizeof(pdata));
+		if (!globals.save_query){
+			snprintf(sql, 1024, SQL_SAVE, billamount, billaccount);
+		} else {
+			snprintf(sql, 1024, globals.save_query, billamount, billaccount);
+		}
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "Doing static update query\n[%s]\n", sql);
+
+		if (!(switch_odbc_handle_callback_exec(globals.master_odbc, sql, nibblebill_callback, &pdata) == SWITCH_ODBC_SUCCESS)){
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "DB Error while updating cash!\n");
+
+			// TODO: If this is a hangup event, we should store this billing in a text file while the DB is unavailable
+		}
+#endif
+
+		// Increment total cost
+		nibble_data->total += billamount;
+	} else {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Just tried to bill %s negative minutes! wtf?\n", uuid);
+	}
+
+	// Update the last time we billed
+	nibble_data->lastts = ts;
+
+	// Save everything back
+	switch_channel_set_private(channel, "_nibble_data_", nibble_data);
+
+	// Release the session lock
+	switch_core_session_rwunlock(session);
+
+	// Done changing - release lock
+	if (globals.mutex) {
+		switch_mutex_unlock(globals.mutex);
+	}
+
+
+	return SWITCH_STATUS_SUCCESS;
+}
+
+
+/* You can turn on session heartbeat on a channel to have us check billing more often */
+static void event_handler(switch_event_t *event) {
+	if (!event){
+		// WTF? We should never get here - it means an event came in without the event info
+		return;
+	}
+
+	// FS vars we'll need
+	switch_core_session_t *session;
+	char *uuid = switch_event_get_header(event, "Unique-ID");
+
+	// Make sure everything is sane
+	if (!uuid){
+		// Donde esta channel?
+		return;
+	}
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Received request via %s!\n", switch_event_name (event->event_id));
+
+	// Display debugging info
+	if (switch_event_get_header(event, "nibble_debug")) {
+		debug_event_handler(event);
+	}
+
+	// Get session var
+	session = switch_core_session_locate(uuid);
+	if (!session) {
+		return;
+	}
+
+	// Go bill
+	do_billing(session);
+
+	switch_core_session_rwunlock(session);
+}
+
+SWITCH_STANDARD_APP(nibblebill_app_function)
+{
+	switch_channel_t *channel = switch_core_session_get_channel(session);
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "We made it!\n");
+
+	if (!channel) {
+		return;
+	}
+	
+/*	if (!(mydata = switch_core_session_strdup(session, data))) {
+		return;
+	}
+	
+	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
+		destnum = argv[0];
+		do_billing(session);
+	}*/
+}
+
+/* We get here from the API only (theoretically) */
+SWITCH_STANDARD_API(nibblebill_function)
+{
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "We made it!\n");
+	
+// Check if session has variable "billrate" set. If it does, activate the heartbeat variable
+// switch_core_session_enable_heartbeat(switch_core_session_t *session, uint32_t seconds)
+// switch_core_session_sched_heartbeat(switch_core_session_t *session, uint32_t seconds)
+
+
+	return SWITCH_STATUS_SUCCESS;
+
+}
+
+switch_state_handler_table_t nibble_state_handler = {
+	/* on_init */   	NULL,
+	/* on_routing */   	NULL,	// Need to add a check here for anything in their account before routing
+	/* on_execute */   	sched_billing,  // Turn on heartbeat for this session
+	/* on_hangup */   	do_billing, // On hangup - most important place to go bill
+	/* on_exch_media */   	NULL, // Run billing upon a call being established
+	/* on_soft_exec */   	NULL,
+	/* on_consume_med */   	NULL,
+	/* on_hibernate */   	NULL,
+	/* on_reset */   	do_billing  // In case the switch is reset, we still want to log billing
+};
+
+
+SWITCH_MODULE_LOAD_FUNCTION(mod_nibblebill_load)
+{
+	switch_api_interface_t *api_interface;
+	switch_application_interface_t *app_interface;
+
+	/* Set every byte in this structure to 0 */	
+	memset(&globals, 0, sizeof(globals));
+	load_config();
+	
+	/* connect my internal structure to the blank pointer passed to me */
+	*module_interface = switch_loadable_module_create_module_interface(pool, modname);
+	SWITCH_ADD_API(api_interface, "check", "Check the balance of an account", nibblebill_function, "");
+	SWITCH_ADD_APP(app_interface, "check", "Check the balance on an account", "Perform an account check for fund balance", nibblebill_app_function, "", SAF_SUPPORT_NOMEDIA);
+
+	/* register state handlers for billing */
+	switch_core_add_state_handler(&nibble_state_handler);
+
+	/* bind to heartbeat events */
+        if (switch_event_bind_removable(modname, SWITCH_EVENT_SESSION_HEARTBEAT, SWITCH_EVENT_SUBCLASS_ANY, event_handler, NULL, &globals.node) != SWITCH_STATUS_SUCCESS) {
+                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind event to monitor for session heartbeats!\n");
+                return SWITCH_STATUS_GENERR;
+        }
+
+	/* indicate that the module should continue to be loaded */
+	return SWITCH_STATUS_SUCCESS;
+}
+
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_nibblebill_shutdown)
+{	
+	switch_event_unbind(&globals.node);
+	switch_core_remove_state_handler(&nibble_state_handler);
+
+#ifdef SWITCH_HAVE_ODBC
+	switch_odbc_handle_disconnect(globals.master_odbc);
+#endif
+
+	return SWITCH_STATUS_UNLOAD;
+}
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
+ */


From brian at freeswitch.org  Wed Jan 14 19:42:46 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 21:42:46 -0600
Subject: [Freeswitch-svn] [commit] r11211 - in freeswitch/trunk/src: .
	include mod/applications/mod_dptools mod/languages/mod_java
	mod/languages/mod_java/src/org/freeswitch/swig
	mod/languages/mod_lua mod/languages/mod_managed
	mod/languages/mod_managed/managed mod/languages/mod_perl
	mod/languages/mod_python
Message-ID: 

Author: brian
Date: Wed Jan 14 21:42:45 2009
New Revision: 11211

Log:
Adding the ability to pass the var_name to store the results in.



Modified:
   freeswitch/trunk/src/include/switch_cpp.h
   freeswitch/trunk/src/include/switch_ivr.h
   freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
   freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java
   freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
   freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp
   freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp
   freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
   freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs
   freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp
   freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp
   freeswitch/trunk/src/switch_cpp.cpp
   freeswitch/trunk/src/switch_ivr_play_say.c

Modified: freeswitch/trunk/src/include/switch_cpp.h
==============================================================================
--- freeswitch/trunk/src/include/switch_cpp.h	(original)
+++ freeswitch/trunk/src/include/switch_cpp.h	Wed Jan 14 21:42:45 2009
@@ -302,7 +302,8 @@
 		 SWITCH_DECLARE(char *) playAndGetDigits(int min_digits,
 												 int max_digits,
 												 int max_tries,
-												 int timeout, char *terminators, char *audio_files, char *bad_input_audio_files, char *digits_regex);
+												 int timeout, char *terminators, char *audio_files, char *bad_input_audio_files,
+												 char *var_name, char *digits_regex);
 
 	/** \brief Play a file that resides on disk into the channel
 	 *

Modified: freeswitch/trunk/src/include/switch_ivr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_ivr.h	(original)
+++ freeswitch/trunk/src/include/switch_ivr.h	Wed Jan 14 21:42:45 2009
@@ -343,6 +343,7 @@
   \param valid_terminators for input that can include # or * (useful for variable length prompts)
   \param audio_file file to play
   \param bad_input_audio_file file to play if the input from the user was invalid
+  \param var_name variable name to put results in
   \param digit_buffer variable digits captured will be put back into (empty if capture failed)
   \param digit_buffer_length length of the buffer for digits (should be the same or larger than max_digits)
   \param digits_regex the qualifying regex
@@ -356,7 +357,8 @@
 														   uint32_t timeout,
 														   const char *valid_terminators,
 														   const char *audio_file,
-														   const char *bad_input_audio_file, char *digit_buffer, uint32_t digit_buffer_length,
+														   const char *bad_input_audio_file,
+														   const char *var_name, char *digit_buffer, uint32_t digit_buffer_length,
 														   const char *digits_regex);
 
 SWITCH_DECLARE(switch_status_t) switch_ivr_speak_text_handle(switch_core_session_t *session,

Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	Wed Jan 14 21:42:45 2009
@@ -1616,7 +1616,7 @@
 SWITCH_STANDARD_APP(play_and_get_digits_function)
 {
 	char *mydata;
-	char *argv[8] = { 0 };
+	char *argv[9] = { 0 };
 	int argc;
 	int32_t min_digits = 0;
 	int32_t max_digits = 0;
@@ -1625,6 +1625,7 @@
 	char digit_buffer[128] = "";
 	const char *prompt_audio_file = NULL;
 	const char *bad_input_audio_file = NULL;
+	const char *var_name = NULL;
 	const char *valid_terminators = NULL;
 	const char *digits_regex = NULL;
 
@@ -1662,7 +1663,23 @@
 	}
 
 	if (argc > 7) {
-		digits_regex = argv[7];
+		var_name = argv[7];
+	}
+
+	if (argc > 8) {
+		digits_regex = argv[8];
+	}
+
+	if (min_digits <= 1) {
+		min_digits = 1;
+	}
+
+	if (max_digits < min_digits) {
+		max_digits = min_digits;
+	}
+
+	if (timeout <= 1000) {
+		timeout = 1000;
 	}
 
 	if (switch_strlen_zero(valid_terminators)) {
@@ -1670,7 +1687,7 @@
 	}
 
 	switch_play_and_get_digits(session, min_digits, max_digits, max_tries, timeout, valid_terminators,
-							   prompt_audio_file, bad_input_audio_file, digit_buffer, sizeof(digit_buffer), digits_regex);
+							   prompt_audio_file, bad_input_audio_file, var_name, digit_buffer, sizeof(digit_buffer), digits_regex);
 }
 
 #define SAY_SYNTAX "   "
@@ -2611,9 +2628,9 @@
 	SWITCH_ADD_APP(app_interface, "gentones", "Generate Tones", "Generate tones to the channel", gentones_function, "[|]", SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "playback", "Playback File", "Playback a file to the channel", playback_function, "", SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "att_xfer", "Attended Transfer", "Attended Transfer", att_xfer_function, "", SAF_NONE);
-	SWITCH_ADD_APP(app_interface, "read", "Read Digits", "Read Digits", read_function, "     ", SAF_NONE);
+	SWITCH_ADD_APP(app_interface, "read", "Read Digits", "Read Digits", read_function, "     ", SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "play_and_get_digits", "Play and get Digits", "Play and get Digits", 
-				   play_and_get_digits_function, "       ", SAF_NONE);
+				   play_and_get_digits_function, "        ", SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "stop_record_session", "Stop Record Session", STOP_SESS_REC_DESC, stop_record_session_function, "", SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "record_session", "Record Session", SESS_REC_DESC, record_session_function, " [+]", SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "record", "Record File", "Record a file from the channels input", record_function,

Modified: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java	(original)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java	Wed Jan 14 21:42:45 2009
@@ -233,8 +233,8 @@
     return freeswitchJNI.CoreSession_read(swigCPtr, this, min_digits, max_digits, prompt_audio_file, timeout, valid_terminators);
   }
 
-  public String playAndGetDigits(int min_digits, int max_digits, int max_tries, int timeout, String terminators, String audio_files, String bad_input_audio_files, String digits_regex) {
-    return freeswitchJNI.CoreSession_playAndGetDigits(swigCPtr, this, min_digits, max_digits, max_tries, timeout, terminators, audio_files, bad_input_audio_files, digits_regex);
+  public String playAndGetDigits(int min_digits, int max_digits, int max_tries, int timeout, String terminators, String audio_files, String bad_input_audio_files, String var_name, String digits_regex) {
+    return freeswitchJNI.CoreSession_playAndGetDigits(swigCPtr, this, min_digits, max_digits, max_tries, timeout, terminators, audio_files, bad_input_audio_files, var_name, digits_regex);
   }
 
   public int streamFile(String file, int starting_sample_count) {

Modified: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java	(original)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java	Wed Jan 14 21:42:45 2009
@@ -133,7 +133,7 @@
   public final static native int CoreSession_transfer__SWIG_1(long jarg1, CoreSession jarg1_, String jarg2, String jarg3);
   public final static native int CoreSession_transfer__SWIG_2(long jarg1, CoreSession jarg1_, String jarg2);
   public final static native String CoreSession_read(long jarg1, CoreSession jarg1_, int jarg2, int jarg3, String jarg4, int jarg5, String jarg6);
-  public final static native String CoreSession_playAndGetDigits(long jarg1, CoreSession jarg1_, int jarg2, int jarg3, int jarg4, int jarg5, String jarg6, String jarg7, String jarg8, String jarg9);
+  public final static native String CoreSession_playAndGetDigits(long jarg1, CoreSession jarg1_, int jarg2, int jarg3, int jarg4, int jarg5, String jarg6, String jarg7, String jarg8, String jarg9, String jarg10);
   public final static native int CoreSession_streamFile__SWIG_0(long jarg1, CoreSession jarg1_, String jarg2, int jarg3);
   public final static native int CoreSession_streamFile__SWIG_1(long jarg1, CoreSession jarg1_, String jarg2);
   public final static native int CoreSession_sleep__SWIG_0(long jarg1, CoreSession jarg1_, int jarg2, int jarg3);

Modified: freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp	(original)
+++ freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp	Wed Jan 14 21:42:45 2009
@@ -2577,7 +2577,7 @@
 }
 
 
-SWIGEXPORT jstring JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1playAndGetDigits(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3, jint jarg4, jint jarg5, jstring jarg6, jstring jarg7, jstring jarg8, jstring jarg9) {
+SWIGEXPORT jstring JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1playAndGetDigits(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3, jint jarg4, jint jarg5, jstring jarg6, jstring jarg7, jstring jarg8, jstring jarg9, jstring jarg10) {
   jstring jresult = 0 ;
   CoreSession *arg1 = (CoreSession *) 0 ;
   int arg2 ;
@@ -2588,6 +2588,7 @@
   char *arg7 = (char *) 0 ;
   char *arg8 = (char *) 0 ;
   char *arg9 = (char *) 0 ;
+  char *arg10 = (char *) 0 ;
   char *result = 0 ;
   
   (void)jenv;
@@ -2618,12 +2619,18 @@
     arg9 = (char *)jenv->GetStringUTFChars(jarg9, 0);
     if (!arg9) return 0;
   }
-  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
+  arg10 = 0;
+  if (jarg10) {
+    arg10 = (char *)jenv->GetStringUTFChars(jarg10, 0);
+    if (!arg10) return 0;
+  }
+  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
   if(result) jresult = jenv->NewStringUTF((const char *)result);
   if (arg6) jenv->ReleaseStringUTFChars(jarg6, (const char *)arg6);
   if (arg7) jenv->ReleaseStringUTFChars(jarg7, (const char *)arg7);
   if (arg8) jenv->ReleaseStringUTFChars(jarg8, (const char *)arg8);
   if (arg9) jenv->ReleaseStringUTFChars(jarg9, (const char *)arg9);
+  if (arg10) jenv->ReleaseStringUTFChars(jarg10, (const char *)arg10);
   return jresult;
 }
 

Modified: freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp	(original)
+++ freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp	Wed Jan 14 21:42:45 2009
@@ -5924,9 +5924,10 @@
   char *arg7 = (char *) 0 ;
   char *arg8 = (char *) 0 ;
   char *arg9 = (char *) 0 ;
+  char *arg10 = (char *) 0 ;
   char *result = 0 ;
   
-  SWIG_check_num_args("playAndGetDigits",9,9)
+  SWIG_check_num_args("playAndGetDigits",10,10)
   if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("playAndGetDigits",1,"CoreSession *");
   if(!lua_isnumber(L,2)) SWIG_fail_arg("playAndGetDigits",2,"int");
   if(!lua_isnumber(L,3)) SWIG_fail_arg("playAndGetDigits",3,"int");
@@ -5936,6 +5937,7 @@
   if(!lua_isstring(L,7)) SWIG_fail_arg("playAndGetDigits",7,"char *");
   if(!lua_isstring(L,8)) SWIG_fail_arg("playAndGetDigits",8,"char *");
   if(!lua_isstring(L,9)) SWIG_fail_arg("playAndGetDigits",9,"char *");
+  if(!lua_isstring(L,10)) SWIG_fail_arg("playAndGetDigits",10,"char *");
   
   if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_CoreSession,0))){
     SWIG_fail_ptr("CoreSession_playAndGetDigits",1,SWIGTYPE_p_CoreSession);
@@ -5949,7 +5951,8 @@
   arg7 = (char *)lua_tostring(L, 7);
   arg8 = (char *)lua_tostring(L, 8);
   arg9 = (char *)lua_tostring(L, 9);
-  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
+  arg10 = (char *)lua_tostring(L, 10);
+  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
   SWIG_arg=0;
   lua_pushstring(L,(const char*)result); SWIG_arg++;
   return SWIG_arg;

Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	Wed Jan 14 21:42:45 2009
@@ -21051,7 +21051,7 @@
 }
 
 
-SWIGEXPORT int SWIGSTDCALL CSharp_switch_play_and_get_digits(void * jarg1, unsigned long jarg2, unsigned long jarg3, unsigned long jarg4, unsigned long jarg5, char * jarg6, char * jarg7, char * jarg8, char * jarg9, unsigned long jarg10, char * jarg11) {
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_play_and_get_digits(void * jarg1, unsigned long jarg2, unsigned long jarg3, unsigned long jarg4, unsigned long jarg5, char * jarg6, char * jarg7, char * jarg8, char * jarg9, char * jarg10, unsigned long jarg11, char * jarg12) {
   int jresult ;
   switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
   uint32_t arg2 ;
@@ -21062,8 +21062,9 @@
   char *arg7 = (char *) 0 ;
   char *arg8 = (char *) 0 ;
   char *arg9 = (char *) 0 ;
-  uint32_t arg10 ;
-  char *arg11 = (char *) 0 ;
+  char *arg10 = (char *) 0 ;
+  uint32_t arg11 ;
+  char *arg12 = (char *) 0 ;
   switch_status_t result;
   
   arg1 = (switch_core_session_t *)jarg1; 
@@ -21075,9 +21076,10 @@
   arg7 = (char *)jarg7; 
   arg8 = (char *)jarg8; 
   arg9 = (char *)jarg9; 
-  arg10 = (uint32_t)jarg10; 
-  arg11 = (char *)jarg11; 
-  result = (switch_status_t)switch_play_and_get_digits(arg1,arg2,arg3,arg4,arg5,(char const *)arg6,(char const *)arg7,(char const *)arg8,arg9,arg10,(char const *)arg11);
+  arg10 = (char *)jarg10; 
+  arg11 = (uint32_t)jarg11; 
+  arg12 = (char *)jarg12; 
+  result = (switch_status_t)switch_play_and_get_digits(arg1,arg2,arg3,arg4,arg5,(char const *)arg6,(char const *)arg7,(char const *)arg8,(char const *)arg9,arg10,arg11,(char const *)arg12);
   jresult = result; 
   return jresult;
 }
@@ -27355,7 +27357,7 @@
 }
 
 
-SWIGEXPORT char * SWIGSTDCALL CSharp_CoreSession_PlayAndGetDigits(void * jarg1, int jarg2, int jarg3, int jarg4, int jarg5, char * jarg6, char * jarg7, char * jarg8, char * jarg9) {
+SWIGEXPORT char * SWIGSTDCALL CSharp_CoreSession_PlayAndGetDigits(void * jarg1, int jarg2, int jarg3, int jarg4, int jarg5, char * jarg6, char * jarg7, char * jarg8, char * jarg9, char * jarg10) {
   char * jresult ;
   CoreSession *arg1 = (CoreSession *) 0 ;
   int arg2 ;
@@ -27366,6 +27368,7 @@
   char *arg7 = (char *) 0 ;
   char *arg8 = (char *) 0 ;
   char *arg9 = (char *) 0 ;
+  char *arg10 = (char *) 0 ;
   char *result = 0 ;
   
   arg1 = (CoreSession *)jarg1; 
@@ -27377,7 +27380,8 @@
   arg7 = (char *)jarg7; 
   arg8 = (char *)jarg8; 
   arg9 = (char *)jarg9; 
-  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
+  arg10 = (char *)jarg10; 
+  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
   jresult = SWIG_csharp_string_callback((const char *)result); 
   return jresult;
 }

Modified: freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs	Wed Jan 14 21:42:45 2009
@@ -282,8 +282,8 @@
     return ret;
   }
 
-  public string PlayAndGetDigits(int min_digits, int max_digits, int max_tries, int timeout, string terminators, string audio_files, string bad_input_audio_files, string digits_regex) {
-    string ret = freeswitchPINVOKE.CoreSession_PlayAndGetDigits(swigCPtr, min_digits, max_digits, max_tries, timeout, terminators, audio_files, bad_input_audio_files, digits_regex);
+  public string PlayAndGetDigits(int min_digits, int max_digits, int max_tries, int timeout, string terminators, string audio_files, string bad_input_audio_files, string var_name, string digits_regex) {
+    string ret = freeswitchPINVOKE.CoreSession_PlayAndGetDigits(swigCPtr, min_digits, max_digits, max_tries, timeout, terminators, audio_files, bad_input_audio_files, var_name, digits_regex);
     return ret;
   }
 
@@ -3054,8 +3054,8 @@
     return ret;
   }
 
-  public static switch_status_t switch_play_and_get_digits(SWIGTYPE_p_switch_core_session session, uint min_digits, uint max_digits, uint max_tries, uint timeout, string valid_terminators, string audio_file, string bad_input_audio_file, string digit_buffer, uint digit_buffer_length, string digits_regex) {
-    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_play_and_get_digits(SWIGTYPE_p_switch_core_session.getCPtr(session), min_digits, max_digits, max_tries, timeout, valid_terminators, audio_file, bad_input_audio_file, digit_buffer, digit_buffer_length, digits_regex);
+  public static switch_status_t switch_play_and_get_digits(SWIGTYPE_p_switch_core_session session, uint min_digits, uint max_digits, uint max_tries, uint timeout, string valid_terminators, string audio_file, string bad_input_audio_file, string var_name, string digit_buffer, uint digit_buffer_length, string digits_regex) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_play_and_get_digits(SWIGTYPE_p_switch_core_session.getCPtr(session), min_digits, max_digits, max_tries, timeout, valid_terminators, audio_file, bad_input_audio_file, var_name, digit_buffer, digit_buffer_length, digits_regex);
     return ret;
   }
 
@@ -9342,7 +9342,7 @@
   public static extern int switch_ivr_record_file(HandleRef jarg1, HandleRef jarg2, string jarg3, HandleRef jarg4, uint jarg5);
 
   [DllImport("mod_managed", EntryPoint="CSharp_switch_play_and_get_digits")]
-  public static extern int switch_play_and_get_digits(HandleRef jarg1, uint jarg2, uint jarg3, uint jarg4, uint jarg5, string jarg6, string jarg7, string jarg8, string jarg9, uint jarg10, string jarg11);
+  public static extern int switch_play_and_get_digits(HandleRef jarg1, uint jarg2, uint jarg3, uint jarg4, uint jarg5, string jarg6, string jarg7, string jarg8, string jarg9, string jarg10, uint jarg11, string jarg12);
 
   [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_speak_text_handle")]
   public static extern int switch_ivr_speak_text_handle(HandleRef jarg1, HandleRef jarg2, HandleRef jarg3, HandleRef jarg4, string jarg5, HandleRef jarg6);
@@ -10782,7 +10782,7 @@
   public static extern string CoreSession_read(HandleRef jarg1, int jarg2, int jarg3, string jarg4, int jarg5, string jarg6);
 
   [DllImport("mod_managed", EntryPoint="CSharp_CoreSession_PlayAndGetDigits")]
-  public static extern string CoreSession_PlayAndGetDigits(HandleRef jarg1, int jarg2, int jarg3, int jarg4, int jarg5, string jarg6, string jarg7, string jarg8, string jarg9);
+  public static extern string CoreSession_PlayAndGetDigits(HandleRef jarg1, int jarg2, int jarg3, int jarg4, int jarg5, string jarg6, string jarg7, string jarg8, string jarg9, string jarg10);
 
   [DllImport("mod_managed", EntryPoint="CSharp_CoreSession_StreamFile")]
   public static extern int CoreSession_StreamFile(HandleRef jarg1, string jarg2, int jarg3);

Modified: freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp	(original)
+++ freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp	Wed Jan 14 21:42:45 2009
@@ -7869,6 +7869,7 @@
     char *arg7 = (char *) 0 ;
     char *arg8 = (char *) 0 ;
     char *arg9 = (char *) 0 ;
+    char *arg10 = (char *) 0 ;
     char *result = 0 ;
     void *argp1 = 0 ;
     int res1 = 0 ;
@@ -7892,11 +7893,14 @@
     int res9 ;
     char *buf9 = 0 ;
     int alloc9 = 0 ;
+    int res10 ;
+    char *buf10 = 0 ;
+    int alloc10 = 0 ;
     int argvi = 0;
     dXSARGS;
     
-    if ((items < 9) || (items > 9)) {
-      SWIG_croak("Usage: CoreSession_playAndGetDigits(self,min_digits,max_digits,max_tries,timeout,terminators,audio_files,bad_input_audio_files,digits_regex);");
+    if ((items < 10) || (items > 10)) {
+      SWIG_croak("Usage: CoreSession_playAndGetDigits(self,min_digits,max_digits,max_tries,timeout,terminators,audio_files,bad_input_audio_files,var_name,digits_regex);");
     }
     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_CoreSession, 0 |  0 );
     if (!SWIG_IsOK(res1)) {
@@ -7943,7 +7947,12 @@
       SWIG_exception_fail(SWIG_ArgError(res9), "in method '" "CoreSession_playAndGetDigits" "', argument " "9"" of type '" "char *""'");
     }
     arg9 = reinterpret_cast< char * >(buf9);
-    result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
+    res10 = SWIG_AsCharPtrAndSize(ST(9), &buf10, NULL, &alloc10);
+    if (!SWIG_IsOK(res10)) {
+      SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "CoreSession_playAndGetDigits" "', argument " "10"" of type '" "char *""'");
+    }
+    arg10 = reinterpret_cast< char * >(buf10);
+    result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
     
     
@@ -7954,6 +7963,7 @@
     if (alloc7 == SWIG_NEWOBJ) delete[] buf7;
     if (alloc8 == SWIG_NEWOBJ) delete[] buf8;
     if (alloc9 == SWIG_NEWOBJ) delete[] buf9;
+    if (alloc10 == SWIG_NEWOBJ) delete[] buf10;
     XSRETURN(argvi);
   fail:
     
@@ -7965,6 +7975,7 @@
     if (alloc7 == SWIG_NEWOBJ) delete[] buf7;
     if (alloc8 == SWIG_NEWOBJ) delete[] buf8;
     if (alloc9 == SWIG_NEWOBJ) delete[] buf9;
+    if (alloc10 == SWIG_NEWOBJ) delete[] buf10;
     SWIG_croak_null();
   }
 }

Modified: freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp	(original)
+++ freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp	Wed Jan 14 21:42:45 2009
@@ -7794,6 +7794,7 @@
   char *arg7 = (char *) 0 ;
   char *arg8 = (char *) 0 ;
   char *arg9 = (char *) 0 ;
+  char *arg10 = (char *) 0 ;
   char *result = 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -7817,6 +7818,9 @@
   int res9 ;
   char *buf9 = 0 ;
   int alloc9 = 0 ;
+  int res10 ;
+  char *buf10 = 0 ;
+  int alloc10 = 0 ;
   PyObject * obj0 = 0 ;
   PyObject * obj1 = 0 ;
   PyObject * obj2 = 0 ;
@@ -7826,8 +7830,9 @@
   PyObject * obj6 = 0 ;
   PyObject * obj7 = 0 ;
   PyObject * obj8 = 0 ;
+  PyObject * obj9 = 0 ;
   
-  if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOO:CoreSession_playAndGetDigits",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8)) SWIG_fail;
+  if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOO:CoreSession_playAndGetDigits",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_CoreSession, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CoreSession_playAndGetDigits" "', argument " "1"" of type '" "CoreSession *""'"); 
@@ -7873,18 +7878,25 @@
     SWIG_exception_fail(SWIG_ArgError(res9), "in method '" "CoreSession_playAndGetDigits" "', argument " "9"" of type '" "char *""'");
   }
   arg9 = reinterpret_cast< char * >(buf9);
-  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
+  res10 = SWIG_AsCharPtrAndSize(obj9, &buf10, NULL, &alloc10);
+  if (!SWIG_IsOK(res10)) {
+    SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "CoreSession_playAndGetDigits" "', argument " "10"" of type '" "char *""'");
+  }
+  arg10 = reinterpret_cast< char * >(buf10);
+  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
   resultobj = SWIG_FromCharPtr((const char *)result);
   if (alloc6 == SWIG_NEWOBJ) delete[] buf6;
   if (alloc7 == SWIG_NEWOBJ) delete[] buf7;
   if (alloc8 == SWIG_NEWOBJ) delete[] buf8;
   if (alloc9 == SWIG_NEWOBJ) delete[] buf9;
+  if (alloc10 == SWIG_NEWOBJ) delete[] buf10;
   return resultobj;
 fail:
   if (alloc6 == SWIG_NEWOBJ) delete[] buf6;
   if (alloc7 == SWIG_NEWOBJ) delete[] buf7;
   if (alloc8 == SWIG_NEWOBJ) delete[] buf8;
   if (alloc9 == SWIG_NEWOBJ) delete[] buf9;
+  if (alloc10 == SWIG_NEWOBJ) delete[] buf10;
   return NULL;
 }
 

Modified: freeswitch/trunk/src/switch_cpp.cpp
==============================================================================
--- freeswitch/trunk/src/switch_cpp.cpp	(original)
+++ freeswitch/trunk/src/switch_cpp.cpp	Wed Jan 14 21:42:45 2009
@@ -748,7 +748,8 @@
 													 int timeout, 
 													 char *terminators, 
 													 char *audio_files, 
-													 char *bad_input_audio_files, 
+													 char *bad_input_audio_files,
+													 char *var_name,
 													 char *digits_regex)
 {
     switch_status_t status;
@@ -763,7 +764,8 @@
 										 (uint32_t) timeout, 
 										 terminators, 
 										 audio_files, 
-										 bad_input_audio_files, 
+										 bad_input_audio_files,
+										 var_name,
 										 dtmf_buf, 
 										 sizeof(dtmf_buf), 
 										 digits_regex);

Modified: freeswitch/trunk/src/switch_ivr_play_say.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_play_say.c	(original)
+++ freeswitch/trunk/src/switch_ivr_play_say.c	Wed Jan 14 21:42:45 2009
@@ -1503,6 +1503,7 @@
 														   const char *valid_terminators,
 														   const char *prompt_audio_file,
 														   const char *bad_input_audio_file, 
+														   const char *var_name,
 														   char *digit_buffer, 
 														   uint32_t digit_buffer_length,
 														   const char *digits_regex)
@@ -1514,7 +1515,7 @@
 		
 		memset(digit_buffer, 0, digit_buffer_length);
 		switch_channel_flush_dtmf(channel);
-		status = switch_ivr_read(session, min_digits, max_digits, prompt_audio_file, NULL, 
+		status = switch_ivr_read(session, min_digits, max_digits, prompt_audio_file, var_name, 
 												 digit_buffer, digit_buffer_length, timeout, valid_terminators);
 		if (status == SWITCH_STATUS_TIMEOUT && strlen(digit_buffer) >= min_digits) {
 			status = SWITCH_STATUS_SUCCESS;


From brian at freeswitch.org  Wed Jan 14 19:46:46 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 21:46:46 -0600
Subject: [Freeswitch-svn] [commit] r11212 - freeswitch/trunk/conf/dialplan
Message-ID: 

Author: brian
Date: Wed Jan 14 21:46:46 2009
New Revision: 11212

Log:
lets set hold music to silence in this case it has special meaning ... it means SILENCE

Modified:
   freeswitch/trunk/conf/dialplan/default.xml

Modified: freeswitch/trunk/conf/dialplan/default.xml
==============================================================================
--- freeswitch/trunk/conf/dialplan/default.xml	(original)
+++ freeswitch/trunk/conf/dialplan/default.xml	Wed Jan 14 21:46:46 2009
@@ -311,6 +311,7 @@
     
     
       
+	
 	
       
     


From mrene at freeswitch.org  Wed Jan 14 19:53:09 2009
From: mrene at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 21:53:09 -0600
Subject: [Freeswitch-svn] [commit] r11213 -
	freeswitch/trunk/src/mod/applications/mod_limit
Message-ID: 

Author: mrene
Date: Wed Jan 14 21:53:09 2009
New Revision: 11213

Log:
Make max argument optional, acting as a counter only. Also set limit_usage and limit_rate channel variables upon limit_hash call.

Modified:
   freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c

Modified: freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c	Wed Jan 14 21:53:09 2009
@@ -795,7 +795,7 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-#define LIMITHASH_USAGE "  [/interval] [number [dialplan [context]]]"
+#define LIMITHASH_USAGE "  [[/interval]] [number [dialplan [context]]]"
 #define LIMITHASH_DESC "limit access to a resource and transfer to an extension if the limit is exceeded"
 SWITCH_STANDARD_APP(limit_hash_function)
 {
@@ -829,23 +829,27 @@
 	
 	realm = argv[0];
 	id = argv[1];
-	if ((szinterval = strchr(argv[2], '/')))
-	{
-		*szinterval++ = '\0';
-		interval = atoi(szinterval);
-	}
 	
-	max = atoi(argv[2]);
+	/* If max is omitted, only act as a counter and skip maximum checks */
+	if (argc > 2) {
+		if ((szinterval = strchr(argv[2], '/')))
+		{
+			*szinterval++ = '\0';
+			interval = atoi(szinterval);
+		}
+		
+		max = atoi(argv[2]);
+		
+		if (max < 0) {
+			max = 0;
+		}
+	}
 
-	if (argc >= 4) {
+	if (argc > 3) {
 		xfer_exten = argv[3];
 	} else {
 		xfer_exten = limit_def_xfer_exten;
 	}
-
-	if (max < 0) {
-		max = 0;
-	}
 	
 	hashkey = switch_core_session_sprintf(session, "%s_%s", realm, id);
 	
@@ -865,7 +869,7 @@
 		   If we didnt, allow incrementing the counter.
 		   If we did, dont touch it but do the validation anyways
 		 */
-		increment = !!!switch_core_hash_find(channel_hash, hashkey);
+		increment = !switch_core_hash_find(channel_hash, hashkey);
 	} else {
 		/* This is the first limit check on this channel, create a hashtable, set our prviate data and add a state handler */
 		new_channel = 1;
@@ -879,13 +883,13 @@
 			/* Always increment rate when its checked as it doesnt depend on the channel */
 			item->rate_usage++;
 			
-			if (item->rate_usage > (uint32_t)max) {
+			if ((max >= 0) && (item->rate_usage > (uint32_t)max)) {
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Usage for %s exceeds maximum rate of %d/%ds, now at %d\n", hashkey, max, interval, item->rate_usage);
 				switch_ivr_session_transfer(session, xfer_exten, argv[4], argv[5]);
 				goto end;
 			}
 		}
-	} else if (item->total_usage + increment > (uint32_t)max) {
+	} else if ((max >= 0) && (item->total_usage + increment > (uint32_t)max)) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Usage for %s is already at max value (%d)\n", hashkey, item->total_usage);
 		switch_ivr_session_transfer(session, xfer_exten, argv[4], argv[5]);
 		goto end;
@@ -898,14 +902,19 @@
 			switch_core_hash_insert(channel_hash, hashkey, item);
 		}
 		
-		if (interval == 0) {
+		if (max == -1) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Usage for %s is now %d\n", hashkey, item->total_usage);
+		} else if (interval == 0) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Usage for %s is now %d/%d\n", hashkey, item->total_usage, max);	
 		} else {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Usage for %s is now %d/%d for the last %d seconds\n", hashkey, item->rate_usage, max, interval);
 		}
 	}
-
 	
+	/* Save current usage & rate into channel variables so it can be used later in the dialplan, or added to CDR records */
+	switch_channel_set_variable(channel, "limit_usage", switch_core_session_sprintf(session, "%d", item->total_usage));
+	switch_channel_set_variable(channel, "limit_rate", switch_core_session_sprintf(session, "%d", item->rate_usage));
+
 	if (new_channel) {
 		switch_core_hash_init(&channel_hash, switch_core_session_get_pool(session));
 		switch_core_hash_insert(channel_hash, hashkey, item);


From dschreiber at freeswitch.org  Wed Jan 14 19:58:46 2009
From: dschreiber at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 21:58:46 -0600
Subject: [Freeswitch-svn] [commit] r11214 -
	freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill
Message-ID: 

Author: dschreiber
Date: Wed Jan 14 21:58:46 2009
New Revision: 11214

Log:
Formatting fixes, per Brian

Also changed comments to be C compat


Modified:
   freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c

Modified: freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c
==============================================================================
--- freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c	(original)
+++ freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c	Wed Jan 14 21:58:46 2009
@@ -51,41 +51,44 @@
 #include 
 #endif
 
-// Defaults
-//static char SQL_LOOKUP[] = "SELECT cash FROM accounts WHERE id=\"%s\"";
+/* Defaults */
+/* static char SQL_LOOKUP[] = "SELECT cash FROM accounts WHERE id=\"%s\""; */
 static char SQL_SAVE[] = "UPDATE accounts SET cash=cash-%f WHERE id=\"%s\"";
 
-typedef struct {
-	switch_time_t lastts;	// Last time we did any billing
-	float total;	// Total amount billed so far
+typedef struct
+{
+	switch_time_t lastts;	/* Last time we did any billing */
+	float total;	/* Total amount billed so far */
 } nibble_data_t;
 
 
-typedef struct nibblebill_results{
+typedef struct nibblebill_results
+{
 	float	funds;
 
-	float	percall_max; // Overrides global on a per-user level
-	float	lowbal_amt;  //  ditto
+	float	percall_max; /* Overrides global on a per-user level */
+	float	lowbal_amt;  /*  ditto */
 } nibblebill_results_t;
 
 
 /* Keep track of our config, event hooks and database connection variables, for this module only */
-static struct {
-	// Event hooks
+static struct
+{
+	/* Event hooks */
 	switch_event_node_t *node;
 
-	// Global mutex (don't touch a session when it's already being touched)
+	/* Global mutex (don't touch a session when it's already being touched) */
 	switch_mutex_t *mutex;
 
-	// Global billing config options
-	float	percall_max_amt;	// Per-call billing limit (safety check, for fraud)
-	char	*percall_action;	// Exceeded length of per-call action
-	float	lowbal_amt;		// When we warn them they are near depletion
-	char	*lowbal_action;		// Low balance action
-	float	nobal_amt;		// Minimum amount that must remain in the account
-	char	*nobal_action;		// Drop action
+	/* Global billing config options */
+	float	percall_max_amt;	/* Per-call billing limit (safety check, for fraud) */
+	char	*percall_action;	/* Exceeded length of per-call action */
+	float	lowbal_amt;		/* When we warn them they are near depletion */
+	char	*lowbal_action;		/* Low balance action */
+	float	nobal_amt;		/* Minimum amount that must remain in the account */
+	char	*nobal_action;		/* Drop action */
 
-	// Database settings
+	/* Database settings */
 	char *db_username;
 	char *db_password;
 	char *db_dsn;
@@ -94,7 +97,7 @@
 #ifdef SWITCH_HAVE_ODBC
 	switch_odbc_handle_t *master_odbc;
 #else   
-	void *padding1;  // Keep structures same size
+	void *padding1;  /* Keep structures same size */
 #endif
 } globals;
 
@@ -120,8 +123,6 @@
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_lowbal_action, globals.lowbal_action);
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_nobal_action, globals.nobal_action);
 
-
-
 static int nibblebill_callback(void *pArg, int argc, char **argv, char **columnNames)
 {
 	nibblebill_results_t *cbt = (nibblebill_results_t *) pArg;
@@ -131,8 +132,6 @@
 	return 0;
 }
 
-
-
 static switch_status_t load_config(void)
 {
 	char *cf = "nibblebill.conf";
@@ -141,7 +140,7 @@
 	
 	if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of %s failed\n", cf);
-		status = SWITCH_STATUS_SUCCESS;  // We don't fail because we can still write to a text file or buffer
+		status = SWITCH_STATUS_SUCCESS;  /* We don't fail because we can still write to a text file or buffer */
 		goto done;
 	}
 	
@@ -149,6 +148,7 @@
 		for (param = switch_xml_child(settings, "param"); param; param = param->next) {
 			char *var = (char *) switch_xml_attr_soft(param, "name");
 			char *val = (char *) switch_xml_attr_soft(param, "value");
+
 			if (!strcasecmp(var, "db-username")) {
 				set_global_db_username(val);
 			} else if (!strcasecmp(var, "db-password")) {
@@ -188,7 +188,7 @@
 	if (switch_strlen_zero(globals.nobal_action)) {
 		set_global_nobal_action("hangup");
 	}
-	// Need to add defaults for the integers!
+	/* Need to add defaults for the integers! */
 
 
 #ifdef SWITCH_HAVE_ODBC
@@ -200,6 +200,7 @@
 		} else {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Opened ODBC Database handle!\n");
 		}
+
 		if (switch_odbc_handle_connect(globals.master_odbc) != SWITCH_ODBC_SUCCESS) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot connect to ODBC driver/database %s (user: %s / pass %s)!\n", globals.db_dsn, globals.db_username, globals.db_password);
 			status = SWITCH_STATUS_FALSE;
@@ -210,7 +211,7 @@
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Connected ODBC DSN: %s\n", globals.db_dsn);
     	} else {
 #endif
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "ODBC does not appear to be installed in the core\n");
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "ODBC does not appear to be installed in the core. You need to run ./configure --enable-core-odbc-support\n");
 #ifdef SWITCH_HAVE_ODBC
 	}
 #endif
@@ -226,15 +227,15 @@
 	return status;
 }
 
-
-void debug_event_handler(switch_event_t *event) {
+void debug_event_handler(switch_event_t *event)
+{
 	switch_event_header_t *event_header = NULL;
 
 	 if (!event) {
 		return;
 	}
 
-	// Print out all event headers, for fun
+	/* Print out all event headers, for fun */
 	if (event->headers) {
 		for (event_header = event->headers; event_header; event_header = event_header->next) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Header info: %s => %s\n", event_header->name, event_header->value);
@@ -243,7 +244,8 @@
 }
 
 
-static switch_status_t sched_billing(switch_core_session_t *session) {
+static switch_status_t sched_billing(switch_core_session_t *session)
+{
 
 	switch_core_session_enable_heartbeat(session, 60);
 
@@ -251,15 +253,15 @@
 
 }
 
-/* This is where we actually charge the guy */
-/* This can be called anytime a call is in progress or at the end of a call before the session is destroyed */
-static switch_status_t do_billing(switch_core_session_t *session) {
-
-	// FS vars we will use
+/* This is where we actually charge the guy 
+   This can be called anytime a call is in progress or at the end of a call before the session is destroyed */
+static switch_status_t do_billing(switch_core_session_t *session)
+{
+	/* FS vars we will use */
 	switch_channel_t *channel;
 	switch_caller_profile_t *profile;
 
-	// Local vars
+	/* Local vars */
 	nibble_data_t *nibble_data;
 	switch_time_t ts = switch_timestamp_now();
 	float billamount;
@@ -269,34 +271,34 @@
         switch_time_exp_t tm;
 
 	if (!session) {
-		// wtf? Why are we here?
+		/* wtf? Why are we here? */
 		return SWITCH_STATUS_GENERR;
 	}
 
 	uuid = switch_core_session_get_uuid(session);
 
-	// Get channel var
+	/* Get channel var */
 	channel = switch_core_session_get_channel(session);
 	if (!channel) {
 		return SWITCH_STATUS_GENERR;
 	}
 
-	// Variables kept in FS but relevant only to this module
+	/* Variables kept in FS but relevant only to this module */
 	const char *billrate = switch_channel_get_variable(channel, "nibble_rate");
 	const char *billaccount = switch_channel_get_variable(channel, "nibble_account");
 
-	// Return if there's no billing information on this session
+	/* Return if there's no billing information on this session */
 	if (!billrate || !billaccount) {
 		return SWITCH_STATUS_GENERR;
 	}
 
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Attempting to bill at $%s per minute to account %s\n", billrate, billaccount);
 
-	// Get caller profile info from channel
+	/* Get caller profile info from channel */
 	profile = switch_channel_get_caller_profile(channel);
 
 	if (!profile) {
-		// No caller profile (why would this happen?)
+		/* No caller profile (why would this happen?) */
 		return SWITCH_STATUS_GENERR;
 	}
 
@@ -305,15 +307,15 @@
 		return SWITCH_STATUS_SUCCESS;
 	}
 
-	// Lock this session's data for this module while we tinker with it
+	/* Lock this session's data for this module while we tinker with it */
 	if (globals.mutex) {
 		switch_mutex_lock(globals.mutex);
 	}
 
-	// Get our nibble data var. This will be NULL if it's our first call here for this session
+	/* Get our nibble data var. This will be NULL if it's our first call here for this session */
 	nibble_data = (nibble_data_t *) switch_channel_get_private(channel, "_nibble_data_");
 
-	// Have we done any billing on this channel yet? If no, set up vars for doing so
+	/* Have we done any billing on this channel yet? If no, set up vars for doing so */
 	if (!nibble_data) {
 		nibble_data = switch_core_session_alloc(session, sizeof(*nibble_data));
 		if (!nibble_data) {
@@ -321,8 +323,8 @@
 		}
 		memset(nibble_data, 0, sizeof(*nibble_data));
 
-		// Setup new billing data (based on call answer time, in case this module started late with active calls)
-		nibble_data->lastts = profile->times->answered;		// Set the initial answer time to match when the call was really answered
+		/* Setup new billing data (based on call answer time, in case this module started late with active calls) */
+		nibble_data->lastts = profile->times->answered;		/* Set the initial answer time to match when the call was really answered */
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Beginning new billing on %s\n", uuid);
 	} else {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Last successful billing time was %s\n", date);
@@ -335,13 +337,13 @@
 
 
 	if ((ts - nibble_data->lastts) > 0) {
-		// Convert billrate into microseconds and multiply by # of microseconds that have passed
+		/* Convert billrate into microseconds and multiply by # of microseconds that have passed */
 		billamount = (atof(billrate) / 1000000 / 60) * ((ts - nibble_data->lastts));
 
-		// if ODBC call fails, we should return BEFORE updating the timestamp of last success!
+		/* if ODBC call fails, we should return BEFORE updating the timestamp of last success! */
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Billing $%f to %s (Call: %s / %f so far)\n", billamount, billaccount, uuid, nibble_data->total);
 
-		// DO ODBC BILLING HERE!
+		/* DO ODBC BILLING HERE! */
 #ifdef SWITCH_HAVE_ODBC
 		char sql[1024] = "";
 		nibblebill_results_t pdata;
@@ -357,66 +359,65 @@
 		if (!(switch_odbc_handle_callback_exec(globals.master_odbc, sql, nibblebill_callback, &pdata) == SWITCH_ODBC_SUCCESS)){
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "DB Error while updating cash!\n");
 
-			// TODO: If this is a hangup event, we should store this billing in a text file while the DB is unavailable
+			/* TODO: If this is a hangup event, we should store this billing in a text file while the DB is unavailable */
 		}
 #endif
 
-		// Increment total cost
+		/* Increment total cost */
 		nibble_data->total += billamount;
 	} else {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Just tried to bill %s negative minutes! wtf?\n", uuid);
 	}
 
-	// Update the last time we billed
+	/* Update the last time we billed */
 	nibble_data->lastts = ts;
 
-	// Save everything back
+	/* Save everything back */
 	switch_channel_set_private(channel, "_nibble_data_", nibble_data);
 
-	// Release the session lock
+	/* Release the session lock */
 	switch_core_session_rwunlock(session);
 
-	// Done changing - release lock
+	/* Done changing - release lock */
 	if (globals.mutex) {
 		switch_mutex_unlock(globals.mutex);
 	}
 
-
 	return SWITCH_STATUS_SUCCESS;
 }
 
-
 /* You can turn on session heartbeat on a channel to have us check billing more often */
-static void event_handler(switch_event_t *event) {
+static void event_handler(switch_event_t *event)
+{
 	if (!event){
-		// WTF? We should never get here - it means an event came in without the event info
+		/* WTF? We should never get here - it means an event came in without the event info */
 		return;
 	}
 
-	// FS vars we'll need
+	/* FS vars we'll need */
 	switch_core_session_t *session;
 	char *uuid = switch_event_get_header(event, "Unique-ID");
 
-	// Make sure everything is sane
+	/* Make sure everything is sane */
 	if (!uuid){
-		// Donde esta channel?
+		/* Donde esta channel? */
 		return;
 	}
 
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Received request via %s!\n", switch_event_name (event->event_id));
 
-	// Display debugging info
+	/* Display debugging info */
 	if (switch_event_get_header(event, "nibble_debug")) {
 		debug_event_handler(event);
 	}
 
-	// Get session var
+	/* Get session var */
 	session = switch_core_session_locate(uuid);
 	if (!session) {
 		return;
 	}
 
-	// Go bill
+	/* Go bill */
 	do_billing(session);
 
 	switch_core_session_rwunlock(session);
@@ -447,28 +448,28 @@
 {
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "We made it!\n");
 	
-// Check if session has variable "billrate" set. If it does, activate the heartbeat variable
-// switch_core_session_enable_heartbeat(switch_core_session_t *session, uint32_t seconds)
-// switch_core_session_sched_heartbeat(switch_core_session_t *session, uint32_t seconds)
+/* Check if session has variable "billrate" set. If it does, activate the heartbeat variable
+ switch_core_session_enable_heartbeat(switch_core_session_t *session, uint32_t seconds)
+ switch_core_session_sched_heartbeat(switch_core_session_t *session, uint32_t seconds)*/
 
 
 	return SWITCH_STATUS_SUCCESS;
 
 }
 
-switch_state_handler_table_t nibble_state_handler = {
+switch_state_handler_table_t nibble_state_handler =
+{
 	/* on_init */   	NULL,
-	/* on_routing */   	NULL,	// Need to add a check here for anything in their account before routing
-	/* on_execute */   	sched_billing,  // Turn on heartbeat for this session
-	/* on_hangup */   	do_billing, // On hangup - most important place to go bill
-	/* on_exch_media */   	NULL, // Run billing upon a call being established
+	/* on_routing */   	NULL,	/* Need to add a check here for anything in their account before routing */
+	/* on_execute */   	sched_billing,  /* Turn on heartbeat for this session */
+	/* on_hangup */   	do_billing, /* On hangup - most important place to go bill */
+	/* on_exch_media */   	NULL,
 	/* on_soft_exec */   	NULL,
 	/* on_consume_med */   	NULL,
 	/* on_hibernate */   	NULL,
-	/* on_reset */   	do_billing  // In case the switch is reset, we still want to log billing
+	/* on_reset */   	NULL
 };
 
-
 SWITCH_MODULE_LOAD_FUNCTION(mod_nibblebill_load)
 {
 	switch_api_interface_t *api_interface;


From dschreiber at freeswitch.org  Wed Jan 14 20:20:56 2009
From: dschreiber at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 22:20:56 -0600
Subject: [Freeswitch-svn] [commit] r11215 -
	freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill
Message-ID: 

Author: dschreiber
Date: Wed Jan 14 22:20:56 2009
New Revision: 11215

Log:
Removed more whitespaces


Modified:
   freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c

Modified: freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c
==============================================================================
--- freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c	(original)
+++ freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c	Wed Jan 14 22:20:56 2009
@@ -190,7 +190,6 @@
 	}
 	/* Need to add defaults for the integers! */
 
-
 #ifdef SWITCH_HAVE_ODBC
 	if (globals.db_dsn) {
 		if (!(globals.master_odbc = switch_odbc_handle_new(globals.db_dsn, globals.db_username, globals.db_password))) {
@@ -209,14 +208,13 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Opened ODBC Database!\n");
 		}
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Connected ODBC DSN: %s\n", globals.db_dsn);
-    	} else {
+	} else {
 #endif
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "ODBC does not appear to be installed in the core. You need to run ./configure --enable-core-odbc-support\n");
 #ifdef SWITCH_HAVE_ODBC
 	}
 #endif
 
-
 #ifdef SWITCH_HAVE_ODBC
 reallydone:
 #endif
@@ -254,7 +252,7 @@
 }
 
 /* This is where we actually charge the guy 
-   This can be called anytime a call is in progress or at the end of a call before the session is destroyed */
+  This can be called anytime a call is in progress or at the end of a call before the session is destroyed */
 static switch_status_t do_billing(switch_core_session_t *session)
 {
 	/* FS vars we will use */
@@ -265,10 +263,10 @@
 	nibble_data_t *nibble_data;
 	switch_time_t ts = switch_timestamp_now();
 	float billamount;
-        char date[80] = "";
+	char date[80] = "";
 	char *uuid;
-        switch_size_t retsize;
-        switch_time_exp_t tm;
+	switch_size_t retsize;
+	switch_time_exp_t tm;
 
 	if (!session) {
 		/* wtf? Why are we here? */
@@ -488,10 +486,10 @@
 	switch_core_add_state_handler(&nibble_state_handler);
 
 	/* bind to heartbeat events */
-        if (switch_event_bind_removable(modname, SWITCH_EVENT_SESSION_HEARTBEAT, SWITCH_EVENT_SUBCLASS_ANY, event_handler, NULL, &globals.node) != SWITCH_STATUS_SUCCESS) {
-                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind event to monitor for session heartbeats!\n");
-                return SWITCH_STATUS_GENERR;
-        }
+	if (switch_event_bind_removable(modname, SWITCH_EVENT_SESSION_HEARTBEAT, SWITCH_EVENT_SUBCLASS_ANY, event_handler, NULL, &globals.node) != SWITCH_STATUS_SUCCESS) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind event to monitor for session heartbeats!\n");
+		return SWITCH_STATUS_GENERR;
+	}
 
 	/* indicate that the module should continue to be loaded */
 	return SWITCH_STATUS_SUCCESS;


From mrene at freeswitch.org  Wed Jan 14 20:46:58 2009
From: mrene at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 22:46:58 -0600
Subject: [Freeswitch-svn] [commit] r11216 -
	freeswitch/trunk/src/mod/applications/mod_limit
Message-ID: 

Author: mrene
Date: Wed Jan 14 22:46:58 2009
New Revision: 11216

Log:
tweak

Modified:
   freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c

Modified: freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c	Wed Jan 14 22:46:58 2009
@@ -822,7 +822,7 @@
 		argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
 	}
 	
-	if (argc < 3) {
+	if (argc < 2) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "USAGE: limit_hash %s\n", LIMITHASH_USAGE);
 		return;
 	}


From mrene at freeswitch.org  Wed Jan 14 20:50:06 2009
From: mrene at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 22:50:06 -0600
Subject: [Freeswitch-svn] [commit] r11217 -
	freeswitch/trunk/src/mod/applications/mod_limit
Message-ID: 

Author: mrene
Date: Wed Jan 14 22:50:06 2009
New Revision: 11217

Log:
tweak

Modified:
   freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c

Modified: freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c	Wed Jan 14 22:50:06 2009
@@ -806,7 +806,7 @@
 	char *id = NULL;
 	char *hashkey = NULL;
 	char *xfer_exten = NULL;
-	int max = 0;
+	int max = -1;
 	int interval = 0;
 	char *szinterval = NULL;
 	limit_hash_item_t *item = NULL;


From michaelgg at freeswitch.org  Wed Jan 14 21:36:45 2009
From: michaelgg at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 14 Jan 2009 23:36:45 -0600
Subject: [Freeswitch-svn] [commit] r11218 -
	freeswitch/trunk/src/mod/languages/mod_managed/managed
Message-ID: 

Author: michaelgg
Date: Wed Jan 14 23:36:45 2009
New Revision: 11218

Log:
Fix DLL name in Makefile

Modified:
   freeswitch/trunk/src/mod/languages/mod_managed/managed/Makefile

Modified: freeswitch/trunk/src/mod/languages/mod_managed/managed/Makefile
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/managed/Makefile	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/managed/Makefile	Wed Jan 14 23:36:45 2009
@@ -1,14 +1,14 @@
-all: mod_managed_lib.dll
+all: FreeSWITCH.Managed.dll
 
 clean:
-	rm -fr mod_managed_lib.dll
+	rm -fr FreeSWITCH.Managed.dll
 
-mod_managed_lib.dll: Loader.cs ManagedSession.cs ApiFunction.cs AppFunction.cs Extensions.cs Log.cs Demo.cs swig.cs
-	gmcs -target:library -out:mod_managed_lib.dll -d:DEBUG Loader.cs ManagedSession.cs ApiFunction.cs AppFunction.cs Extensions.cs Log.cs Demo.cs swig.cs
+FreeSWITCH.Managed.dll: Loader.cs ManagedSession.cs ApiFunction.cs AppFunction.cs Extensions.cs Log.cs Demo.cs swig.cs
+	gmcs -target:library -out:FreeSWITCH.Managed.dll -d:DEBUG Loader.cs ManagedSession.cs ApiFunction.cs AppFunction.cs Extensions.cs Log.cs Demo.cs swig.cs
 
-install: mod_managed_lib.dll
-	$(INSTALL) mod_managed_lib.dll $(DESTDIR)$(MODINSTDIR)
+install: FreeSWITCH.Managed.dll
+	$(INSTALL) FreeSWITCH.Managed.dll $(DESTDIR)$(MODINSTDIR)
 
 uninstall:
-	$(UNINSTALL) $(MODINSTDIR)/mod_managed_lib.dll
+	$(UNINSTALL) $(MODINSTDIR)/FreeSWITCH.Managed.dll
 


From dschreiber at freeswitch.org  Wed Jan 14 23:56:15 2009
From: dschreiber at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 01:56:15 -0600
Subject: [Freeswitch-svn] [commit] r11219 -
	freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill
Message-ID: 

Author: dschreiber
Date: Thu Jan 15 01:56:15 2009
New Revision: 11219

Log:
Updated nibblebill to add some dialplan applications

more to come



Modified:
   freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c

Modified: freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c
==============================================================================
--- freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c	(original)
+++ freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c	Thu Jan 15 01:56:15 2009
@@ -29,9 +29,15 @@
  * Darren Schreiber 
  *
  * mod_nibblebill.c - Nibble Billing
- * Set the session heartbeat on a call that has a billrate and deduct currency from
- * a database table each "tick" of the billing until funds are depleted.
- * Terminate the call upon depletion.
+ * Purpose is to allow real-time debiting of credit or cash from a database while calls are in progress. I had the following goals: 
+ *
+ * Debit credit/cash from accounts real-time 
+ * Allow for billing at different rates during a single call 
+ * Allow for warning callers when their balance is low (via audio, in-channel) 
+ * Allow for disconnecting or re-routing calls when balance is depleted 
+ * Allow for billing to function as listed above with multiple concurrent calls 
+ * 
+ * Thanks go to bandwidth.com for funding this work.
  *
  *
  * TODO: Create an override flag so you can force a start-time for when billing should count *from*
@@ -52,13 +58,20 @@
 #endif
 
 /* Defaults */
-/* static char SQL_LOOKUP[] = "SELECT cash FROM accounts WHERE id=\"%s\""; */
-static char SQL_SAVE[] = "UPDATE accounts SET cash=cash-%f WHERE id=\"%s\"";
+#ifdef SWITCH_HAVE_ODBC
+/*static char SQL_LOOKUP[] = "SELECT %s FROM %s WHERE %s=\"%s\"";*/
+static char SQL_SAVE[] = "UPDATE %s SET %s=%s-%f WHERE %s=\"%s\"";
+#endif
 
 typedef struct
 {
 	switch_time_t lastts;	/* Last time we did any billing */
 	float total;	/* Total amount billed so far */
+
+	switch_time_t pausets;	/* Timestamp of when a pause action started. 0 if not paused */
+	float bill_adjustments;	/* Adjustments to make to the next billing, based on pause/resume events */
+
+	float manual_adjustments;	/* Manually added/deducted amounts from this account, to be committed at next database query */
 } nibble_data_t;
 
 
@@ -88,12 +101,16 @@
 	float	nobal_amt;		/* Minimum amount that must remain in the account */
 	char	*nobal_action;		/* Drop action */
 
+	/* Other options */
+	int	global_heartbeat;	/* Supervise and bill every X seconds, 0 means off */
+
 	/* Database settings */
 	char *db_username;
 	char *db_password;
 	char *db_dsn;
-	char *lookup_query;
-	char *save_query;
+	char *db_table;
+	char *db_column_cash;
+	char *db_column_account;
 #ifdef SWITCH_HAVE_ODBC
 	switch_odbc_handle_t *master_odbc;
 #else   
@@ -117,12 +134,14 @@
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_db_username, globals.db_username);
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_db_password, globals.db_password);
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_db_dsn, globals.db_dsn);
-SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_lookup_query, globals.lookup_query);
-SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_save_query, globals.save_query);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_db_table, globals.db_table);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_db_column_cash, globals.db_column_cash);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_db_column_account, globals.db_column_account);
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_percall_action, globals.percall_action);
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_lowbal_action, globals.lowbal_action);
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_nobal_action, globals.nobal_action);
 
+#ifdef SWITCH_HAVE_ODBC
 static int nibblebill_callback(void *pArg, int argc, char **argv, char **columnNames)
 {
 	nibblebill_results_t *cbt = (nibblebill_results_t *) pArg;
@@ -131,6 +150,7 @@
 
 	return 0;
 }
+#endif
 
 static switch_status_t load_config(void)
 {
@@ -141,7 +161,7 @@
 	if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of %s failed\n", cf);
 		status = SWITCH_STATUS_SUCCESS;  /* We don't fail because we can still write to a text file or buffer */
-		goto done;
+		goto setdefaults;
 	}
 	
 	if ((settings = switch_xml_child(cfg, "settings"))) {
@@ -149,35 +169,46 @@
 			char *var = (char *) switch_xml_attr_soft(param, "name");
 			char *val = (char *) switch_xml_attr_soft(param, "value");
 
-			if (!strcasecmp(var, "db-username")) {
+			if (!strcasecmp(var, "db_username")) {
 				set_global_db_username(val);
-			} else if (!strcasecmp(var, "db-password")) {
+			} else if (!strcasecmp(var, "db_password")) {
 				set_global_db_password(val);
-			} else if (!strcasecmp(var, "db-dsn")) {
+			} else if (!strcasecmp(var, "db_dsn")) {
 				set_global_db_dsn(val);
-			} else if (!strcasecmp(var, "lookup_query")) {
-				set_global_lookup_query(val);
-			} else if (!strcasecmp(var, "save_query")) {
-				set_global_save_query(val);
+			} else if (!strcasecmp(var, "db_table")) {
+				set_global_db_table(val);
+			} else if (!strcasecmp(var, "db_column_cash")) {
+				set_global_db_column_cash(val);
+			} else if (!strcasecmp(var, "db_column_account")) {
+				set_global_db_column_account(val);
 			} else if (!strcasecmp(var, "percall_action")) {
 				set_global_percall_action(val);
+			} else if (!strcasecmp(var, "percall_max_amt")) {
+				globals.percall_max_amt = atof(val);
 			} else if (!strcasecmp(var, "lowbal_action")) {
 				set_global_lowbal_action(val);
+			} else if (!strcasecmp(var, "lowbal_amt")) {
+				globals.lowbal_amt = atof(val);
 			} else if (!strcasecmp(var, "nobal_action")) {
 				set_global_nobal_action(val);
+			} else if (!strcasecmp(var, "nobal_amt")) {
+				globals.nobal_amt = atof(val);
+			} else if (!strcasecmp(var, "global_heartbeat")) {
+				globals.global_heartbeat = atoi(val);
 			}
 		}
 	}
 	
-done:
+/* Set defaults for any variables still not set */
+setdefaults:
 	if (switch_strlen_zero(globals.db_username)) {
-		set_global_db_username("phonebooth");
+		set_global_db_username("bandwidth.com");
 	}
 	if (switch_strlen_zero(globals.db_password)) {
 		set_global_db_password("dev");
 	}
 	if (switch_strlen_zero(globals.db_dsn)) {
-	set_global_db_dsn("phonebooth");
+		set_global_db_dsn("bandwidth.com");
 	}
 	if (switch_strlen_zero(globals.percall_action)) {
 		set_global_percall_action("hangup");
@@ -188,14 +219,13 @@
 	if (switch_strlen_zero(globals.nobal_action)) {
 		set_global_nobal_action("hangup");
 	}
-	/* Need to add defaults for the integers! */
 
 #ifdef SWITCH_HAVE_ODBC
 	if (globals.db_dsn) {
 		if (!(globals.master_odbc = switch_odbc_handle_new(globals.db_dsn, globals.db_username, globals.db_password))) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot create handle to ODBC Database!\n");
 			status = SWITCH_STATUS_FALSE;
-			goto reallydone;
+			goto done;
 		} else {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Opened ODBC Database handle!\n");
 		}
@@ -203,7 +233,7 @@
 		if (switch_odbc_handle_connect(globals.master_odbc) != SWITCH_ODBC_SUCCESS) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot connect to ODBC driver/database %s (user: %s / pass %s)!\n", globals.db_dsn, globals.db_username, globals.db_password);
 			status = SWITCH_STATUS_FALSE;
-			goto reallydone;
+			goto done;
 		} else {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Opened ODBC Database!\n");
 		}
@@ -216,7 +246,7 @@
 #endif
 
 #ifdef SWITCH_HAVE_ODBC
-reallydone:
+done:
 #endif
 
 	if (xml) {
@@ -245,7 +275,11 @@
 static switch_status_t sched_billing(switch_core_session_t *session)
 {
 
-	switch_core_session_enable_heartbeat(session, 60);
+	if (globals.global_heartbeat > 0) {
+		switch_core_session_enable_heartbeat(session, globals.global_heartbeat);
+	}
+
+	// Check account balance here
 
 	return SWITCH_STATUS_SUCCESS;
 
@@ -263,7 +297,9 @@
 	nibble_data_t *nibble_data;
 	switch_time_t ts = switch_timestamp_now();
 	float billamount;
+	float adjustments = 0;
 	char date[80] = "";
+	char *tmp;
 	char *uuid;
 	switch_size_t retsize;
 	switch_time_exp_t tm;
@@ -313,6 +349,15 @@
 	/* Get our nibble data var. This will be NULL if it's our first call here for this session */
 	nibble_data = (nibble_data_t *) switch_channel_get_private(channel, "_nibble_data_");
 
+	/* Are we in paused mode? If so, we don't do anything here - go back! */
+	if (nibble_data->pausets > 0) {
+		if (globals.mutex) {
+			switch_mutex_unlock(globals.mutex);
+		}
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Received heartbeat, but we're paused - ignoring\n");
+		return SWITCH_STATUS_SUCCESS;
+	}
+
 	/* Have we done any billing on this channel yet? If no, set up vars for doing so */
 	if (!nibble_data) {
 		nibble_data = switch_core_session_alloc(session, sizeof(*nibble_data));
@@ -337,34 +382,46 @@
 	if ((ts - nibble_data->lastts) > 0) {
 		/* Convert billrate into microseconds and multiply by # of microseconds that have passed */
 		billamount = (atof(billrate) / 1000000 / 60) * ((ts - nibble_data->lastts));
+		adjustments = nibble_data->manual_adjustments + nibble_data->bill_adjustments;
 
 		/* if ODBC call fails, we should return BEFORE updating the timestamp of last success! */
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Billing $%f to %s (Call: %s / %f so far)\n", billamount, billaccount, uuid, nibble_data->total);
 
+		if (adjustments > 0) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "(Also adjusting the account by $%f)\n", adjustments);
+		}
+
 		/* DO ODBC BILLING HERE! */
 #ifdef SWITCH_HAVE_ODBC
 		char sql[1024] = "";
 		nibblebill_results_t pdata;
 
 		memset(&pdata, 0, sizeof(pdata));
-		if (!globals.save_query){
-			snprintf(sql, 1024, SQL_SAVE, billamount, billaccount);
-		} else {
-			snprintf(sql, 1024, globals.save_query, billamount, billaccount);
-		}
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "Doing static update query\n[%s]\n", sql);
+		snprintf(sql, 1024, SQL_SAVE, globals.db_table, globals.db_column_cash, globals.db_column_cash, (billamount - adjustments), globals.db_column_account, billaccount);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "Doing update query\n[%s]\n", sql);
 
 		if (!(switch_odbc_handle_callback_exec(globals.master_odbc, sql, nibblebill_callback, &pdata) == SWITCH_ODBC_SUCCESS)){
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "DB Error while updating cash!\n");
 
 			/* TODO: If this is a hangup event, we should store this billing in a text file while the DB is unavailable */
-		}
+		} else {
 #endif
+			/* Increment total cost */
+			nibble_data->total += billamount;
 
-		/* Increment total cost */
-		nibble_data->total += billamount;
+			/* Get rid of any manual adjustments that were just committed */
+			nibble_data->manual_adjustments = 0;
+			nibble_data->bill_adjustments = 0;
+
+			/* Update channel variable with current billing */
+			tmp = switch_mprintf("%f", nibble_data->total);
+			switch_channel_set_variable(channel, "nibble_total_billed", tmp);
+			switch_safe_free(tmp);
+#ifdef SWITCH_HAVE_ODBC
+		}
+#endif
 	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Just tried to bill %s negative minutes! wtf?\n", uuid);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Just tried to bill %s negative minutes! wtf? That should be impossible.\n", uuid);
 	}
 
 	/* Update the last time we billed */
@@ -373,14 +430,16 @@
 	/* Save everything back */
 	switch_channel_set_private(channel, "_nibble_data_", nibble_data);
 
-	/* Release the session lock */
-	switch_core_session_rwunlock(session);
-
 	/* Done changing - release lock */
 	if (globals.mutex) {
 		switch_mutex_unlock(globals.mutex);
 	}
 
+	/* Go check if this call is allowed to continue */
+
+	/* Release the session lock */
+	switch_core_session_rwunlock(session);
+
 	return SWITCH_STATUS_SUCCESS;
 }
 
@@ -421,28 +480,99 @@
 	switch_core_session_rwunlock(session);
 }
 
-SWITCH_STANDARD_APP(nibblebill_app_function)
+
+static float nibblebill_check(switch_core_session_t *session)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
+	nibble_data_t *nibble_data;
+	float amount = 0;
 
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "We made it!\n");
+	if (!channel) {
+		return -99999;
+	}
+
+	/* Lock this session's data for this module while we tinker with it */
+	if (globals.mutex) {
+		switch_mutex_lock(globals.mutex);
+	}
+
+	/* Get our nibble data var. This will be NULL if it's our first call here for this session */
+	nibble_data = (nibble_data_t *) switch_channel_get_private(channel, "_nibble_data_");
+
+	amount = nibble_data->total;
+
+	/* Done checking - release lock */
+	if (globals.mutex) {
+		switch_mutex_unlock(globals.mutex);
+	}
+
+	return amount;
+}
+
+static void nibblebill_adjust(switch_core_session_t *session, float amount)
+{
+	switch_channel_t *channel = switch_core_session_get_channel(session);
+	nibble_data_t *nibble_data;
+	char *uuid;
 
 	if (!channel) {
 		return;
 	}
+
+	uuid = switch_core_session_get_uuid(session);
+
+	/* Lock this session's data for this module while we tinker with it */
+	if (globals.mutex) {
+		switch_mutex_lock(globals.mutex);
+	}
+
+	/* Get our nibble data var. This will be NULL if it's our first call here for this session */
+	nibble_data = (nibble_data_t *) switch_channel_get_private(channel, "_nibble_data_");
+
+	/*Add or remove amount from adjusted billing here */
+	nibble_data->manual_adjustments += amount;
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Current adjustment for %s is $%f\n", uuid, amount);
+
+	/* Done changing - release lock */
+	if (globals.mutex) {
+		switch_mutex_unlock(globals.mutex);
+	}
+
+	/* Release the session lock */
+	switch_core_session_rwunlock(session);
+}
+
+#define CHECK_APP_SYNTAX ""
+SWITCH_STANDARD_APP(nibblebill_check_app_function)
+{
+	float amount;
+
+	amount = nibblebill_check(session);
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Current billing is at $%f\n", amount);
+}
+
+#define ADJUST_APP_SYNTAX ""
+SWITCH_STANDARD_APP(nibblebill_adjust_app_function)
+{
+	char *mydata = NULL;
+	int argc = 0;
+	char *argv[4] = { 0 };
+	float amount;
 	
-/*	if (!(mydata = switch_core_session_strdup(session, data))) {
+	if (!(mydata = switch_core_session_strdup(session, data))) {
 		return;
 	}
 	
 	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
-		destnum = argv[0];
-		do_billing(session);
-	}*/
+		amount = atof(argv[0]);
+		nibblebill_adjust(session, amount);
+	}
 }
 
 /* We get here from the API only (theoretically) */
-SWITCH_STANDARD_API(nibblebill_function)
+#define CHECK_API_SYNTAX ""
+SWITCH_STANDARD_API(nibblebill_check_api_function)
 {
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "We made it!\n");
 	
@@ -459,7 +589,7 @@
 {
 	/* on_init */   	NULL,
 	/* on_routing */   	NULL,	/* Need to add a check here for anything in their account before routing */
-	/* on_execute */   	sched_billing,  /* Turn on heartbeat for this session */
+	/* on_execute */   	sched_billing,  /* Turn on heartbeat for this session and do an initial account check */
 	/* on_hangup */   	do_billing, /* On hangup - most important place to go bill */
 	/* on_exch_media */   	NULL,
 	/* on_soft_exec */   	NULL,
@@ -479,8 +609,20 @@
 	
 	/* connect my internal structure to the blank pointer passed to me */
 	*module_interface = switch_loadable_module_create_module_interface(pool, modname);
-	SWITCH_ADD_API(api_interface, "check", "Check the balance of an account", nibblebill_function, "");
-	SWITCH_ADD_APP(app_interface, "check", "Check the balance on an account", "Perform an account check for fund balance", nibblebill_app_function, "", SAF_SUPPORT_NOMEDIA);
+
+	/* Add API and CLI commands */
+/*	SWITCH_ADD_API(api_interface, "pause", "Pause billing on a session", nibblebill_pause_api_function, PAUSE_API_SYNTAX);
+	SWITCH_ADD_API(api_interface, "resume", "Resume billing on a session", nibblebill_resume_api_function, RESUME_API_SYNTAX);
+	SWITCH_ADD_API(api_interface, "reset", "Reset billing start time to right now - disregard any unbilled time thus far", nibblebill_reset_api_function, RESET_API_SYNTAX);
+	SWITCH_ADD_API(api_interface, "adjust", "Add or deduct a dollar amount from a caller's account", nibblebill_adjust_api_function, ADJUST_API_SYNTAX);*/
+	SWITCH_ADD_API(api_interface, "check", "Check the balance of a session", nibblebill_check_api_function, CHECK_API_SYNTAX);
+
+	/* Add dialplan applications */
+/*	SWITCH_ADD_APP(app_interface, "pause", "Pause billing on a session", "Pause billing on a session", nibblebill_pause_app_function, PAUSE_APP_SYNTAX, SAF_NONE);
+	SWITCH_ADD_APP(app_interface, "resume", "Resume billing on a session", "Resume billing on a session", nibblebill_resume_app_function, RESUME_APP_SYNTAX, SAF_NONE);
+	SWITCH_ADD_APP(app_interface, "reset", "Check the balance of a session", "Check the balance of a session", nibblebill_reset_app_function, RESET_APP_SYNTAX, SAF_NONE);*/
+	SWITCH_ADD_APP(app_interface, "adjust", "Add or deduct a dollar amount from a caller's account", "Add or deduct a dollar amount from a callers' account (use negative numbers to deduct)", nibblebill_adjust_app_function, ADJUST_APP_SYNTAX, SAF_NONE);
+	SWITCH_ADD_APP(app_interface, "check", "Check the balance on an account", "Perform an account check for fund balance on a specific caller's account", nibblebill_check_app_function, CHECK_APP_SYNTAX, SAF_NONE);
 
 	/* register state handlers for billing */
 	switch_core_add_state_handler(&nibble_state_handler);


From dschreiber at freeswitch.org  Wed Jan 14 23:58:23 2009
From: dschreiber at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 01:58:23 -0600
Subject: [Freeswitch-svn] [commit] r11220 -
	freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill
Message-ID: 

Author: dschreiber
Date: Thu Jan 15 01:58:23 2009
New Revision: 11220

Log:
Checking in sample config file



Added:
   freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/nibblebill.conf.xml

Added: freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/nibblebill.conf.xml
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/nibblebill.conf.xml	Thu Jan 15 01:58:23 2009
@@ -0,0 +1,36 @@
+
+  
+    
+
+    
+    
+    
+    
+
+    
+    
+
+    
+    
+
+    
+    
+
+
+    
+    
+
+    
+    
+    
+
+    
+    
+    
+
+    
+    
+    
+
+  
+


From ctrix at freeswitch.org  Thu Jan 15 01:25:38 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 03:25:38 -0600
Subject: [Freeswitch-svn] [commit] r11221 -
	freeswitch/branches/ctrix/mod_airpe
Message-ID: 

Author: ctrix
Date: Thu Jan 15 03:25:37 2009
New Revision: 11221

Log:
Cosmetics

Modified:
   freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
   freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	Thu Jan 15 03:25:37 2009
@@ -533,8 +533,8 @@
 
     if      ( !strncmp( buf, "CURRENTUSERHANDLE", strlen("CURRENTUSERHANDLE")) ) {
 	/* The username that the client is using. */
-	// TODO ... if the user handle mismatches, disconnect the channel or simply disable
-	// all operations
+	/* TODO ... if the user handle mismatches, disconnect the channel or simply disable
+	   all operations */
     }
     else if ( !strncmp( buf, "USERSTATUS", strlen("USERSTATUS")) && argc > 1 ) {
 	/* The status of the user of the client (ex: NA, ONLINE) */

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c	Thu Jan 15 03:25:37 2009
@@ -257,7 +257,6 @@
     	    return NULL;
 	}
 
-	// perform an events loop
 	XEvent an_event;
 	char buf[X11_MSG_LEN + 2] = ""; 
 	char buffer[SKYPE_MSG_LEN] = "";


From dschreiber at freeswitch.org  Thu Jan 15 03:31:57 2009
From: dschreiber at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 05:31:57 -0600
Subject: [Freeswitch-svn] [commit] r11222 -
	freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill
Message-ID: 

Author: dschreiber
Date: Thu Jan 15 05:31:57 2009
New Revision: 11222

Log:
Fixing a nasty bug that was resulting in channels not being released on hangup if no billing cycles had taken place.



Modified:
   freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c

Modified: freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c
==============================================================================
--- freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c	(original)
+++ freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c	Thu Jan 15 05:31:57 2009
@@ -71,7 +71,6 @@
 	switch_time_t pausets;	/* Timestamp of when a pause action started. 0 if not paused */
 	float bill_adjustments;	/* Adjustments to make to the next billing, based on pause/resume events */
 
-	float manual_adjustments;	/* Manually added/deducted amounts from this account, to be committed at next database query */
 } nibble_data_t;
 
 
@@ -87,6 +86,9 @@
 /* Keep track of our config, event hooks and database connection variables, for this module only */
 static struct
 {
+	/* Memory */
+        switch_memory_pool_t *pool;
+
 	/* Event hooks */
 	switch_event_node_t *node;
 
@@ -285,6 +287,32 @@
 
 }
 
+/* At this time, billing never succeeds if you don't have a database. */
+static switch_status_t bill_event(float billamount, const char *billaccount)
+{
+#ifdef SWITCH_HAVE_ODBC
+	char sql[1024] = "";
+	nibblebill_results_t pdata;
+
+	memset(&pdata, 0, sizeof(pdata));
+	snprintf(sql, 1024, SQL_SAVE, globals.db_table, globals.db_column_cash, globals.db_column_cash, billamount, globals.db_column_account, billaccount);
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "Doing update query\n[%s]\n", sql);
+
+	if (!(switch_odbc_handle_callback_exec(globals.master_odbc, sql, nibblebill_callback, &pdata) == SWITCH_ODBC_SUCCESS)){
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "DB Error while updating cash!\n");
+
+	} else {
+#endif
+		/* TODO: Failover to a flat/text file if DB is unavailable */
+
+		return SWITCH_STATUS_SUCCESS;
+#ifdef SWITCH_HAVE_ODBC
+	}
+#endif
+	return SWITCH_STATUS_SUCCESS;
+}
+
+
 /* This is where we actually charge the guy 
   This can be called anytime a call is in progress or at the end of a call before the session is destroyed */
 static switch_status_t do_billing(switch_core_session_t *session)
@@ -297,16 +325,16 @@
 	nibble_data_t *nibble_data;
 	switch_time_t ts = switch_timestamp_now();
 	float billamount;
-	float adjustments = 0;
 	char date[80] = "";
 	char *tmp;
 	char *uuid;
 	switch_size_t retsize;
 	switch_time_exp_t tm;
 
+
 	if (!session) {
 		/* wtf? Why are we here? */
-		return SWITCH_STATUS_GENERR;
+		return SWITCH_STATUS_SUCCESS;
 	}
 
 	uuid = switch_core_session_get_uuid(session);
@@ -314,16 +342,17 @@
 	/* Get channel var */
 	channel = switch_core_session_get_channel(session);
 	if (!channel) {
-		return SWITCH_STATUS_GENERR;
+		return SWITCH_STATUS_SUCCESS;
 	}
 
 	/* Variables kept in FS but relevant only to this module */
 	const char *billrate = switch_channel_get_variable(channel, "nibble_rate");
 	const char *billaccount = switch_channel_get_variable(channel, "nibble_account");
 
+
 	/* Return if there's no billing information on this session */
 	if (!billrate || !billaccount) {
-		return SWITCH_STATUS_GENERR;
+		return SWITCH_STATUS_SUCCESS;
 	}
 
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Attempting to bill at $%s per minute to account %s\n", billrate, billaccount);
@@ -333,7 +362,7 @@
 
 	if (!profile) {
 		/* No caller profile (why would this happen?) */
-		return SWITCH_STATUS_GENERR;
+		return SWITCH_STATUS_SUCCESS;
 	}
 
 	if (profile->times->answered < 1) {
@@ -350,7 +379,7 @@
 	nibble_data = (nibble_data_t *) switch_channel_get_private(channel, "_nibble_data_");
 
 	/* Are we in paused mode? If so, we don't do anything here - go back! */
-	if (nibble_data->pausets > 0) {
+	if (nibble_data && (nibble_data->pausets > 0)) {
 		if (globals.mutex) {
 			switch_mutex_unlock(globals.mutex);
 		}
@@ -368,6 +397,7 @@
 
 		/* Setup new billing data (based on call answer time, in case this module started late with active calls) */
 		nibble_data->lastts = profile->times->answered;		/* Set the initial answer time to match when the call was really answered */
+		nibble_data->pausets = 0;
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Beginning new billing on %s\n", uuid);
 	} else {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Last successful billing time was %s\n", date);
@@ -380,46 +410,23 @@
 
 
 	if ((ts - nibble_data->lastts) > 0) {
-		/* Convert billrate into microseconds and multiply by # of microseconds that have passed */
+		/* Convert billrate into microseconds and multiply by # of microseconds that have passed since last *successful* bill */
 		billamount = (atof(billrate) / 1000000 / 60) * ((ts - nibble_data->lastts));
-		adjustments = nibble_data->manual_adjustments + nibble_data->bill_adjustments;
 
-		/* if ODBC call fails, we should return BEFORE updating the timestamp of last success! */
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Billing $%f to %s (Call: %s / %f so far)\n", billamount, billaccount, uuid, nibble_data->total);
 
-		if (adjustments > 0) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "(Also adjusting the account by $%f)\n", adjustments);
-		}
-
-		/* DO ODBC BILLING HERE! */
-#ifdef SWITCH_HAVE_ODBC
-		char sql[1024] = "";
-		nibblebill_results_t pdata;
-
-		memset(&pdata, 0, sizeof(pdata));
-		snprintf(sql, 1024, SQL_SAVE, globals.db_table, globals.db_column_cash, globals.db_column_cash, (billamount - adjustments), globals.db_column_account, billaccount);
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "Doing update query\n[%s]\n", sql);
-
-		if (!(switch_odbc_handle_callback_exec(globals.master_odbc, sql, nibblebill_callback, &pdata) == SWITCH_ODBC_SUCCESS)){
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "DB Error while updating cash!\n");
-
-			/* TODO: If this is a hangup event, we should store this billing in a text file while the DB is unavailable */
-		} else {
-#endif
+		/* DO ODBC BILLING HERE and reset counters if it's successful! */
+		if (bill_event(billamount, billaccount) == SWITCH_STATUS_SUCCESS) {
 			/* Increment total cost */
 			nibble_data->total += billamount;
 
-			/* Get rid of any manual adjustments that were just committed */
-			nibble_data->manual_adjustments = 0;
-			nibble_data->bill_adjustments = 0;
-
 			/* Update channel variable with current billing */
 			tmp = switch_mprintf("%f", nibble_data->total);
 			switch_channel_set_variable(channel, "nibble_total_billed", tmp);
 			switch_safe_free(tmp);
-#ifdef SWITCH_HAVE_ODBC
+		} else {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to log to database!\n");
 		}
-#endif
 	} else {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Just tried to bill %s negative minutes! wtf? That should be impossible.\n", uuid);
 	}
@@ -427,8 +434,10 @@
 	/* Update the last time we billed */
 	nibble_data->lastts = ts;
 
-	/* Save everything back */
-	switch_channel_set_private(channel, "_nibble_data_", nibble_data);
+	/* Save this location, but only if the channel/session are not hungup (otherwise, we're done) */
+	if (channel && switch_channel_get_state(channel) != CS_HANGUP) {
+		switch_channel_set_private(channel, "_nibble_data_", nibble_data);
+	}
 
 	/* Done changing - release lock */
 	if (globals.mutex) {
@@ -437,9 +446,6 @@
 
 	/* Go check if this call is allowed to continue */
 
-	/* Release the session lock */
-	switch_core_session_rwunlock(session);
-
 	return SWITCH_STATUS_SUCCESS;
 }
 
@@ -477,6 +483,7 @@
 	/* Go bill */
 	do_billing(session);
 
+
 	switch_core_session_rwunlock(session);
 }
 
@@ -512,7 +519,6 @@
 static void nibblebill_adjust(switch_core_session_t *session, float amount)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
-	nibble_data_t *nibble_data;
 	char *uuid;
 
 	if (!channel) {
@@ -521,53 +527,54 @@
 
 	uuid = switch_core_session_get_uuid(session);
 
-	/* Lock this session's data for this module while we tinker with it */
-	if (globals.mutex) {
-		switch_mutex_lock(globals.mutex);
+	/* Get channel var */
+	if (!uuid || !channel) {
+		switch_core_session_rwunlock(session);
+		return;
 	}
 
-	/* Get our nibble data var. This will be NULL if it's our first call here for this session */
-	nibble_data = (nibble_data_t *) switch_channel_get_private(channel, "_nibble_data_");
-
-	/*Add or remove amount from adjusted billing here */
-	nibble_data->manual_adjustments += amount;
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Current adjustment for %s is $%f\n", uuid, amount);
+	/* Variables kept in FS but relevant only to this module */
+	const char *billaccount = switch_channel_get_variable(channel, "nibble_account");
 
-	/* Done changing - release lock */
-	if (globals.mutex) {
-		switch_mutex_unlock(globals.mutex);
+	/* Return if there's no billing information on this session */
+	if (!billaccount) {
+		switch_core_session_rwunlock(session);
+		return;
 	}
 
-	/* Release the session lock */
-	switch_core_session_rwunlock(session);
-}
-
-#define CHECK_APP_SYNTAX ""
-SWITCH_STANDARD_APP(nibblebill_check_app_function)
-{
-	float amount;
-
-	amount = nibblebill_check(session);
+	/* Add or remove amount from adjusted billing here. Note, we bill the OPPOSITE */
+	if (bill_event(-amount, billaccount)) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Recorded adjustment to %s for $%f\n", billaccount, amount);
+	} else {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to record adjustment to %s for $%f\n", billaccount, amount);
+	}
 
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Current billing is at $%f\n", amount);
 }
 
-#define ADJUST_APP_SYNTAX ""
-SWITCH_STANDARD_APP(nibblebill_adjust_app_function)
+#define APP_SYNTAX "pause | resume | reset | adjust  | heartbeat  | check"
+SWITCH_STANDARD_APP(nibblebill_app_function)
 {
-	char *mydata = NULL;
 	int argc = 0;
-	char *argv[4] = { 0 };
-	float amount;
-	
-	if (!(mydata = switch_core_session_strdup(session, data))) {
-		return;
-	}
-	
-	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
-		amount = atof(argv[0]);
-		nibblebill_adjust(session, amount);
+	char *lbuf = NULL;
+	char *argv[3] = { 0 };
+
+	if (!switch_strlen_zero(data) && (lbuf = switch_core_session_strdup(session, data))
+		&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
+		if (!strcasecmp(argv[0], "adjust") && argc == 2) {
+			nibblebill_adjust(session, atof(argv[1]));
+/*		} else if (!strcasecmp(argv[0], "pause")) {
+			nibblebill_pause(session);
+		} else if (!strcasecmp(argv[0], "resume")) {
+			nibblebill_resume(session);*/
+		} else if (!strcasecmp(argv[0], "check")) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Current billing is at $%f\n", nibblebill_check(session));
+/*		} else if (!strcasecmp(argv[0], "reset")) {
+			nibblebill_reset(session);*/
+		} else if (!strcasecmp(argv[0], "heartbeat") && argc == 2) {
+			switch_core_session_enable_heartbeat(session, atoi(argv[1]));
+		}
 	}
+
 }
 
 /* We get here from the API only (theoretically) */
@@ -605,6 +612,9 @@
 
 	/* Set every byte in this structure to 0 */	
 	memset(&globals, 0, sizeof(globals));
+        globals.pool = pool;
+        switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, globals.pool);
+
 	load_config();
 	
 	/* connect my internal structure to the blank pointer passed to me */
@@ -618,11 +628,12 @@
 	SWITCH_ADD_API(api_interface, "check", "Check the balance of a session", nibblebill_check_api_function, CHECK_API_SYNTAX);
 
 	/* Add dialplan applications */
-/*	SWITCH_ADD_APP(app_interface, "pause", "Pause billing on a session", "Pause billing on a session", nibblebill_pause_app_function, PAUSE_APP_SYNTAX, SAF_NONE);
-	SWITCH_ADD_APP(app_interface, "resume", "Resume billing on a session", "Resume billing on a session", nibblebill_resume_app_function, RESUME_APP_SYNTAX, SAF_NONE);
-	SWITCH_ADD_APP(app_interface, "reset", "Check the balance of a session", "Check the balance of a session", nibblebill_reset_app_function, RESET_APP_SYNTAX, SAF_NONE);*/
-	SWITCH_ADD_APP(app_interface, "adjust", "Add or deduct a dollar amount from a caller's account", "Add or deduct a dollar amount from a callers' account (use negative numbers to deduct)", nibblebill_adjust_app_function, ADJUST_APP_SYNTAX, SAF_NONE);
-	SWITCH_ADD_APP(app_interface, "check", "Check the balance on an account", "Perform an account check for fund balance on a specific caller's account", nibblebill_check_app_function, CHECK_APP_SYNTAX, SAF_NONE);
+/*	SWITCH_ADD_APP(app_interface, "nibble_pause", "Pause billing on a session", "Pause billing on a session", nibblebill_pause_app_function, PAUSE_APP_SYNTAX, SAF_NONE);
+	SWITCH_ADD_APP(app_interface, "nibble_resume", "Resume billing on a session", "Resume billing on a session", nibblebill_resume_app_function, RESUME_APP_SYNTAX, SAF_NONE);
+	SWITCH_ADD_APP(app_interface, "nibble_reset", "Check the balance of a session", "Check the balance of a session", nibblebill_reset_app_function, RESET_APP_SYNTAX, SAF_NONE);
+	SWITCH_ADD_APP(app_interface, "nibble_adjust", "Add or deduct a dollar amount from a caller's account", "Add or deduct a dollar amount from a callers' account (use negative numbers to deduct)", nibblebill_adjust_app_function, ADJUST_APP_SYNTAX, SAF_NONE);
+	SWITCH_ADD_APP(app_interface, "nibble_check", "Check the balance on an account", "Perform an account check for fund balance on a specific caller's account", nibblebill_check_app_function, CHECK_APP_SYNTAX, SAF_NONE);*/
+	SWITCH_ADD_APP(app_interface, "nibblebill", "Handle billing for the current channel/call", "Pause, resume, reset, adjust, flush, heartbeat commands to handle billing.", nibblebill_app_function, APP_SYNTAX, SAF_NONE);
 
 	/* register state handlers for billing */
 	switch_core_add_state_handler(&nibble_state_handler);


From dschreiber at freeswitch.org  Thu Jan 15 04:54:15 2009
From: dschreiber at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 06:54:15 -0600
Subject: [Freeswitch-svn] [commit] r11223 -
	freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill
Message-ID: 

Author: dschreiber
Date: Thu Jan 15 06:54:15 2009
New Revision: 11223

Log:
Fixed a bunch of seg-faults, finished implementing all commands from CLI, API and dialplan.

Still needs some cleanup and consolidation, but functions and seems stable. Tested everything I could :-)



Modified:
   freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c

Modified: freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c
==============================================================================
--- freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c	(original)
+++ freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c	Thu Jan 15 06:54:15 2009
@@ -40,14 +40,11 @@
  * Thanks go to bandwidth.com for funding this work.
  *
  *
- * TODO: Create an override flag so you can force a start-time for when billing should count *from*
  * TODO: Fix what happens when the DB is not available
  * TODO: Fix what happens when the DB queries fail (right now, all are acting like success)
  * TODO: Make the actions function for when funds are depleted
- * TODO: Add app and CLI commands (pause, resume, reset, flush, deduct_funds, add_funds)
  * TODO: Add buffering abilities
  * TODO: Make error handling for database, such that when the database is down (or not installed) we just log to a text file
- * TODO: Make a sample .XML config file!
  * FUTURE: Possibly make the hooks not tied per-channel, and instead just do this as a supervision style application with one thread that watches all calls
  */
 
@@ -274,19 +271,6 @@
 }
 
 
-static switch_status_t sched_billing(switch_core_session_t *session)
-{
-
-	if (globals.global_heartbeat > 0) {
-		switch_core_session_enable_heartbeat(session, globals.global_heartbeat);
-	}
-
-	// Check account balance here
-
-	return SWITCH_STATUS_SUCCESS;
-
-}
-
 /* At this time, billing never succeeds if you don't have a database. */
 static switch_status_t bill_event(float billamount, const char *billaccount)
 {
@@ -397,7 +381,6 @@
 
 		/* Setup new billing data (based on call answer time, in case this module started late with active calls) */
 		nibble_data->lastts = profile->times->answered;		/* Set the initial answer time to match when the call was really answered */
-		nibble_data->pausets = 0;
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Beginning new billing on %s\n", uuid);
 	} else {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Last successful billing time was %s\n", date);
@@ -411,7 +394,7 @@
 
 	if ((ts - nibble_data->lastts) > 0) {
 		/* Convert billrate into microseconds and multiply by # of microseconds that have passed since last *successful* bill */
-		billamount = (atof(billrate) / 1000000 / 60) * ((ts - nibble_data->lastts));
+		billamount = (atof(billrate) / 1000000 / 60) * ((ts - nibble_data->lastts)) - nibble_data->bill_adjustments;
 
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Billing $%f to %s (Call: %s / %f so far)\n", billamount, billaccount, uuid, nibble_data->total);
 
@@ -420,6 +403,9 @@
 			/* Increment total cost */
 			nibble_data->total += billamount;
 
+			/* Reset manual billing adjustments from pausing */
+			nibble_data->bill_adjustments = 0;
+
 			/* Update channel variable with current billing */
 			tmp = switch_mprintf("%f", nibble_data->total);
 			switch_channel_set_variable(channel, "nibble_total_billed", tmp);
@@ -487,15 +473,14 @@
 	switch_core_session_rwunlock(session);
 }
 
-
-static float nibblebill_check(switch_core_session_t *session)
+static void nibblebill_pause(switch_core_session_t *session)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
+	switch_time_t ts = switch_timestamp_now();
 	nibble_data_t *nibble_data;
-	float amount = 0;
 
 	if (!channel) {
-		return -99999;
+		return;
 	}
 
 	/* Lock this session's data for this module while we tinker with it */
@@ -506,30 +491,140 @@
 	/* Get our nibble data var. This will be NULL if it's our first call here for this session */
 	nibble_data = (nibble_data_t *) switch_channel_get_private(channel, "_nibble_data_");
 
-	amount = nibble_data->total;
+	if (!nibble_data) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Can't pause - channel is not initialized for billing!\n");
+		return;
+	}
+
+	/* Set pause counter if not already set */
+	if (nibble_data->pausets == 0)
+		nibble_data->pausets = ts;
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Paused billing timestamp!\n");
 
 	/* Done checking - release lock */
 	if (globals.mutex) {
 		switch_mutex_unlock(globals.mutex);
 	}
 
-	return amount;
 }
 
-static void nibblebill_adjust(switch_core_session_t *session, float amount)
+static void nibblebill_resume(switch_core_session_t *session)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
-	char *uuid;
+	switch_time_t ts = switch_timestamp_now();
+	nibble_data_t *nibble_data;
 
 	if (!channel) {
 		return;
 	}
 
-	uuid = switch_core_session_get_uuid(session);
+	/* Get our nibble data var. This will be NULL if it's our first call here for this session */
+	nibble_data = (nibble_data_t *) switch_channel_get_private(channel, "_nibble_data_");
 
-	/* Get channel var */
-	if (!uuid || !channel) {
-		switch_core_session_rwunlock(session);
+	if (!nibble_data) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Can't resume - channel is not initialized for billing (This is expected at hangup time)!\n");
+		return;
+	}
+
+	if (nibble_data->pausets == 0) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Can't resume - channel is not paused! (This is expected at hangup time)\n");
+		return;
+	}
+
+	/* Lock this session's data for this module while we tinker with it */
+	if (globals.mutex) {
+		switch_mutex_lock(globals.mutex);
+	}
+
+	const char *billrate = switch_channel_get_variable(channel, "nibble_rate");
+
+	/* Calculate how much was "lost" to billings during pause - we do this here because you never know when the billrate may change during a call */
+	nibble_data->bill_adjustments += (atof(billrate) / 1000000 / 60) * ((ts - nibble_data->pausets));
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Resumed billing! Subtracted %f from this billing cycle.\n", (atof(billrate) / 1000000 / 60) * ((ts - nibble_data->pausets)));
+
+	nibble_data->pausets = 0;
+
+	/* Done checking - release lock */
+	if (globals.mutex) {
+		switch_mutex_unlock(globals.mutex);
+	}
+
+}
+
+static void nibblebill_reset(switch_core_session_t *session)
+{
+	switch_channel_t *channel = switch_core_session_get_channel(session);
+	switch_time_t ts = switch_timestamp_now();
+	nibble_data_t *nibble_data;
+
+	if (!channel) {
+		return;
+	}
+
+	/* Get our nibble data var. This will be NULL if it's our first call here for this session */
+	nibble_data = (nibble_data_t *) switch_channel_get_private(channel, "_nibble_data_");
+
+	if (!nibble_data) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Can't reset - channel is not initialized for billing!\n");
+		return;
+	}
+
+	/* Lock this session's data for this module while we tinker with it */
+	if (globals.mutex) {
+		switch_mutex_lock(globals.mutex);
+	}
+
+	/* Update the last time we billed */
+	nibble_data->lastts = ts;
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Reset last billing timestamp marker to right now!\n");
+
+	/* Done checking - release lock */
+	if (globals.mutex) {
+		switch_mutex_unlock(globals.mutex);
+	}
+
+}
+
+static float nibblebill_check(switch_core_session_t *session)
+{
+	switch_channel_t *channel = switch_core_session_get_channel(session);
+	nibble_data_t *nibble_data;
+	float amount = 0;
+
+	if (!channel) {
+		return -99999;
+	}
+
+	/* Get our nibble data var. This will be NULL if it's our first call here for this session */
+	nibble_data = (nibble_data_t *) switch_channel_get_private(channel, "_nibble_data_");
+
+	if (!nibble_data) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Can't check - channel is not initialized for billing!\n");
+		return -99999;
+	}
+
+	/* Lock this session's data for this module while we tinker with it */
+	if (globals.mutex) {
+		switch_mutex_lock(globals.mutex);
+	}
+
+	amount = nibble_data->total;
+
+	/* Done checking - release lock */
+	if (globals.mutex) {
+		switch_mutex_unlock(globals.mutex);
+	}
+
+	return amount;
+}
+
+static void nibblebill_adjust(switch_core_session_t *session, float amount)
+{
+	switch_channel_t *channel = switch_core_session_get_channel(session);
+
+	if (!channel) {
 		return;
 	}
 
@@ -538,12 +633,11 @@
 
 	/* Return if there's no billing information on this session */
 	if (!billaccount) {
-		switch_core_session_rwunlock(session);
 		return;
 	}
 
 	/* Add or remove amount from adjusted billing here. Note, we bill the OPPOSITE */
-	if (bill_event(-amount, billaccount)) {
+	if (bill_event(-amount, billaccount) == SWITCH_STATUS_SUCCESS) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Recorded adjustment to %s for $%f\n", billaccount, amount);
 	} else {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to record adjustment to %s for $%f\n", billaccount, amount);
@@ -562,14 +656,16 @@
 		&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
 		if (!strcasecmp(argv[0], "adjust") && argc == 2) {
 			nibblebill_adjust(session, atof(argv[1]));
-/*		} else if (!strcasecmp(argv[0], "pause")) {
+		} else if (!strcasecmp(argv[0], "flush")) {
+			do_billing(session);
+		} else if (!strcasecmp(argv[0], "pause")) {
 			nibblebill_pause(session);
 		} else if (!strcasecmp(argv[0], "resume")) {
-			nibblebill_resume(session);*/
+			nibblebill_resume(session);
 		} else if (!strcasecmp(argv[0], "check")) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Current billing is at $%f\n", nibblebill_check(session));
-/*		} else if (!strcasecmp(argv[0], "reset")) {
-			nibblebill_reset(session);*/
+		} else if (!strcasecmp(argv[0], "reset")) {
+			nibblebill_reset(session);
 		} else if (!strcasecmp(argv[0], "heartbeat") && argc == 2) {
 			switch_core_session_enable_heartbeat(session, atoi(argv[1]));
 		}
@@ -578,15 +674,74 @@
 }
 
 /* We get here from the API only (theoretically) */
-#define CHECK_API_SYNTAX ""
-SWITCH_STANDARD_API(nibblebill_check_api_function)
+#define API_SYNTAX " [pause | resume | reset | adjust  | heartbeat  | check]"
+SWITCH_STANDARD_API(nibblebill_api_function)
 {
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "We made it!\n");
-	
+	switch_core_session_t *psession = NULL;
+	char *mycmd = NULL, *argv[3] = { 0 };
+	int argc = 0;
+
+	if (!switch_strlen_zero(cmd) && (mycmd = strdup(cmd))) {
+		argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+		if ((argc == 2 || argc == 3) && !switch_strlen_zero(argv[0])) {
+			char *uuid = argv[0];
+			if ((psession = switch_core_session_locate(uuid))) {
+				switch_channel_t *channel;
+				channel = switch_core_session_get_channel(psession);
+
+				if (!strcasecmp(argv[1], "adjust") && argc == 3) {
+					nibblebill_adjust(psession, atof(argv[2]));
+				} else if (!strcasecmp(argv[1], "flush")) {
+					do_billing(psession);
+				} else if (!strcasecmp(argv[1], "pause")) {
+					nibblebill_pause(psession);
+				} else if (!strcasecmp(argv[1], "resume")) {
+					nibblebill_resume(psession);
+				} else if (!strcasecmp(argv[1], "check")) {
+					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Current billing is at $%f\n", nibblebill_check(psession));
+				} else if (!strcasecmp(argv[1], "reset")) {
+					nibblebill_reset(psession);
+				} else if (!strcasecmp(argv[1], "heartbeat") && argc == 3) {
+					switch_core_session_enable_heartbeat(psession, atoi(argv[2]));
+				}
+
+				switch_core_session_rwunlock(psession);
+			} else {
+				stream->write_function(stream, "-ERR No Such Channel!\n");
+			}
+		} else {
+			stream->write_function(stream, "-USAGE: %s\n", API_SYNTAX);
+		}
+	}
+
+	return SWITCH_STATUS_SUCCESS;
+}
+
 /* Check if session has variable "billrate" set. If it does, activate the heartbeat variable
  switch_core_session_enable_heartbeat(switch_core_session_t *session, uint32_t seconds)
  switch_core_session_sched_heartbeat(switch_core_session_t *session, uint32_t seconds)*/
 
+static switch_status_t sched_billing(switch_core_session_t *session)
+{
+
+	if (globals.global_heartbeat > 0) {
+		switch_core_session_enable_heartbeat(session, globals.global_heartbeat);
+	}
+
+	/* TODO: Check account balance here */
+
+	return SWITCH_STATUS_SUCCESS;
+
+}
+
+static switch_status_t process_hangup(switch_core_session_t *session)
+{
+
+	/* Resume any paused billings, just in case */
+//	nibblebill_resume(session);
+
+	/* Now go handle like normal billing */
+	do_billing(session);
 
 	return SWITCH_STATUS_SUCCESS;
 
@@ -597,7 +752,7 @@
 	/* on_init */   	NULL,
 	/* on_routing */   	NULL,	/* Need to add a check here for anything in their account before routing */
 	/* on_execute */   	sched_billing,  /* Turn on heartbeat for this session and do an initial account check */
-	/* on_hangup */   	do_billing, /* On hangup - most important place to go bill */
+	/* on_hangup */   	process_hangup, /* On hangup - most important place to go bill */
 	/* on_exch_media */   	NULL,
 	/* on_soft_exec */   	NULL,
 	/* on_consume_med */   	NULL,
@@ -621,18 +776,9 @@
 	*module_interface = switch_loadable_module_create_module_interface(pool, modname);
 
 	/* Add API and CLI commands */
-/*	SWITCH_ADD_API(api_interface, "pause", "Pause billing on a session", nibblebill_pause_api_function, PAUSE_API_SYNTAX);
-	SWITCH_ADD_API(api_interface, "resume", "Resume billing on a session", nibblebill_resume_api_function, RESUME_API_SYNTAX);
-	SWITCH_ADD_API(api_interface, "reset", "Reset billing start time to right now - disregard any unbilled time thus far", nibblebill_reset_api_function, RESET_API_SYNTAX);
-	SWITCH_ADD_API(api_interface, "adjust", "Add or deduct a dollar amount from a caller's account", nibblebill_adjust_api_function, ADJUST_API_SYNTAX);*/
-	SWITCH_ADD_API(api_interface, "check", "Check the balance of a session", nibblebill_check_api_function, CHECK_API_SYNTAX);
+	SWITCH_ADD_API(api_interface, "nibblebill", "Manage billing parameters for a channel/call", nibblebill_api_function, API_SYNTAX);
 
 	/* Add dialplan applications */
-/*	SWITCH_ADD_APP(app_interface, "nibble_pause", "Pause billing on a session", "Pause billing on a session", nibblebill_pause_app_function, PAUSE_APP_SYNTAX, SAF_NONE);
-	SWITCH_ADD_APP(app_interface, "nibble_resume", "Resume billing on a session", "Resume billing on a session", nibblebill_resume_app_function, RESUME_APP_SYNTAX, SAF_NONE);
-	SWITCH_ADD_APP(app_interface, "nibble_reset", "Check the balance of a session", "Check the balance of a session", nibblebill_reset_app_function, RESET_APP_SYNTAX, SAF_NONE);
-	SWITCH_ADD_APP(app_interface, "nibble_adjust", "Add or deduct a dollar amount from a caller's account", "Add or deduct a dollar amount from a callers' account (use negative numbers to deduct)", nibblebill_adjust_app_function, ADJUST_APP_SYNTAX, SAF_NONE);
-	SWITCH_ADD_APP(app_interface, "nibble_check", "Check the balance on an account", "Perform an account check for fund balance on a specific caller's account", nibblebill_check_app_function, CHECK_APP_SYNTAX, SAF_NONE);*/
 	SWITCH_ADD_APP(app_interface, "nibblebill", "Handle billing for the current channel/call", "Pause, resume, reset, adjust, flush, heartbeat commands to handle billing.", nibblebill_app_function, APP_SYNTAX, SAF_NONE);
 
 	/* register state handlers for billing */


From brian at freeswitch.org  Thu Jan 15 07:38:32 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 09:38:32 -0600
Subject: [Freeswitch-svn] [commit] r11224 - in freeswitch/trunk/src: .
	include mod/languages/mod_java
	mod/languages/mod_java/src/org/freeswitch/swig
	mod/languages/mod_lua mod/languages/mod_managed
	mod/languages/mod_managed/managed mod/languages/mod_perl
	mod/languages/mod_python
Message-ID: 

Author: brian
Date: Thu Jan 15 09:38:32 2009
New Revision: 11224

Log:
try not to break backwards and api compatibility refer to rev 11211

Modified:
   freeswitch/trunk/src/include/switch_cpp.h
   freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java
   freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
   freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp
   freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp
   freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
   freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs
   freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp
   freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp
   freeswitch/trunk/src/switch_cpp.cpp

Modified: freeswitch/trunk/src/include/switch_cpp.h
==============================================================================
--- freeswitch/trunk/src/include/switch_cpp.h	(original)
+++ freeswitch/trunk/src/include/switch_cpp.h	Thu Jan 15 09:38:32 2009
@@ -303,7 +303,7 @@
 												 int max_digits,
 												 int max_tries,
 												 int timeout, char *terminators, char *audio_files, char *bad_input_audio_files,
-												 char *var_name, char *digits_regex);
+												 char *digits_regex, const char *var_name = NULL);
 
 	/** \brief Play a file that resides on disk into the channel
 	 *

Modified: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java	(original)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java	Thu Jan 15 09:38:32 2009
@@ -233,8 +233,12 @@
     return freeswitchJNI.CoreSession_read(swigCPtr, this, min_digits, max_digits, prompt_audio_file, timeout, valid_terminators);
   }
 
-  public String playAndGetDigits(int min_digits, int max_digits, int max_tries, int timeout, String terminators, String audio_files, String bad_input_audio_files, String var_name, String digits_regex) {
-    return freeswitchJNI.CoreSession_playAndGetDigits(swigCPtr, this, min_digits, max_digits, max_tries, timeout, terminators, audio_files, bad_input_audio_files, var_name, digits_regex);
+  public String playAndGetDigits(int min_digits, int max_digits, int max_tries, int timeout, String terminators, String audio_files, String bad_input_audio_files, String digits_regex, String var_name) {
+    return freeswitchJNI.CoreSession_playAndGetDigits__SWIG_0(swigCPtr, this, min_digits, max_digits, max_tries, timeout, terminators, audio_files, bad_input_audio_files, digits_regex, var_name);
+  }
+
+  public String playAndGetDigits(int min_digits, int max_digits, int max_tries, int timeout, String terminators, String audio_files, String bad_input_audio_files, String digits_regex) {
+    return freeswitchJNI.CoreSession_playAndGetDigits__SWIG_1(swigCPtr, this, min_digits, max_digits, max_tries, timeout, terminators, audio_files, bad_input_audio_files, digits_regex);
   }
 
   public int streamFile(String file, int starting_sample_count) {

Modified: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java	(original)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java	Thu Jan 15 09:38:32 2009
@@ -133,7 +133,8 @@
   public final static native int CoreSession_transfer__SWIG_1(long jarg1, CoreSession jarg1_, String jarg2, String jarg3);
   public final static native int CoreSession_transfer__SWIG_2(long jarg1, CoreSession jarg1_, String jarg2);
   public final static native String CoreSession_read(long jarg1, CoreSession jarg1_, int jarg2, int jarg3, String jarg4, int jarg5, String jarg6);
-  public final static native String CoreSession_playAndGetDigits(long jarg1, CoreSession jarg1_, int jarg2, int jarg3, int jarg4, int jarg5, String jarg6, String jarg7, String jarg8, String jarg9, String jarg10);
+  public final static native String CoreSession_playAndGetDigits__SWIG_0(long jarg1, CoreSession jarg1_, int jarg2, int jarg3, int jarg4, int jarg5, String jarg6, String jarg7, String jarg8, String jarg9, String jarg10);
+  public final static native String CoreSession_playAndGetDigits__SWIG_1(long jarg1, CoreSession jarg1_, int jarg2, int jarg3, int jarg4, int jarg5, String jarg6, String jarg7, String jarg8, String jarg9);
   public final static native int CoreSession_streamFile__SWIG_0(long jarg1, CoreSession jarg1_, String jarg2, int jarg3);
   public final static native int CoreSession_streamFile__SWIG_1(long jarg1, CoreSession jarg1_, String jarg2);
   public final static native int CoreSession_sleep__SWIG_0(long jarg1, CoreSession jarg1_, int jarg2, int jarg3);

Modified: freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp	(original)
+++ freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp	Thu Jan 15 09:38:32 2009
@@ -2577,7 +2577,7 @@
 }
 
 
-SWIGEXPORT jstring JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1playAndGetDigits(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3, jint jarg4, jint jarg5, jstring jarg6, jstring jarg7, jstring jarg8, jstring jarg9, jstring jarg10) {
+SWIGEXPORT jstring JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1playAndGetDigits_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3, jint jarg4, jint jarg5, jstring jarg6, jstring jarg7, jstring jarg8, jstring jarg9, jstring jarg10) {
   jstring jresult = 0 ;
   CoreSession *arg1 = (CoreSession *) 0 ;
   int arg2 ;
@@ -2624,7 +2624,7 @@
     arg10 = (char *)jenv->GetStringUTFChars(jarg10, 0);
     if (!arg10) return 0;
   }
-  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
+  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,(char const *)arg10);
   if(result) jresult = jenv->NewStringUTF((const char *)result);
   if (arg6) jenv->ReleaseStringUTFChars(jarg6, (const char *)arg6);
   if (arg7) jenv->ReleaseStringUTFChars(jarg7, (const char *)arg7);
@@ -2635,6 +2635,57 @@
 }
 
 
+SWIGEXPORT jstring JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1playAndGetDigits_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3, jint jarg4, jint jarg5, jstring jarg6, jstring jarg7, jstring jarg8, jstring jarg9) {
+  jstring jresult = 0 ;
+  CoreSession *arg1 = (CoreSession *) 0 ;
+  int arg2 ;
+  int arg3 ;
+  int arg4 ;
+  int arg5 ;
+  char *arg6 = (char *) 0 ;
+  char *arg7 = (char *) 0 ;
+  char *arg8 = (char *) 0 ;
+  char *arg9 = (char *) 0 ;
+  char *result = 0 ;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  arg1 = *(CoreSession **)&jarg1; 
+  arg2 = (int)jarg2; 
+  arg3 = (int)jarg3; 
+  arg4 = (int)jarg4; 
+  arg5 = (int)jarg5; 
+  arg6 = 0;
+  if (jarg6) {
+    arg6 = (char *)jenv->GetStringUTFChars(jarg6, 0);
+    if (!arg6) return 0;
+  }
+  arg7 = 0;
+  if (jarg7) {
+    arg7 = (char *)jenv->GetStringUTFChars(jarg7, 0);
+    if (!arg7) return 0;
+  }
+  arg8 = 0;
+  if (jarg8) {
+    arg8 = (char *)jenv->GetStringUTFChars(jarg8, 0);
+    if (!arg8) return 0;
+  }
+  arg9 = 0;
+  if (jarg9) {
+    arg9 = (char *)jenv->GetStringUTFChars(jarg9, 0);
+    if (!arg9) return 0;
+  }
+  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
+  if(result) jresult = jenv->NewStringUTF((const char *)result);
+  if (arg6) jenv->ReleaseStringUTFChars(jarg6, (const char *)arg6);
+  if (arg7) jenv->ReleaseStringUTFChars(jarg7, (const char *)arg7);
+  if (arg8) jenv->ReleaseStringUTFChars(jarg8, (const char *)arg8);
+  if (arg9) jenv->ReleaseStringUTFChars(jarg9, (const char *)arg9);
+  return jresult;
+}
+
+
 SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1streamFile_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) {
   jint jresult = 0 ;
   CoreSession *arg1 = (CoreSession *) 0 ;

Modified: freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp	(original)
+++ freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp	Thu Jan 15 09:38:32 2009
@@ -5913,7 +5913,7 @@
 }
 
 
-static int _wrap_CoreSession_playAndGetDigits(lua_State* L) {
+static int _wrap_CoreSession_playAndGetDigits__SWIG_0(lua_State* L) {
   int SWIG_arg = -1;
   CoreSession *arg1 = (CoreSession *) 0 ;
   int arg2 ;
@@ -5937,7 +5937,7 @@
   if(!lua_isstring(L,7)) SWIG_fail_arg("playAndGetDigits",7,"char *");
   if(!lua_isstring(L,8)) SWIG_fail_arg("playAndGetDigits",8,"char *");
   if(!lua_isstring(L,9)) SWIG_fail_arg("playAndGetDigits",9,"char *");
-  if(!lua_isstring(L,10)) SWIG_fail_arg("playAndGetDigits",10,"char *");
+  if(!lua_isstring(L,10)) SWIG_fail_arg("playAndGetDigits",10,"char const *");
   
   if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_CoreSession,0))){
     SWIG_fail_ptr("CoreSession_playAndGetDigits",1,SWIGTYPE_p_CoreSession);
@@ -5952,7 +5952,7 @@
   arg8 = (char *)lua_tostring(L, 8);
   arg9 = (char *)lua_tostring(L, 9);
   arg10 = (char *)lua_tostring(L, 10);
-  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
+  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,(char const *)arg10);
   SWIG_arg=0;
   lua_pushstring(L,(const char*)result); SWIG_arg++;
   return SWIG_arg;
@@ -5965,6 +5965,181 @@
 }
 
 
+static int _wrap_CoreSession_playAndGetDigits__SWIG_1(lua_State* L) {
+  int SWIG_arg = -1;
+  CoreSession *arg1 = (CoreSession *) 0 ;
+  int arg2 ;
+  int arg3 ;
+  int arg4 ;
+  int arg5 ;
+  char *arg6 = (char *) 0 ;
+  char *arg7 = (char *) 0 ;
+  char *arg8 = (char *) 0 ;
+  char *arg9 = (char *) 0 ;
+  char *result = 0 ;
+  
+  SWIG_check_num_args("playAndGetDigits",9,9)
+  if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("playAndGetDigits",1,"CoreSession *");
+  if(!lua_isnumber(L,2)) SWIG_fail_arg("playAndGetDigits",2,"int");
+  if(!lua_isnumber(L,3)) SWIG_fail_arg("playAndGetDigits",3,"int");
+  if(!lua_isnumber(L,4)) SWIG_fail_arg("playAndGetDigits",4,"int");
+  if(!lua_isnumber(L,5)) SWIG_fail_arg("playAndGetDigits",5,"int");
+  if(!lua_isstring(L,6)) SWIG_fail_arg("playAndGetDigits",6,"char *");
+  if(!lua_isstring(L,7)) SWIG_fail_arg("playAndGetDigits",7,"char *");
+  if(!lua_isstring(L,8)) SWIG_fail_arg("playAndGetDigits",8,"char *");
+  if(!lua_isstring(L,9)) SWIG_fail_arg("playAndGetDigits",9,"char *");
+  
+  if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_CoreSession,0))){
+    SWIG_fail_ptr("CoreSession_playAndGetDigits",1,SWIGTYPE_p_CoreSession);
+  }
+  
+  arg2 = (int)lua_tonumber(L, 2);
+  arg3 = (int)lua_tonumber(L, 3);
+  arg4 = (int)lua_tonumber(L, 4);
+  arg5 = (int)lua_tonumber(L, 5);
+  arg6 = (char *)lua_tostring(L, 6);
+  arg7 = (char *)lua_tostring(L, 7);
+  arg8 = (char *)lua_tostring(L, 8);
+  arg9 = (char *)lua_tostring(L, 9);
+  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
+  SWIG_arg=0;
+  lua_pushstring(L,(const char*)result); SWIG_arg++;
+  return SWIG_arg;
+  
+  if(0) SWIG_fail;
+  
+fail:
+  lua_error(L);
+  return SWIG_arg;
+}
+
+
+static int _wrap_CoreSession_playAndGetDigits(lua_State* L) {
+  int argc;
+  int argv[11]={
+    1,2,3,4,5,6,7,8,9,10,11
+  };
+  
+  argc = lua_gettop(L);
+  if (argc == 9) {
+    int _v;
+    {
+      void *ptr;
+      if (SWIG_isptrtype(L,argv[0])==0 || SWIG_ConvertPtr(L,argv[0], (void **) &ptr, SWIGTYPE_p_CoreSession, 0)) {
+        _v = 0;
+      } else {
+        _v = 1;
+      }
+    }
+    if (_v) {
+      {
+        _v = lua_isnumber(L,argv[1]);
+      }
+      if (_v) {
+        {
+          _v = lua_isnumber(L,argv[2]);
+        }
+        if (_v) {
+          {
+            _v = lua_isnumber(L,argv[3]);
+          }
+          if (_v) {
+            {
+              _v = lua_isnumber(L,argv[4]);
+            }
+            if (_v) {
+              {
+                _v = lua_isstring(L,argv[5]);
+              }
+              if (_v) {
+                {
+                  _v = lua_isstring(L,argv[6]);
+                }
+                if (_v) {
+                  {
+                    _v = lua_isstring(L,argv[7]);
+                  }
+                  if (_v) {
+                    {
+                      _v = lua_isstring(L,argv[8]);
+                    }
+                    if (_v) {
+                      return _wrap_CoreSession_playAndGetDigits__SWIG_1(L);
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  if (argc == 10) {
+    int _v;
+    {
+      void *ptr;
+      if (SWIG_isptrtype(L,argv[0])==0 || SWIG_ConvertPtr(L,argv[0], (void **) &ptr, SWIGTYPE_p_CoreSession, 0)) {
+        _v = 0;
+      } else {
+        _v = 1;
+      }
+    }
+    if (_v) {
+      {
+        _v = lua_isnumber(L,argv[1]);
+      }
+      if (_v) {
+        {
+          _v = lua_isnumber(L,argv[2]);
+        }
+        if (_v) {
+          {
+            _v = lua_isnumber(L,argv[3]);
+          }
+          if (_v) {
+            {
+              _v = lua_isnumber(L,argv[4]);
+            }
+            if (_v) {
+              {
+                _v = lua_isstring(L,argv[5]);
+              }
+              if (_v) {
+                {
+                  _v = lua_isstring(L,argv[6]);
+                }
+                if (_v) {
+                  {
+                    _v = lua_isstring(L,argv[7]);
+                  }
+                  if (_v) {
+                    {
+                      _v = lua_isstring(L,argv[8]);
+                    }
+                    if (_v) {
+                      {
+                        _v = lua_isstring(L,argv[9]);
+                      }
+                      if (_v) {
+                        return _wrap_CoreSession_playAndGetDigits__SWIG_0(L);
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  
+  lua_pushstring(L,"No matching function for overloaded 'CoreSession_playAndGetDigits'");
+  lua_error(L);return 0;
+}
+
+
 static int _wrap_CoreSession_streamFile__SWIG_0(lua_State* L) {
   int SWIG_arg = -1;
   CoreSession *arg1 = (CoreSession *) 0 ;

Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	Thu Jan 15 09:38:32 2009
@@ -27368,7 +27368,7 @@
   char *arg7 = (char *) 0 ;
   char *arg8 = (char *) 0 ;
   char *arg9 = (char *) 0 ;
-  char *arg10 = (char *) 0 ;
+  char *arg10 = (char *) NULL ;
   char *result = 0 ;
   
   arg1 = (CoreSession *)jarg1; 
@@ -27381,7 +27381,7 @@
   arg8 = (char *)jarg8; 
   arg9 = (char *)jarg9; 
   arg10 = (char *)jarg10; 
-  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
+  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,(char const *)arg10);
   jresult = SWIG_csharp_string_callback((const char *)result); 
   return jresult;
 }

Modified: freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs	Thu Jan 15 09:38:32 2009
@@ -282,8 +282,8 @@
     return ret;
   }
 
-  public string PlayAndGetDigits(int min_digits, int max_digits, int max_tries, int timeout, string terminators, string audio_files, string bad_input_audio_files, string var_name, string digits_regex) {
-    string ret = freeswitchPINVOKE.CoreSession_PlayAndGetDigits(swigCPtr, min_digits, max_digits, max_tries, timeout, terminators, audio_files, bad_input_audio_files, var_name, digits_regex);
+  public string PlayAndGetDigits(int min_digits, int max_digits, int max_tries, int timeout, string terminators, string audio_files, string bad_input_audio_files, string digits_regex, string var_name) {
+    string ret = freeswitchPINVOKE.CoreSession_PlayAndGetDigits(swigCPtr, min_digits, max_digits, max_tries, timeout, terminators, audio_files, bad_input_audio_files, digits_regex, var_name);
     return ret;
   }
 

Modified: freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp	(original)
+++ freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp	Thu Jan 15 09:38:32 2009
@@ -7858,7 +7858,7 @@
 }
 
 
-XS(_wrap_CoreSession_playAndGetDigits) {
+XS(_wrap_CoreSession_playAndGetDigits__SWIG_0) {
   {
     CoreSession *arg1 = (CoreSession *) 0 ;
     int arg2 ;
@@ -7900,7 +7900,7 @@
     dXSARGS;
     
     if ((items < 10) || (items > 10)) {
-      SWIG_croak("Usage: CoreSession_playAndGetDigits(self,min_digits,max_digits,max_tries,timeout,terminators,audio_files,bad_input_audio_files,var_name,digits_regex);");
+      SWIG_croak("Usage: CoreSession_playAndGetDigits(self,min_digits,max_digits,max_tries,timeout,terminators,audio_files,bad_input_audio_files,digits_regex,var_name);");
     }
     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_CoreSession, 0 |  0 );
     if (!SWIG_IsOK(res1)) {
@@ -7949,10 +7949,10 @@
     arg9 = reinterpret_cast< char * >(buf9);
     res10 = SWIG_AsCharPtrAndSize(ST(9), &buf10, NULL, &alloc10);
     if (!SWIG_IsOK(res10)) {
-      SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "CoreSession_playAndGetDigits" "', argument " "10"" of type '" "char *""'");
+      SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "CoreSession_playAndGetDigits" "', argument " "10"" of type '" "char const *""'");
     }
     arg10 = reinterpret_cast< char * >(buf10);
-    result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
+    result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,(char const *)arg10);
     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
     
     
@@ -7981,6 +7981,332 @@
 }
 
 
+XS(_wrap_CoreSession_playAndGetDigits__SWIG_1) {
+  {
+    CoreSession *arg1 = (CoreSession *) 0 ;
+    int arg2 ;
+    int arg3 ;
+    int arg4 ;
+    int arg5 ;
+    char *arg6 = (char *) 0 ;
+    char *arg7 = (char *) 0 ;
+    char *arg8 = (char *) 0 ;
+    char *arg9 = (char *) 0 ;
+    char *result = 0 ;
+    void *argp1 = 0 ;
+    int res1 = 0 ;
+    int val2 ;
+    int ecode2 = 0 ;
+    int val3 ;
+    int ecode3 = 0 ;
+    int val4 ;
+    int ecode4 = 0 ;
+    int val5 ;
+    int ecode5 = 0 ;
+    int res6 ;
+    char *buf6 = 0 ;
+    int alloc6 = 0 ;
+    int res7 ;
+    char *buf7 = 0 ;
+    int alloc7 = 0 ;
+    int res8 ;
+    char *buf8 = 0 ;
+    int alloc8 = 0 ;
+    int res9 ;
+    char *buf9 = 0 ;
+    int alloc9 = 0 ;
+    int argvi = 0;
+    dXSARGS;
+    
+    if ((items < 9) || (items > 9)) {
+      SWIG_croak("Usage: CoreSession_playAndGetDigits(self,min_digits,max_digits,max_tries,timeout,terminators,audio_files,bad_input_audio_files,digits_regex);");
+    }
+    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_CoreSession, 0 |  0 );
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CoreSession_playAndGetDigits" "', argument " "1"" of type '" "CoreSession *""'"); 
+    }
+    arg1 = reinterpret_cast< CoreSession * >(argp1);
+    ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
+    if (!SWIG_IsOK(ecode2)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "CoreSession_playAndGetDigits" "', argument " "2"" of type '" "int""'");
+    } 
+    arg2 = static_cast< int >(val2);
+    ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
+    if (!SWIG_IsOK(ecode3)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "CoreSession_playAndGetDigits" "', argument " "3"" of type '" "int""'");
+    } 
+    arg3 = static_cast< int >(val3);
+    ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4);
+    if (!SWIG_IsOK(ecode4)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "CoreSession_playAndGetDigits" "', argument " "4"" of type '" "int""'");
+    } 
+    arg4 = static_cast< int >(val4);
+    ecode5 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(4), &val5);
+    if (!SWIG_IsOK(ecode5)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "CoreSession_playAndGetDigits" "', argument " "5"" of type '" "int""'");
+    } 
+    arg5 = static_cast< int >(val5);
+    res6 = SWIG_AsCharPtrAndSize(ST(5), &buf6, NULL, &alloc6);
+    if (!SWIG_IsOK(res6)) {
+      SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "CoreSession_playAndGetDigits" "', argument " "6"" of type '" "char *""'");
+    }
+    arg6 = reinterpret_cast< char * >(buf6);
+    res7 = SWIG_AsCharPtrAndSize(ST(6), &buf7, NULL, &alloc7);
+    if (!SWIG_IsOK(res7)) {
+      SWIG_exception_fail(SWIG_ArgError(res7), "in method '" "CoreSession_playAndGetDigits" "', argument " "7"" of type '" "char *""'");
+    }
+    arg7 = reinterpret_cast< char * >(buf7);
+    res8 = SWIG_AsCharPtrAndSize(ST(7), &buf8, NULL, &alloc8);
+    if (!SWIG_IsOK(res8)) {
+      SWIG_exception_fail(SWIG_ArgError(res8), "in method '" "CoreSession_playAndGetDigits" "', argument " "8"" of type '" "char *""'");
+    }
+    arg8 = reinterpret_cast< char * >(buf8);
+    res9 = SWIG_AsCharPtrAndSize(ST(8), &buf9, NULL, &alloc9);
+    if (!SWIG_IsOK(res9)) {
+      SWIG_exception_fail(SWIG_ArgError(res9), "in method '" "CoreSession_playAndGetDigits" "', argument " "9"" of type '" "char *""'");
+    }
+    arg9 = reinterpret_cast< char * >(buf9);
+    result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
+    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
+    
+    
+    
+    
+    
+    if (alloc6 == SWIG_NEWOBJ) delete[] buf6;
+    if (alloc7 == SWIG_NEWOBJ) delete[] buf7;
+    if (alloc8 == SWIG_NEWOBJ) delete[] buf8;
+    if (alloc9 == SWIG_NEWOBJ) delete[] buf9;
+    XSRETURN(argvi);
+  fail:
+    
+    
+    
+    
+    
+    if (alloc6 == SWIG_NEWOBJ) delete[] buf6;
+    if (alloc7 == SWIG_NEWOBJ) delete[] buf7;
+    if (alloc8 == SWIG_NEWOBJ) delete[] buf8;
+    if (alloc9 == SWIG_NEWOBJ) delete[] buf9;
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_CoreSession_playAndGetDigits) {
+  dXSARGS;
+  
+  {
+    unsigned long _index = 0;
+    SWIG_TypeRank _rank = 0; 
+    if (items == 9) {
+      SWIG_TypeRank _ranki = 0;
+      SWIG_TypeRank _rankm = 0;
+      SWIG_TypeRank _pi = 1;
+      int _v = 0;
+      {
+        void *vptr = 0;
+        int res = SWIG_ConvertPtr(ST(0), &vptr, SWIGTYPE_p_CoreSession, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_1;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        {
+          int res = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), NULL);
+          _v = SWIG_CheckState(res);
+        }
+      }
+      if (!_v) goto check_1;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        {
+          int res = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), NULL);
+          _v = SWIG_CheckState(res);
+        }
+      }
+      if (!_v) goto check_1;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        {
+          int res = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), NULL);
+          _v = SWIG_CheckState(res);
+        }
+      }
+      if (!_v) goto check_1;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        {
+          int res = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(4), NULL);
+          _v = SWIG_CheckState(res);
+        }
+      }
+      if (!_v) goto check_1;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        int res = SWIG_AsCharPtrAndSize(ST(5), 0, NULL, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_1;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        int res = SWIG_AsCharPtrAndSize(ST(6), 0, NULL, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_1;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        int res = SWIG_AsCharPtrAndSize(ST(7), 0, NULL, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_1;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        int res = SWIG_AsCharPtrAndSize(ST(8), 0, NULL, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_1;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      if (!_index || (_ranki < _rank)) {
+        _rank = _ranki; _index = 1;
+        if (_rank == _rankm) goto dispatch;
+      }
+    }
+  check_1:
+    
+    if (items == 10) {
+      SWIG_TypeRank _ranki = 0;
+      SWIG_TypeRank _rankm = 0;
+      SWIG_TypeRank _pi = 1;
+      int _v = 0;
+      {
+        void *vptr = 0;
+        int res = SWIG_ConvertPtr(ST(0), &vptr, SWIGTYPE_p_CoreSession, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_2;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        {
+          int res = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), NULL);
+          _v = SWIG_CheckState(res);
+        }
+      }
+      if (!_v) goto check_2;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        {
+          int res = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), NULL);
+          _v = SWIG_CheckState(res);
+        }
+      }
+      if (!_v) goto check_2;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        {
+          int res = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), NULL);
+          _v = SWIG_CheckState(res);
+        }
+      }
+      if (!_v) goto check_2;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        {
+          int res = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(4), NULL);
+          _v = SWIG_CheckState(res);
+        }
+      }
+      if (!_v) goto check_2;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        int res = SWIG_AsCharPtrAndSize(ST(5), 0, NULL, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_2;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        int res = SWIG_AsCharPtrAndSize(ST(6), 0, NULL, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_2;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        int res = SWIG_AsCharPtrAndSize(ST(7), 0, NULL, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_2;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        int res = SWIG_AsCharPtrAndSize(ST(8), 0, NULL, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_2;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      {
+        int res = SWIG_AsCharPtrAndSize(ST(9), 0, NULL, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_2;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      if (!_index || (_ranki < _rank)) {
+        _rank = _ranki; _index = 2;
+        if (_rank == _rankm) goto dispatch;
+      }
+    }
+  check_2:
+    
+  dispatch:
+    switch(_index) {
+    case 1:
+      ++PL_markstack_ptr; SWIG_CALLXS(_wrap_CoreSession_playAndGetDigits__SWIG_1); return;
+    case 2:
+      ++PL_markstack_ptr; SWIG_CALLXS(_wrap_CoreSession_playAndGetDigits__SWIG_0); return;
+    }
+  }
+  
+  croak("No matching function for overloaded 'CoreSession_playAndGetDigits'");
+  XSRETURN(0);
+}
+
+
 XS(_wrap_CoreSession_streamFile__SWIG_0) {
   {
     CoreSession *arg1 = (CoreSession *) 0 ;

Modified: freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp	(original)
+++ freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp	Thu Jan 15 09:38:32 2009
@@ -7783,7 +7783,7 @@
 }
 
 
-SWIGINTERN PyObject *_wrap_CoreSession_playAndGetDigits(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_CoreSession_playAndGetDigits__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   CoreSession *arg1 = (CoreSession *) 0 ;
   int arg2 ;
@@ -7880,10 +7880,10 @@
   arg9 = reinterpret_cast< char * >(buf9);
   res10 = SWIG_AsCharPtrAndSize(obj9, &buf10, NULL, &alloc10);
   if (!SWIG_IsOK(res10)) {
-    SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "CoreSession_playAndGetDigits" "', argument " "10"" of type '" "char *""'");
+    SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "CoreSession_playAndGetDigits" "', argument " "10"" of type '" "char const *""'");
   }
   arg10 = reinterpret_cast< char * >(buf10);
-  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
+  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,(char const *)arg10);
   resultobj = SWIG_FromCharPtr((const char *)result);
   if (alloc6 == SWIG_NEWOBJ) delete[] buf6;
   if (alloc7 == SWIG_NEWOBJ) delete[] buf7;
@@ -7901,6 +7901,234 @@
 }
 
 
+SWIGINTERN PyObject *_wrap_CoreSession_playAndGetDigits__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  CoreSession *arg1 = (CoreSession *) 0 ;
+  int arg2 ;
+  int arg3 ;
+  int arg4 ;
+  int arg5 ;
+  char *arg6 = (char *) 0 ;
+  char *arg7 = (char *) 0 ;
+  char *arg8 = (char *) 0 ;
+  char *arg9 = (char *) 0 ;
+  char *result = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int val2 ;
+  int ecode2 = 0 ;
+  int val3 ;
+  int ecode3 = 0 ;
+  int val4 ;
+  int ecode4 = 0 ;
+  int val5 ;
+  int ecode5 = 0 ;
+  int res6 ;
+  char *buf6 = 0 ;
+  int alloc6 = 0 ;
+  int res7 ;
+  char *buf7 = 0 ;
+  int alloc7 = 0 ;
+  int res8 ;
+  char *buf8 = 0 ;
+  int alloc8 = 0 ;
+  int res9 ;
+  char *buf9 = 0 ;
+  int alloc9 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  PyObject * obj3 = 0 ;
+  PyObject * obj4 = 0 ;
+  PyObject * obj5 = 0 ;
+  PyObject * obj6 = 0 ;
+  PyObject * obj7 = 0 ;
+  PyObject * obj8 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOO:CoreSession_playAndGetDigits",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_CoreSession, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CoreSession_playAndGetDigits" "', argument " "1"" of type '" "CoreSession *""'"); 
+  }
+  arg1 = reinterpret_cast< CoreSession * >(argp1);
+  ecode2 = SWIG_AsVal_int(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "CoreSession_playAndGetDigits" "', argument " "2"" of type '" "int""'");
+  } 
+  arg2 = static_cast< int >(val2);
+  ecode3 = SWIG_AsVal_int(obj2, &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "CoreSession_playAndGetDigits" "', argument " "3"" of type '" "int""'");
+  } 
+  arg3 = static_cast< int >(val3);
+  ecode4 = SWIG_AsVal_int(obj3, &val4);
+  if (!SWIG_IsOK(ecode4)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "CoreSession_playAndGetDigits" "', argument " "4"" of type '" "int""'");
+  } 
+  arg4 = static_cast< int >(val4);
+  ecode5 = SWIG_AsVal_int(obj4, &val5);
+  if (!SWIG_IsOK(ecode5)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "CoreSession_playAndGetDigits" "', argument " "5"" of type '" "int""'");
+  } 
+  arg5 = static_cast< int >(val5);
+  res6 = SWIG_AsCharPtrAndSize(obj5, &buf6, NULL, &alloc6);
+  if (!SWIG_IsOK(res6)) {
+    SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "CoreSession_playAndGetDigits" "', argument " "6"" of type '" "char *""'");
+  }
+  arg6 = reinterpret_cast< char * >(buf6);
+  res7 = SWIG_AsCharPtrAndSize(obj6, &buf7, NULL, &alloc7);
+  if (!SWIG_IsOK(res7)) {
+    SWIG_exception_fail(SWIG_ArgError(res7), "in method '" "CoreSession_playAndGetDigits" "', argument " "7"" of type '" "char *""'");
+  }
+  arg7 = reinterpret_cast< char * >(buf7);
+  res8 = SWIG_AsCharPtrAndSize(obj7, &buf8, NULL, &alloc8);
+  if (!SWIG_IsOK(res8)) {
+    SWIG_exception_fail(SWIG_ArgError(res8), "in method '" "CoreSession_playAndGetDigits" "', argument " "8"" of type '" "char *""'");
+  }
+  arg8 = reinterpret_cast< char * >(buf8);
+  res9 = SWIG_AsCharPtrAndSize(obj8, &buf9, NULL, &alloc9);
+  if (!SWIG_IsOK(res9)) {
+    SWIG_exception_fail(SWIG_ArgError(res9), "in method '" "CoreSession_playAndGetDigits" "', argument " "9"" of type '" "char *""'");
+  }
+  arg9 = reinterpret_cast< char * >(buf9);
+  result = (char *)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
+  resultobj = SWIG_FromCharPtr((const char *)result);
+  if (alloc6 == SWIG_NEWOBJ) delete[] buf6;
+  if (alloc7 == SWIG_NEWOBJ) delete[] buf7;
+  if (alloc8 == SWIG_NEWOBJ) delete[] buf8;
+  if (alloc9 == SWIG_NEWOBJ) delete[] buf9;
+  return resultobj;
+fail:
+  if (alloc6 == SWIG_NEWOBJ) delete[] buf6;
+  if (alloc7 == SWIG_NEWOBJ) delete[] buf7;
+  if (alloc8 == SWIG_NEWOBJ) delete[] buf8;
+  if (alloc9 == SWIG_NEWOBJ) delete[] buf9;
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_CoreSession_playAndGetDigits(PyObject *self, PyObject *args) {
+  int argc;
+  PyObject *argv[11];
+  int ii;
+  
+  if (!PyTuple_Check(args)) SWIG_fail;
+  argc = (int)PyObject_Length(args);
+  for (ii = 0; (ii < argc) && (ii < 10); ii++) {
+    argv[ii] = PyTuple_GET_ITEM(args,ii);
+  }
+  if (argc == 9) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_CoreSession, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      {
+        int res = SWIG_AsVal_int(argv[1], NULL);
+        _v = SWIG_CheckState(res);
+      }
+      if (_v) {
+        {
+          int res = SWIG_AsVal_int(argv[2], NULL);
+          _v = SWIG_CheckState(res);
+        }
+        if (_v) {
+          {
+            int res = SWIG_AsVal_int(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            {
+              int res = SWIG_AsVal_int(argv[4], NULL);
+              _v = SWIG_CheckState(res);
+            }
+            if (_v) {
+              int res = SWIG_AsCharPtrAndSize(argv[5], 0, NULL, 0);
+              _v = SWIG_CheckState(res);
+              if (_v) {
+                int res = SWIG_AsCharPtrAndSize(argv[6], 0, NULL, 0);
+                _v = SWIG_CheckState(res);
+                if (_v) {
+                  int res = SWIG_AsCharPtrAndSize(argv[7], 0, NULL, 0);
+                  _v = SWIG_CheckState(res);
+                  if (_v) {
+                    int res = SWIG_AsCharPtrAndSize(argv[8], 0, NULL, 0);
+                    _v = SWIG_CheckState(res);
+                    if (_v) {
+                      return _wrap_CoreSession_playAndGetDigits__SWIG_1(self, args);
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  if (argc == 10) {
+    int _v;
+    void *vptr = 0;
+    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_CoreSession, 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      {
+        int res = SWIG_AsVal_int(argv[1], NULL);
+        _v = SWIG_CheckState(res);
+      }
+      if (_v) {
+        {
+          int res = SWIG_AsVal_int(argv[2], NULL);
+          _v = SWIG_CheckState(res);
+        }
+        if (_v) {
+          {
+            int res = SWIG_AsVal_int(argv[3], NULL);
+            _v = SWIG_CheckState(res);
+          }
+          if (_v) {
+            {
+              int res = SWIG_AsVal_int(argv[4], NULL);
+              _v = SWIG_CheckState(res);
+            }
+            if (_v) {
+              int res = SWIG_AsCharPtrAndSize(argv[5], 0, NULL, 0);
+              _v = SWIG_CheckState(res);
+              if (_v) {
+                int res = SWIG_AsCharPtrAndSize(argv[6], 0, NULL, 0);
+                _v = SWIG_CheckState(res);
+                if (_v) {
+                  int res = SWIG_AsCharPtrAndSize(argv[7], 0, NULL, 0);
+                  _v = SWIG_CheckState(res);
+                  if (_v) {
+                    int res = SWIG_AsCharPtrAndSize(argv[8], 0, NULL, 0);
+                    _v = SWIG_CheckState(res);
+                    if (_v) {
+                      int res = SWIG_AsCharPtrAndSize(argv[9], 0, NULL, 0);
+                      _v = SWIG_CheckState(res);
+                      if (_v) {
+                        return _wrap_CoreSession_playAndGetDigits__SWIG_0(self, args);
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  
+fail:
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'CoreSession_playAndGetDigits'.\n"
+    "  Possible C/C++ prototypes are:\n"
+    "    playAndGetDigits(CoreSession *,int,int,int,int,char *,char *,char *,char *,char const *)\n"
+    "    playAndGetDigits(CoreSession *,int,int,int,int,char *,char *,char *,char *)\n");
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_CoreSession_streamFile__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   CoreSession *arg1 = (CoreSession *) 0 ;

Modified: freeswitch/trunk/src/switch_cpp.cpp
==============================================================================
--- freeswitch/trunk/src/switch_cpp.cpp	(original)
+++ freeswitch/trunk/src/switch_cpp.cpp	Thu Jan 15 09:38:32 2009
@@ -749,8 +749,8 @@
 													 char *terminators, 
 													 char *audio_files, 
 													 char *bad_input_audio_files,
-													 char *var_name,
-													 char *digits_regex)
+													 char *digits_regex,
+													 const char *var_name)
 {
     switch_status_t status;
 	sanity_check((char *)"");


From anthm at freeswitch.org  Thu Jan 15 08:54:13 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 10:54:13 -0600
Subject: [Freeswitch-svn] [commit] r11225 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Thu Jan 15 10:54:13 2009
New Revision: 11225

Log:
refactor

Modified:
   freeswitch/trunk/src/switch_core_io.c

Modified: freeswitch/trunk/src/switch_core_io.c
==============================================================================
--- freeswitch/trunk/src/switch_core_io.c	(original)
+++ freeswitch/trunk/src/switch_core_io.c	Thu Jan 15 10:54:13 2009
@@ -137,8 +137,8 @@
 	if (session->read_codec && !session->track_id && session->track_duration) {
 		if (session->read_frame_count == 0) {
 			switch_event_t *event;
-			session->read_frame_count = (session->read_codec->implementation->actual_samples_per_second / 
-										 session->read_codec->implementation->samples_per_packet) * session->track_duration;
+			session->read_frame_count = (session->read_impl.actual_samples_per_second / 
+										 session->read_impl.samples_per_packet) * session->track_duration;
 
 			switch_event_create(&event, SWITCH_EVENT_SESSION_HEARTBEAT);
 			switch_channel_event_set_data(session->channel, event);
@@ -150,7 +150,7 @@
 
 
 	if (switch_channel_test_flag(session->channel, CF_HOLD)) {
-		switch_yield(session->read_codec->implementation->microseconds_per_packet);
+		switch_yield(session->read_impl.microseconds_per_packet);
 		status = SWITCH_STATUS_BREAK;
 		goto even_more_done;
 	}
@@ -215,7 +215,7 @@
 		goto done;
 	}
 
-	if ((*frame)->codec->implementation->actual_samples_per_second != session->read_codec->implementation->actual_samples_per_second) {
+	if ((*frame)->codec->implementation->actual_samples_per_second != session->read_impl.actual_samples_per_second) {
 		do_resample = 1;
 	}
 
@@ -257,7 +257,7 @@
 												  session->read_codec,
 												  read_frame->data,
 												  read_frame->datalen,
-												  session->read_codec->implementation->actual_samples_per_second,
+												  session->read_impl.actual_samples_per_second,
 												  session->raw_read_frame.data, &session->raw_read_frame.datalen, &session->raw_read_frame.rate, &flag);
 			}
 
@@ -272,8 +272,8 @@
 					status = switch_resample_create(&session->read_resampler,
 													read_frame->codec->implementation->actual_samples_per_second,
 													read_frame->codec->implementation->decoded_bytes_per_packet,
-													session->read_codec->implementation->actual_samples_per_second,
-													session->read_codec->implementation->decoded_bytes_per_packet, session->pool);
+													session->read_impl.actual_samples_per_second,
+													session->read_impl.decoded_bytes_per_packet, session->pool);
 					switch_mutex_unlock(session->resample_mutex);
 
 					if (status != SWITCH_STATUS_SUCCESS) {
@@ -285,7 +285,7 @@
 			case SWITCH_STATUS_SUCCESS:
 				session->raw_read_frame.samples = session->raw_read_frame.datalen / sizeof(int16_t);
 				session->raw_read_frame.rate = read_frame->rate;
-				if (read_frame->codec->implementation->samples_per_packet != session->read_codec->implementation->samples_per_packet) {
+				if (read_frame->codec->implementation->samples_per_packet != session->read_impl.samples_per_packet) {
 					session->raw_read_frame.timestamp = 0;
 				} else {
 					session->raw_read_frame.timestamp = read_frame->timestamp;
@@ -398,11 +398,11 @@
 
 			}
 
-			if (read_frame->datalen == session->read_codec->implementation->decoded_bytes_per_packet) {
+			if (read_frame->datalen == session->read_impl.decoded_bytes_per_packet) {
 				perfect = TRUE;
 			} else {
 				if (!session->raw_read_buffer) {
-					switch_size_t bytes = session->read_codec->implementation->decoded_bytes_per_packet;
+					switch_size_t bytes = session->read_impl.decoded_bytes_per_packet;
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Engaging Read Buffer at %u bytes vs %u\n", 
 									  (uint32_t) bytes, (uint32_t) (*frame)->datalen);
 					switch_buffer_create_dynamic(&session->raw_read_buffer, bytes * SWITCH_BUFFER_BLOCK_FRAMES, bytes * SWITCH_BUFFER_START_FRAMES, 0);
@@ -414,16 +414,16 @@
 			}
 
 
-			if (perfect || switch_buffer_inuse(session->raw_read_buffer) >= session->read_codec->implementation->decoded_bytes_per_packet) {
+			if (perfect || switch_buffer_inuse(session->raw_read_buffer) >= session->read_impl.decoded_bytes_per_packet) {
 				if (perfect) {
 					enc_frame = read_frame;
 					session->raw_read_frame.rate = read_frame->rate;
 				} else {
 					session->raw_read_frame.datalen = (uint32_t) switch_buffer_read(session->raw_read_buffer,
 																					session->raw_read_frame.data,
-																					session->read_codec->implementation->decoded_bytes_per_packet);
+																					session->read_impl.decoded_bytes_per_packet);
 
-					session->raw_read_frame.rate = session->read_codec->implementation->actual_samples_per_second;
+					session->raw_read_frame.rate = session->read_impl.actual_samples_per_second;
 					enc_frame = &session->raw_read_frame;
 				}
 				session->enc_read_frame.datalen = session->enc_read_frame.buflen;
@@ -436,16 +436,16 @@
 												  enc_frame->codec,
 												  enc_frame->data,
 												  enc_frame->datalen,
-												  session->read_codec->implementation->actual_samples_per_second,
+												  session->read_impl.actual_samples_per_second,
 												  session->enc_read_frame.data, &session->enc_read_frame.datalen, &session->enc_read_frame.rate, &flag);
 
 				switch (status) {
 				case SWITCH_STATUS_RESAMPLE:
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Fixme 1\n");
 				case SWITCH_STATUS_SUCCESS:
-					session->enc_read_frame.samples = session->read_codec->implementation->decoded_bytes_per_packet / sizeof(int16_t);
+					session->enc_read_frame.samples = session->read_impl.decoded_bytes_per_packet / sizeof(int16_t);
 					if (perfect) {
-						if (enc_frame->codec->implementation->samples_per_packet != session->read_codec->implementation->samples_per_packet) {
+						if (enc_frame->codec->implementation->samples_per_packet != session->read_impl.samples_per_packet) {
 							session->enc_read_frame.timestamp = 0;
 						} else {
 							session->enc_read_frame.timestamp = read_frame->timestamp;
@@ -454,7 +454,7 @@
 						session->enc_read_frame.ssrc = read_frame->ssrc;
 						session->enc_read_frame.seq = read_frame->seq;
 						session->enc_read_frame.m = read_frame->m;
-						session->enc_read_frame.payload = session->read_codec->implementation->ianacode;
+						session->enc_read_frame.payload = session->read_impl.ianacode;
 					}
 					*frame = &session->enc_read_frame;
 					break;
@@ -616,7 +616,7 @@
 	
 
 	if ((session->write_codec && frame->codec && session->write_codec->implementation != frame->codec->implementation)) {
-		if (session->write_codec->implementation->codec_id == frame->codec->implementation->codec_id) {
+		if (session->write_impl.codec_id == frame->codec->implementation->codec_id) {
 			ptime_mismatch = TRUE;
 			if (switch_test_flag(frame->codec, SWITCH_CODEC_FLAG_PASSTHROUGH) || switch_test_flag(session->read_codec, SWITCH_CODEC_FLAG_PASSTHROUGH)) {
 				status = perform_write(session, frame, flags, stream_id);
@@ -635,7 +635,7 @@
 		need_codec = TRUE;
 	}
 
-	if (frame->codec->implementation->actual_samples_per_second != session->write_codec->implementation->actual_samples_per_second) {
+	if (frame->codec->implementation->actual_samples_per_second != session->write_impl.actual_samples_per_second) {
 		need_codec = TRUE;
 		do_resample = TRUE;
 	}
@@ -660,7 +660,7 @@
 										  session->write_codec,
 										  frame->data,
 										  frame->datalen,
-										  session->write_codec->implementation->actual_samples_per_second,
+										  session->write_impl.actual_samples_per_second,
 										  session->raw_write_frame.data, &session->raw_write_frame.datalen, &session->raw_write_frame.rate, &flag);
 
 
@@ -679,8 +679,8 @@
 				status = switch_resample_create(&session->write_resampler,
 												frame->codec->implementation->actual_samples_per_second,
 												frame->codec->implementation->decoded_bytes_per_packet,
-												session->write_codec->implementation->actual_samples_per_second,
-												session->write_codec->implementation->decoded_bytes_per_packet, session->pool);
+												session->write_impl.actual_samples_per_second,
+												session->write_impl.decoded_bytes_per_packet, session->pool);
 				switch_mutex_unlock(session->resample_mutex);
 				if (status != SWITCH_STATUS_SUCCESS) {
 					goto done;
@@ -807,33 +807,15 @@
 
 	if (session->write_codec) {
 		if (!ptime_mismatch && 
-			write_frame->codec->implementation->decoded_bytes_per_packet == session->write_codec->implementation->decoded_bytes_per_packet) {
+			write_frame->codec->implementation->decoded_bytes_per_packet == session->write_impl.decoded_bytes_per_packet) {
 			perfect = TRUE;
-		} else {
-			if (!session->raw_write_buffer) {
-				switch_size_t bytes = session->write_codec->implementation->decoded_bytes_per_packet;
-				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
-								  "Engaging Write Buffer at %u bytes to accommodate %u->%u\n",
-								  (uint32_t) bytes, write_frame->datalen, session->write_codec->implementation->decoded_bytes_per_packet);
-				if ((status = switch_buffer_create_dynamic(&session->raw_write_buffer,
-														   bytes * SWITCH_BUFFER_BLOCK_FRAMES,
-														   bytes * SWITCH_BUFFER_START_FRAMES, 0)) != SWITCH_STATUS_SUCCESS) {
-					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Write Buffer Failed!\n");
-					goto error;
-				}
-			}
-
-			if (!(switch_buffer_write(session->raw_write_buffer, write_frame->data, write_frame->datalen))) {
-				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Write Buffer %u bytes Failed!\n", write_frame->datalen);
-				status = SWITCH_STATUS_MEMERR; goto error;
-			}
 		}
-
+		
 		if (perfect) {
 
-			if (write_frame->datalen < session->write_codec->implementation->decoded_bytes_per_packet) {
-				memset(write_frame->data, 255, session->write_codec->implementation->decoded_bytes_per_packet - write_frame->datalen);
-				write_frame->datalen = session->write_codec->implementation->decoded_bytes_per_packet;
+			if (write_frame->datalen < session->write_impl.decoded_bytes_per_packet) {
+				memset(write_frame->data, 255, session->write_impl.decoded_bytes_per_packet - write_frame->datalen);
+				write_frame->datalen = session->write_impl.decoded_bytes_per_packet;
 			}
 
 			enc_frame = write_frame;
@@ -843,7 +825,7 @@
 											  frame->codec,
 											  enc_frame->data,
 											  enc_frame->datalen,
-											  session->write_codec->implementation->actual_samples_per_second,
+											  session->write_impl.actual_samples_per_second,
 											  session->enc_write_frame.data, &session->enc_write_frame.datalen, &session->enc_write_frame.rate, &flag);
 
 			switch (status) {
@@ -853,12 +835,12 @@
 			case SWITCH_STATUS_SUCCESS:
 				session->enc_write_frame.codec = session->write_codec;
 				session->enc_write_frame.samples = enc_frame->datalen / sizeof(int16_t);
-				if (frame->codec->implementation->samples_per_packet != session->write_codec->implementation->samples_per_packet) {
+				if (frame->codec->implementation->samples_per_packet != session->write_impl.samples_per_packet) {
 					session->enc_write_frame.timestamp = 0;
 				} else {
 					session->enc_write_frame.timestamp = frame->timestamp;
 				}
-				session->enc_write_frame.payload = session->write_codec->implementation->ianacode;
+				session->enc_write_frame.payload = session->write_impl.ianacode;
 				session->enc_write_frame.m = frame->m;
 				session->enc_write_frame.ssrc = frame->ssrc;
 				session->enc_write_frame.seq = frame->seq;
@@ -891,9 +873,31 @@
 			status = perform_write(session, write_frame, flags, stream_id);
 			goto error;
 		} else {
-			switch_size_t used = switch_buffer_inuse(session->raw_write_buffer);
-			uint32_t bytes = session->write_codec->implementation->decoded_bytes_per_packet;
-			switch_size_t frames = (used / bytes);
+			switch_size_t used;
+			uint32_t bytes;
+			switch_size_t frames;
+
+			if (!session->raw_write_buffer) {
+				switch_size_t bytes_per_packet = session->write_impl.decoded_bytes_per_packet;
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
+								  "Engaging Write Buffer at %u bytes to accommodate %u->%u\n",
+								  (uint32_t) bytes_per_packet, write_frame->datalen, session->write_impl.decoded_bytes_per_packet);
+				if ((status = switch_buffer_create_dynamic(&session->raw_write_buffer,
+														   bytes_per_packet * SWITCH_BUFFER_BLOCK_FRAMES,
+														   bytes_per_packet * SWITCH_BUFFER_START_FRAMES, 0)) != SWITCH_STATUS_SUCCESS) {
+					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Write Buffer Failed!\n");
+					goto error;
+				}
+			}
+
+			if (!(switch_buffer_write(session->raw_write_buffer, write_frame->data, write_frame->datalen))) {
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Write Buffer %u bytes Failed!\n", write_frame->datalen);
+				status = SWITCH_STATUS_MEMERR; goto error;
+			}
+			
+			used = switch_buffer_inuse(session->raw_write_buffer);
+			bytes = session->write_impl.decoded_bytes_per_packet;
+			frames = (used / bytes);
 
 			status = SWITCH_STATUS_SUCCESS;
 			if (!frames) {
@@ -905,13 +909,13 @@
 						 switch_buffer_read(session->raw_write_buffer, session->raw_write_frame.data, bytes)) != 0) {
 						int rate;
 						enc_frame = &session->raw_write_frame;
-						session->raw_write_frame.rate = session->write_codec->implementation->actual_samples_per_second;
+						session->raw_write_frame.rate = session->write_impl.actual_samples_per_second;
 						session->enc_write_frame.datalen = session->enc_write_frame.buflen;
 
 						if (frame->codec && frame->codec->implementation) {
 							rate = frame->codec->implementation->actual_samples_per_second;
 						} else {
-							rate = session->write_codec->implementation->actual_samples_per_second;
+							rate = session->write_impl.actual_samples_per_second;
 						}
 
 						status = switch_core_codec_encode(session->write_codec,
@@ -928,15 +932,15 @@
 							session->enc_write_frame.samples = enc_frame->datalen / sizeof(int16_t);
 							session->enc_write_frame.m = frame->m;
 							session->enc_write_frame.ssrc = frame->ssrc;
-							session->enc_write_frame.payload = session->write_codec->implementation->ianacode;
+							session->enc_write_frame.payload = session->write_impl.ianacode;
 							write_frame = &session->enc_write_frame;
 							if (!session->write_resampler) {
 								switch_mutex_lock(session->resample_mutex);
 								status = switch_resample_create(&session->write_resampler,
 																frame->codec->implementation->actual_samples_per_second,
 																frame->codec->implementation->decoded_bytes_per_packet,
-																session->write_codec->implementation->actual_samples_per_second,
-																session->write_codec->implementation->decoded_bytes_per_packet, session->pool);
+																session->write_impl.actual_samples_per_second,
+																session->write_impl.decoded_bytes_per_packet, session->pool);
 								switch_mutex_unlock(session->resample_mutex);
 
 								if (status != SWITCH_STATUS_SUCCESS) {
@@ -949,7 +953,7 @@
 							session->enc_write_frame.samples = enc_frame->datalen / sizeof(int16_t);
 							session->enc_write_frame.m = frame->m;
 							session->enc_write_frame.ssrc = frame->ssrc;
-							session->enc_write_frame.payload = session->write_codec->implementation->ianacode;
+							session->enc_write_frame.payload = session->write_impl.ianacode;
 							write_frame = &session->enc_write_frame;
 							break;
 						case SWITCH_STATUS_NOOP:


From anthm at freeswitch.org  Thu Jan 15 09:47:21 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 11:47:21 -0600
Subject: [Freeswitch-svn] [commit] r11226 - in freeswitch/trunk/src: .
	include
Message-ID: 

Author: anthm
Date: Thu Jan 15 11:47:21 2009
New Revision: 11226

Log:
mux multi-channel audio files to mono to support playing stereo sound files

Modified:
   freeswitch/trunk/src/include/switch_resample.h
   freeswitch/trunk/src/switch_core_file.c
   freeswitch/trunk/src/switch_resample.c

Modified: freeswitch/trunk/src/include/switch_resample.h
==============================================================================
--- freeswitch/trunk/src/include/switch_resample.h	(original)
+++ freeswitch/trunk/src/include/switch_resample.h	Thu Jan 15 11:47:21 2009
@@ -168,6 +168,8 @@
 
 SWITCH_DECLARE(uint32_t) switch_merge_sln(int16_t *data, uint32_t samples, int16_t *other_data, uint32_t other_samples);
 
+SWITCH_DECLARE(void) switch_mux_channels(int16_t *data, uint32_t samples, uint32_t channels);
+
 SWITCH_END_EXTERN_C
 #endif
 /* For Emacs:

Modified: freeswitch/trunk/src/switch_core_file.c
==============================================================================
--- freeswitch/trunk/src/switch_core_file.c	(original)
+++ freeswitch/trunk/src/switch_core_file.c	Thu Jan 15 11:47:21 2009
@@ -120,7 +120,11 @@
 	if (fh->pre_buffer_datalen) {
 		//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Prebuffering %d bytes\n", (int)fh->pre_buffer_datalen);
 		switch_buffer_create_dynamic(&fh->pre_buffer, fh->pre_buffer_datalen * fh->channels, fh->pre_buffer_datalen * fh->channels / 2, 0);
-		fh->pre_buffer_data = switch_core_alloc(fh->memory_pool, fh->pre_buffer_datalen);
+		fh->pre_buffer_data = switch_core_alloc(fh->memory_pool, fh->pre_buffer_datalen * fh->channels);
+	}
+
+	if (fh->channels > 1) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "File has %d channels, muxing to mono will occur.\n", fh->channels);
 	}
 
 	switch_set_flag(fh, SWITCH_FILE_OPEN);
@@ -164,6 +168,9 @@
 				if ((status = fh->file_interface->file_read(fh, fh->pre_buffer_data, &rlen)) != SWITCH_STATUS_SUCCESS || !rlen) {
 					switch_set_flag(fh, SWITCH_FILE_BUFFER_DONE);
 				} else {
+					if (fh->channels > 1) {
+						switch_mux_channels((int16_t *)fh->pre_buffer_data, rlen, fh->channels);
+					}
 					switch_buffer_write(fh->pre_buffer, fh->pre_buffer_data, asis ? rlen : rlen * 2);
 				}
 			}
@@ -185,6 +192,11 @@
 			switch_set_flag(fh, SWITCH_FILE_DONE);
 			goto top;
 		}
+
+		if (fh->channels > 1) {
+			switch_mux_channels((int16_t *)data, *len, fh->channels);
+		}
+
 	}
 
 

Modified: freeswitch/trunk/src/switch_resample.c
==============================================================================
--- freeswitch/trunk/src/switch_resample.c	(original)
+++ freeswitch/trunk/src/switch_resample.c	Thu Jan 15 11:47:21 2009
@@ -244,6 +244,27 @@
 	return x;
 }
 
+SWITCH_DECLARE(void) switch_mux_channels(int16_t *data, uint32_t samples, uint32_t channels)
+{
+	int16_t *buf;
+	switch_size_t len = samples * sizeof(int16_t);
+	uint32_t i = 0, j = 0, k = 0;
+
+	switch_zmalloc(buf, len);
+	
+	for(i = 0; i < samples; i++) {
+		for (j = 0; j < channels; j++) {
+			int32_t z = buf[i] + data[k++];
+			switch_normalize_to_16bit(z);
+			buf[i] = (int16_t) z;
+		}
+	}
+
+	memcpy(data, buf, len);
+	free(buf);
+
+}
+
 SWITCH_DECLARE(void) switch_change_sln_volume(int16_t *data, uint32_t samples, int32_t vol)
 {
 	double newrate = 0;


From anthm at freeswitch.org  Thu Jan 15 10:39:52 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 12:39:52 -0600
Subject: [Freeswitch-svn] [commit] r11227 -
	freeswitch/trunk/src/mod/endpoints/mod_portaudio
Message-ID: 

Author: anthm
Date: Thu Jan 15 12:39:51 2009
New Revision: 11227

Log:
apply portaudio patches from jira and add some fixes for linux

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.h

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Thu Jan 15 12:39:51 2009
@@ -157,7 +157,7 @@
 static int dump_info(int verbose);
 static switch_status_t load_config(void);
 static int get_dev_by_name(char *name, int in);
-static int get_dev_by_number(int number, int in);
+static int get_dev_by_number(char *numstr, int in);
 SWITCH_STANDARD_API(pa_cmd);
 
 /* 
@@ -263,6 +263,7 @@
 					unsigned int pos = 0;
 					switch_core_file_seek(&fh, &pos, 0, SEEK_SET);
 				}
+
 				if (globals.ring_stream) {
 					WriteAudioStream(globals.ring_stream, abuf, (long) olen, &globals.timer);
 				}
@@ -784,6 +785,10 @@
 	switch_console_set_complete("add pa indev");
 	switch_console_set_complete("add pa outdev");
 	switch_console_set_complete("add pa ringdev");
+	switch_console_set_complete("add pa play");
+	switch_console_set_complete("add pa ringtest");
+	switch_console_set_complete("add pa looptest");
+
 	/* indicate that the module should continue to be loaded */
 	return SWITCH_STATUS_SUCCESS;
 }
@@ -836,19 +841,19 @@
 				set_global_cid_num(val);
 			} else if (!strcmp(var, "indev")) {
 				if (*val == '#') {
-					globals.indev = get_dev_by_number(atoi(val + 1), 1);
+					globals.indev = get_dev_by_number(val + 1, 1);
 				} else {
 					globals.indev = get_dev_by_name(val, 1);
 				}
 			} else if (!strcmp(var, "outdev")) {
 				if (*val == '#') {
-					globals.outdev = get_dev_by_number(atoi(val + 1), 0);
+					globals.outdev = get_dev_by_number(val + 1, 0);
 				} else {
 					globals.outdev = get_dev_by_name(val, 0);
 				}
 			} else if (!strcmp(var, "ringdev")) {
 				if (*val == '#') {
-					globals.ringdev = get_dev_by_number(atoi(val + 1), 0);
+					globals.ringdev = get_dev_by_number(val + 1, 0);
 				} else {
 					globals.ringdev = get_dev_by_name(val, 0);
 				}
@@ -910,6 +915,8 @@
 
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_portaudio_shutdown)
 {
+	
+
 	if (globals.read_codec.implementation) {
 		switch_core_codec_destroy(&globals.read_codec);
 	}
@@ -918,19 +925,30 @@
 		switch_core_codec_destroy(&globals.write_codec);
 	}
 
+
 	switch_core_timer_destroy(&globals.timer);
 	switch_core_timer_destroy(&globals.hold_timer);
 	Pa_Terminate();
 	switch_core_hash_destroy(&globals.call_hash);
 
+	switch_event_free_subclass(MY_EVENT_RINGING);
+
 	return SWITCH_STATUS_SUCCESS;
 }
 
 
-static int get_dev_by_number(int number, int in)
+static int get_dev_by_number(char *numstr, int in)
 {
 	int numDevices = Pa_GetDeviceCount();
 	const PaDeviceInfo *pdi;
+	char *end_ptr;
+	int number;
+
+	number = (int) strtol(numstr, &end_ptr, 10);
+
+	if (end_ptr == numstr || number < 0) {
+		return -1;
+	}
 
 	if (number > -1 && number < numDevices && (pdi = Pa_GetDeviceInfo(number))) {
 		if (in && pdi->maxInputChannels) {
@@ -974,11 +992,7 @@
 		}
 	}
 
-	if (switch_strlen_zero(name)) {
-		return -1;
-	}
-
-	return get_dev_by_name(NULL, in);
+	return -1;
 }
 
 
@@ -1110,13 +1124,13 @@
 		inputParameters.device = i;
 		inputParameters.channelCount = deviceInfo->maxInputChannels;
 		inputParameters.sampleFormat = paInt16;
-		inputParameters.suggestedLatency = 0;	/* ignored by Pa_IsFormatSupported() */
+		inputParameters.suggestedLatency = deviceInfo->defaultLowOutputLatency;	/* ignored by Pa_IsFormatSupported() */
 		inputParameters.hostApiSpecificStreamInfo = NULL;
-
+		
 		outputParameters.device = i;
 		outputParameters.channelCount = deviceInfo->maxOutputChannels;
 		outputParameters.sampleFormat = paInt16;
-		outputParameters.suggestedLatency = 0;	/* ignored by Pa_IsFormatSupported() */
+		outputParameters.suggestedLatency = deviceInfo->defaultLowOutputLatency;	/* ignored by Pa_IsFormatSupported() */
 		outputParameters.hostApiSpecificStreamInfo = NULL;
 
 		if (inputParameters.channelCount > 0) {
@@ -1131,7 +1145,7 @@
 		}
 
 		if (inputParameters.channelCount > 0 && outputParameters.channelCount > 0) {
-
+			
 			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO,
 							  "full-duplex 16 bit %d channel input, %d channel output rates:", inputParameters.channelCount,
 							  outputParameters.channelCount);
@@ -1226,6 +1240,9 @@
 		outputParameters.sampleFormat = SAMPLE_TYPE;
 		outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency;
 		outputParameters.hostApiSpecificStreamInfo = NULL;
+		//err = OpenAudioStream(&globals.audio_stream, NULL/*&inputParameters*/, &outputParameters, sample_rate, paClipOff,
+		//globals.read_codec.implementation->samples_per_packet);
+
 		err = OpenAudioStream(&globals.audio_stream, &inputParameters, &outputParameters, sample_rate, paClipOff,
 							  globals.read_codec.implementation->samples_per_packet);
 		/* UNLOCKED ************************************************************************************************* */
@@ -1630,7 +1647,10 @@
 		"pa devlist\n"
 		"pa indev #|\n"
 		"pa outdev #|\n"
-		"pa ringdev #|\n" "--------------------------------------------------------------------------------\n";
+		"pa ringdev #|\n"
+		"pa play \n"
+		"pa ringtest\n"
+		"pa looptest\n" "--------------------------------------------------------------------------------\n";
 
 
 	if (stream->param_event) {
@@ -1719,34 +1739,98 @@
 		func = dtmf_call;
 	} else if (argv[1] && !strcmp(argv[0], "indev")) {
 		if (*argv[1] == '#') {
-			devval = get_dev_by_number(atoi(argv[1] + 1), 1);
+			devval = get_dev_by_number(argv[1] + 1, 1);
 		} else {
 			devval = get_dev_by_name(argv[1], 1);
 		}
 		devname = "indev";
-		if (devval > 0) {
+		if (devval > -1) {
 			globals.indev = devval;
 		}
 	} else if (argv[1] && !strcmp(argv[0], "outdev")) {
 		if (*argv[1] == '#') {
-			devval = get_dev_by_number(atoi(argv[1] + 1), 0);
+			devval = get_dev_by_number(argv[1] + 1, 0);
 		} else {
 			devval = get_dev_by_name(argv[1], 0);
 		}
 		devname = "outdev";
-		if (devval > 0) {
+		if (devval > -1) {
 			globals.outdev = devval;
 		}
 	} else if (argv[1] && !strcmp(argv[0], "ringdev")) {
 		if (*argv[1] == '#') {
-			devval = get_dev_by_number(atoi(argv[1] + 1), 0);
+			devval = get_dev_by_number(argv[1] + 1, 0);
 		} else {
 			devval = get_dev_by_name(argv[1], 0);
 		}
 		devname = "ringdev";
-		if (devval > 0) {
+		if (devval > -1) {
 			globals.ringdev = devval;
 		}
+	} else if ((argv[1] && !strcasecmp(argv[0], "play")) || !strcasecmp(argv[0], "ringtest")) {
+		if (globals.audio_stream) {
+			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
+			goto done;
+		}
+
+		switch_file_handle_t fh = { 0 };
+		char *playfile = NULL;
+
+		if (!strcasecmp(argv[0], "ringtest")) {
+			playfile = globals.ring_file;
+		} else {
+			playfile = argv[1];
+		}
+
+		if (engage_device(globals.sample_rate, globals.codec_ms) == SWITCH_STATUS_SUCCESS) {
+			if (switch_core_file_open(&fh,
+						playfile,
+						globals.read_codec.implementation->number_of_channels,
+						globals.read_codec.implementation->actual_samples_per_second,
+						SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) == SWITCH_STATUS_SUCCESS) {
+				switch_size_t olen = globals.timer.samples;
+				int16_t abuf[2048];
+				
+				while (switch_core_file_read(&fh, abuf, &olen) == SWITCH_STATUS_SUCCESS) {
+					WriteAudioStream(globals.audio_stream, abuf, (long) olen, &globals.timer);
+					switch_core_timer_next(&globals.timer);
+					olen = globals.timer.samples;
+				} 
+
+				switch_core_file_close(&fh);
+			} else {
+				stream->write_function(stream, "Cannot play requested file %s\n", argv[1]);
+			}
+			deactivate_audio_device();
+		} else {
+			stream->write_function(stream, "Failed to engage audio device\n");
+		}
+		goto done;
+	} else if (!strcasecmp(argv[0], "looptest")) {
+		if (globals.audio_stream) {
+			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
+			goto done;
+		}
+
+		if (engage_device(globals.sample_rate, globals.codec_ms) == SWITCH_STATUS_SUCCESS) {
+			int samples = 0;
+			int success = 0;
+			for(int i = 0; i < 400; i++) {
+				if ((samples = ReadAudioStream(globals.audio_stream, globals.read_frame.data,
+						globals.read_codec.implementation->samples_per_packet, &globals.timer))) {
+					WriteAudioStream(globals.audio_stream, globals.read_frame.data, (long) samples, &globals.timer);
+					success = 1;
+				}
+				switch_yield(10000);
+			}
+			deactivate_audio_device();
+			if (!success) {
+				stream->write_function(stream, "Failed to read any bytes from indev\n");
+			}
+		} else {
+			stream->write_function(stream, "Failed to engage audio device\n");
+		}
+		goto done;
 	}
 
 	if (func) {
@@ -1763,7 +1847,7 @@
 		}
 	} else {
 		if (devname) {
-			if (devval > 0) {
+			if (devval > -1) {
 				stream->write_function(stream, "%s set to %d\n", devname, devval);
 			} else {
 				stream->write_function(stream, "%s not set (invalid value)\n", devname);

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c	Thu Jan 15 12:39:51 2009
@@ -55,7 +55,9 @@
 /******** Prototypes ****************************************************/
 /************************************************************************/
 
-static int blockingIOCallback(const void *inputBuffer, void *outputBuffer,
+static int iblockingIOCallback(const void *inputBuffer, void *outputBuffer,
+							  unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData);
+static int oblockingIOCallback(const void *inputBuffer, void *outputBuffer,
 							  unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData);
 static PaError PABLIO_InitFIFO(PaUtilRingBuffer * rbuf, long numFrames, long bytesPerFrame);
 static PaError PABLIO_TermFIFO(PaUtilRingBuffer * rbuf);
@@ -67,7 +69,7 @@
 /* Called from PortAudio.
  * Read and write data 
  */
-static int blockingIOCallback(const void *inputBuffer, void *outputBuffer,
+static int iblockingIOCallback(const void *inputBuffer, void *outputBuffer,
 							  unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
 {
 	PABLIO_Stream *data = (PABLIO_Stream *) userData;
@@ -80,6 +82,16 @@
 			PaUtil_WriteRingBuffer(&data->inFIFO, inputBuffer, numBytes);
 		}
 	}
+
+	return 0;
+}
+
+static int oblockingIOCallback(const void *inputBuffer, void *outputBuffer,
+							  unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
+{
+	PABLIO_Stream *data = (PABLIO_Stream *) userData;
+	long numBytes = data->bytesPerFrame * framesPerBuffer;
+
 	if (outputBuffer != NULL) {
 		int i;
 		int numRead = PaUtil_ReadRingBuffer(&data->outFIFO, outputBuffer, numBytes);
@@ -268,12 +280,15 @@
 
 	/* Open a PortAudio stream that we will use to communicate with the underlying
 	 * audio drivers. */
-	err = Pa_OpenStream(&aStream->stream, inputParameters, outputParameters, sampleRate, samples_per_packet, streamFlags, blockingIOCallback, aStream);
+	err = Pa_OpenStream(&aStream->istream, inputParameters, NULL, sampleRate, samples_per_packet, streamFlags, iblockingIOCallback, aStream);
+	err = Pa_OpenStream(&aStream->ostream, NULL, outputParameters, sampleRate, samples_per_packet, streamFlags, oblockingIOCallback, aStream);
 
 	if (err != paNoError)
 		goto error;
 
-	err = Pa_StartStream(aStream->stream);
+	err = Pa_StartStream(aStream->istream);
+	err = Pa_StartStream(aStream->ostream);
+
 	if (err != paNoError)
 		goto error;
 	*rwblPtr = aStream;
@@ -288,7 +303,6 @@
 /************************************************************/
 PaError CloseAudioStream(PABLIO_Stream * aStream)
 {
-	PaError err;
 	int bytesEmpty;
 	int byteSize = aStream->outFIFO.bufferSize;
 
@@ -301,17 +315,20 @@
 		}
 	}
 
-	err = Pa_StopStream(aStream->stream);
-	if (err != paNoError)
-		goto error;
-	err = Pa_CloseStream(aStream->stream);
-	if (err != paNoError)
-		goto error;
-	Pa_Terminate();
+	if (Pa_IsStreamActive(aStream->istream)) {
+		Pa_StopStream(aStream->istream);
+		Pa_CloseStream(aStream->istream);
+	}
+
+	if (Pa_IsStreamActive(aStream->ostream)) {
+		Pa_StopStream(aStream->ostream);
+		Pa_CloseStream(aStream->ostream);
+	}
 
-  error:
 	PABLIO_TermFIFO(&aStream->inFIFO);
 	PABLIO_TermFIFO(&aStream->outFIFO);
 	free(aStream);
-	return err;
+
+	return paNoError;
 }
+

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.h	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.h	Thu Jan 15 12:39:51 2009
@@ -59,7 +59,8 @@
 	typedef struct {
 		PaUtilRingBuffer inFIFO;
 		PaUtilRingBuffer outFIFO;
-		PaStream *stream;
+		PaStream *istream;
+		PaStream *ostream;
 		int bytesPerFrame;
 	} PABLIO_Stream;
 


From brian at freeswitch.org  Thu Jan 15 11:20:05 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 13:20:05 -0600
Subject: [Freeswitch-svn] [commit] r11228 - freeswitch/trunk/support-d
Message-ID: 

Author: brian
Date: Thu Jan 15 13:20:05 2009
New Revision: 11228

Log:
add fsgdb

Modified:
   freeswitch/trunk/support-d/.bashrc

Modified: freeswitch/trunk/support-d/.bashrc
==============================================================================
--- freeswitch/trunk/support-d/.bashrc	(original)
+++ freeswitch/trunk/support-d/.bashrc	Thu Jan 15 13:20:05 2009
@@ -26,4 +26,5 @@
 alias mcommit='svn commit --no-auth-cache --username=mikej'
 alias dp='emacs /usr/local/freeswitch/conf/dialplan/default.xml'
 alias fstop='top -p `cat /usr/local/freeswitch/log/freeswitch.pid`'
+alias fsgdb='gdb /usr/local/freeswitch/bin/freeswitch `cat /usr/local/freeswitch/log/freeswitch.pid`'
 # End of file


From intralanman at freeswitch.org  Thu Jan 15 11:26:57 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 13:26:57 -0600
Subject: [Freeswitch-svn] [commit] r11229 -
	freeswitch/trunk/src/mod/applications/mod_stress
Message-ID: 

Author: intralanman
Date: Thu Jan 15 13:26:57 2009
New Revision: 11229

Log:
patch from MODAPP-196

Modified:
   freeswitch/trunk/src/mod/applications/mod_stress/mod_stress.cpp

Modified: freeswitch/trunk/src/mod/applications/mod_stress/mod_stress.cpp
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_stress/mod_stress.cpp	(original)
+++ freeswitch/trunk/src/mod/applications/mod_stress/mod_stress.cpp	Thu Jan 15 13:26:57 2009
@@ -175,6 +175,7 @@
                 if (switch_event_create(&event, SWITCH_EVENT_DETECTED_SPEECH) == SWITCH_STATUS_SUCCESS) {
                     switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Speech-Type", "stress-level");
                     switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Stress-Level", "%0.2f", sth->stress);
+		    switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Unique-ID", switch_core_session_get_uuid(sth->session));
                     if (switch_event_dup(&dup, event) == SWITCH_STATUS_SUCCESS) {
                         switch_event_fire(&dup);
                     }


From andrew at freeswitch.org  Thu Jan 15 12:08:08 2009
From: andrew at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 14:08:08 -0600
Subject: [Freeswitch-svn] [commit] r11230 -
	freeswitch/trunk/src/mod/endpoints/mod_portaudio
Message-ID: 

Author: andrew
Date: Thu Jan 15 14:08:08 2009
New Revision: 11230

Log:
testing commit access to mod_portaudio


Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Thu Jan 15 14:08:08 2009
@@ -29,6 +29,7 @@
  * mod_portaudio.c -- PortAudio Endpoint Module
  *
  */
+
 #include "switch.h"
 
 #include 


From rupa at freeswitch.org  Thu Jan 15 12:32:25 2009
From: rupa at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 14:32:25 -0600
Subject: [Freeswitch-svn] [commit] r11231 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: rupa
Date: Thu Jan 15 14:32:25 2009
New Revision: 11231

Log:
Ensure that mod_lcr digits only has digits


Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 14:32:25 2009
@@ -230,6 +230,29 @@
 	return SWITCH_FALSE;
 }
 
+/* make a new string with digits only */
+static char* string_digitsonly(const char *str) {
+	char *p, *np, *newstr;
+	size_t len;
+
+	p = (char *)str;
+
+	len = strlen(str);
+	switch_zmalloc(newstr, len+1); /* worst case, same string */
+	np = newstr;
+	
+	while(*p) {
+		if(switch_isdigit(*p)) {
+			*np = *p;
+			np++;
+		}
+		p++;
+	}
+	*np = '\0';
+
+	return newstr;
+}
+
 static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata) {
 	if (globals.odbc_dsn) {
 		if(switch_odbc_handle_callback_exec(globals.master_odbc, sql, callback, pdata)
@@ -322,8 +345,6 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
-   	digits_copy = strdup(digits);
-
 	SWITCH_STANDARD_STREAM(sql_stream);
 
 	/* set up the query to be executed */
@@ -331,10 +352,12 @@
 							  "SELECT l.digits, c.carrier_name, l.rate, cg.prefix AS gw_prefix, cg.suffix AS gw_suffix, l.lead_strip, l.trail_strip, l.prefix, l.suffix "
 							  );
 	sql_stream.write_function(&sql_stream, "FROM lcr l JOIN carriers c ON l.carrier_id=c.id JOIN carrier_gateway cg ON c.id=cg.carrier_id WHERE c.enabled = '1' AND cg.enabled = '1' AND l.enabled = '1' AND digits IN (");
+	digits_copy = string_digitsonly(digits);
 	for (n = digit_len; n > 0; n--) {
 		digits_copy[n] = '\0';
 		sql_stream.write_function(&sql_stream, "%s%s", (n==digit_len ? "" : ", "), digits_copy);
 	}
+	switch_safe_free(digits_copy);
 	sql_stream.write_function(&sql_stream, ") AND CURRENT_TIMESTAMP BETWEEN date_start AND date_end ");
 	if(profile->id > 0) {
 		sql_stream.write_function(&sql_stream, "AND lcr_profile=%d ", profile->id);


From rupa at freeswitch.org  Thu Jan 15 13:51:15 2009
From: rupa at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 15:51:15 -0600
Subject: [Freeswitch-svn] [commit] r11232 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: rupa
Date: Thu Jan 15 15:51:15 2009
New Revision: 11232

Log:
move svn braces


Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 15:51:15 2009
@@ -131,7 +131,8 @@
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown);
 SWITCH_MODULE_DEFINITION(mod_lcr, mod_lcr_load, mod_lcr_shutdown, NULL);
 
-static char *get_bridge_data(const char *dialed_number, lcr_route cur_route) {
+static char *get_bridge_data(const char *dialed_number, lcr_route cur_route)
+{
 	size_t lstrip;
 	size_t  tstrip;
 	char *data = NULL;
@@ -158,7 +159,8 @@
 	return data;
 }
 
-void init_max_lens(max_len maxes) {
+void init_max_lens(max_len maxes)
+{
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->carrier_name = (headers[LCR_CARRIER_PLACE] == NULL ? 0 : strlen(headers[LCR_CARRIER_PLACE]));
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
@@ -166,7 +168,8 @@
 	maxes->rate = 8;
 }
 
-switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number) {
+switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)
+{
 	lcr_route current = NULL;
 
 	if (routes == NULL) {
@@ -211,7 +214,8 @@
 }
 
 /* try each type of random until we suceed */
-static switch_bool_t set_db_random() {
+static switch_bool_t set_db_random()
+{
 	char *sql = NULL;
 	if (globals.odbc_dsn) {
 		sql = "SELECT * FROM lcr ORDER BY rand() LIMIT 1";
@@ -231,7 +235,8 @@
 }
 
 /* make a new string with digits only */
-static char* string_digitsonly(const char *str) {
+static char *string_digitsonly(const char *str) 
+{
 	char *p, *np, *newstr;
 	size_t len;
 
@@ -253,7 +258,8 @@
 	return newstr;
 }
 
-static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata) {
+static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata)
+{
 	if (globals.odbc_dsn) {
 		if(switch_odbc_handle_callback_exec(globals.master_odbc, sql, callback, pdata)
 				== SWITCH_ODBC_FAIL) {
@@ -265,7 +271,8 @@
 	return SWITCH_FALSE;
 }
 
-int route_add_callback(void *pArg, int argc, char **argv, char **columnNames) {
+int route_add_callback(void *pArg, int argc, char **argv, char **columnNames)
+{
 	lcr_route additional = NULL;
 	lcr_route current = NULL;
 	callback_t *cbt = (callback_t *) pArg;
@@ -325,7 +332,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name) {
+switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name)
+{
 	/* instantiate the object/struct we defined earlier */
 	switch_stream_handle_t sql_stream = { 0 };
 	size_t n, digit_len = strlen(digits);
@@ -380,7 +388,8 @@
 	}
 }
 
-static switch_status_t lcr_load_config() {
+static switch_status_t lcr_load_config()
+{
 	char *cf = "lcr.conf";
 	switch_xml_t cfg, xml, settings, param, x_profile, x_profiles;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
@@ -513,7 +522,8 @@
 	return status;
 }
 
-static void destroy_list(lcr_route *head) {
+static void destroy_list(lcr_route *head)
+{
 	lcr_route cur = NULL, top = *head;
 
 	while (top) {
@@ -531,7 +541,8 @@
 	*head = NULL;
 }
 
-SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt) {
+SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt)
+{
 	switch_caller_extension_t *extension = NULL;
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 	callback_t routes = { 0 };
@@ -569,7 +580,8 @@
 	return extension;
 }
 
-void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream) {
+void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream)
+{
 	size_t i;
 
 	//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "repeating %d of '%s'\n", how_many, what);
@@ -629,7 +641,8 @@
 	}
 }
 
-SWITCH_STANDARD_API(dialplan_lcr_function) {
+SWITCH_STANDARD_API(dialplan_lcr_function)
+{
 	char *argv[4] = { 0 };
 	int argc;
 	char *mydata = NULL;
@@ -731,7 +744,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load) {
+SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load)
+{
 	switch_api_interface_t *dialplan_lcr_api_interface;
 	switch_application_interface_t *app_interface;
 	switch_dialplan_interface_t *dp_interface;
@@ -770,7 +784,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown) {
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown)
+{
 	return SWITCH_STATUS_SUCCESS;
 }
 


From rupa at freeswitch.org  Thu Jan 15 13:58:42 2009
From: rupa at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 15:58:42 -0600
Subject: [Freeswitch-svn] [commit] r11232 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: rupa
Date: Thu Jan 15 15:51:15 2009
New Revision: 11232

Log:
move svn braces


Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 15:51:15 2009
@@ -131,7 +131,8 @@
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown);
 SWITCH_MODULE_DEFINITION(mod_lcr, mod_lcr_load, mod_lcr_shutdown, NULL);
 
-static char *get_bridge_data(const char *dialed_number, lcr_route cur_route) {
+static char *get_bridge_data(const char *dialed_number, lcr_route cur_route)
+{
 	size_t lstrip;
 	size_t  tstrip;
 	char *data = NULL;
@@ -158,7 +159,8 @@
 	return data;
 }
 
-void init_max_lens(max_len maxes) {
+void init_max_lens(max_len maxes)
+{
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->carrier_name = (headers[LCR_CARRIER_PLACE] == NULL ? 0 : strlen(headers[LCR_CARRIER_PLACE]));
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
@@ -166,7 +168,8 @@
 	maxes->rate = 8;
 }
 
-switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number) {
+switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)
+{
 	lcr_route current = NULL;
 
 	if (routes == NULL) {
@@ -211,7 +214,8 @@
 }
 
 /* try each type of random until we suceed */
-static switch_bool_t set_db_random() {
+static switch_bool_t set_db_random()
+{
 	char *sql = NULL;
 	if (globals.odbc_dsn) {
 		sql = "SELECT * FROM lcr ORDER BY rand() LIMIT 1";
@@ -231,7 +235,8 @@
 }
 
 /* make a new string with digits only */
-static char* string_digitsonly(const char *str) {
+static char *string_digitsonly(const char *str) 
+{
 	char *p, *np, *newstr;
 	size_t len;
 
@@ -253,7 +258,8 @@
 	return newstr;
 }
 
-static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata) {
+static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata)
+{
 	if (globals.odbc_dsn) {
 		if(switch_odbc_handle_callback_exec(globals.master_odbc, sql, callback, pdata)
 				== SWITCH_ODBC_FAIL) {
@@ -265,7 +271,8 @@
 	return SWITCH_FALSE;
 }
 
-int route_add_callback(void *pArg, int argc, char **argv, char **columnNames) {
+int route_add_callback(void *pArg, int argc, char **argv, char **columnNames)
+{
 	lcr_route additional = NULL;
 	lcr_route current = NULL;
 	callback_t *cbt = (callback_t *) pArg;
@@ -325,7 +332,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name) {
+switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name)
+{
 	/* instantiate the object/struct we defined earlier */
 	switch_stream_handle_t sql_stream = { 0 };
 	size_t n, digit_len = strlen(digits);
@@ -380,7 +388,8 @@
 	}
 }
 
-static switch_status_t lcr_load_config() {
+static switch_status_t lcr_load_config()
+{
 	char *cf = "lcr.conf";
 	switch_xml_t cfg, xml, settings, param, x_profile, x_profiles;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
@@ -513,7 +522,8 @@
 	return status;
 }
 
-static void destroy_list(lcr_route *head) {
+static void destroy_list(lcr_route *head)
+{
 	lcr_route cur = NULL, top = *head;
 
 	while (top) {
@@ -531,7 +541,8 @@
 	*head = NULL;
 }
 
-SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt) {
+SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt)
+{
 	switch_caller_extension_t *extension = NULL;
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 	callback_t routes = { 0 };
@@ -569,7 +580,8 @@
 	return extension;
 }
 
-void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream) {
+void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream)
+{
 	size_t i;
 
 	//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "repeating %d of '%s'\n", how_many, what);
@@ -629,7 +641,8 @@
 	}
 }
 
-SWITCH_STANDARD_API(dialplan_lcr_function) {
+SWITCH_STANDARD_API(dialplan_lcr_function)
+{
 	char *argv[4] = { 0 };
 	int argc;
 	char *mydata = NULL;
@@ -731,7 +744,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load) {
+SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load)
+{
 	switch_api_interface_t *dialplan_lcr_api_interface;
 	switch_application_interface_t *app_interface;
 	switch_dialplan_interface_t *dp_interface;
@@ -770,7 +784,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown) {
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown)
+{
 	return SWITCH_STATUS_SUCCESS;
 }
 


From rupa at freeswitch.org  Thu Jan 15 13:59:11 2009
From: rupa at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 15:59:11 -0600
Subject: [Freeswitch-svn] [commit] r11232 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: rupa
Date: Thu Jan 15 15:51:15 2009
New Revision: 11232

Log:
move svn braces


Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 15:51:15 2009
@@ -131,7 +131,8 @@
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown);
 SWITCH_MODULE_DEFINITION(mod_lcr, mod_lcr_load, mod_lcr_shutdown, NULL);
 
-static char *get_bridge_data(const char *dialed_number, lcr_route cur_route) {
+static char *get_bridge_data(const char *dialed_number, lcr_route cur_route)
+{
 	size_t lstrip;
 	size_t  tstrip;
 	char *data = NULL;
@@ -158,7 +159,8 @@
 	return data;
 }
 
-void init_max_lens(max_len maxes) {
+void init_max_lens(max_len maxes)
+{
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->carrier_name = (headers[LCR_CARRIER_PLACE] == NULL ? 0 : strlen(headers[LCR_CARRIER_PLACE]));
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
@@ -166,7 +168,8 @@
 	maxes->rate = 8;
 }
 
-switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number) {
+switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)
+{
 	lcr_route current = NULL;
 
 	if (routes == NULL) {
@@ -211,7 +214,8 @@
 }
 
 /* try each type of random until we suceed */
-static switch_bool_t set_db_random() {
+static switch_bool_t set_db_random()
+{
 	char *sql = NULL;
 	if (globals.odbc_dsn) {
 		sql = "SELECT * FROM lcr ORDER BY rand() LIMIT 1";
@@ -231,7 +235,8 @@
 }
 
 /* make a new string with digits only */
-static char* string_digitsonly(const char *str) {
+static char *string_digitsonly(const char *str) 
+{
 	char *p, *np, *newstr;
 	size_t len;
 
@@ -253,7 +258,8 @@
 	return newstr;
 }
 
-static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata) {
+static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata)
+{
 	if (globals.odbc_dsn) {
 		if(switch_odbc_handle_callback_exec(globals.master_odbc, sql, callback, pdata)
 				== SWITCH_ODBC_FAIL) {
@@ -265,7 +271,8 @@
 	return SWITCH_FALSE;
 }
 
-int route_add_callback(void *pArg, int argc, char **argv, char **columnNames) {
+int route_add_callback(void *pArg, int argc, char **argv, char **columnNames)
+{
 	lcr_route additional = NULL;
 	lcr_route current = NULL;
 	callback_t *cbt = (callback_t *) pArg;
@@ -325,7 +332,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name) {
+switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name)
+{
 	/* instantiate the object/struct we defined earlier */
 	switch_stream_handle_t sql_stream = { 0 };
 	size_t n, digit_len = strlen(digits);
@@ -380,7 +388,8 @@
 	}
 }
 
-static switch_status_t lcr_load_config() {
+static switch_status_t lcr_load_config()
+{
 	char *cf = "lcr.conf";
 	switch_xml_t cfg, xml, settings, param, x_profile, x_profiles;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
@@ -513,7 +522,8 @@
 	return status;
 }
 
-static void destroy_list(lcr_route *head) {
+static void destroy_list(lcr_route *head)
+{
 	lcr_route cur = NULL, top = *head;
 
 	while (top) {
@@ -531,7 +541,8 @@
 	*head = NULL;
 }
 
-SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt) {
+SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt)
+{
 	switch_caller_extension_t *extension = NULL;
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 	callback_t routes = { 0 };
@@ -569,7 +580,8 @@
 	return extension;
 }
 
-void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream) {
+void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream)
+{
 	size_t i;
 
 	//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "repeating %d of '%s'\n", how_many, what);
@@ -629,7 +641,8 @@
 	}
 }
 
-SWITCH_STANDARD_API(dialplan_lcr_function) {
+SWITCH_STANDARD_API(dialplan_lcr_function)
+{
 	char *argv[4] = { 0 };
 	int argc;
 	char *mydata = NULL;
@@ -731,7 +744,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load) {
+SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load)
+{
 	switch_api_interface_t *dialplan_lcr_api_interface;
 	switch_application_interface_t *app_interface;
 	switch_dialplan_interface_t *dp_interface;
@@ -770,7 +784,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown) {
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown)
+{
 	return SWITCH_STATUS_SUCCESS;
 }
 


From rupa at freeswitch.org  Thu Jan 15 13:59:29 2009
From: rupa at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 15:59:29 -0600
Subject: [Freeswitch-svn] [commit] r11232 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: rupa
Date: Thu Jan 15 15:51:15 2009
New Revision: 11232

Log:
move svn braces


Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 15:51:15 2009
@@ -131,7 +131,8 @@
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown);
 SWITCH_MODULE_DEFINITION(mod_lcr, mod_lcr_load, mod_lcr_shutdown, NULL);
 
-static char *get_bridge_data(const char *dialed_number, lcr_route cur_route) {
+static char *get_bridge_data(const char *dialed_number, lcr_route cur_route)
+{
 	size_t lstrip;
 	size_t  tstrip;
 	char *data = NULL;
@@ -158,7 +159,8 @@
 	return data;
 }
 
-void init_max_lens(max_len maxes) {
+void init_max_lens(max_len maxes)
+{
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->carrier_name = (headers[LCR_CARRIER_PLACE] == NULL ? 0 : strlen(headers[LCR_CARRIER_PLACE]));
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
@@ -166,7 +168,8 @@
 	maxes->rate = 8;
 }
 
-switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number) {
+switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)
+{
 	lcr_route current = NULL;
 
 	if (routes == NULL) {
@@ -211,7 +214,8 @@
 }
 
 /* try each type of random until we suceed */
-static switch_bool_t set_db_random() {
+static switch_bool_t set_db_random()
+{
 	char *sql = NULL;
 	if (globals.odbc_dsn) {
 		sql = "SELECT * FROM lcr ORDER BY rand() LIMIT 1";
@@ -231,7 +235,8 @@
 }
 
 /* make a new string with digits only */
-static char* string_digitsonly(const char *str) {
+static char *string_digitsonly(const char *str) 
+{
 	char *p, *np, *newstr;
 	size_t len;
 
@@ -253,7 +258,8 @@
 	return newstr;
 }
 
-static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata) {
+static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata)
+{
 	if (globals.odbc_dsn) {
 		if(switch_odbc_handle_callback_exec(globals.master_odbc, sql, callback, pdata)
 				== SWITCH_ODBC_FAIL) {
@@ -265,7 +271,8 @@
 	return SWITCH_FALSE;
 }
 
-int route_add_callback(void *pArg, int argc, char **argv, char **columnNames) {
+int route_add_callback(void *pArg, int argc, char **argv, char **columnNames)
+{
 	lcr_route additional = NULL;
 	lcr_route current = NULL;
 	callback_t *cbt = (callback_t *) pArg;
@@ -325,7 +332,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name) {
+switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name)
+{
 	/* instantiate the object/struct we defined earlier */
 	switch_stream_handle_t sql_stream = { 0 };
 	size_t n, digit_len = strlen(digits);
@@ -380,7 +388,8 @@
 	}
 }
 
-static switch_status_t lcr_load_config() {
+static switch_status_t lcr_load_config()
+{
 	char *cf = "lcr.conf";
 	switch_xml_t cfg, xml, settings, param, x_profile, x_profiles;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
@@ -513,7 +522,8 @@
 	return status;
 }
 
-static void destroy_list(lcr_route *head) {
+static void destroy_list(lcr_route *head)
+{
 	lcr_route cur = NULL, top = *head;
 
 	while (top) {
@@ -531,7 +541,8 @@
 	*head = NULL;
 }
 
-SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt) {
+SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt)
+{
 	switch_caller_extension_t *extension = NULL;
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 	callback_t routes = { 0 };
@@ -569,7 +580,8 @@
 	return extension;
 }
 
-void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream) {
+void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream)
+{
 	size_t i;
 
 	//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "repeating %d of '%s'\n", how_many, what);
@@ -629,7 +641,8 @@
 	}
 }
 
-SWITCH_STANDARD_API(dialplan_lcr_function) {
+SWITCH_STANDARD_API(dialplan_lcr_function)
+{
 	char *argv[4] = { 0 };
 	int argc;
 	char *mydata = NULL;
@@ -731,7 +744,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load) {
+SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load)
+{
 	switch_api_interface_t *dialplan_lcr_api_interface;
 	switch_application_interface_t *app_interface;
 	switch_dialplan_interface_t *dp_interface;
@@ -770,7 +784,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown) {
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown)
+{
 	return SWITCH_STATUS_SUCCESS;
 }
 


From rupa at freeswitch.org  Thu Jan 15 14:00:43 2009
From: rupa at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 16:00:43 -0600
Subject: [Freeswitch-svn] [commit] r11233 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: rupa
Date: Thu Jan 15 16:00:43 2009
New Revision: 11233

Log:
// -> /* */ comments


Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 16:00:43 2009
@@ -567,7 +567,7 @@
 		switch_channel_set_variable(channel, SWITCH_HANGUP_AFTER_BRIDGE_VARIABLE, "true");
 
 		for (cur_route = routes.head; cur_route; cur_route = cur_route->next) {
-			//bridge_data = get_bridge_data(caller_profile->destination_number, cur_route);
+			/*bridge_data = get_bridge_data(caller_profile->destination_number, cur_route);*/
 			switch_caller_extension_add_application(session, extension, "bridge", cur_route->dialstring);
 			switch_safe_free(bridge_data);
 		}
@@ -584,7 +584,7 @@
 {
 	size_t i;
 
-	//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "repeating %d of '%s'\n", how_many, what);
+	/*//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "repeating %d of '%s'\n", how_many, what);*/
 
 	for (i=0; iwrite_function(str_stream, "%s", what);
@@ -653,7 +653,7 @@
 	max_obj_t maximum_lengths = { 0 };
 	callback_t cb_struct = { 0 };
 	switch_status_t lookup_status = SWITCH_STATUS_SUCCESS;
-	//switch_malloc(maximum_lengths, sizeof(max_obj_t));
+	/*//switch_malloc(maximum_lengths, sizeof(max_obj_t)); */
 
 	if (switch_strlen_zero(cmd)) {
 		goto usage;


From rupa at freeswitch.org  Thu Jan 15 14:01:31 2009
From: rupa at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 16:01:31 -0600
Subject: [Freeswitch-svn] [commit] r11232 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: rupa
Date: Thu Jan 15 15:51:15 2009
New Revision: 11232

Log:
move svn braces


Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 15:51:15 2009
@@ -131,7 +131,8 @@
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown);
 SWITCH_MODULE_DEFINITION(mod_lcr, mod_lcr_load, mod_lcr_shutdown, NULL);
 
-static char *get_bridge_data(const char *dialed_number, lcr_route cur_route) {
+static char *get_bridge_data(const char *dialed_number, lcr_route cur_route)
+{
 	size_t lstrip;
 	size_t  tstrip;
 	char *data = NULL;
@@ -158,7 +159,8 @@
 	return data;
 }
 
-void init_max_lens(max_len maxes) {
+void init_max_lens(max_len maxes)
+{
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->carrier_name = (headers[LCR_CARRIER_PLACE] == NULL ? 0 : strlen(headers[LCR_CARRIER_PLACE]));
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
@@ -166,7 +168,8 @@
 	maxes->rate = 8;
 }
 
-switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number) {
+switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)
+{
 	lcr_route current = NULL;
 
 	if (routes == NULL) {
@@ -211,7 +214,8 @@
 }
 
 /* try each type of random until we suceed */
-static switch_bool_t set_db_random() {
+static switch_bool_t set_db_random()
+{
 	char *sql = NULL;
 	if (globals.odbc_dsn) {
 		sql = "SELECT * FROM lcr ORDER BY rand() LIMIT 1";
@@ -231,7 +235,8 @@
 }
 
 /* make a new string with digits only */
-static char* string_digitsonly(const char *str) {
+static char *string_digitsonly(const char *str) 
+{
 	char *p, *np, *newstr;
 	size_t len;
 
@@ -253,7 +258,8 @@
 	return newstr;
 }
 
-static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata) {
+static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata)
+{
 	if (globals.odbc_dsn) {
 		if(switch_odbc_handle_callback_exec(globals.master_odbc, sql, callback, pdata)
 				== SWITCH_ODBC_FAIL) {
@@ -265,7 +271,8 @@
 	return SWITCH_FALSE;
 }
 
-int route_add_callback(void *pArg, int argc, char **argv, char **columnNames) {
+int route_add_callback(void *pArg, int argc, char **argv, char **columnNames)
+{
 	lcr_route additional = NULL;
 	lcr_route current = NULL;
 	callback_t *cbt = (callback_t *) pArg;
@@ -325,7 +332,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name) {
+switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name)
+{
 	/* instantiate the object/struct we defined earlier */
 	switch_stream_handle_t sql_stream = { 0 };
 	size_t n, digit_len = strlen(digits);
@@ -380,7 +388,8 @@
 	}
 }
 
-static switch_status_t lcr_load_config() {
+static switch_status_t lcr_load_config()
+{
 	char *cf = "lcr.conf";
 	switch_xml_t cfg, xml, settings, param, x_profile, x_profiles;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
@@ -513,7 +522,8 @@
 	return status;
 }
 
-static void destroy_list(lcr_route *head) {
+static void destroy_list(lcr_route *head)
+{
 	lcr_route cur = NULL, top = *head;
 
 	while (top) {
@@ -531,7 +541,8 @@
 	*head = NULL;
 }
 
-SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt) {
+SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt)
+{
 	switch_caller_extension_t *extension = NULL;
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 	callback_t routes = { 0 };
@@ -569,7 +580,8 @@
 	return extension;
 }
 
-void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream) {
+void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream)
+{
 	size_t i;
 
 	//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "repeating %d of '%s'\n", how_many, what);
@@ -629,7 +641,8 @@
 	}
 }
 
-SWITCH_STANDARD_API(dialplan_lcr_function) {
+SWITCH_STANDARD_API(dialplan_lcr_function)
+{
 	char *argv[4] = { 0 };
 	int argc;
 	char *mydata = NULL;
@@ -731,7 +744,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load) {
+SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load)
+{
 	switch_api_interface_t *dialplan_lcr_api_interface;
 	switch_application_interface_t *app_interface;
 	switch_dialplan_interface_t *dp_interface;
@@ -770,7 +784,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown) {
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown)
+{
 	return SWITCH_STATUS_SUCCESS;
 }
 


From anthm at freeswitch.org  Thu Jan 15 14:11:27 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 16:11:27 -0600
Subject: [Freeswitch-svn] [commit] r11234 - in freeswitch/trunk: libs/esl
	libs/esl/src libs/esl/src/include src src/include
	src/mod/event_handlers/mod_event_socket
Message-ID: 

Author: anthm
Date: Thu Jan 15 16:11:27 2009
New Revision: 11234

Log:
fix disconnect issue in event socket and fix a few small bugs

Modified:
   freeswitch/trunk/libs/esl/src/esl.c
   freeswitch/trunk/libs/esl/src/esl_event.c
   freeswitch/trunk/libs/esl/src/include/esl.h
   freeswitch/trunk/libs/esl/testserver.c
   freeswitch/trunk/src/include/switch_apr.h
   freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
   freeswitch/trunk/src/switch_ivr.c

Modified: freeswitch/trunk/libs/esl/src/esl.c
==============================================================================
--- freeswitch/trunk/libs/esl/src/esl.c	(original)
+++ freeswitch/trunk/libs/esl/src/esl.c	Thu Jan 15 16:11:27 2009
@@ -37,7 +37,6 @@
 #endif
 
 
-
 /* Written by Marc Espie, public domain */
 #define ESL_CTYPE_NUM_CHARS       256
 
@@ -181,6 +180,48 @@
 #endif
 #endif
 
+
+int vasprintf(char **ret, const char *format, va_list ap);
+
+ESL_DECLARE(int) esl_vasprintf(char **ret, const char *fmt, va_list ap)
+{
+#if !defined(WIN32) && !defined(__sun)
+	return vasprintf(ret, fmt, ap);
+#else
+	char *buf;
+	int len;
+	size_t buflen;
+	va_list ap2;
+	char *tmp = NULL;
+
+#ifdef _MSC_VER
+#if _MSC_VER >= 1500
+	/* hack for incorrect assumption in msvc header files for code analysis */
+	__analysis_assume(tmp);
+#endif
+	ap2 = ap;
+#else
+	va_copy(ap2, ap);
+#endif
+
+	len = vsnprintf(tmp, 0, fmt, ap2);
+
+	if (len > 0 && (buf = malloc((buflen = (size_t) (len + 1)))) != NULL) {
+		len = vsnprintf(buf, buflen, fmt, ap);
+		*ret = buf;
+	} else {
+		*ret = NULL;
+		len = -1;
+	}
+
+	va_end(ap2);
+	return len;
+#endif
+}
+
+
+
+
 ESL_DECLARE(int) esl_snprintf(char *buffer, size_t count, const char *fmt, ...)
 {
 	va_list ap;
@@ -236,9 +277,10 @@
 static void default_logger(const char *file, const char *func, int line, int level, const char *fmt, ...)
 {
 	const char *fp;
-	char data[1024];
+	char *data;
 	va_list ap;
-
+	int ret;
+	
 	if (level < 0 || level > 7) {
 		level = 7;
 	}
@@ -250,10 +292,12 @@
 
 	va_start(ap, fmt);
 
-	vsnprintf(data, sizeof(data), fmt, ap);
+	ret = esl_vasprintf(&data, fmt, ap);
 
-
-	fprintf(stderr, "[%s] %s:%d %s() %s", LEVEL_NAMES[level], file, line, func, data);
+	if (ret != -1) {
+		fprintf(stderr, "[%s] %s:%d %s() %s", LEVEL_NAMES[level], file, line, func, data);
+		free(data);
+	}
 
 	va_end(ap);
 
@@ -334,6 +378,14 @@
 	return s;
 }
 
+static void sock_setup(esl_handle_t *handle)
+{
+	int x = 1;
+
+	setsockopt(handle->sock, IPPROTO_TCP, TCP_NODELAY, &x, sizeof(x));
+
+}
+
 ESL_DECLARE(esl_status_t) esl_attach_handle(esl_handle_t *handle, esl_socket_t socket, struct sockaddr_in addr)
 {
 	handle->sock = socket;
@@ -350,9 +402,11 @@
 
 	handle->connected = 1;
 
+	sock_setup(handle);
+
 	esl_send_recv(handle, "connect\n\n");
 	
-
+	
 	if (handle->last_sr_event) {
 		handle->info_event = handle->last_sr_event;
 		handle->last_sr_event = NULL;
@@ -413,6 +467,39 @@
 	return esl_send_recv(handle, send_buf);
 }
 
+
+ESL_DECLARE(esl_status_t) esl_filter(esl_handle_t *handle, const char *header, const char *value)
+{
+	char send_buf[1024] = "";
+	
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
+	snprintf(send_buf, sizeof(send_buf), "filter %s %s\n\n", header, value);
+
+	return esl_send_recv(handle, send_buf);
+}
+
+
+ESL_DECLARE(esl_status_t) esl_events(esl_handle_t *handle, esl_event_type_t etype, const char *value)
+{
+	char send_buf[1024] = "";
+	const char *type = "plain";
+
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
+	if (etype == ESL_EVENT_TYPE_XML) {
+		type = "xml";
+	}
+
+	snprintf(send_buf, sizeof(send_buf), "event %s %s\n\n", type, value);
+	
+	return esl_send_recv(handle, send_buf);
+}
+
 static int esl_socket_reuseaddr(esl_socket_t socket) 
 {
 #ifdef WIN32
@@ -536,6 +623,8 @@
 		goto fail;
 	}
 
+	sock_setup(handle);
+
 	handle->connected = 1;
 
 	if (esl_recv(handle)) {

Modified: freeswitch/trunk/libs/esl/src/esl_event.c
==============================================================================
--- freeswitch/trunk/libs/esl/src/esl_event.c	(original)
+++ freeswitch/trunk/libs/esl/src/esl_event.c	Thu Jan 15 16:11:27 2009
@@ -311,45 +311,6 @@
 	return ESL_SUCCESS;
 }
 
-int vasprintf(char **ret, const char *format, va_list ap);
-
-static int esl_vasprintf(char **ret, const char *fmt, va_list ap)
-{
-#if !defined(WIN32) && !defined(__sun)
-	return vasprintf(ret, fmt, ap);
-#else
-	char *buf;
-	int len;
-	size_t buflen;
-	va_list ap2;
-	char *tmp = NULL;
-
-#ifdef _MSC_VER
-#if _MSC_VER >= 1500
-	/* hack for incorrect assumption in msvc header files for code analysis */
-	__analysis_assume(tmp);
-#endif
-	ap2 = ap;
-#else
-	va_copy(ap2, ap);
-#endif
-
-	len = vsnprintf(tmp, 0, fmt, ap2);
-
-	if (len > 0 && (buf = malloc((buflen = (size_t) (len + 1)))) != NULL) {
-		len = vsnprintf(buf, buflen, fmt, ap);
-		*ret = buf;
-	} else {
-		*ret = NULL;
-		len = -1;
-	}
-
-	va_end(ap2);
-	return len;
-#endif
-}
-
-
 ESL_DECLARE(esl_status_t) esl_event_add_header(esl_event_t *event, esl_stack_t stack, const char *header_name, const char *fmt, ...)
 {
 	int ret = 0;
@@ -496,6 +457,8 @@
 		 * the memory, allocate and only reallocate if we need more.  This avoids an alloc, free CPU
 		 * destroying loop.
 		 */
+
+		
 		new_len = (strlen(hp->value) * 3) + 1;
 
 		if (encode_len < new_len) {
@@ -575,6 +538,7 @@
 		snprintf(buf + len, dlen - len, "\n");
 	}
 
+
 	*str = buf;
 
 	return ESL_SUCCESS;

Modified: freeswitch/trunk/libs/esl/src/include/esl.h
==============================================================================
--- freeswitch/trunk/libs/esl/src/include/esl.h	(original)
+++ freeswitch/trunk/libs/esl/src/include/esl.h	Thu Jan 15 16:11:27 2009
@@ -42,6 +42,12 @@
 typedef struct esl_event_header esl_event_header_t;
 typedef struct esl_event esl_event_t;
 
+
+typedef enum {
+	ESL_EVENT_TYPE_PLAIN,
+	ESL_EVENT_TYPE_XML
+} esl_event_type_t;
+
 #ifdef WIN32
 #define ESL_SEQ_FWHITE FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY
 #define ESL_SEQ_FRED FOREGROUND_RED | FOREGROUND_INTENSITY
@@ -164,6 +170,7 @@
 #include 
 #include 
 #ifndef WIN32
+#include 
 #include 
 #include 
 #include 
@@ -290,6 +297,9 @@
 #define ESL_LOG_EMERG ESL_PRE, ESL_LOG_LEVEL_EMERG
 typedef void (*esl_logger_t)(const char *file, const char *func, int line, int level, const char *fmt, ...);
 
+
+ESL_DECLARE(int) esl_vasprintf(char **ret, const char *fmt, va_list ap);
+
 ESL_DECLARE_DATA extern esl_logger_t esl_log;
 
 ESL_DECLARE(void) esl_global_set_logger(esl_logger_t logger);
@@ -320,6 +330,9 @@
 ESL_DECLARE(esl_status_t) esl_recv_event(esl_handle_t *handle, esl_event_t **save_event);
 ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms, esl_event_t **save_event);
 ESL_DECLARE(esl_status_t) esl_send_recv(esl_handle_t *handle, const char *cmd);
+ESL_DECLARE(esl_status_t) esl_filter(esl_handle_t *handle, const char *header, const char *value);
+ESL_DECLARE(esl_status_t) esl_events(esl_handle_t *handle, esl_event_type_t etype, const char *value);
+
 #define esl_recv(_h) esl_recv_event(_h, NULL)
 #define esl_recv_timed(_h, _ms) esl_recv_event_timed(_h, _ms, NULL)
 

Modified: freeswitch/trunk/libs/esl/testserver.c
==============================================================================
--- freeswitch/trunk/libs/esl/testserver.c	(original)
+++ freeswitch/trunk/libs/esl/testserver.c	Thu Jan 15 16:11:27 2009
@@ -5,23 +5,24 @@
 static void mycallback(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in addr)
 {
 	esl_handle_t handle = {{0}};
-
+	
 	if (fork()) {
 		close(client_sock);
 		return;
 	}
 
-
 	esl_attach_handle(&handle, client_sock, addr);
 
 	printf("Connected! %d\n", handle.sock);
-	
 
+	esl_filter(&handle, "unique-id", esl_event_get_header(handle.info_event, "caller-unique-id"));
+	esl_events(&handle, ESL_EVENT_TYPE_PLAIN, "SESSION_HEARTBEAT CHANNEL_ANSWER CHANNEL_ORIGINATE CHANNEL_PROGRESS CHANNEL_HANGUP "
+			   "CHANNEL_BRIDGE CHANNEL_UNBRIDGE CHANNEL_OUTGOING CHANNEL_EXECUTE CHANNEL_EXECUTE_COMPLETE DTMF CUSTOM conference::maintenance");
 
 	esl_execute(&handle, "answer", NULL, NULL);
-	esl_execute(&handle, "playback", "/ram/swimp.raw", NULL);
+	esl_execute(&handle, "conference", "3000 at default", NULL);
 	
-	sleep(30);
+	while(esl_recv(&handle) == ESL_SUCCESS);
 
 	esl_disconnect(&handle);
 }

Modified: freeswitch/trunk/src/include/switch_apr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_apr.h	(original)
+++ freeswitch/trunk/src/include/switch_apr.h	Thu Jan 15 16:11:27 2009
@@ -946,6 +946,8 @@
 #define SWITCH_SO_SNDBUF 64
 #define SWITCH_SO_RCVBUF 128
 #define SWITCH_SO_DISCONNECTED 256
+#define SWITCH_SO_TCP_NODELAY 512
+
 
  /**
  * @def SWITCH_INET

Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	Thu Jan 15 16:11:27 2009
@@ -74,7 +74,6 @@
 	switch_core_session_t *session;
 	int lost_events;
 	int lost_logs;
-	int hup;
 	time_t last_flush;
 	uint32_t timeout;
 	uint32_t id;
@@ -385,6 +384,7 @@
 	}
 
 	switch_socket_opt_set(new_sock, SWITCH_SO_KEEPALIVE, 1);
+	switch_socket_opt_set(new_sock, SWITCH_SO_TCP_NODELAY, 1);
 
 	if (switch_socket_connect(new_sock, sa) != SWITCH_STATUS_SUCCESS) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Socket Error!\n");
@@ -978,17 +978,6 @@
 			return SWITCH_STATUS_FALSE;
 		}
 
-		if (switch_test_flag(listener, LFLAG_MYEVENTS) && !listener->hup && channel && !switch_channel_ready(channel)) {
-			listener->hup = 1;
-		}
-
-		if (listener->hup == 2 || 
-			((!switch_test_flag(listener, LFLAG_MYEVENTS) && !switch_test_flag(listener, LFLAG_EVENTS)) && 
-			 channel && !switch_channel_ready(channel)) ) {
-			status = SWITCH_STATUS_FALSE;
-            break;
-		}
-
 		if (mlen) {
 			bytes += mlen;
 			do_sleep = 0;
@@ -1124,9 +1113,9 @@
 					do_sleep = 0;
 				}
 			}
-
+			
 			if (switch_test_flag(listener, LFLAG_EVENTS)) {
-				if (switch_queue_trypop(listener->event_queue, &pop) == SWITCH_STATUS_SUCCESS) {
+				while (switch_queue_trypop(listener->event_queue, &pop) == SWITCH_STATUS_SUCCESS) {
 					char hbuf[512];
 					switch_event_t *pevent = (switch_event_t *) pop;
 					char *etype;
@@ -1148,11 +1137,8 @@
 						}
 					}
 
-					if (!listener->ebuf) {
-						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No event data (allocation error?)\n");
-						goto endloop;
-					}
-
+					switch_assert(listener->ebuf);
+					
 					len = strlen(listener->ebuf);
 
 					switch_snprintf(hbuf, sizeof(hbuf), "Content-Length: %" SWITCH_SSIZE_T_FMT "\n" "Content-Type: text/event-%s\n" "\n", len, etype);
@@ -1162,22 +1148,21 @@
 
 					len = strlen(listener->ebuf);
 					switch_socket_send(listener->sock, listener->ebuf, &len);
-
+					
 					switch_safe_free(listener->ebuf);
 
-				  endloop:
+				endloop:
 
-					if (listener->hup == 1 && pevent->event_id == SWITCH_EVENT_CHANNEL_HANGUP) {
-						char *uuid = switch_event_get_header(pevent, "unique-id");
-						if (!strcmp(uuid, switch_core_session_get_uuid(listener->session))) {
-							listener->hup = 2;
-						}
-					}
-					
 					switch_event_destroy(&pevent);
 				}
 			}
 		}
+
+		if (channel && !switch_channel_ready(channel)) {
+			status = SWITCH_STATUS_FALSE;
+            break;
+		}
+		
 		if (do_sleep) {
 			switch_cond_next();
 		}
@@ -1775,6 +1760,9 @@
 		}
 	}
 
+	switch_socket_opt_set(listener->sock, SWITCH_SO_TCP_NODELAY, TRUE);
+	switch_socket_opt_set(listener->sock, SWITCH_SO_NONBLOCK, TRUE);
+
 	if (prefs.acl_count && listener->sa && !switch_strlen_zero(listener->remote_ip)) {
 		uint32_t x = 0;
 
@@ -1932,10 +1920,18 @@
 	switch_mutex_unlock(listener->filter_mutex);
 	if (listener->sock) {
 		char disco_buf[512] = "";
-		const char message[] = "Disconnected, goodbye!\nSee you at ClueCon http://www.cluecon.com/ !!!\n";
+		const char message[] = "Disconnected, goodbye.\nSee you at ClueCon! http://www.cluecon.com/\n";
 		int mlen = strlen(message);
 		
-		switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\nContent-Length: %d\n\n", mlen);
+		if (listener->session) {
+			switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\n"
+							"Controlled-Session-UUID: %s\n"
+							"Content-Length: %d\n\n", 
+							switch_core_session_get_uuid(listener->session), mlen);
+		} else {
+			switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\nContent-Length: %d\n\n", mlen);
+		}
+
 		len = strlen(disco_buf);
 		switch_socket_send(listener->sock, disco_buf, &len);
 		len = mlen;

Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c	(original)
+++ freeswitch/trunk/src/switch_ivr.c	Thu Jan 15 16:11:27 2009
@@ -453,7 +453,7 @@
 						switch_time_t b4, aftr;
 
 						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Command Execute %s(%s)\n",
-										  switch_channel_get_name(channel), app_name, app_arg);
+										  switch_channel_get_name(channel), app_name, switch_str_nil(app_arg));
 						b4 = switch_timestamp_now();
 						switch_core_session_exec(session, application_interface, app_arg);
 						aftr = switch_timestamp_now();


From rupa at freeswitch.org  Thu Jan 15 14:12:58 2009
From: rupa at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 16:12:58 -0600
Subject: [Freeswitch-svn] [commit] r11232 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: rupa
Date: Thu Jan 15 15:51:15 2009
New Revision: 11232

Log:
move svn braces


Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 15:51:15 2009
@@ -131,7 +131,8 @@
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown);
 SWITCH_MODULE_DEFINITION(mod_lcr, mod_lcr_load, mod_lcr_shutdown, NULL);
 
-static char *get_bridge_data(const char *dialed_number, lcr_route cur_route) {
+static char *get_bridge_data(const char *dialed_number, lcr_route cur_route)
+{
 	size_t lstrip;
 	size_t  tstrip;
 	char *data = NULL;
@@ -158,7 +159,8 @@
 	return data;
 }
 
-void init_max_lens(max_len maxes) {
+void init_max_lens(max_len maxes)
+{
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->carrier_name = (headers[LCR_CARRIER_PLACE] == NULL ? 0 : strlen(headers[LCR_CARRIER_PLACE]));
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
@@ -166,7 +168,8 @@
 	maxes->rate = 8;
 }
 
-switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number) {
+switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)
+{
 	lcr_route current = NULL;
 
 	if (routes == NULL) {
@@ -211,7 +214,8 @@
 }
 
 /* try each type of random until we suceed */
-static switch_bool_t set_db_random() {
+static switch_bool_t set_db_random()
+{
 	char *sql = NULL;
 	if (globals.odbc_dsn) {
 		sql = "SELECT * FROM lcr ORDER BY rand() LIMIT 1";
@@ -231,7 +235,8 @@
 }
 
 /* make a new string with digits only */
-static char* string_digitsonly(const char *str) {
+static char *string_digitsonly(const char *str) 
+{
 	char *p, *np, *newstr;
 	size_t len;
 
@@ -253,7 +258,8 @@
 	return newstr;
 }
 
-static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata) {
+static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata)
+{
 	if (globals.odbc_dsn) {
 		if(switch_odbc_handle_callback_exec(globals.master_odbc, sql, callback, pdata)
 				== SWITCH_ODBC_FAIL) {
@@ -265,7 +271,8 @@
 	return SWITCH_FALSE;
 }
 
-int route_add_callback(void *pArg, int argc, char **argv, char **columnNames) {
+int route_add_callback(void *pArg, int argc, char **argv, char **columnNames)
+{
 	lcr_route additional = NULL;
 	lcr_route current = NULL;
 	callback_t *cbt = (callback_t *) pArg;
@@ -325,7 +332,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name) {
+switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name)
+{
 	/* instantiate the object/struct we defined earlier */
 	switch_stream_handle_t sql_stream = { 0 };
 	size_t n, digit_len = strlen(digits);
@@ -380,7 +388,8 @@
 	}
 }
 
-static switch_status_t lcr_load_config() {
+static switch_status_t lcr_load_config()
+{
 	char *cf = "lcr.conf";
 	switch_xml_t cfg, xml, settings, param, x_profile, x_profiles;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
@@ -513,7 +522,8 @@
 	return status;
 }
 
-static void destroy_list(lcr_route *head) {
+static void destroy_list(lcr_route *head)
+{
 	lcr_route cur = NULL, top = *head;
 
 	while (top) {
@@ -531,7 +541,8 @@
 	*head = NULL;
 }
 
-SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt) {
+SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt)
+{
 	switch_caller_extension_t *extension = NULL;
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 	callback_t routes = { 0 };
@@ -569,7 +580,8 @@
 	return extension;
 }
 
-void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream) {
+void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream)
+{
 	size_t i;
 
 	//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "repeating %d of '%s'\n", how_many, what);
@@ -629,7 +641,8 @@
 	}
 }
 
-SWITCH_STANDARD_API(dialplan_lcr_function) {
+SWITCH_STANDARD_API(dialplan_lcr_function)
+{
 	char *argv[4] = { 0 };
 	int argc;
 	char *mydata = NULL;
@@ -731,7 +744,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load) {
+SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load)
+{
 	switch_api_interface_t *dialplan_lcr_api_interface;
 	switch_application_interface_t *app_interface;
 	switch_dialplan_interface_t *dp_interface;
@@ -770,7 +784,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown) {
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown)
+{
 	return SWITCH_STATUS_SUCCESS;
 }
 


From rupa at freeswitch.org  Thu Jan 15 14:15:03 2009
From: rupa at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 16:15:03 -0600
Subject: [Freeswitch-svn] [commit] r11232 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: rupa
Date: Thu Jan 15 15:51:15 2009
New Revision: 11232

Log:
move svn braces


Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 15:51:15 2009
@@ -131,7 +131,8 @@
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown);
 SWITCH_MODULE_DEFINITION(mod_lcr, mod_lcr_load, mod_lcr_shutdown, NULL);
 
-static char *get_bridge_data(const char *dialed_number, lcr_route cur_route) {
+static char *get_bridge_data(const char *dialed_number, lcr_route cur_route)
+{
 	size_t lstrip;
 	size_t  tstrip;
 	char *data = NULL;
@@ -158,7 +159,8 @@
 	return data;
 }
 
-void init_max_lens(max_len maxes) {
+void init_max_lens(max_len maxes)
+{
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->carrier_name = (headers[LCR_CARRIER_PLACE] == NULL ? 0 : strlen(headers[LCR_CARRIER_PLACE]));
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
@@ -166,7 +168,8 @@
 	maxes->rate = 8;
 }
 
-switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number) {
+switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)
+{
 	lcr_route current = NULL;
 
 	if (routes == NULL) {
@@ -211,7 +214,8 @@
 }
 
 /* try each type of random until we suceed */
-static switch_bool_t set_db_random() {
+static switch_bool_t set_db_random()
+{
 	char *sql = NULL;
 	if (globals.odbc_dsn) {
 		sql = "SELECT * FROM lcr ORDER BY rand() LIMIT 1";
@@ -231,7 +235,8 @@
 }
 
 /* make a new string with digits only */
-static char* string_digitsonly(const char *str) {
+static char *string_digitsonly(const char *str) 
+{
 	char *p, *np, *newstr;
 	size_t len;
 
@@ -253,7 +258,8 @@
 	return newstr;
 }
 
-static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata) {
+static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback_func_t callback, void *pdata)
+{
 	if (globals.odbc_dsn) {
 		if(switch_odbc_handle_callback_exec(globals.master_odbc, sql, callback, pdata)
 				== SWITCH_ODBC_FAIL) {
@@ -265,7 +271,8 @@
 	return SWITCH_FALSE;
 }
 
-int route_add_callback(void *pArg, int argc, char **argv, char **columnNames) {
+int route_add_callback(void *pArg, int argc, char **argv, char **columnNames)
+{
 	lcr_route additional = NULL;
 	lcr_route current = NULL;
 	callback_t *cbt = (callback_t *) pArg;
@@ -325,7 +332,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name) {
+switch_status_t lcr_do_lookup(callback_t *cb_struct, char *digits, char* profile_name)
+{
 	/* instantiate the object/struct we defined earlier */
 	switch_stream_handle_t sql_stream = { 0 };
 	size_t n, digit_len = strlen(digits);
@@ -380,7 +388,8 @@
 	}
 }
 
-static switch_status_t lcr_load_config() {
+static switch_status_t lcr_load_config()
+{
 	char *cf = "lcr.conf";
 	switch_xml_t cfg, xml, settings, param, x_profile, x_profiles;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
@@ -513,7 +522,8 @@
 	return status;
 }
 
-static void destroy_list(lcr_route *head) {
+static void destroy_list(lcr_route *head)
+{
 	lcr_route cur = NULL, top = *head;
 
 	while (top) {
@@ -531,7 +541,8 @@
 	*head = NULL;
 }
 
-SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt) {
+SWITCH_STANDARD_DIALPLAN(lcr_dialplan_hunt)
+{
 	switch_caller_extension_t *extension = NULL;
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 	callback_t routes = { 0 };
@@ -569,7 +580,8 @@
 	return extension;
 }
 
-void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream) {
+void str_repeat(size_t how_many, char *what, switch_stream_handle_t *str_stream)
+{
 	size_t i;
 
 	//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "repeating %d of '%s'\n", how_many, what);
@@ -629,7 +641,8 @@
 	}
 }
 
-SWITCH_STANDARD_API(dialplan_lcr_function) {
+SWITCH_STANDARD_API(dialplan_lcr_function)
+{
 	char *argv[4] = { 0 };
 	int argc;
 	char *mydata = NULL;
@@ -731,7 +744,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load) {
+SWITCH_MODULE_LOAD_FUNCTION(mod_lcr_load)
+{
 	switch_api_interface_t *dialplan_lcr_api_interface;
 	switch_application_interface_t *app_interface;
 	switch_dialplan_interface_t *dp_interface;
@@ -770,7 +784,8 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown) {
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_lcr_shutdown)
+{
 	return SWITCH_STATUS_SUCCESS;
 }
 


From mikej at freeswitch.org  Thu Jan 15 14:50:51 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 16:50:51 -0600
Subject: [Freeswitch-svn] [commit] r11235 -
	freeswitch/trunk/src/mod/endpoints/mod_portaudio
Message-ID: 

Author: mikej
Date: Thu Jan 15 16:50:50 2009
New Revision: 11235

Log:
fix windows build

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Thu Jan 15 16:50:50 2009
@@ -1769,14 +1769,13 @@
 			globals.ringdev = devval;
 		}
 	} else if ((argv[1] && !strcasecmp(argv[0], "play")) || !strcasecmp(argv[0], "ringtest")) {
+		switch_file_handle_t fh = { 0 };
+		char *playfile = NULL;
 		if (globals.audio_stream) {
 			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
 			goto done;
 		}
 
-		switch_file_handle_t fh = { 0 };
-		char *playfile = NULL;
-
 		if (!strcasecmp(argv[0], "ringtest")) {
 			playfile = globals.ring_file;
 		} else {
@@ -1816,7 +1815,8 @@
 		if (engage_device(globals.sample_rate, globals.codec_ms) == SWITCH_STATUS_SUCCESS) {
 			int samples = 0;
 			int success = 0;
-			for(int i = 0; i < 400; i++) {
+			int i;
+			for(i = 0; i < 400; i++) {
 				if ((samples = ReadAudioStream(globals.audio_stream, globals.read_frame.data,
 						globals.read_codec.implementation->samples_per_packet, &globals.timer))) {
 					WriteAudioStream(globals.audio_stream, globals.read_frame.data, (long) samples, &globals.timer);


From andrew at freeswitch.org  Thu Jan 15 14:58:59 2009
From: andrew at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 16:58:59 -0600
Subject: [Freeswitch-svn] [commit] r11236 -
	freeswitch/trunk/src/mod/endpoints/mod_portaudio
Message-ID: 

Author: andrew
Date: Thu Jan 15 16:58:59 2009
New Revision: 11236

Log:
Commit patch from MODENDP-174


Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Thu Jan 15 16:58:59 2009
@@ -1030,7 +1030,7 @@
 
 static switch_status_t devlist(char **argv, int argc, switch_stream_handle_t *stream)
 {
-	int i, numDevices;
+	int i, numDevices, prev;
 	const PaDeviceInfo *deviceInfo;
 
 	numDevices = Pa_GetDeviceCount();
@@ -1039,7 +1039,32 @@
 	}
 	for (i = 0; i < numDevices; i++) {
 		deviceInfo = Pa_GetDeviceInfo(i);
-		stream->write_function(stream, "%d;%s;%d;%d\n", i, deviceInfo->name, deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels);
+		stream->write_function(stream, "%d;%s;%d;%d;", i, deviceInfo->name, deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels);
+
+		prev = 0;
+		if (globals.ringdev == i) {
+			stream->write_function(stream, "r");
+			prev = 1;
+		}
+
+		if (globals.indev == i) {
+			if (prev) {
+				stream->write_function(stream, ",");
+			}
+			stream->write_function(stream, "i");
+			prev = 1;
+		}
+
+		if (globals.outdev == i) {
+			if (prev) {
+				stream->write_function(stream, ",");
+			}
+			stream->write_function(stream, "o");
+			prev = 1;
+		}
+
+		stream->write_function(stream, "\n");
+
 	}
 
 	return SWITCH_STATUS_SUCCESS;


From mikej at freeswitch.org  Thu Jan 15 15:05:50 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 17:05:50 -0600
Subject: [Freeswitch-svn] [commit] r11237 - freeswitch/trunk/libs/esl/src
Message-ID: 

Author: mikej
Date: Thu Jan 15 17:05:50 2009
New Revision: 11237

Log:
fix windows build

Modified:
   freeswitch/trunk/libs/esl/src/esl.c

Modified: freeswitch/trunk/libs/esl/src/esl.c
==============================================================================
--- freeswitch/trunk/libs/esl/src/esl.c	(original)
+++ freeswitch/trunk/libs/esl/src/esl.c	Thu Jan 15 17:05:50 2009
@@ -380,10 +380,14 @@
 
 static void sock_setup(esl_handle_t *handle)
 {
+#ifdef WIN32
+	BOOL bOptVal = TRUE;
+	int bOptLen = sizeof(BOOL);
+	setsockopt(handle->sock, IPPROTO_TCP, TCP_NODELAY, (const char *)&bOptVal, bOptLen);
+#else
 	int x = 1;
-
 	setsockopt(handle->sock, IPPROTO_TCP, TCP_NODELAY, &x, sizeof(x));
-
+#endif
 }
 
 ESL_DECLARE(esl_status_t) esl_attach_handle(esl_handle_t *handle, esl_socket_t socket, struct sockaddr_in addr)


From brian at freeswitch.org  Thu Jan 15 15:13:45 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 17:13:45 -0600
Subject: [Freeswitch-svn] [commit] r11238 - in freeswitch/trunk/conf:
	autoload_configs mrcp_profiles
Message-ID: 

Author: brian
Date: Thu Jan 15 17:13:45 2009
New Revision: 11238

Log:
remove these files

Removed:
   freeswitch/trunk/conf/autoload_configs/openmrcp.conf.xml
   freeswitch/trunk/conf/mrcp_profiles/


From brian at freeswitch.org  Thu Jan 15 15:15:59 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 17:15:59 -0600
Subject: [Freeswitch-svn] [commit] r11239 - freeswitch/trunk
Message-ID: 

Author: brian
Date: Thu Jan 15 17:15:59 2009
New Revision: 11239

Log:
tweak spec

Modified:
   freeswitch/trunk/freeswitch.spec

Modified: freeswitch/trunk/freeswitch.spec
==============================================================================
--- freeswitch/trunk/freeswitch.spec	(original)
+++ freeswitch/trunk/freeswitch.spec	Thu Jan 15 17:15:59 2009
@@ -153,7 +153,7 @@
 PASSTHRU_CODEC_MODULES="codecs/mod_g729 codecs/mod_g723_1 codecs/mod_amr"
 SPIDERMONKEY_MODULES="languages/mod_spidermonkey languages/mod_spidermonkey_curl languages/mod_spidermonkey_core_db languages/mod_spidermonkey_odbc languages/mod_spidermonkey_socket languages/mod_spidermonkey_teletone"
 APPLICATIONS_MODULES="applications/mod_commands applications/mod_conference applications/mod_dptools applications/mod_enum applications/mod_esf applications/mod_expr applications/mod_fifo applications/mod_limit applications/mod_rss applications/mod_voicemail applications/mod_fsv"
-ASR_TTS_MODULES="asr_tts/mod_openmrcp asr_tts/mod_pocketsphinx asr_tts/mod_flite"
+ASR_TTS_MODULES="asr_tts/mod_pocketsphinx asr_tts/mod_flite"
 CODECS_MODULES="codecs/mod_ilbc codecs/mod_h26x codecs/mod_voipcodecs codecs/mod_speex"
 DIALPLANS_MODULES="dialplans/mod_dialplan_asterisk dialplans/mod_dialplan_directory dialplans/mod_dialplan_xml"
 DIRECTORIES_MODULES=
@@ -323,7 +323,6 @@
 %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/local_stream.conf.xml
 %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/logfile.conf.xml
 %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/modules.conf.xml
-%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/openmrcp.conf.xml
 %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/pocketsphinx.conf.xml
 %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/portaudio.conf.xml
 %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/post_load_modules.conf.xml
@@ -376,7 +375,6 @@
 %{prefix}/mod/mod_limit.so*
 %{prefix}/mod/mod_rss.so*
 %{prefix}/mod/mod_voicemail.so*
-%{prefix}/mod/mod_openmrcp.so*
 %{prefix}/mod/mod_pocketsphinx.so*
 %{prefix}/mod/mod_flite.so*
 %{prefix}/mod/mod_ilbc.so* 


From brian at freeswitch.org  Thu Jan 15 15:25:05 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 17:25:05 -0600
Subject: [Freeswitch-svn] [commit] r11240 - freeswitch/trunk/debian
Message-ID: 

Author: brian
Date: Thu Jan 15 17:25:05 2009
New Revision: 11240

Log:
removal of mrcp from debs

Modified:
   freeswitch/trunk/debian/dirs
   freeswitch/trunk/debian/freeswitch.conffiles
   freeswitch/trunk/debian/freeswitch.install
   freeswitch/trunk/debian/rules

Modified: freeswitch/trunk/debian/dirs
==============================================================================
--- freeswitch/trunk/debian/dirs	(original)
+++ freeswitch/trunk/debian/dirs	Thu Jan 15 17:25:05 2009
@@ -6,7 +6,6 @@
 opt/freeswitch/conf/directory/default
 opt/freeswitch/conf/autoload_configs
 opt/freeswitch/conf/jingle_profiles
-opt/freeswitch/conf/mrcp_profiles
 opt/freeswitch/log
 opt/freeswitch/db
 opt/freeswitch/bin/scripts

Modified: freeswitch/trunk/debian/freeswitch.conffiles
==============================================================================
--- freeswitch/trunk/debian/freeswitch.conffiles	(original)
+++ freeswitch/trunk/debian/freeswitch.conffiles	Thu Jan 15 17:25:05 2009
@@ -58,7 +58,6 @@
 /opt/freeswitch/conf/autoload_configs/local_stream.conf.xml
 /opt/freeswitch/conf/autoload_configs/conference.conf.xml
 /opt/freeswitch/conf/autoload_configs/event_socket.conf.xml
-/opt/freeswitch/conf/autoload_configs/openmrcp.conf.xml
 /opt/freeswitch/conf/autoload_configs/modules.conf.xml
 /opt/freeswitch/conf/autoload_configs/dingaling.conf.xml
 /opt/freeswitch/conf/autoload_configs/iax.conf.xml
@@ -72,5 +71,3 @@
 /opt/freeswitch/conf/autoload_configs/fax.conf.xml
 /opt/freeswitch/conf/jingle_profiles/server.xml
 /opt/freeswitch/conf/jingle_profiles/client.xml
-/opt/freeswitch/conf/mrcp_profiles/openmrcp-v2.xml
-/opt/freeswitch/conf/mrcp_profiles/openmrcp-v1.xml

Modified: freeswitch/trunk/debian/freeswitch.install
==============================================================================
--- freeswitch/trunk/debian/freeswitch.install	(original)
+++ freeswitch/trunk/debian/freeswitch.install	Thu Jan 15 17:25:05 2009
@@ -22,7 +22,6 @@
 opt/freeswitch/mod/mod_dptools.so*
 opt/freeswitch/mod/mod_enum.so*
 opt/freeswitch/mod/mod_fifo.so*
-opt/freeswitch/mod/mod_openmrcp.so*
 opt/freeswitch/mod/mod_voipcodecs.so*
 opt/freeswutch/mod/mod_speex.so*
 opt/freeswitch/mod/mod_dialplan*.so*
@@ -106,7 +105,6 @@
 opt/freeswitch/conf/autoload_configs/local_stream.conf.xml
 opt/freeswitch/conf/autoload_configs/conference.conf.xml
 opt/freeswitch/conf/autoload_configs/event_socket.conf.xml
-opt/freeswitch/conf/autoload_configs/openmrcp.conf.xml
 opt/freeswitch/conf/autoload_configs/modules.conf.xml
 opt/freeswitch/conf/autoload_configs/dingaling.conf.xml
 opt/freeswitch/conf/autoload_configs/iax.conf.xml
@@ -120,5 +118,3 @@
 opt/freeswitch/conf/autoload_configs/fax.conf.xml
 opt/freeswitch/conf/jingle_profiles/server.xml
 opt/freeswitch/conf/jingle_profiles/client.xml
-opt/freeswitch/conf/mrcp_profiles/openmrcp-v2.xml
-opt/freeswitch/conf/mrcp_profiles/openmrcp-v1.xml

Modified: freeswitch/trunk/debian/rules
==============================================================================
--- freeswitch/trunk/debian/rules	(original)
+++ freeswitch/trunk/debian/rules	Thu Jan 15 17:25:05 2009
@@ -14,7 +14,7 @@
 			    applications/mod_esf applications/mod_expr applications/mod_fifo applications/mod_limit \
 			    applications/mod_rss applications/mod_voicemail applications/mod_fsv \
 			    applications/mod_fax
-export ASR_TTS_MODULES=asr_tts/mod_openmrcp
+export ASR_TTS_MODULES=
 export CODECS_MODULES=codecs/mod_ilbc codecs/mod_h26x codecs/mod_speex codecs/mod_voipcodecs
 export DIALPLANS_MODULES=dialplans/mod_dialplan_asterisk dialplans/mod_dialplan_directory dialplans/mod_dialplan_xml
 export DIRECTORIES_MODULES=


From brian at freeswitch.org  Thu Jan 15 15:29:18 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 17:29:18 -0600
Subject: [Freeswitch-svn] [commit] r11241 -
	freeswitch/trunk/conf/sip_profiles
Message-ID: 

Author: brian
Date: Thu Jan 15 17:29:18 2009
New Revision: 11241

Log:
enable these options to make the default more user friendly when it comes to domains

Modified:
   freeswitch/trunk/conf/sip_profiles/internal.xml

Modified: freeswitch/trunk/conf/sip_profiles/internal.xml
==============================================================================
--- freeswitch/trunk/conf/sip_profiles/internal.xml	(original)
+++ freeswitch/trunk/conf/sip_profiles/internal.xml	Thu Jan 15 17:29:18 2009
@@ -52,7 +52,7 @@
     
     
     
-    
+    
     
     
     
@@ -144,10 +144,15 @@
     
     
     
+    
     
-    
+    
     
-    
+    
     
     
     


From brian at freeswitch.org  Thu Jan 15 15:32:03 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 17:32:03 -0600
Subject: [Freeswitch-svn] [commit] r11242 - in freeswitch/trunk:
	conf/sip_profiles src
Message-ID: 

Author: brian
Date: Thu Jan 15 17:32:03 2009
New Revision: 11242

Log:
test

Modified:
   freeswitch/trunk/conf/sip_profiles/internal-ipv6.xml
   freeswitch/trunk/src/switch.c

Modified: freeswitch/trunk/conf/sip_profiles/internal-ipv6.xml
==============================================================================
--- freeswitch/trunk/conf/sip_profiles/internal-ipv6.xml	(original)
+++ freeswitch/trunk/conf/sip_profiles/internal-ipv6.xml	Thu Jan 15 17:32:03 2009
@@ -101,10 +101,15 @@
     
     
     
+    
     
-    
+    
     
-    
+    
     
     
     

Modified: freeswitch/trunk/src/switch.c
==============================================================================
--- freeswitch/trunk/src/switch.c	(original)
+++ freeswitch/trunk/src/switch.c	Thu Jan 15 17:32:03 2009
@@ -83,7 +83,7 @@
 
 	/* set the globals so we can use the global paths. */
 	switch_core_set_globals();
-
+	printf("WTF");
 	/* get the full path of the pid file. */
 	switch_snprintf(path, sizeof(path), "%s%s%s", SWITCH_GLOBAL_dirs.log_dir, SWITCH_PATH_SEPARATOR, pfile);
 


From brian at freeswitch.org  Thu Jan 15 15:32:20 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 17:32:20 -0600
Subject: [Freeswitch-svn] [commit] r11243 - freeswitch/trunk/src
Message-ID: 

Author: brian
Date: Thu Jan 15 17:32:19 2009
New Revision: 11243

Log:
doh

Modified:
   freeswitch/trunk/src/switch.c

Modified: freeswitch/trunk/src/switch.c
==============================================================================
--- freeswitch/trunk/src/switch.c	(original)
+++ freeswitch/trunk/src/switch.c	Thu Jan 15 17:32:19 2009
@@ -83,7 +83,7 @@
 
 	/* set the globals so we can use the global paths. */
 	switch_core_set_globals();
-	printf("WTF");
+
 	/* get the full path of the pid file. */
 	switch_snprintf(path, sizeof(path), "%s%s%s", SWITCH_GLOBAL_dirs.log_dir, SWITCH_PATH_SEPARATOR, pfile);
 


From anthm at freeswitch.org  Thu Jan 15 15:40:11 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 17:40:11 -0600
Subject: [Freeswitch-svn] [commit] r11244 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Thu Jan 15 17:40:11 2009
New Revision: 11244

Log:
fix ignored error condition bug reported on the dev list

Modified:
   freeswitch/trunk/src/switch_odbc.c

Modified: freeswitch/trunk/src/switch_odbc.c
==============================================================================
--- freeswitch/trunk/src/switch_odbc.c	(original)
+++ freeswitch/trunk/src/switch_odbc.c	Thu Jan 15 17:40:11 2009
@@ -331,7 +331,8 @@
 	SQLLEN m = 0, t = 0;
 	char *err_str = NULL;
 	int result;
-
+	int err = 0;
+	
 	switch_assert(callback != NULL);
 
 	if (!db_is_up(handle)) {
@@ -366,6 +367,7 @@
 		int done = 0;
 
 		if (!(result = SQLFetch(stmt)) == SQL_SUCCESS) {
+			err++;
 			break;
 		}
 
@@ -407,9 +409,11 @@
 	
 	SQLFreeHandle(SQL_HANDLE_STMT, stmt);
 
-	return SWITCH_ODBC_SUCCESS;
+	if (!err) {
+		return SWITCH_ODBC_SUCCESS;
+	}
 
-  error:
+ error:
 
 	/* err_str is already defined  for some error cases */
 	if (err_str != NULL) {


From intralanman at freeswitch.org  Thu Jan 15 15:47:07 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 17:47:07 -0600
Subject: [Freeswitch-svn] [commit] r11245 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: intralanman
Date: Thu Jan 15 17:47:06 2009
New Revision: 11245

Log:
test

Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 17:47:06 2009
@@ -166,6 +166,7 @@
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->rate = 8;
+	printf("WTF\n");
 }
 
 switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)


From intralanman at freeswitch.org  Thu Jan 15 16:02:25 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 18:02:25 -0600
Subject: [Freeswitch-svn] [commit] r11246 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: intralanman
Date: Thu Jan 15 18:02:25 2009
New Revision: 11246

Log:
test

Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 18:02:25 2009
@@ -166,7 +166,7 @@
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->rate = 8;
-	printf("WTF\n");
+#	printf("WTF\n");
 }
 
 switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)


From intralanman at freeswitch.org  Thu Jan 15 16:03:39 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 18:03:39 -0600
Subject: [Freeswitch-svn] [commit] r11247 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: intralanman
Date: Thu Jan 15 18:03:39 2009
New Revision: 11247

Log:
test

Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 18:03:39 2009
@@ -166,7 +166,7 @@
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->rate = 8;
-#	printf("WTF\n");
+	printf("WTF\n");
 }
 
 switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)


From intralanman at freeswitch.org  Thu Jan 15 16:06:26 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 18:06:26 -0600
Subject: [Freeswitch-svn] [commit] r11248 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: intralanman
Date: Thu Jan 15 18:06:26 2009
New Revision: 11248

Log:
test

Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 18:06:26 2009
@@ -166,7 +166,7 @@
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->rate = 8;
-	printf("WTF\n");
+#	printf("WTF\n");
 }
 
 switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)


From intralanman at freeswitch.org  Thu Jan 15 16:16:16 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 18:16:16 -0600
Subject: [Freeswitch-svn] [commit] r11249 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: intralanman
Date: Thu Jan 15 18:16:16 2009
New Revision: 11249

Log:
untest

Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 18:16:16 2009
@@ -166,7 +166,6 @@
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->rate = 8;
-#	printf("WTF\n");
 }
 
 switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)


From intralanman at freeswitch.org  Thu Jan 15 16:56:40 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 18:56:40 -0600
Subject: [Freeswitch-svn] [commit] r11250 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: intralanman
Date: Thu Jan 15 18:56:39 2009
New Revision: 11250

Log:
test

Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 18:56:39 2009
@@ -166,6 +166,9 @@
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->rate = 8;
+	printf("WTF\n");
+	printf("WTF\n");
+	printf("WTF\n");
 }
 
 switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)


From intralanman at freeswitch.org  Thu Jan 15 17:00:11 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 19:00:11 -0600
Subject: [Freeswitch-svn] [commit] r11251 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: intralanman
Date: Thu Jan 15 19:00:11 2009
New Revision: 11251

Log:
test

Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 19:00:11 2009
@@ -166,9 +166,9 @@
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->rate = 8;
-	printf("WTF\n");
-	printf("WTF\n");
-	printf("WTF\n");
+#	printf("WTF\n");
+#	printf("WTF\n");
+#	printf("WTF\n");
 }
 
 switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)


From intralanman at freeswitch.org  Thu Jan 15 17:11:12 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 19:11:12 -0600
Subject: [Freeswitch-svn] [commit] r11252 -
	freeswitch/trunk/src/mod/applications/mod_lcr
Message-ID: 

Author: intralanman
Date: Thu Jan 15 19:11:11 2009
New Revision: 11252

Log:
i'm finally over my tourettes

Modified:
   freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c

Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c	Thu Jan 15 19:11:11 2009
@@ -166,9 +166,6 @@
 	maxes->dialstring = (headers[LCR_DIALSTRING_PLACE] == NULL ? 0 : strlen(headers[LCR_DIALSTRING_PLACE]));
 	maxes->digit_str = (headers[LCR_DIGITS_PLACE] == NULL ? 0 : strlen(headers[LCR_DIGITS_PLACE]));
 	maxes->rate = 8;
-#	printf("WTF\n");
-#	printf("WTF\n");
-#	printf("WTF\n");
 }
 
 switch_status_t process_max_lengths(max_obj_t *maxes, lcr_route routes, char *destination_number)


From andrew at freeswitch.org  Thu Jan 15 17:40:32 2009
From: andrew at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 15 Jan 2009 19:40:32 -0600
Subject: [Freeswitch-svn] [commit] r11253 -
	freeswitch/trunk/src/mod/endpoints/mod_portaudio
Message-ID: 

Author: andrew
Date: Thu Jan 15 19:40:32 2009
New Revision: 11253

Log:
Add support for 'pa devlist xml' to return the device list and which are the ring/in/out devices in XML format


Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Thu Jan 15 19:40:32 2009
@@ -1037,34 +1037,51 @@
 	if (numDevices < 0) {
 		return SWITCH_STATUS_SUCCESS;
 	}
-	for (i = 0; i < numDevices; i++) {
-		deviceInfo = Pa_GetDeviceInfo(i);
-		stream->write_function(stream, "%d;%s;%d;%d;", i, deviceInfo->name, deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels);
 
-		prev = 0;
-		if (globals.ringdev == i) {
-			stream->write_function(stream, "r");
-			prev = 1;
+	if (argv[0] && !strcasecmp(argv[0], "xml")) {
+		stream->write_function(stream, "\n\t\n");
+
+		for (i = 0; i < numDevices; i++) {
+			deviceInfo = Pa_GetDeviceInfo(i);
+			stream->write_function(stream, "\t\t\n", i, deviceInfo->name, deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels);
 		}
 
-		if (globals.indev == i) {
-			if (prev) {
-				stream->write_function(stream, ",");
+		stream->write_function(stream, "\t\n\t\n"
+				"\t\t\n"
+				"\t\t\n"
+				"\t\t\n"
+				"\t\n\n", globals.ringdev, globals.indev, globals.outdev);
+	} else {
+
+		for (i = 0; i < numDevices; i++) {
+			deviceInfo = Pa_GetDeviceInfo(i);
+			stream->write_function(stream, "%d;%s;%d;%d;", i, deviceInfo->name, deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels);
+
+			prev = 0;
+			if (globals.ringdev == i) {
+				stream->write_function(stream, "r");
+				prev = 1;
 			}
-			stream->write_function(stream, "i");
-			prev = 1;
-		}
 
-		if (globals.outdev == i) {
-			if (prev) {
-				stream->write_function(stream, ",");
+			if (globals.indev == i) {
+				if (prev) {
+					stream->write_function(stream, ",");
+				}
+				stream->write_function(stream, "i");
+				prev = 1;
+			}
+
+			if (globals.outdev == i) {
+				if (prev) {
+					stream->write_function(stream, ",");
+				}
+				stream->write_function(stream, "o");
+				prev = 1;
 			}
-			stream->write_function(stream, "o");
-			prev = 1;
-		}
 
-		stream->write_function(stream, "\n");
+			stream->write_function(stream, "\n");
 
+		}
 	}
 
 	return SWITCH_STATUS_SUCCESS;
@@ -1670,7 +1687,7 @@
 		"pa switch [|none]\n"
 		"pa dtmf \n"
 		"pa flags [on|off] [ear] [mouth]\n"
-		"pa devlist\n"
+		"pa devlist [xml]\n"
 		"pa indev #|\n"
 		"pa outdev #|\n"
 		"pa ringdev #|\n"


From greenlizard at freeswitch.org  Thu Jan 15 22:03:51 2009
From: greenlizard at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 00:03:51 -0600
Subject: [Freeswitch-svn] [commit] r11254 -
	freeswitch/trunk/src/mod/languages/mod_python
Message-ID: 

Author: greenlizard
Date: Fri Jan 16 00:03:51 2009
New Revision: 11254

Log:
Fix contributed by Stas Shtin to stop a resource leak, see MODLANG-95

Modified:
   freeswitch/trunk/src/mod/languages/mod_python/mod_python.c

Modified: freeswitch/trunk/src/mod/languages/mod_python/mod_python.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_python/mod_python.c	(original)
+++ freeswitch/trunk/src/mod/languages/mod_python/mod_python.c	Fri Jan 16 00:03:51 2009
@@ -198,7 +198,10 @@
 	}
 	
 	if (tstate) {
+		// thread state must be cleared explicitly or we'll get memory leaks
+		PyThreadState_Clear(tstate);
 		PyEval_ReleaseThread(tstate);
+		PyThreadState_Delete(tstate);
 	}
 	
  done:


From anthm at freeswitch.org  Fri Jan 16 07:32:10 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 09:32:10 -0600
Subject: [Freeswitch-svn] [commit] r11255 - in freeswitch/trunk: libs/esl
	src/mod/event_handlers/mod_event_socket
Message-ID: 

Author: anthm
Date: Fri Jan 16 09:32:10 2009
New Revision: 11255

Log:
add linger event_socket command to make outbound socket notify channel disconnect and wait for you to terminate

Modified:
   freeswitch/trunk/libs/esl/testserver.c
   freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c

Modified: freeswitch/trunk/libs/esl/testserver.c
==============================================================================
--- freeswitch/trunk/libs/esl/testserver.c	(original)
+++ freeswitch/trunk/libs/esl/testserver.c	Fri Jan 16 09:32:10 2009
@@ -5,7 +5,10 @@
 static void mycallback(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in addr)
 {
 	esl_handle_t handle = {{0}};
-	
+	int done = 0;
+	esl_status_t status;
+	time_t exp = 0;
+
 	if (fork()) {
 		close(client_sock);
 		return;
@@ -13,17 +16,37 @@
 
 	esl_attach_handle(&handle, client_sock, addr);
 
-	printf("Connected! %d\n", handle.sock);
+	esl_log(ESL_LOG_INFO, "Connected! %d\n", handle.sock);
 
 	esl_filter(&handle, "unique-id", esl_event_get_header(handle.info_event, "caller-unique-id"));
 	esl_events(&handle, ESL_EVENT_TYPE_PLAIN, "SESSION_HEARTBEAT CHANNEL_ANSWER CHANNEL_ORIGINATE CHANNEL_PROGRESS CHANNEL_HANGUP "
 			   "CHANNEL_BRIDGE CHANNEL_UNBRIDGE CHANNEL_OUTGOING CHANNEL_EXECUTE CHANNEL_EXECUTE_COMPLETE DTMF CUSTOM conference::maintenance");
 
+	esl_send_recv(&handle, "linger");
+
 	esl_execute(&handle, "answer", NULL, NULL);
 	esl_execute(&handle, "conference", "3000 at default", NULL);
 	
-	while(esl_recv(&handle) == ESL_SUCCESS);
-
+	while((status = esl_recv_timed(&handle, 1000)) != ESL_FAIL) {
+		if (done) {
+			if (time(NULL) >= exp) {
+				break;
+			}
+		} else if (status == ESL_SUCCESS) {
+			const char *type = esl_event_get_header(handle.last_event, "content-type");
+			if (type && !strcasecmp(type, "text/disconnect-notice")) {
+				const char *dispo = esl_event_get_header(handle.last_event, "content-disposition");
+				esl_log(ESL_LOG_INFO, "Got a disconnection notice dispostion: [%s]\n", dispo ? dispo : "");
+				if (!strcmp(dispo, "linger")) {
+					done = 1;
+					esl_log(ESL_LOG_INFO, "Waiting 5 seconds for any remaining events.\n");
+					exp = time(NULL) + 5;
+				}
+			}
+		}
+	}
+	
+	esl_log(ESL_LOG_INFO, "Disconnected! %d\n", handle.sock);
 	esl_disconnect(&handle);
 }
 

Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	Fri Jan 16 09:32:10 2009
@@ -49,7 +49,9 @@
 	LFLAG_SESSION = (1 << 6),
 	LFLAG_ASYNC = (1 << 7),
 	LFLAG_STATEFUL = (1 << 8),
-	LFLAG_OUTBOUND = (1 << 9)
+	LFLAG_OUTBOUND = (1 << 9),
+	LFLAG_LINGER = (1 << 10),
+	LFLAG_HANDLE_DISCO = (1 << 11)
 } event_flag_t;
 
 typedef enum {
@@ -1045,22 +1047,21 @@
 											if (!SWITCH_STATUS_IS_BREAK(status) && status != SWITCH_STATUS_SUCCESS) {
 												return SWITCH_STATUS_FALSE;
 											}
-				
+											
+											/*
 											if (channel && !switch_channel_ready(channel)) {
 												status = SWITCH_STATUS_FALSE;
 												break;
 											}
+											*/
 
 											clen -= (int) mlen;
 											p += mlen;
 										}
-
+										
 										switch_event_add_body(*event, "%s", body);
 										free(body);
 									}
-
-
-
 								}
 							}
 						}
@@ -1158,9 +1159,32 @@
 			}
 		}
 
-		if (channel && !switch_channel_ready(channel)) {
-			status = SWITCH_STATUS_FALSE;
-            break;
+		if (channel && !switch_channel_ready(channel) && !switch_test_flag(listener, LFLAG_HANDLE_DISCO)) {
+			switch_set_flag_locked(listener, LFLAG_HANDLE_DISCO);
+			if (switch_test_flag(listener, LFLAG_LINGER)) {
+				char message[128] = "";
+				int mlen;
+				switch_size_t len;
+				char disco_buf[512] = "";
+
+				switch_snprintf(message, sizeof(message), 
+								"Channel %s has disconnected, lingering by request from remote.\n", switch_channel_get_name(channel));
+				mlen = strlen(message);
+
+				switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\n"
+								"Controlled-Session-UUID: %s\n"
+								"Content-Disposition: linger\n"
+								"Content-Length: %d\n\n", 
+								switch_core_session_get_uuid(listener->session), mlen);
+
+				len = strlen(disco_buf);
+				switch_socket_send(listener->sock, disco_buf, &len);
+				len = mlen;
+				switch_socket_send(listener->sock, message, &len);
+			} else {
+				status = SWITCH_STATUS_FALSE;
+				break;
+			}
 		}
 		
 		if (do_sleep) {
@@ -1580,6 +1604,20 @@
 		} else {
 			switch_snprintf(reply, reply_len, "-ERR invalid log level");
 		}
+	} else if (!strncasecmp(cmd, "linger", 6)) {
+		if (listener->session) {
+			switch_set_flag_locked(listener, LFLAG_LINGER);
+			switch_snprintf(reply, reply_len, "+OK will linger");
+		} else {
+			switch_snprintf(reply, reply_len, "-ERR not controlling a session");
+		}
+	} else if (!strncasecmp(cmd, "nolinger", 6)) {
+		if (listener->session) {
+			switch_clear_flag_locked(listener, LFLAG_LINGER);
+			switch_snprintf(reply, reply_len, "+OK will not linger");
+		} else {
+			switch_snprintf(reply, reply_len, "-ERR not controlling a session");
+		}
 	} else if (!strncasecmp(cmd, "nolog", 5)) {
 		flush_listener(listener, SWITCH_TRUE, SWITCH_FALSE);
 		if (switch_test_flag(listener, LFLAG_LOG)) {
@@ -1926,6 +1964,7 @@
 		if (listener->session) {
 			switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\n"
 							"Controlled-Session-UUID: %s\n"
+							"Content-Disposition: disconnect\n"
 							"Content-Length: %d\n\n", 
 							switch_core_session_get_uuid(listener->session), mlen);
 		} else {


From anthm at freeswitch.org  Fri Jan 16 08:22:29 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 10:22:29 -0600
Subject: [Freeswitch-svn] [commit] r11256 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Fri Jan 16 10:22:29 2009
New Revision: 11256

Log:
add inherit_codec=true var to set on a leg with late negotiation to force the negotiated b leg codec into the a leg

Modified:
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Fri Jan 16 10:22:29 2009
@@ -212,7 +212,8 @@
 	return x;
 }
 
-static uint8_t check_channel_status(switch_channel_t **peer_channels,
+static uint8_t check_channel_status(switch_core_session_t *session,
+									switch_channel_t **peer_channels,
 									switch_core_session_t **peer_sessions,
 									uint32_t len, int32_t *idx, uint32_t *hups, char *file, char *key, uint8_t early_ok, 
 									uint8_t *ring_ready, uint8_t *progress,
@@ -222,6 +223,14 @@
 	uint32_t i;
 	*hups = 0;
 	*idx = IDX_NADA;
+	int rval = 0;
+	switch_channel_t *caller_channel = NULL;
+	int pindex = -1;
+
+	if (session) {
+		caller_channel = switch_core_session_get_channel(session);
+	}
+		
 
 	for (i = 0; i < len; i++) {
 		switch_channel_state_t state;
@@ -233,6 +242,7 @@
 		}
 		if (!*ring_ready && switch_channel_test_flag(peer_channels[i], CF_EARLY_MEDIA)) {
 			*progress = 1;
+			pindex = i;
 		}
 
 		if (switch_core_session_private_event_count(peer_sessions[i])) {
@@ -252,7 +262,7 @@
 				   )
 				   && !switch_channel_test_flag(peer_channels[i], CF_TAGGED)
 			) {
-
+			
 			if (!switch_strlen_zero(key)) {
 				struct key_collect *collect;
 
@@ -268,20 +278,46 @@
 				}
 			} else {
 				*idx = i;
-				return 0;
+				pindex = (uint32_t) i;
+				rval = 0;
+				goto end;
 
 			}
 		} else if (switch_channel_test_flag(peer_channels[i], CF_WINNER)) {
 			*idx = i;
-			return 0;
+			rval = 0;
+			pindex = (uint32_t) i;
+			goto end;
 		}
 	}
 
 	if (*hups == len) {
-		return 0;
+		rval = 0;
 	} else {
-		return 1;
+		rval = 1;
+	}
+
+ end:
+
+	if (pindex > -1 && caller_channel && switch_channel_ready(caller_channel) && !switch_channel_media_ready(caller_channel)) {
+		const char *var = switch_channel_get_variable(caller_channel, "inherit_codec");
+		if (switch_true(var)) {
+			switch_codec_implementation_t impl;
+			char tmp[128] = "";
+
+			
+			switch_core_session_get_read_impl(peer_sessions[pindex], &impl);
+			switch_snprintf(tmp, sizeof(tmp), "%s@%uk@%ui", impl.iananame, impl.samples_per_second, impl.microseconds_per_packet / 1000);
+			switch_channel_set_variable(caller_channel, "absolute_codec_string", tmp);
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Setting codec string on %s to %s\n", switch_channel_get_name(caller_channel), tmp);
+
+
+		}
 	}
+	
+
+	return rval;
+
 }
 
 struct ringback {
@@ -1383,7 +1419,9 @@
 			}
 
 			while ((!caller_channel || switch_channel_ready(caller_channel)) &&
-				   check_channel_status(peer_channels, peer_sessions, and_argc, &idx, &hups, file, key, early_ok, &ring_ready, &progress, return_ring_ready)) {
+				   check_channel_status(session,
+										peer_channels, 
+										peer_sessions, and_argc, &idx, &hups, file, key, early_ok, &ring_ready, &progress, return_ring_ready)) {
 				time_t elapsed = switch_timestamp(NULL) - start;
 				if (caller_channel && !sent_ring && ring_ready && !return_ring_ready) {
 					switch_channel_ring_ready(caller_channel);


From brian at freeswitch.org  Fri Jan 16 08:52:24 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 10:52:24 -0600
Subject: [Freeswitch-svn] [commit] r11257 - freeswitch/trunk
Message-ID: 

Author: brian
Date: Fri Jan 16 10:52:23 2009
New Revision: 11257

Log:
doh, remove mrcp

Modified:
   freeswitch/trunk/configure.in

Modified: freeswitch/trunk/configure.in
==============================================================================
--- freeswitch/trunk/configure.in	(original)
+++ freeswitch/trunk/configure.in	Fri Jan 16 10:52:23 2009
@@ -684,7 +684,6 @@
 AC_CONFIG_SUBDIRS(libs/sofia-sip)
 AC_CONFIG_SUBDIRS(libs/speex)
 AC_CONFIG_SUBDIRS(libs/portaudio)
-AC_CONFIG_SUBDIRS(libs/openmrcp)
 AC_CONFIG_SUBDIRS(libs/openzap)
 AC_CHECK_LIB([tiff], [TIFFOpen], AC_CONFIG_SUBDIRS(libs/spandsp), , -lm)
 


From intralanman at freeswitch.org  Fri Jan 16 10:47:08 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 12:47:08 -0600
Subject: [Freeswitch-svn] [commit] r11258 - freeswitch/trunk/support-d
Message-ID: 

Author: intralanman
Date: Fri Jan 16 12:47:08 2009
New Revision: 11258

Log:
\s

Modified:
   freeswitch/trunk/support-d/.bashrc

Modified: freeswitch/trunk/support-d/.bashrc
==============================================================================
--- freeswitch/trunk/support-d/.bashrc	(original)
+++ freeswitch/trunk/support-d/.bashrc	Fri Jan 16 12:47:08 2009
@@ -15,7 +15,7 @@
 export LESSCHARSET="latin1"
 export LESS="-R"
 export CHARSET="ISO-8859-1"
-export PS1='\n\[\033[01;31m\]\u@\h\[\033[01;36m\] [\d \@] \[\033[01;33m\] \w\n\[\033[00m\]<\#>:'
+export PS1='\n\[\033[01;31m\]\u@\h\[\033[01;36m\] [\d \@] \[\033[01;33m\] \w\n\[\033[00m\]<\#>: '
 export PS2="\[\033[1m\]> \[\033[0m\]"
 export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
 export VISUAL=emacs


From anthm at freeswitch.org  Fri Jan 16 11:32:47 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 13:32:47 -0600
Subject: [Freeswitch-svn] [commit] r11259 -
	freeswitch/trunk/src/mod/endpoints/mod_portaudio
Message-ID: 

Author: anthm
Date: Fri Jan 16 13:32:47 2009
New Revision: 11259

Log:
make dual streams configurable

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.h

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Fri Jan 16 13:32:47 2009
@@ -124,6 +124,7 @@
 	GFLAGS flags;
 	switch_timer_t timer;
 	switch_timer_t hold_timer;
+	int dual_streams;
 } globals;
 
 
@@ -738,6 +739,8 @@
 
 	memset(&globals, 0, sizeof(globals));
 
+	globals.dual_streams = 1;
+
 	if ((status = load_config()) != SWITCH_STATUS_SUCCESS) {
 		return status;
 	}
@@ -1287,7 +1290,7 @@
 		//globals.read_codec.implementation->samples_per_packet);
 
 		err = OpenAudioStream(&globals.audio_stream, &inputParameters, &outputParameters, sample_rate, paClipOff,
-							  globals.read_codec.implementation->samples_per_packet);
+							  globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
 		/* UNLOCKED ************************************************************************************************* */
 		switch_mutex_unlock(globals.device_lock);
 
@@ -1324,7 +1327,8 @@
 			outputParameters.sampleFormat = SAMPLE_TYPE;
 			outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency;
 			outputParameters.hostApiSpecificStreamInfo = NULL;
-			err = OpenAudioStream(&globals.ring_stream, NULL, &outputParameters, sample_rate, paClipOff, globals.read_codec.implementation->samples_per_packet);
+			err = OpenAudioStream(&globals.ring_stream, NULL, 
+								  &outputParameters, sample_rate, paClipOff, globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
 
 			/* UNLOCKED ************************************************************************************************* */
 			switch_mutex_unlock(globals.device_lock);

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c	Fri Jan 16 13:32:47 2009
@@ -59,6 +59,10 @@
 							  unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData);
 static int oblockingIOCallback(const void *inputBuffer, void *outputBuffer,
 							  unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData);
+
+static int ioblockingIOCallback(const void *inputBuffer, void *outputBuffer,
+								unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData);
+
 static PaError PABLIO_InitFIFO(PaUtilRingBuffer * rbuf, long numFrames, long bytesPerFrame);
 static PaError PABLIO_TermFIFO(PaUtilRingBuffer * rbuf);
 
@@ -104,6 +108,14 @@
 	return 0;
 }
 
+static int ioblockingIOCallback(const void *inputBuffer, void *outputBuffer,
+							  unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
+{
+	iblockingIOCallback(inputBuffer, outputBuffer, framesPerBuffer, timeInfo, statusFlags, userData);
+	oblockingIOCallback(inputBuffer, outputBuffer, framesPerBuffer, timeInfo, statusFlags, userData);
+	return 0;
+}
+
 /* Allocate buffer. */
 static PaError PABLIO_InitFIFO(PaUtilRingBuffer * rbuf, long numFrames, long bytesPerFrame)
 {
@@ -230,7 +242,10 @@
  */
 PaError OpenAudioStream(PABLIO_Stream ** rwblPtr,
 						const PaStreamParameters * inputParameters,
-						const PaStreamParameters * outputParameters, double sampleRate, PaStreamFlags streamFlags, long samples_per_packet)
+						const PaStreamParameters * outputParameters, 
+						double sampleRate, PaStreamFlags streamFlags, 
+						long samples_per_packet,
+						int do_dual)
 {
 	long bytesPerSample = 2;
 	PaError err;
@@ -239,12 +254,16 @@
 	//long numBytes;
 	int channels = 1;
 
+	if (!(inputParameters || outputParameters)) {
+		return -1;
+	}
+
 	/* Allocate PABLIO_Stream structure for caller. */
 	aStream = (PABLIO_Stream *) malloc(sizeof(PABLIO_Stream));
 	if (aStream == NULL)
 		return paInsufficientMemory;
 	memset(aStream, 0, sizeof(PABLIO_Stream));
-
+	
 	/* Initialize PortAudio  */
 	err = Pa_Initialize();
 	if (err != paNoError)
@@ -265,12 +284,17 @@
 		err = PABLIO_InitFIFO(&aStream->inFIFO, numFrames, aStream->bytesPerFrame);
 		if (err != paNoError)
 			goto error;
+
+		aStream-> has_in = 1;
+
 	}
 
 	if (outputParameters) {
 		err = PABLIO_InitFIFO(&aStream->outFIFO, numFrames, aStream->bytesPerFrame);
 		if (err != paNoError)
 			goto error;
+
+		aStream-> has_out = 1;
 	}
 
 	/* Make Write FIFO appear full initially. */
@@ -280,18 +304,51 @@
 
 	/* Open a PortAudio stream that we will use to communicate with the underlying
 	 * audio drivers. */
-	err = Pa_OpenStream(&aStream->istream, inputParameters, NULL, sampleRate, samples_per_packet, streamFlags, iblockingIOCallback, aStream);
-	err = Pa_OpenStream(&aStream->ostream, NULL, outputParameters, sampleRate, samples_per_packet, streamFlags, oblockingIOCallback, aStream);
+
+	aStream->do_dual = do_dual;
+	
+
+
+	if (aStream->do_dual) {
+		err = Pa_OpenStream(&aStream->istream, inputParameters, NULL, sampleRate, samples_per_packet, streamFlags, iblockingIOCallback, aStream);
+		if (err != paNoError) {
+			goto error;
+		}
+		err = Pa_OpenStream(&aStream->ostream, NULL, outputParameters, sampleRate, samples_per_packet, streamFlags, oblockingIOCallback, aStream);
+		if (err != paNoError) {
+			goto error;
+		}
+	} else {
+		err = Pa_OpenStream(&aStream->iostream, inputParameters, outputParameters, sampleRate, samples_per_packet, streamFlags, ioblockingIOCallback, aStream);
+	}
 
 	if (err != paNoError)
 		goto error;
+	
+	if (aStream->do_dual) {
+		err = Pa_StartStream(aStream->istream);
+		
+		if (err != paNoError) {
+			goto error;
+		}
 
-	err = Pa_StartStream(aStream->istream);
-	err = Pa_StartStream(aStream->ostream);
+		err = Pa_StartStream(aStream->ostream);
 
-	if (err != paNoError)
+		if (err != paNoError) {
+			goto error;
+		}
+
+
+	} else {
+		err = Pa_StartStream(aStream->iostream);
+	}
+
+	if (err != paNoError) {
 		goto error;
+	}
+
 	*rwblPtr = aStream;
+
 	return paNoError;
 
   error:
@@ -315,14 +372,34 @@
 		}
 	}
 
-	if (Pa_IsStreamActive(aStream->istream)) {
-		Pa_StopStream(aStream->istream);
-		Pa_CloseStream(aStream->istream);
-	}
+	if (aStream->do_dual) {
+		if (aStream->has_in && aStream->istream) {
+			if (Pa_IsStreamActive(aStream->istream)) {
+				Pa_StopStream(aStream->istream);
+			}
+
+			Pa_CloseStream(aStream->istream);
+			aStream->istream = NULL;
+		}
+		
+		if (aStream->has_out && aStream->ostream) {
+			if (Pa_IsStreamActive(aStream->ostream)) {
+				Pa_StopStream(aStream->ostream);
+			}
 
-	if (Pa_IsStreamActive(aStream->ostream)) {
-		Pa_StopStream(aStream->ostream);
-		Pa_CloseStream(aStream->ostream);
+			Pa_CloseStream(aStream->ostream);
+			aStream->ostream = NULL;
+		}
+		
+	} else {
+		if (aStream->iostream) {
+			if (Pa_IsStreamActive(aStream->iostream)) {
+				Pa_StopStream(aStream->iostream);
+			}
+
+			Pa_CloseStream(aStream->iostream);
+			aStream->iostream = NULL;
+		}
 	}
 
 	PABLIO_TermFIFO(&aStream->inFIFO);

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.h	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.h	Fri Jan 16 13:32:47 2009
@@ -61,7 +61,11 @@
 		PaUtilRingBuffer outFIFO;
 		PaStream *istream;
 		PaStream *ostream;
+		PaStream *iostream;
 		int bytesPerFrame;
+		int do_dual;
+		int has_in;
+		int has_out;
 	} PABLIO_Stream;
 
 /* Values for flags for OpenAudioStream(). */
@@ -105,7 +109,8 @@
  */
 	PaError OpenAudioStream(PABLIO_Stream ** rwblPtr,
 							const PaStreamParameters * inputParameters,
-							const PaStreamParameters * outputParameters, double sampleRate, PaStreamCallbackFlags statusFlags, long samples_per_packet);
+							const PaStreamParameters * outputParameters, 
+							double sampleRate, PaStreamCallbackFlags statusFlags, long samples_per_packet, int do_dual);
 
 	PaError CloseAudioStream(PABLIO_Stream * aStream);
 


From brian at freeswitch.org  Fri Jan 16 11:34:27 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 13:34:27 -0600
Subject: [Freeswitch-svn] [commit] r11260 -
	freeswitch/trunk/conf/autoload_configs
Message-ID: 

Author: brian
Date: Fri Jan 16 13:34:27 2009
New Revision: 11260

Log:
add to modules.conf.xml

Modified:
   freeswitch/trunk/conf/autoload_configs/modules.conf.xml

Modified: freeswitch/trunk/conf/autoload_configs/modules.conf.xml
==============================================================================
--- freeswitch/trunk/conf/autoload_configs/modules.conf.xml	(original)
+++ freeswitch/trunk/conf/autoload_configs/modules.conf.xml	Fri Jan 16 13:34:27 2009
@@ -65,6 +65,7 @@
     
     
     
+    
 
     
     


From anthm at freeswitch.org  Fri Jan 16 12:29:56 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 14:29:56 -0600
Subject: [Freeswitch-svn] [commit] r11261 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Fri Jan 16 14:29:56 2009
New Revision: 11261

Log:
fix insane sanity check

Modified:
   freeswitch/trunk/src/switch_rtp.c

Modified: freeswitch/trunk/src/switch_rtp.c
==============================================================================
--- freeswitch/trunk/src/switch_rtp.c	(original)
+++ freeswitch/trunk/src/switch_rtp.c	Fri Jan 16 14:29:56 2009
@@ -30,7 +30,7 @@
  * switch_rtp.c -- RTP
  *
  */
-
+//#define DEBUG_2833
 #include 
 #include 
 #undef PACKAGE_NAME
@@ -1374,6 +1374,12 @@
 			goto end;
 		}
 
+#ifdef DEBUG_2833
+		if (rtp_session->dtmf_data.in_digit_sanity && !(rtp_session->dtmf_data.in_digit_sanity % 100)) {
+			printf("sanity %d\n", rtp_session->dtmf_data.in_digit_sanity);
+		}
+#endif
+
 		if (rtp_session->dtmf_data.in_digit_sanity && !--rtp_session->dtmf_data.in_digit_sanity) {
 			rtp_session->dtmf_data.last_digit = 0;
 			rtp_session->dtmf_data.in_digit_ts = 0;
@@ -1394,7 +1400,7 @@
 			uint16_t in_digit_seq = ntohs((uint16_t) rtp_session->recv_msg.header.seq);
 			uint32_t ts = htonl(rtp_session->recv_msg.header.ts);
 
-			rtp_session->dtmf_data.in_digit_sanity = 2000;
+			
 
 			if (in_digit_seq > rtp_session->dtmf_data.in_digit_seq) {
 
@@ -1402,8 +1408,9 @@
 
 #ifdef DEBUG_2833
 				
-				printf("read: %c %u %u %u %u %d %d\n", 
-					   key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, ts, duration, rtp_session->recv_msg.header.m, end);
+				printf("read: %c %u %u %u %u %d %d %s\n", 
+					   key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, 
+					   ts, duration, rtp_session->recv_msg.header.m, end, end && !rtp_session->dtmf_data.in_digit_ts ? "ignored" : "");
 #endif
 
 				if (rtp_session->dtmf_data.last_duration > duration && ts == rtp_session->dtmf_data.in_digit_ts) {
@@ -1443,12 +1450,14 @@
 				} else if (!rtp_session->dtmf_data.in_digit_ts) {
 					rtp_session->dtmf_data.in_digit_ts = ts;
 					rtp_session->dtmf_data.first_digit = key;
+					rtp_session->dtmf_data.in_digit_sanity = 2000;
 				}
 
 				rtp_session->dtmf_data.last_duration = duration;
 #ifdef DEBUG_2833
 			} else {
-				printf("drop: %c %u %u %u %u %d %d\n", key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, ts, duration, m, end);
+				printf("drop: %c %u %u %u %u %d %d\n", 
+					   key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, ts, duration, rtp_session->recv_msg.header.m, end);
 #endif
 			}
 		}


From anthm at freeswitch.org  Fri Jan 16 12:59:08 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 14:59:08 -0600
Subject: [Freeswitch-svn] [commit] r11262 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Fri Jan 16 14:59:07 2009
New Revision: 11262

Log:
FSCORE-266

Modified:
   freeswitch/trunk/src/switch_rtp.c

Modified: freeswitch/trunk/src/switch_rtp.c
==============================================================================
--- freeswitch/trunk/src/switch_rtp.c	(original)
+++ freeswitch/trunk/src/switch_rtp.c	Fri Jan 16 14:59:07 2009
@@ -1400,7 +1400,11 @@
 			uint16_t in_digit_seq = ntohs((uint16_t) rtp_session->recv_msg.header.seq);
 			uint32_t ts = htonl(rtp_session->recv_msg.header.ts);
 
-			
+			if (in_digit_seq < rtp_session->dtmf_data.in_digit_seq) {
+				if (rtp_session->dtmf_data.in_digit_seq - in_digit_seq > 100) {
+					rtp_session->dtmf_data.in_digit_seq = 0;
+				}
+			}
 
 			if (in_digit_seq > rtp_session->dtmf_data.in_digit_seq) {
 


From anthm at freeswitch.org  Fri Jan 16 13:03:49 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 15:03:49 -0600
Subject: [Freeswitch-svn] [commit] r11263 -
	freeswitch/trunk/src/mod/endpoints/mod_loopback
Message-ID: 

Author: anthm
Date: Fri Jan 16 15:03:49 2009
New Revision: 11263

Log:
hundred dolla line of code

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c	Fri Jan 16 15:03:49 2009
@@ -250,7 +250,8 @@
 		switch_set_flag_locked(b_tech_pvt, TFLAG_OUTBOUND);
 	
 		switch_channel_set_flag(channel, CF_ACCEPT_CNG);	
-		switch_ivr_transfer_variable(session, tech_pvt->other_session, "process_cdr");
+		//switch_ivr_transfer_variable(session, tech_pvt->other_session, "process_cdr");
+		switch_ivr_transfer_variable(session, tech_pvt->other_session, NULL);
 
 		if (switch_core_session_thread_launch(b_session) != SWITCH_STATUS_SUCCESS) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Error spawning thread\n");


From brian at freeswitch.org  Fri Jan 16 13:48:01 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 15:48:01 -0600
Subject: [Freeswitch-svn] [commit] r11264 -
	freeswitch/trunk/conf/autoload_configs
Message-ID: 

Author: brian
Date: Fri Jan 16 15:48:01 2009
New Revision: 11264

Log:
fun.. now everyone go out and get a Logitech 350 headset

Modified:
   freeswitch/trunk/conf/autoload_configs/portaudio.conf.xml

Modified: freeswitch/trunk/conf/autoload_configs/portaudio.conf.xml
==============================================================================
--- freeswitch/trunk/conf/autoload_configs/portaudio.conf.xml	(original)
+++ freeswitch/trunk/conf/autoload_configs/portaudio.conf.xml	Fri Jan 16 15:48:01 2009
@@ -17,7 +17,7 @@
     
 
     
-    
+    
     
     
 


From brian at freeswitch.org  Fri Jan 16 15:21:05 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 17:21:05 -0600
Subject: [Freeswitch-svn] [commit] r11265 -
	freeswitch/trunk/conf/sip_profiles
Message-ID: 

Author: brian
Date: Fri Jan 16 17:21:04 2009
New Revision: 11265

Log:
remove unused option

Modified:
   freeswitch/trunk/conf/sip_profiles/internal-ipv6.xml
   freeswitch/trunk/conf/sip_profiles/internal.xml

Modified: freeswitch/trunk/conf/sip_profiles/internal-ipv6.xml
==============================================================================
--- freeswitch/trunk/conf/sip_profiles/internal-ipv6.xml	(original)
+++ freeswitch/trunk/conf/sip_profiles/internal-ipv6.xml	Fri Jan 16 17:21:04 2009
@@ -22,7 +22,6 @@
     
     
     
-    
     
     
     

Modified: freeswitch/trunk/conf/sip_profiles/internal.xml
==============================================================================
--- freeswitch/trunk/conf/sip_profiles/internal.xml	(original)
+++ freeswitch/trunk/conf/sip_profiles/internal.xml	Fri Jan 16 17:21:04 2009
@@ -54,7 +54,6 @@
     
     
     
-    
     
     
     


From brian at freeswitch.org  Fri Jan 16 17:17:35 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 16 Jan 2009 19:17:35 -0600
Subject: [Freeswitch-svn] [commit] r11266 - freeswitch/trunk/src
Message-ID: 

Author: brian
Date: Fri Jan 16 19:17:35 2009
New Revision: 11266

Log:
If you happen to be pressing a digit while you end a call make sure we hangup faster instead of blocking for the dtmf sanity to fail.



Modified:
   freeswitch/trunk/src/switch_rtp.c

Modified: freeswitch/trunk/src/switch_rtp.c
==============================================================================
--- freeswitch/trunk/src/switch_rtp.c	(original)
+++ freeswitch/trunk/src/switch_rtp.c	Fri Jan 16 19:17:35 2009
@@ -1447,6 +1447,9 @@
 						rtp_session->dtmf_data.in_digit_sanity = 0;
 						do_cng = 1;
 					} else {
+						if (!switch_rtp_ready(rtp_session)) {
+							goto end;
+						}
 						switch_cond_next();
 						goto recvfrom;
 					}
@@ -1467,6 +1470,9 @@
 		}
 		
 		if (rtp_session->dtmf_data.in_digit_ts) {
+			if (!switch_rtp_ready(rtp_session)) {
+				goto end;
+			}
 			switch_cond_next();
 			goto recvfrom;
 		}


From ctrix at freeswitch.org  Sat Jan 17 14:40:42 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Sat, 17 Jan 2009 16:40:42 -0600
Subject: [Freeswitch-svn] [commit] r11267 -
	freeswitch/branches/ctrix/mod_airpe
Message-ID: 

Author: ctrix
Date: Sat Jan 17 16:40:42 2009
New Revision: 11267

Log:
airpe_debug command.

Modified:
   freeswitch/branches/ctrix/mod_airpe/airpe_api.c

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_api.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_api.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_api.c	Sat Jan 17 16:40:42 2009
@@ -37,6 +37,51 @@
 */
 
 
+#define AIRPE_DEBUG_SYNTAX "airpe_debug  "
+SWITCH_STANDARD_API(airpe_debug_command)
+{
+    int argc = 0;
+    char *argv[2] = { 0 };
+    char *mycmd  = NULL;
+    char *client = NULL;
+    airpe_interface_t *airpe = NULL;
+
+    if (!switch_strlen_zero(cmd) && (mycmd = strdup(cmd))) {
+	argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+	switch_assert(argv[0]);
+    }
+
+    if ( argc < 1 ) {
+	stream->write_function(stream, "-USAGE: %s\n", AIRPE_DEBUG_SYNTAX);
+	goto done;
+    }
+
+    client = argv[0];
+    airpe = airpe_find_interface(client);
+
+    if ( !airpe ) {
+	stream->write_function(stream, "-ERR interface not found for client ");
+	stream->write_function(stream, client);
+	stream->write_function(stream, "\n");
+	goto done;
+    } 
+
+    if ( argc > 1 ) {
+	int debug = switch_true(argv[1]);
+	airpe->debug = debug;
+    }
+
+    stream->write_function(stream, "Debug status: ");
+    if ( airpe->debug )
+        stream->write_function(stream, "On");
+    else
+        stream->write_function(stream, "Off");
+    stream->write_function(stream, "\n");
+
+ done:
+    return SWITCH_STATUS_SUCCESS;
+}
+
 #define AIRPE_MOODTEXT_SYNTAX "airpe_moodtext  [text]"
 SWITCH_STANDARD_API(airpe_moodtext_command)
 {
@@ -248,6 +293,9 @@
 
     switch_api_interface_t *api;
 
+    switch_console_set_complete("add airpe_debug ");
+    SWITCH_ADD_API(api, "airpe_debug", "gets/sets debug status of an airpe client", airpe_debug_command, AIRPE_DEBUG_SYNTAX);
+
     switch_console_set_complete("add airpe_moodtext ");
     SWITCH_ADD_API(api, "airpe_moodtext", "gets/sets the mood text of an airpe client", airpe_moodtext_command, AIRPE_MOODTEXT_SYNTAX);
 


From ctrix at freeswitch.org  Sat Jan 17 16:54:58 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Sat, 17 Jan 2009 18:54:58 -0600
Subject: [Freeswitch-svn] [commit] r11268 -
	freeswitch/branches/ctrix/mod_airpe
Message-ID: 

Author: ctrix
Date: Sat Jan 17 18:54:58 2009
New Revision: 11268

Log:
api for:
- airpe_debug: switch debug on/off for a client
- airpe_raw_command: sends a raw command to a client



Modified:
   freeswitch/branches/ctrix/mod_airpe/airpe_api.c

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_api.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_api.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_api.c	Sat Jan 17 18:54:58 2009
@@ -37,6 +37,42 @@
 */
 
 
+#define AIRPE_RAW_SYNTAX "airpe_raw_command  "
+SWITCH_STANDARD_API(airpe_raw_command)
+{
+    int argc = 0;
+    char *argv[2] = { 0 };
+    char *mycmd  = NULL;
+    char *client = NULL;
+    char buf[SKYPE_MSG_LEN];
+    airpe_interface_t *airpe = NULL;
+
+    if (!switch_strlen_zero(cmd) && (mycmd = strdup(cmd))) {
+	argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+	switch_assert(argv[0]);
+    }
+
+    if ( argc <= 1 ) {
+	stream->write_function(stream, "-USAGE: %s\n", AIRPE_RAW_SYNTAX);
+	goto done;
+    }
+
+    client = argv[0];
+    airpe = airpe_find_interface(client);
+
+    if ( !airpe ) {
+	stream->write_function(stream, "-ERR interface not found for client ");
+	stream->write_function(stream, client);
+	goto done;
+    } 
+
+    snprintf(buf, SKYPE_MSG_LEN, "%s", argv[1] );
+    airpe_cmd_write(airpe, buf);
+
+ done:
+    return SWITCH_STATUS_SUCCESS;
+}
+
 #define AIRPE_DEBUG_SYNTAX "airpe_debug  "
 SWITCH_STANDARD_API(airpe_debug_command)
 {
@@ -201,6 +237,27 @@
     switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Auto-auth", (airpe->auto_auth) ? "Yes" : "No" );
     stream->write_function(stream, buf);
 
+    if ( airpe->variables_hash ) {
+	switch_hash_index_t *hi;
+	const void *var = NULL;
+	void *val = NULL;
+	const char *vname, *vvalue;
+
+	for (hi = switch_hash_first(NULL, airpe->variables_hash); hi; hi = switch_hash_next(hi)) {
+	    if ( !var ) {
+		stream->write_function(stream, "Client variables\n");
+	    }
+	    switch_hash_this(hi, &var, NULL, &val);
+	    vname = var;
+	    vvalue = (const char*) val;
+	    if ( vname && vvalue ) {
+		switch_snprintf(buf, sizeof(buf), "- %-20s: %s\n", vname, vvalue );
+		stream->write_function(stream, buf);
+	    }
+	}
+
+    }
+
  done:
     return SWITCH_STATUS_SUCCESS;
 }
@@ -305,6 +362,9 @@
     switch_console_set_complete("add airpe_status ");
     SWITCH_ADD_API(api, "airpe_status", "gets/sets the status of an airpe client", airpe_status_command, AIRPE_STATUS_SYNTAX);
 
+    switch_console_set_complete("add airpe_raw_command ");
+    SWITCH_ADD_API(api, "airpe_raw_command", "sends a raw command to an airpe client", airpe_raw_command, AIRPE_RAW_SYNTAX);
+
     return SWITCH_STATUS_SUCCESS;
 }
 


From ctrix at freeswitch.org  Sat Jan 17 17:03:30 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Sat, 17 Jan 2009 19:03:30 -0600
Subject: [Freeswitch-svn] [commit] r11269 - in
	freeswitch/branches/ctrix/mod_airpe: . config
Message-ID: 

Author: ctrix
Date: Sat Jan 17 19:03:30 2009
New Revision: 11269

Log:
Work in progress



Modified:
   freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
   freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c
   freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.h

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	Sat Jan 17 19:03:30 2009
@@ -170,6 +170,9 @@
 
 switch_status_t airpe_cmd_write(airpe_interface_t *airpe, char *msg) {
     switch_status_t status;
+//TODO locking
+
+    assert(airpe);
 
     if ( airpe->debug )
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "msg to airpe client %s: > %s\n", airpe->name, msg);

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c	Sat Jan 17 19:03:30 2009
@@ -268,7 +268,6 @@
 	airpe->running = 1;
 	XFlush(disp);
         x11_fd = ConnectionNumber(disp);
-
 	while ( airpe->running ) {
 	    FD_ZERO(&rset);
 	    FD_SET( x11_fd, &rset);

Modified: freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml	(original)
+++ freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml	Sat Jan 17 19:03:30 2009
@@ -1,4 +1,5 @@
 
+
   
     
 
@@ -35,6 +36,14 @@
 	    The purpose is restarting the client with those credentials -->
 	
 	
+
+	
+	
+	    
+	    
+	
+
     
   
+
 

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	Sat Jan 17 19:03:30 2009
@@ -59,6 +59,20 @@
     TECH STUFF
  *****************************************************************************/
 
+static int fetch_next_port(void) {
+    int port = 0;
+
+    if ( !globals.last_port_used )
+	globals.last_port_used = globals.audio_tcp_port_start;
+
+    switch_mutex_lock(globals.mutex);
+    port = globals.last_port_used;
+    globals.last_port_used++;
+    switch_mutex_unlock(globals.mutex);
+
+    return port;
+}
+
 static switch_status_t airpe_codec_init(private_object_t * tech_pvt, int sample_rate, int codec_ms) {
     airpe_interface_t *airpe = NULL;
 
@@ -139,20 +153,6 @@
     return new_sock;
 }
 
-static int fetch_next_port(void) {
-    int port = 0;
-
-    if ( !globals.last_port_used )
-	globals.last_port_used = globals.audio_tcp_port_start;
-
-    switch_mutex_lock(globals.mutex);
-    port = globals.last_port_used;
-    globals.last_port_used++;
-    switch_mutex_unlock(globals.mutex);
-
-    return port;
-}
-
 static switch_status_t airpe_audio_sockets_create( airpe_interface_t *airpe ) {
     switch_socket_t *new_sock;
     int port;
@@ -185,7 +185,7 @@
 }
 
 
-static switch_status_t airpe_start_client(airpe_interface_t *airpe) {
+static switch_status_t airpe_create_client(airpe_interface_t *airpe) {
 
     switch_threadattr_t *attr_skype = NULL;
 
@@ -198,16 +198,20 @@
     switch_threadattr_create(&attr_skype, airpe_module_pool);
     switch_threadattr_stacksize_set(attr_skype, SWITCH_THREAD_STACKSIZE);
 
-    switch_thread_create(&airpe->airpe_thread_skype, 
+    return switch_thread_create(&airpe->airpe_thread_skype, 
 			attr_skype,
                         airpe_skype_thread, 
 			airpe,
                         airpe_module_pool);
-
-    return SWITCH_STATUS_SUCCESS;
 }
 
-static switch_status_t airpe_stop_client(airpe_interface_t *airpe) {
+static switch_status_t airpe_destroy_client(airpe_interface_t *airpe) {
+
+    if ( airpe->active_call_id ) {
+	char buf[SKYPE_MSG_LEN] = "";
+	snprintf(buf, sizeof(buf), "ALTER CALL %d END HANGUP", airpe->active_call_id );
+	airpe_cmd_write(airpe, buf);
+    }
 
     if ( airpe->audio_in_socket ) {
 	if ( airpe->debug )
@@ -229,7 +233,9 @@
     airpe_set_mood_text(airpe, NULL);
     airpe_set_partner_displayname(airpe, NULL);
     airpe_set_partner_handle(airpe, NULL);
-    airpe_set_call_id(airpe, 0, NULL);
+    airpe_clear_call_id(airpe);
+
+    switch_core_hash_destroy(&airpe->variables_hash);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -632,14 +638,17 @@
     CONFIGURATION
  *****************************************************************************/
 
-static switch_status_t load_config( int reload ) {
+static switch_status_t load_config(void) {
     switch_xml_t    	cfg, 
 			xml, 
 			global_settings, 
 			param, 
 			clients, 
-			client;
+			client,
+			variables, 
+			variable;
     switch_memory_pool_t *pool;
+    switch_status_t 	status;
 
     pool = airpe_module_pool;
     
@@ -679,131 +688,112 @@
 
 	for (client = switch_xml_child(clients, "client"); client; client = client->next) 
 	{
-    	    char *name 		= (char *) switch_xml_attr(client, "name");
-    	    char *context 	= NULL;
-    	    char *dialplan 	= NULL;
-    	    char *destination 	= NULL;
-    	    char *X11_display 	= NULL;
-    	    char *skype_user 	= NULL;
-    	    char *skype_password= NULL;
-	    char *cid_name	= NULL;
-	    char *cid_num	= NULL;
-	    int	 auto_auth	= 0;
-	    int	 debug		= 0;
+    	    airpe_interface_t *newconf = NULL;
 
-    	    airpe_interface_t 	*newconf = NULL;
+    	    char *name 	= (char *) switch_xml_attr(client, "name");
 
-	    if (!name) {
+	    if ( switch_strlen_zero(name) ) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No name attribute. Skipping unnamed client.\n");
 		continue;
     	    }
 
+	    if ( (newconf = switch_core_hash_find(globals.interfaces_hash, name)) ) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Duplicated client %s. Skipping\n", name);
+		continue;
+	    }
+
+	    /* If we don't have a new interface, yet, then create one */
+	    if ( !newconf ) {
+	        newconf = (airpe_interface_t *) switch_core_alloc( pool, sizeof(airpe_interface_t) );
+		if ( newconf )
+	    	    memset(newconf, 0, sizeof(airpe_interface_t));
+		else {
+		    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot alloc memory for the new interface %s\n", name);
+		    continue;
+		}
+	    }
+
+	    /* Start parsing our parameters */
+
+	    newconf->name     	= switch_core_strdup(pool, name);
+
 	    for (param = switch_xml_child(client, "param"); param; param = param->next) {
     		char *var = (char *) switch_xml_attr_soft(param, "name");
     		char *val = (char *) switch_xml_attr_soft(param, "value");
 
     		if        (!strcasecmp(var, "debug")) {
-		    debug = switch_true(val) ? 1 : 0;
+		    newconf->debug = switch_true(val) ? 1 : 0;
     		} else if (!strcasecmp(var, "auto-auth")) {
-		    auto_auth = switch_true(val) ? 1 : 0;
+		    newconf->auto_auth = switch_true(val) ? 1 : 0;
     		} else if (!strcasecmp(var, "context")) {
-        	    context = val;
+		    newconf->context = switch_core_strdup(pool, val);
     		} else if (!strcasecmp(var, "dialplan")) {
-		    dialplan = val;
+		    newconf->dialplan = switch_core_strdup(pool, val);
     		} else if (!strcasecmp(var, "destination")) {
-		    destination = val;
+		    newconf->destination = switch_core_strdup(pool, val);
     		} else if (!strcasecmp(var, "skype-user")) {
-        	    skype_user = val;
+		    newconf->skype_user = switch_core_strdup(pool, val);
     		} else if (!strcasecmp(var, "skype-password")) {
-        	    skype_password = val;
+		    newconf->skype_password = switch_core_strdup(pool, val);
     		} else if (!strcasecmp(var, "X11-display")) {
-        	    X11_display = val;
+		    newconf->X11_display = switch_core_strdup(pool, val);
     		} else if (!strcasecmp(var, "cid-name")) {
-        	    cid_name = val;
+		    //cid_name = val;
     		} else if (!strcasecmp(var, "cid-num")) {
-        	    cid_num = val;
+		    //cid_num = val;
     		}
 		else
 		    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unknown config param %s\n", var);
 	    }
-	    if (!skype_user) {
+
+	    if (!newconf->skype_user) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No skype-user param for client %s. Skipping\n", name);
     		continue;
 	    }
-	    if (!skype_password) {
+	    if (!newconf->skype_password) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No skype-password param for client %s. Skipping\n", name);
     		continue;
     	    }
-    	    if (!X11_display) {
+    	    if (!newconf->X11_display) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No X11-display param for client %s. Skipping\n", name);
     		continue;
     	    }
 
-	    if ( !dialplan )
-		dialplan = globals.dialplan;
-	    if ( !context )
-		context = globals.context;
-	    if ( !destination )
-		destination = globals.destination;
+	    if ( !newconf->dialplan )
+		newconf->dialplan = globals.dialplan;
+	    if ( !newconf->context )
+		newconf->context = globals.context;
+	    if ( !newconf->destination )
+		newconf->destination = globals.destination;
+
+	    newconf->audio_in_port  = 0;
+	    newconf->audio_in_port  = 0;
+
+	    switch_core_hash_init(&newconf->variables_hash, pool);
+	    if ((variables = switch_xml_child(client, "variables"))) {
+		for (variable = switch_xml_child(variables, "variable"); variable; variable = variable->next) 
+		{
+    		    char *vname  = (char *) switch_xml_attr(variable, "name");
+    		    char *vvalue = (char *) switch_xml_attr(variable, "value");
 
-	    if ( reload ) {
-		newconf = airpe_find_interface(name);
-	    }
-	    else {
-	        if ( (newconf = switch_core_hash_find(globals.interfaces_hash, name)) ) {
-		    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Duplicated client %s. Skipping\n", name);
-		    continue;
+		    if ( !switch_strlen_zero(vname) && vvalue ) {
+			switch_core_hash_insert(newconf->variables_hash, vname, vvalue);
+		    }
 		}
 	    }
 
-	    if ( !newconf ) {
-	        newconf = (airpe_interface_t *) switch_core_alloc( pool, sizeof(airpe_interface_t) );
-		if ( newconf )
-	    	    memset(newconf, 0, sizeof(airpe_interface_t));
-	    }
-
-
-	    if ( newconf ) {
-		switch_status_t status;
-
-		newconf->name     	= switch_core_strdup(pool, name);
-		newconf->dialplan 	= switch_core_strdup(pool, dialplan);
-		newconf->context  	= switch_core_strdup(pool, context);
-		newconf->destination  	= switch_core_strdup(pool, destination);
-		newconf->auto_auth  	= auto_auth;
-		newconf->debug  	= debug;
-
-		if ( reload ) {
-		    /* We won't update any other value on reload. */
-		    newconf->should_reload = 0;
-		    continue;
-		}
-
-		newconf->skype_user  	= switch_core_strdup(pool, skype_user);
-		newconf->skype_password = switch_core_strdup(pool, skype_password);
-		newconf->X11_display  	= switch_core_strdup(pool, X11_display);
-		newconf->audio_in_port  = 0;
-		newconf->audio_in_port  = 0;
-		newconf->skype_window = skype_window_alloc(pool);
-
-		if ( newconf->skype_window ) {
-		    status = airpe_start_client(newconf);
-		    if ( status == SWITCH_STATUS_SUCCESS ) {
-			switch_core_hash_insert(globals.interfaces_hash, name, newconf);
-		    }
-		    else {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Airpe: cannot start client %s.\n", newconf->name);
-		    }
+	    /* Start the thread managing the skype client */
+	    newconf->skype_window = skype_window_alloc(pool);
+	    if ( newconf->skype_window ) {
+		status = airpe_create_client(newconf);
+		if ( status == SWITCH_STATUS_SUCCESS ) {
+		    switch_core_hash_insert(globals.interfaces_hash, name, newconf);
 		}
 		else {
-		    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Airpe: cannot alloc client %s.\n", newconf->name);
+		    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Airpe: cannot start client %s.\n", newconf->name);
 		}
-
-
-	    }
-	    else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Airpe: cannot alloc client %s.\n", newconf->name);
 	    }
+
 	}
 
     }
@@ -828,7 +818,7 @@
     }
 
     /* Update the data of each client */
-    load_config(1);
+//    load_config(1);
 
     /* Find eventual clients not updated and stop them */
     for (hi = switch_hash_first(NULL, globals.interfaces_hash); hi; hi = switch_hash_next(hi)) {
@@ -837,10 +827,9 @@
 	if ( airpe->should_reload ) {
 	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Stopping airpe client %s.\n", airpe->name);
 	    switch_core_hash_delete(globals.interfaces_hash, airpe->name); 
-	    airpe_stop_client(airpe);
+	    airpe_destroy_client(airpe);
 	}
     }
-
 }
 
 
@@ -882,7 +871,7 @@
     switch_core_hash_init(&globals.interfaces_hash, pool);
     switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, pool);
 
-    load_config(0);
+    load_config();
 
     *module_interface = switch_loadable_module_create_module_interface(pool, modname);
 
@@ -893,14 +882,13 @@
     airpe_endpoint_interface->state_handler  = &airpe_state_handlers;
 
     if ((switch_event_bind_removable(modname, SWITCH_EVENT_RELOADXML, NULL, reloadxml_event_handler, NULL, &EVENT_NODE) != SWITCH_STATUS_SUCCESS)) {
+	/* Not such severe to prevent loading, so don't abort */
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind our reloadxml handler!\n");
-	/* Not such severe to prevent loading */
     }
 
     airpe_register_api( &*module_interface );
     airpe_register_apps( &*module_interface );
 
-
     return SWITCH_STATUS_SUCCESS;
 }
 
@@ -922,7 +910,7 @@
 	airpe->running = 0;
 	/* Wake up the socket */
 	airpe_cmd_write(airpe, "PING");
-	airpe_stop_client(airpe);
+	airpe_destroy_client(airpe);
 	/*
 	we won't delete the hash element. we're going to destroy the whole pool 
 	switch_core_hash_delete(globals.interfaces_hash, airpe->name); 

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.h
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	Sat Jan 17 19:03:30 2009
@@ -138,11 +138,12 @@
     char 			*dialplan;
     char 			*context;
     char 			*destination;
+    int				auto_auth;
     char 			*X11_display;
     char 			*skype_user;
     char 			*skype_password;
 
-    int				auto_auth;
+    switch_mutex_t 		*mutex;
     int 			audio_in_port;
     int 			audio_out_port;
     switch_socket_t		*audio_in_socket;
@@ -153,6 +154,7 @@
     switch_thread_t 		*airpe_thread_skype;
     skype_window_handler_t 	*skype_window;
 
+    switch_hash_t  		*variables_hash;
     int				protocol;
     USER_STATUS			user_status;
     CALL_STATUS			call_status;
@@ -208,6 +210,7 @@
 switch_status_t	airpe_set_mood_text(airpe_interface_t *airpe, char *string);
 switch_status_t	airpe_set_partner_displayname(airpe_interface_t *airpe, char *string);
 switch_status_t	airpe_set_partner_handle(airpe_interface_t *airpe, char *string);
+void airpe_clear_call_id(airpe_interface_t *airpe);
 switch_status_t	airpe_set_call_id(airpe_interface_t *airpe, int sk_id, char *fs_uuid);
 
 switch_status_t airpe_call_shutdown( private_object_t *pvt );


From ctrix at freeswitch.org  Sat Jan 17 17:15:39 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Sat, 17 Jan 2009 19:15:39 -0600
Subject: [Freeswitch-svn] [commit] r11270 -
	freeswitch/branches/ctrix/mod_airpe
Message-ID: 

Author: ctrix
Date: Sat Jan 17 19:15:39 2009
New Revision: 11270

Log:
Channel variables foe each airpe interface - on inbound calls



Modified:
   freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	Sat Jan 17 19:15:39 2009
@@ -382,6 +382,26 @@
     switch_set_flag(tech_pvt, TFLAG_INBOUND);
     airpe_set_call_id(airpe, callid, switch_core_session_get_uuid(new_session) );
 
+    /* Setup specific client channel variables */
+    if ( airpe->variables_hash ) {
+	switch_hash_index_t *hi;
+	const void *var = NULL;
+	void *val = NULL;
+	const char *vname, *vvalue;
+
+	for (hi = switch_hash_first(NULL, airpe->variables_hash); hi; hi = switch_hash_next(hi)) {
+	    switch_hash_this(hi, &var, NULL, &val);
+	    vname = var;
+	    vvalue = (const char*) val;
+	    if ( vname && vvalue ) {
+		switch_channel_set_variable(channel, vname, vvalue);
+	    }
+	}
+
+    }
+
+
+
     switch_channel_set_state(channel, CS_INIT);
 
     if ( switch_core_session_thread_launch(new_session) != SWITCH_STATUS_SUCCESS ) {


From coppice at freeswitch.org  Sun Jan 18 01:40:58 2009
From: coppice at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 18 Jan 2009 03:40:58 -0600
Subject: [Freeswitch-svn] [commit] r11271 -
	freeswitch/trunk/conf/autoload_configs
Message-ID: 

Author: coppice
Date: Sun Jan 18 03:40:58 2009
New Revision: 11271

Log:
Added entries for mod_fax and mod_unicall in the autoloaded modules.conf file.


Modified:
   freeswitch/trunk/conf/autoload_configs/modules.conf.xml

Modified: freeswitch/trunk/conf/autoload_configs/modules.conf.xml
==============================================================================
--- freeswitch/trunk/conf/autoload_configs/modules.conf.xml	(original)
+++ freeswitch/trunk/conf/autoload_configs/modules.conf.xml	Sun Jan 18 03:40:58 2009
@@ -35,6 +35,7 @@
     
     
     
+    
 
     
     
@@ -43,6 +44,7 @@
     
     
     
+    
     
     
     


From coppice at freeswitch.org  Sun Jan 18 01:49:08 2009
From: coppice at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 18 Jan 2009 03:49:08 -0600
Subject: [Freeswitch-svn] [commit] r11272 - freeswitch/trunk/conf/dialplan
Message-ID: 

Author: coppice
Date: Sun Jan 18 03:49:07 2009
New Revision: 11272

Log:
Added simple FAX demo entries to the default dialplan.


Modified:
   freeswitch/trunk/conf/dialplan/default.xml

Modified: freeswitch/trunk/conf/dialplan/default.xml
==============================================================================
--- freeswitch/trunk/conf/dialplan/default.xml	(original)
+++ freeswitch/trunk/conf/dialplan/default.xml	Sun Jan 18 03:49:07 2009
@@ -489,6 +489,22 @@
       
     
     
+    
+      
+	
+	
+	
+	
+      
+    
+
+    
+      
+	
+	
+      
+    
+
     
     
       


From coppice at freeswitch.org  Sun Jan 18 02:26:01 2009
From: coppice at freeswitch.org (FreeSWITCH SVN)
Date: Sun, 18 Jan 2009 04:26:01 -0600
Subject: [Freeswitch-svn] [commit] r11273 - in freeswitch/trunk:
	conf/autoload_configs src/mod/endpoints/mod_unicall
Message-ID: 

Author: coppice
Date: Sun Jan 18 04:26:01 2009
New Revision: 11273

Log:
Added a default config file for the Unicall endpoint module, and progressed the
module a little. Still far from complete.


Added:
   freeswitch/trunk/conf/autoload_configs/unicall.conf.xml
Modified:
   freeswitch/trunk/src/mod/endpoints/mod_unicall/mod_unicall.c

Added: freeswitch/trunk/conf/autoload_configs/unicall.conf.xml
==============================================================================
--- (empty file)
+++ freeswitch/trunk/conf/autoload_configs/unicall.conf.xml	Sun Jan 18 04:26:01 2009
@@ -0,0 +1,25 @@
+
+  
+    
+    
+    
+  
+  
+    
+      
+      
+      
+      
+      
+      
+    
+    
+      
+      
+      
+      
+      
+      
+    
+  
+

Modified: freeswitch/trunk/src/mod/endpoints/mod_unicall/mod_unicall.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_unicall/mod_unicall.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_unicall/mod_unicall.c	Sun Jan 18 04:26:01 2009
@@ -56,6 +56,7 @@
     int protocol_end;
     int outgoing_ok;
 	char *dialplan;
+	char *context;
     int fd;
     uc_t *uc;
 } span_data_t;
@@ -144,6 +145,53 @@
 static switch_status_t unicall_receive_message(switch_core_session_t *session, switch_core_session_message_t *msg);
 static switch_status_t unicall_receive_event(switch_core_session_t *session, switch_event_t *event);
 
+static void unicall_message(int level, const char *s)
+{
+    int switch_level;
+    
+    switch (level)
+    {
+    case UC_LOG_NONE:
+        switch_level = SWITCH_LOG_CRIT;
+        break;
+    case UC_LOG_ERROR:
+        switch_level = SWITCH_LOG_ERROR;
+        break;
+    case UC_LOG_WARNING:
+        switch_level = SWITCH_LOG_WARNING;
+        break;
+    case UC_LOG_PROTOCOL_ERROR:
+        switch_level = SWITCH_LOG_ERROR;
+        break;
+    case UC_LOG_PROTOCOL_WARNING:
+        switch_level = SWITCH_LOG_WARNING;
+        break;
+    case UC_LOG_INFO:
+        switch_level = SWITCH_LOG_NOTICE;
+        //switch_level = SWITCH_LOG_NOTICE;
+        break;
+    case UC_LOG_FLOW:
+    case UC_LOG_FLOW_2:
+    case UC_LOG_FLOW_3:
+    case UC_LOG_CAS:
+    case UC_LOG_TONE:
+    case UC_LOG_DEBUG_1:
+    case UC_LOG_DEBUG_2:
+    case UC_LOG_DEBUG_3:
+        switch_level = SWITCH_LOG_DEBUG;
+        break;
+    default:
+        switch_level = SWITCH_LOG_CRIT;
+        break;
+    }
+    switch_log_printf(SWITCH_CHANNEL_LOG, switch_level, s);
+}
+
+static void unicall_report(const char *s)
+{
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, s);
+}
+
 #if 0
 static switch_call_cause_t unicall_incoming_channel(zap_sigmsg_t *sigmsg, switch_core_session_t **sp)
 {
@@ -156,7 +204,7 @@
     
     if (!(session = switch_core_session_request(openzap_endpoint_interface, NULL)))
     {
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Initilization Error!\n");
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Initialization Error!\n");
         return ZAP_FAIL;
     }
     
@@ -167,28 +215,22 @@
     channel = switch_core_session_get_channel(session);
     if (tech_init(tech_pvt, session, sigmsg->channel) != SWITCH_STATUS_SUCCESS)
     {
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Initilization Error!\n");
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Initialization Error!\n");
         switch_core_session_destroy(&session);
         return ZAP_FAIL;
     }
     
     *sigmsg->channel->caller_data.collected = '\0';
     
-    if (switch_strlen_zero(sigmsg->channel->caller_data.cid_name))
-    {
+    if (sigmsg->channel->caller_data.cid_name[0] == '\0')
         switch_set_string(sigmsg->channel->caller_data.cid_name, sigmsg->channel->chan_name);
-    }
 
-    if (switch_strlen_zero(sigmsg->channel->caller_data.cid_num.digits))
+    if (sigmsg->channel->caller_data.cid_num.digits[0] == '\0')
     {
-        if (!switch_strlen_zero(sigmsg->channel->caller_data.ani.digits))
-        {
+        if (sigmsg->channel->caller_data.ani.digits[0] != '\0')
             switch_set_string(sigmsg->channel->caller_data.cid_num.digits, sigmsg->channel->caller_data.ani.digits);
-        }
         else
-        {
             switch_set_string(sigmsg->channel->caller_data.cid_num.digits, sigmsg->channel->chan_number);
-        }
     }
 
     tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session),
@@ -203,18 +245,13 @@
                                                          (char *) modname,
                                                          SPAN_CONFIG[sigmsg->channel->span_id].context,
                                                          sigmsg->channel->caller_data.dnis.digits);
-
     assert(tech_pvt->caller_profile != NULL);
 
-    if (sigmsg->channel->caller_data.screen == 1 || sigmsg->channel->caller_data.screen == 3)
-    {
+    if (sigmsg->channel->caller_data.screen == 1  ||  sigmsg->channel->caller_data.screen == 3)
         switch_set_flag(tech_pvt->caller_profile, SWITCH_CPF_SCREEN);
-    }
 
     if (sigmsg->channel->caller_data.pres)
-    {
         switch_set_flag(tech_pvt->caller_profile, SWITCH_CPF_HIDE_NAME | SWITCH_CPF_HIDE_NUMBER);
-    }
     
     snprintf(name, sizeof(name), "UNICALL/%u:%u/%s", sigmsg->channel->span_id, sigmsg->channel->chan_id, tech_pvt->caller_profile->destination_number);
     switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connect inbound channel %s\n", name);
@@ -224,14 +261,14 @@
     switch_channel_set_state(channel, CS_INIT);
     if (switch_core_session_thread_launch(session) != SWITCH_STATUS_SUCCESS)
     {
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Error spawning thread\n");
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Error spawning thread\n");
         switch_core_session_destroy(&session);
         return ZAP_FAIL;
     }
 
     if (zap_channel_add_token(sigmsg->channel, switch_core_session_get_uuid(session), 0) != ZAP_SUCCESS)
     {
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Error adding token\n");
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Error adding token\n");
         switch_core_session_destroy(&session);
         return ZAP_FAIL;
     }
@@ -251,7 +288,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_devicefail\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_devicefail\n");
 }
 
 static void on_protocolfail(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -264,7 +301,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_protocolfail\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_protocolfail\n");
 }
 
 static void on_sigchanstatus(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -277,7 +314,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_sigchanstatus\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_sigchanstatus\n");
 }
 
 static void on_detected(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -292,7 +329,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_detected\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_detected\n");
     switch_mutex_lock(globals.channel_mutex);
 
     //chanmap = spri->private_info;
@@ -348,7 +385,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_offered\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_offered\n");
 }
 
 static void on_requestmoreinfo(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -361,7 +398,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_requestmoreinfo\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_requestmoreinfo\n");
 }
 
 static void on_accepted(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -374,7 +411,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_accepted\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_accepted\n");
 }
 
 static void on_callinfo(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -387,7 +424,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_callinfo\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_callinfo\n");
 }
 
 static void on_facility(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -400,7 +437,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_facility\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_facility\n");
 }
 
 static void on_dialednumber(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -413,20 +450,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_dialednumber\n");
-}
-
-static void on_dialtone(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
-{
-    switch_channel_t *channel;
-    private_t *tech_pvt;
-
-    tech_pvt = switch_core_session_get_private(session);
-    assert(tech_pvt != NULL);
-    channel = switch_core_session_get_channel(session);
-    assert(channel != NULL);
-
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_dialtone\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_dialednumber\n");
 }
 
 static void on_dialing(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -439,7 +463,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_dialing\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_dialing\n");
 }
 
 static void on_sendmoreinfo(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -452,7 +476,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_sendmoreinfo\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_sendmoreinfo\n");
 }
 
 static void on_proceeding(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -466,7 +490,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_proceeding\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_proceeding\n");
 
 #if 0
     chanmap = spri->private_info;
@@ -511,7 +535,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_alerting\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_alerting\n");
 
 #if 0
     chanmap = spri->private_info;
@@ -544,7 +568,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_connected\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_connected\n");
 }
 
 static void on_answered(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -557,7 +581,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_answered\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_answered\n");
 }
 
 static void on_fardisconnected(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -570,7 +594,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_fardisconnected\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_fardisconnected\n");
 }
 
 static void on_dropcall(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -583,7 +607,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_dropcall\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_dropcall\n");
 }
 
 static void on_releasecall(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -596,7 +620,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_releasecall\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_releasecall\n");
 }
 
 static void on_farblocked(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -609,7 +633,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_farblocked\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_farblocked\n");
 }
 
 static void on_farunblocked(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -622,7 +646,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_farunblocked\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_farunblocked\n");
 }
 
 static void on_localblocked(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -635,7 +659,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_localblocked\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_localblocked\n");
 }
 
 static void on_localunblocked(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -648,7 +672,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_localunblocked\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_localunblocked\n");
 }
 
 static void on_alarm(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -661,7 +685,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_alarm\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_alarm\n");
 }
 
 static void on_resetlinedev(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -674,7 +698,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_resetlinedev\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_resetlinedev\n");
 }
 
 static void on_l2frame(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -687,7 +711,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_l2frame\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_l2frame\n");
 }
 
 static void on_l2bufferfull(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -700,7 +724,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_l2bufferfull\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_l2bufferfull\n");
 }
 
 static void on_l2nobuffer(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -713,7 +737,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_l2nobuffer\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_l2nobuffer\n");
 }
 
 static void on_usrinfo(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -726,7 +750,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_usrinfo\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_usrinfo\n");
 }
 
 static void handle_uc_event(uc_t *uc, void *user_data, uc_event_t *e)
@@ -736,7 +760,7 @@
     session = (switch_core_session_t *) user_data;
     assert(session != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "event %d\n", e->e);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "event %s\n", uc_event_to_str(e->e));
     switch (e->e)
     {
     case UC_EVENT_DEVICEFAIL:
@@ -769,9 +793,6 @@
     case UC_EVENT_DIALEDNUMBER:
         on_dialednumber(uc, session, e);
         break;
-    case UC_EVENT_DIALTONE:
-        on_dialtone(uc, session, e);
-        break;
     case UC_EVENT_DIALING:
         on_dialing(uc, session, e);
         break;
@@ -830,7 +851,7 @@
         on_usrinfo(uc, session, e);
         break;
     default:
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unknown unicall event %d\n", e->e);
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unknown unicall event %d\n", e->e);
         break;
     }
 }
@@ -846,8 +867,8 @@
 }
 
 /* 
-   State methods they get called when the state changes to the specific state 
-   returning SWITCH_STATUS_SUCCESS tells the core to execute the standard state method next
+   State methods. They get called when the state changes to the specified state.
+   Returning SWITCH_STATUS_SUCCESS tells the core to execute the standard state method next,
    so if you fully implement the state you can return SWITCH_STATUS_FALSE to skip it.
 */
 static switch_status_t unicall_on_init(switch_core_session_t *session)
@@ -860,14 +881,14 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_on_init(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_on_init(%p)\n", (void *) session);
 
     switch_set_flag_locked(tech_pvt, TFLAG_IO);
 
     /* Move channel's state machine to ROUTING. This means the call is trying
-       to get from the initial start where the call because, to the point
-       where a destination has been identified. If the channel is simply
-       left in the initial state, nothing will happen. */
+       to get from the initial state to the point where a destination has been
+       identified. If the channel is simply left in the initial state, nothing
+       will happen. */
     switch_channel_set_state(channel, CS_ROUTING);
     switch_mutex_lock(globals.mutex);
     globals.calls++;
@@ -886,9 +907,9 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt != NULL);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_on_routing(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_on_routing(%p)\n", (void *) session);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL ROUTING\n", switch_channel_get_name(channel));
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s channel routing\n", switch_channel_get_name(channel));
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -903,9 +924,9 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt != NULL);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_on_execute(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_on_execute(%p)\n", (void *) session);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL EXECUTE\n", switch_channel_get_name(channel));
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s channel execute\n", switch_channel_get_name(channel));
 
 
     return SWITCH_STATUS_SUCCESS;
@@ -921,7 +942,7 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt != NULL);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_on_hangup(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_on_hangup(%p)\n", (void *) session);
 
     switch_clear_flag_locked(tech_pvt, TFLAG_IO);
     switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
@@ -932,10 +953,16 @@
     if (tech_pvt->write_codec.implementation)
         switch_core_codec_destroy(&tech_pvt->write_codec);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL HANGUP\n", switch_channel_get_name(channel));
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s channel hangup\n", switch_channel_get_name(channel));
 
-    //if ((ret = uc_call_control(uc, UC_OP_DROPCALL, crn, (void *) switch_channel_get_cause(channel))))
-    //    ???;
+#if 0
+    if ((ret = uc_call_control(uc, UC_OP_DROPCALL, crn, (void *) (intptr_t) switch_channel_get_cause(channel))) < 0)
+    {
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Drop call failed - %s\n", uc_ret_to_str(ret));
+        return SWITCH_STATUS_FAILED;
+    }
+    /*endif*/
+#endif
 
     switch_mutex_lock(globals.mutex);
     if (--globals.calls < 0)
@@ -955,23 +982,23 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt != NULL);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_kill_channel(%p, %d)\n", (void *) session, sig);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_kill_channel(%p, %d)\n", (void *) session, sig);
 
     switch (sig)
     {
     case SWITCH_SIG_KILL:
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_kill_channel(%p, %d) SIG_KILL\n", (void *) session, sig);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_kill_channel(%p, %d) SIG_KILL\n", (void *) session, sig);
         switch_clear_flag_locked(tech_pvt, TFLAG_IO);
         switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
         switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
         //switch_thread_cond_signal(tech_pvt->cond);
         break;
     case SWITCH_SIG_BREAK:
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_kill_channel(%p, %d) SIG_BREAK\n", (void *) session, sig);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_kill_channel(%p, %d) SIG_BREAK\n", (void *) session, sig);
         switch_set_flag_locked(tech_pvt, TFLAG_BREAK);
         break;
     default:
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_kill_channel(%p, %d) DEFAULT\n", (void *) session, sig);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_kill_channel(%p, %d) DEFAULT\n", (void *) session, sig);
         break;
     }
 
@@ -980,7 +1007,7 @@
 
 static switch_status_t unicall_on_exchange_media(switch_core_session_t *session)
 {
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_on_exchange_media(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_on_exchange_media(%p)\n", (void *) session);
 
     switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL LOOPBACK\n");
     return SWITCH_STATUS_SUCCESS;
@@ -988,7 +1015,7 @@
 
 static switch_status_t unicall_on_soft_execute(switch_core_session_t *session)
 {
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_on_soft_execute(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_on_soft_execute(%p)\n", (void *) session);
 
     switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL TRANSMIT\n");
     return SWITCH_STATUS_SUCCESS;
@@ -999,7 +1026,7 @@
     private_t *tech_pvt = switch_core_session_get_private(session);
     switch_assert(tech_pvt != NULL);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_send_dtmf(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_send_dtmf(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1017,7 +1044,7 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_read_frame(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_read_frame(%p)\n", (void *) session);
 
     tech_pvt->read_frame.flags = SFF_NONE;
     *frame = NULL;
@@ -1069,7 +1096,7 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_write_frame(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_write_frame(%p)\n", (void *) session);
 
     if (!switch_test_flag(tech_pvt, TFLAG_IO))
         return SWITCH_STATUS_FALSE;
@@ -1094,7 +1121,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "redirect_audio(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "redirect_audio(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1112,7 +1139,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "transmit_text(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "transmit_text(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1130,10 +1157,16 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "answer(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "answer(%p)\n", (void *) session);
 
-    //if ((ret = uc_call_control(uc, UC_OP_ANSWERCALL, crn, NULL)))
-    //    ???;
+#if 0
+    if ((ret = uc_call_control(uc, UC_OP_ANSWERCALL, crn, NULL)) < 0)
+    {
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Answer call failed - %s\n", uc_ret_to_str(ret));
+        return SWITCH_STATUS_FAILED;
+    }
+    /*endif*/
+#endif
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1151,10 +1184,16 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "progress(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "progress(%p)\n", (void *) session);
 
-    //if ((ret = uc_call_control(uc, UC_OP_ACCEPTCALL, crn, NULL)))
-    //    ???;
+#if 0
+    if ((ret = uc_call_control(uc, UC_OP_ACCEPTCALL, crn, NULL)) < 0)
+    {
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Accept call failed - %s\n", uc_ret_to_str(ret));
+        return SWITCH_STATUS_FAILED;
+    }
+    /*endif*/
+#endif
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1172,7 +1211,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "bridge(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "bridge(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1190,7 +1229,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unbridge(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unbridge(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1208,7 +1247,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "transfer(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "transfer(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1226,7 +1265,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "ringing(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ringing(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1244,7 +1283,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "media(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "media(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1262,7 +1301,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "nomedia(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "nomedia(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1280,7 +1319,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "hold(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "hold(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1298,7 +1337,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unhold(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unhold(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1316,7 +1355,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "redirect(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "redirect(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1334,7 +1373,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "respond(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "respond(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1352,7 +1391,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "broadcast(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "broadcast(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1370,7 +1409,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "media_redirect(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "media_redirect(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1388,7 +1427,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "deflect(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "deflect(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1406,7 +1445,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "video_refresh_req(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "video_refresh_req(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1424,7 +1463,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "display(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "display(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1472,7 +1511,7 @@
     case SWITCH_MESSAGE_INDICATE_DISPLAY:
         return display(session, msg);
     default:
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_receive_message(%p) %d\n", (void *) session, msg->message_id);
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_receive_message(%p) %d\n", (void *) session, msg->message_id);
         break;
     }
 
@@ -1499,7 +1538,7 @@
     int hide;
     char name[128];
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_outgoing_channel(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_outgoing_channel(%p)\n", (void *) session);
 
     if ((*new_session = switch_core_session_request(unicall_endpoint_interface, pool)) == NULL)
     {
@@ -1540,62 +1579,66 @@
     //uc_callparm_userinfo_layer1_protocol(callparms, prot);
     //uc_callparm_user_rate(callparms, rate);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "destination '%s'\n", outbound_profile->destination_number);
-    uc_callparm_destination_number(callparms, outbound_profile->destination_number);
-    uc_callparm_destination_ton(callparms, outbound_profile->destination_number_ton);
-    uc_callparm_destination_npi(callparms, outbound_profile->destination_number_numplan);
-    //uc_callparm_destination_sub_addr_number(callparms, num);
-    //uc_callparm_destination_sub_addr_ton(callparms, ton);
-    //uc_callparm_destination_sub_addr_npi(callparms, npi);
-
-    //uc_callparm_redirecting_cause(callparms, cause);
-    //uc_callparm_redirecting_presentation(callparms, pres);
-    uc_callparm_redirecting_number(callparms, outbound_profile->rdnis);
-    uc_callparm_redirecting_ton(callparms, outbound_profile->rdnis_ton);
-    uc_callparm_redirecting_npi(callparms, outbound_profile->rdnis_numplan);
-    //uc_callparm_redirecting_subaddr(callparms, num);
-    //uc_callparm_redirecting_subaddr_ton(callparms, ton);
-    //uc_callparm_redirecting_subaddr_npi(callparms, npi);
-
-    //uc_callparm_original_called_number(callparms, num);
-    //uc_callparm_original_called_number_ton(callparms, ton);
-    //uc_callparm_original_called_number_npi(callparms, npi);
-
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "caller id name '%s'\n", outbound_profile->caller_id_name);
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "caller id number '%s'\n", outbound_profile->caller_id_number);
-    uc_callparm_originating_name(callparms, outbound_profile->caller_id_name);
-    uc_callparm_originating_number(callparms, outbound_profile->caller_id_number);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "destination '%s'\n", outbound_profile->destination_number);
+    uc_callparm_set_destination_number(callparms, outbound_profile->destination_number);
+    uc_callparm_set_destination_ton(callparms, outbound_profile->destination_number_ton);
+    uc_callparm_set_destination_npi(callparms, outbound_profile->destination_number_numplan);
+    //uc_callparm_set_destination_sub_addr_number(callparms, num);
+    //uc_callparm_set_destination_sub_addr_ton(callparms, ton);
+    //uc_callparm_set_destination_sub_addr_npi(callparms, npi);
+
+    //uc_callparm_set_redirecting_cause(callparms, cause);
+    //uc_callparm_set_redirecting_presentation(callparms, pres);
+    uc_callparm_set_redirecting_number(callparms, outbound_profile->rdnis);
+    uc_callparm_set_redirecting_ton(callparms, outbound_profile->rdnis_ton);
+    uc_callparm_set_redirecting_npi(callparms, outbound_profile->rdnis_numplan);
+    //uc_callparm_set_redirecting_subaddr(callparms, num);
+    //uc_callparm_set_redirecting_subaddr_ton(callparms, ton);
+    //uc_callparm_set_redirecting_subaddr_npi(callparms, npi);
+
+    //uc_callparm_set_original_called_number(callparms, num);
+    //uc_callparm_set_original_called_number_ton(callparms, ton);
+    //uc_callparm_set_original_called_number_npi(callparms, npi);
+
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "caller id name '%s'\n", outbound_profile->caller_id_name);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "caller id number '%s'\n", outbound_profile->caller_id_number);
+    uc_callparm_set_originating_name(callparms, outbound_profile->caller_id_name);
+    uc_callparm_set_originating_number(callparms, outbound_profile->caller_id_number);
     screen = switch_test_flag(outbound_profile, SWITCH_CPF_SCREEN);
     hide = switch_test_flag(outbound_profile, SWITCH_CPF_HIDE_NUMBER);
     if (!screen  &&  !hide)
-        uc_callparm_originating_presentation(callparms, UC_PRES_ALLOWED_USER_NUMBER_NOT_SCREENED);
+        uc_callparm_set_originating_presentation(callparms, UC_PRES_ALLOWED_USER_NUMBER_NOT_SCREENED);
     else if (!screen  &&  hide)
-        uc_callparm_originating_presentation(callparms, UC_PRES_PROHIB_USER_NUMBER_NOT_SCREENED);
+        uc_callparm_set_originating_presentation(callparms, UC_PRES_PROHIB_USER_NUMBER_NOT_SCREENED);
     else if (screen  &&  !hide)
-        uc_callparm_originating_presentation(callparms, UC_PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN);
+        uc_callparm_set_originating_presentation(callparms, UC_PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN);
     else
-        uc_callparm_originating_presentation(callparms, UC_PRES_PROHIB_USER_NUMBER_PASSED_SCREEN);
-    uc_callparm_originating_ton(callparms, outbound_profile->caller_ton);
-    uc_callparm_originating_npi(callparms, outbound_profile->caller_numplan);
-    //uc_callparm_originating_sub_addr_ton(callparms, ton);
-    //uc_callparm_originating_sub_addr_npi(callparms, npi);
-    //uc_callparm_originating_sub_addr_number(callparms, num);
+        uc_callparm_set_originating_presentation(callparms, UC_PRES_PROHIB_USER_NUMBER_PASSED_SCREEN);
+    uc_callparm_set_originating_ton(callparms, outbound_profile->caller_ton);
+    uc_callparm_set_originating_npi(callparms, outbound_profile->caller_numplan);
+    //uc_callparm_set_originating_sub_addr_number(callparms, num);
+    //uc_callparm_set_originating_sub_addr_ton(callparms, ton);
+    //uc_callparm_set_originating_sub_addr_npi(callparms, npi);
 
-    uc_callparm_calling_party_category(callparms, UC_CALLER_CATEGORY_NATIONAL_SUBSCRIBER_CALL);
+    uc_callparm_set_calling_party_category(callparms, UC_CALLER_CATEGORY_NATIONAL_SUBSCRIBER_CALL);
     
     makecall.callparms = callparms;
-    makecall.crn = 0;
+    makecall.call = NULL;
 
 #if 0
-    if ((ret = uc_call_control(uc, UC_OP_MAKECALL, 0, (void *) &makecall)))
-        ????;
+    if ((ret = uc_call_control(uc, UC_OP_MAKECALL, 0, (void *) &makecall)) < 0)
+    {
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Make call failed - %s\n", uc_ret_to_str(ret));
+        return SWITCH_STATUS_FAILED;
+    }
+    /*endif*/
 #endif
     free(callparms);
 
     switch_channel_set_flag(channel, CF_OUTBOUND);
     switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND);
     switch_channel_set_state(channel, CS_INIT);
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_outgoing_channel(%p) SUCCESS\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_outgoing_channel(%p) SUCCESS\n", (void *) session);
     return SWITCH_CAUSE_SUCCESS;
 }
 
@@ -1606,7 +1649,7 @@
 
     switch_assert(tech_pvt != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_receive_event(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_receive_event(%p)\n", (void *) session);
 
     if (body == NULL)
         body = "";
@@ -1620,8 +1663,6 @@
     fd_set write;
     fd_set oob;
 	int fd;
-	int i;
-    int sel_on;
     int ret;
     switch_event_t *s_event;
     uc_t *uc = (uc_t *) obj;
@@ -1636,51 +1677,25 @@
         switch_event_fire(&s_event);
     }
 
-    for (i = 0;  i < MAX_SPANS;  i++)
-    {
-        if (span_data[i])
-        {
-            if ((ret = uc_call_control(span_data[i]->uc, UC_OP_UNBLOCK, 0, (void *) (intptr_t) -1)) < 0)
-                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Unblock failed - %s\n", uc_ret_to_str(ret));
-            /*endif*/
-        }
-    }
+    uc_get_device_handle(uc, 0, &fd);
+    if ((ret = uc_call_control(uc, UC_OP_UNBLOCK, 0, (void *) (intptr_t) -1)) < 0)
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Unblock failed - %s\n", uc_ret_to_str(ret));
+    /*endif*/
     FD_ZERO(&read);
     FD_ZERO(&write);
     FD_ZERO(&oob);
 	for (;;)
     {
-		i = 0;
-        sel_on = -1;
-		for (i = 0;  i < MAX_SPANS;  i++)
-        {
-            if (span_data[i])
-            {
-    			fd = span_data[i]->fd;
-    			FD_SET(fd, &read);
-    			//FD_SET(fd, &write);
-    			//FD_SET(fd, &oob);
-    			if (fd > sel_on)
-	    			sel_on = fd;
-            }
-		}
+		FD_SET(fd, &read);
+		//FD_SET(fd, &write);
+		//FD_SET(fd, &oob);
 
-		if (sel_on > -1)
+		if (select(fd + 1, &read, NULL, NULL, NULL))
         {
-			if (select(++sel_on, &read, NULL, NULL, NULL))
+		    if (FD_ISSET(fd, &read))
             {
-				for (i = 0;  i < MAX_SPANS;  i++)
-                {
-                    if (span_data[i])
-                    {
-				    	fd = span_data[i]->fd;
-					    if (FD_ISSET(fd, &read))
-                        {
-                            uc_check_event(span_data[i]->uc);
-                            uc_schedule_run(span_data[i]->uc);
-                        }
-                    }
-				}
+               uc_check_event(uc);
+               uc_schedule_run(uc);
 			}
 		}
 	}
@@ -1733,6 +1748,7 @@
     int current_span = 0;
     int min_span = 0;
     int max_span = 0;
+    int logging_level;
     int i;
     char *id;
     span_data_t *sp;
@@ -1861,6 +1877,8 @@
                         sp->protocol_end = UC_MODE_CPE;
                     else if (strcasecmp(val, "peer") == 0)
                         sp->protocol_end = UC_MODE_PEER;
+                    else
+                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "UNKNOWN protocol-end TYPE %s\n", val);
                 }
                 else if (strcmp(var, "outgoing-allowed") == 0)
                 {
@@ -1870,6 +1888,10 @@
                 {
                     sp->dialplan = strdup(val);
                 }
+                else if (strcmp(var, "context") == 0)
+                {
+                    sp->context = strdup(val);
+                }
                 else
                 {
                     switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "UNKNOWN PARAMETER %s\n", var);
@@ -1899,6 +1921,9 @@
             }
             uc_get_device_handle(sp->uc, 0, &sp->fd);
             uc_set_signaling_callback(sp->uc, handle_uc_event, (void *) (intptr_t) current_span);
+            logging_level = UC_LOG_SEVERITY_MASK | UC_LOG_SHOW_TAG | UC_LOG_SHOW_PROTOCOL;
+            uc_set_logging(sp->uc, logging_level, 1, sp->id);
+
             switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Launched span %d\n", current_span);
             unicall_thread_launch(sp->uc);
             switch_mutex_lock(globals.hash_mutex);
@@ -1911,8 +1936,15 @@
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_unicall_load)
 {
+    int logging_level;
     switch_status_t status = SWITCH_STATUS_SUCCESS;
 
+    uc_start();
+    uc_set_error_handler(unicall_report);
+    uc_set_message_handler(unicall_message);
+    logging_level = UC_LOG_SEVERITY_MASK;
+    uc_set_logging(NULL, logging_level, 1, NULL);
+
 	memset(span_data, 0, sizeof(span_data));
 
     module_pool = pool;
@@ -1949,5 +1981,6 @@
 
     for (x = 0, running = -1;  running  &&  x <= 100;  x++)
         switch_yield(20000);
+    uc_end();
     return SWITCH_STATUS_SUCCESS;
 }


From anthm at freeswitch.org  Mon Jan 19 08:00:11 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 10:00:11 -0600
Subject: [Freeswitch-svn] [commit] r11274 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Mon Jan 19 10:00:11 2009
New Revision: 11274

Log:
FSCORE-272

Modified:
   freeswitch/trunk/src/switch_channel.c
   freeswitch/trunk/src/switch_ivr.c

Modified: freeswitch/trunk/src/switch_channel.c
==============================================================================
--- freeswitch/trunk/src/switch_channel.c	(original)
+++ freeswitch/trunk/src/switch_channel.c	Mon Jan 19 10:00:11 2009
@@ -1641,6 +1641,12 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
+	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CRIT, "INVALID! Channel [%s] is an outbound leg\n", channel->name);
+		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+		return SWITCH_STATUS_FALSE;
+	}
+
 	if (switch_channel_test_flag(channel, CF_ANSWERED)) {
 		return SWITCH_STATUS_SUCCESS;
 	}
@@ -1673,6 +1679,12 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
+	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CRIT, "INVALID! Channel [%s] is an outbound leg\n", channel->name);
+		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+		return SWITCH_STATUS_FALSE;
+	}
+
 	if (switch_channel_test_flag(channel, CF_ANSWERED)) {
 		return SWITCH_STATUS_SUCCESS;
 	}
@@ -1782,6 +1794,12 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
+	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CRIT, "INVALID! Channel [%s] is an outbound leg\n", channel->name);
+		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+		return SWITCH_STATUS_FALSE;
+	}
+
 	if (switch_channel_test_flag(channel, CF_ANSWERED)) {
 		return SWITCH_STATUS_SUCCESS;
 	}

Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c	(original)
+++ freeswitch/trunk/src/switch_ivr.c	Mon Jan 19 10:00:11 2009
@@ -41,7 +41,6 @@
 SWITCH_DECLARE(switch_status_t) switch_ivr_sleep(switch_core_session_t *session, uint32_t ms, switch_bool_t sync, switch_input_args_t *args)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
-	int media_ready = 0;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
 	switch_time_t start = switch_timestamp_now(), now, done = switch_timestamp_now() + (ms * 1000);
 	switch_frame_t *read_frame, cng_frame = { 0 };
@@ -55,16 +54,20 @@
 	int sval = 0;
 	const char *var;
 
-	if (!switch_channel_test_flag(channel, CF_PROXY_MODE) && !switch_channel_media_ready(channel) && !switch_channel_test_flag(channel, CF_SERVICE)) {
+	if (!switch_channel_test_flag(channel, CF_OUTBOUND) && !switch_channel_test_flag(channel, CF_PROXY_MODE) && 
+		!switch_channel_media_ready(channel) && !switch_channel_test_flag(channel, CF_SERVICE)) {
 		if ((status = switch_channel_pre_answer(channel)) != SWITCH_STATUS_SUCCESS) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot establish media.\n");
 			return SWITCH_STATUS_FALSE;
 		}
 	}
 
-	media_ready = (switch_channel_media_ready(channel) && !switch_channel_test_flag(channel, CF_SERVICE));
-	
-	if (ms > 100 && media_ready && (var = switch_channel_get_variable(channel, SWITCH_SEND_SILENCE_WHEN_IDLE_VARIABLE)) && (sval = atoi(var))) {
+	if (!switch_channel_media_ready(channel)) {
+		switch_yield(ms * 1000);
+		return SWITCH_STATUS_SUCCESS;
+	}
+
+	if (ms > 100 && (var = switch_channel_get_variable(channel, SWITCH_SEND_SILENCE_WHEN_IDLE_VARIABLE)) && (sval = atoi(var))) {
 		switch_core_session_get_read_impl(session, &imp);
 		
 		if (switch_core_codec_init(&codec,
@@ -102,7 +105,7 @@
 	cng_frame.buflen = 2;
 	switch_set_flag((&cng_frame), SFF_CNG);
 
-	if (sync && media_ready) {
+	if (sync) {
 		switch_channel_audio_sync(channel);
 	}
 	
@@ -169,11 +172,6 @@
 			}
 		}
 
-		if (!media_ready) {
-			switch_cond_next();
-			continue;
-		}
-
 		status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
 
 		if (!SWITCH_READ_ACCEPTABLE(status)) {


From anthm at freeswitch.org  Mon Jan 19 08:10:54 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 10:10:54 -0600
Subject: [Freeswitch-svn] [commit] r11275 - in freeswitch/trunk/src: .
	include mod/applications/mod_commands mod/applications/mod_dptools
Message-ID: 

Author: anthm
Date: Mon Jan 19 10:10:54 2009
New Revision: 11275

Log:
pass one on refactor

Modified:
   freeswitch/trunk/src/include/switch_ivr.h
   freeswitch/trunk/src/include/switch_types.h
   freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c
   freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
   freeswitch/trunk/src/switch_ivr_async.c

Modified: freeswitch/trunk/src/include/switch_ivr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_ivr.h	(original)
+++ freeswitch/trunk/src/include/switch_ivr.h	Mon Jan 19 10:10:54 2009
@@ -298,7 +298,8 @@
 */
 SWITCH_DECLARE(switch_status_t) switch_ivr_tone_detect_session(switch_core_session_t *session,
 															   const char *key, const char *tone_spec,
-															   const char *flags, time_t timeout, int hits, const char *app, const char *data);
+															   const char *flags, time_t timeout, int hits, 
+															   const char *app, const char *data, switch_tone_detect_callback_t callback);
 
 
 

Modified: freeswitch/trunk/src/include/switch_types.h
==============================================================================
--- freeswitch/trunk/src/include/switch_types.h	(original)
+++ freeswitch/trunk/src/include/switch_types.h	Mon Jan 19 10:10:54 2009
@@ -1343,6 +1343,7 @@
 typedef struct switch_core_port_allocator switch_core_port_allocator_t;
 typedef struct switch_media_bug switch_media_bug_t;
 typedef switch_bool_t (*switch_media_bug_callback_t) (switch_media_bug_t *, void *, switch_abc_type_t);
+typedef switch_bool_t (*switch_tone_detect_callback_t) (switch_core_session_t *, const char *, const char *);
 typedef struct switch_xml_binding switch_xml_binding_t;
 
 typedef switch_status_t (*switch_core_codec_encode_func_t) (switch_codec_t *codec,

Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	Mon Jan 19 10:10:54 2009
@@ -1405,7 +1405,7 @@
 		}
 	}
 
-	switch_ivr_tone_detect_session(rsession, argv[1], argv[2], argv[3], to, hits, argv[5], argv[6]);
+	switch_ivr_tone_detect_session(rsession, argv[1], argv[2], argv[3], to, hits, argv[5], argv[6], NULL);
 	stream->write_function(stream, "+OK Enabling tone detection '%s' '%s' '%s'\n", argv[1], argv[2], argv[3]);
 
   done:

Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	Mon Jan 19 10:10:54 2009
@@ -1178,7 +1178,7 @@
 
 SWITCH_STANDARD_APP(fax_detect_session_function)
 {
-	switch_ivr_tone_detect_session(session, "fax", "1100.0", "r", 0, 1, NULL, NULL);
+	switch_ivr_tone_detect_session(session, "fax", "1100.0", "r", 0, 1, NULL, NULL, NULL);
 }
 
 SWITCH_STANDARD_APP(system_session_function)
@@ -1234,7 +1234,7 @@
 
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Enabling tone detection '%s' '%s'\n", argv[0], argv[1]);
 
-	switch_ivr_tone_detect_session(session, argv[0], argv[1], argv[2], to, hits, argv[4], argv[5]);
+	switch_ivr_tone_detect_session(session, argv[0], argv[1], argv[2], to, hits, argv[4], argv[5], NULL);
 }
 
 SWITCH_STANDARD_APP(stop_fax_detect_session_function)

Modified: freeswitch/trunk/src/switch_ivr_async.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_async.c	(original)
+++ freeswitch/trunk/src/switch_ivr_async.c	Mon Jan 19 10:10:54 2009
@@ -1197,6 +1197,8 @@
 	int hits;
 	int sleep;
 	int expires;
+	int once;
+	switch_tone_detect_callback_t callback;
 } switch_tone_detect_t;
 
 typedef struct {
@@ -1211,6 +1213,7 @@
 	switch_tone_container_t *cont = (switch_tone_container_t *) user_data;
 	switch_frame_t *frame = NULL;
 	int i = 0;
+	switch_bool_t rval = SWITCH_TRUE;
 
 	switch (type) {
 	case SWITCH_ABC_TYPE_INIT:
@@ -1264,8 +1267,13 @@
 					if (cont->list[i].hits >= cont->list[i].total_hits) {
 						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "TONE %s DETECTED\n", cont->list[i].key);
 						cont->list[i].up = 0;
-					
-						if (cont->list[i].app) {
+						if (cont->list[i].once) {
+							rval = SWITCH_FALSE;
+						}
+
+						if (cont->list[i].callback) {
+							rval = cont->list[i].callback(cont->session, cont->list[i].app, cont->list[i].data);
+						} else if (cont->list[i].app) {
 							if (switch_event_create(&event, SWITCH_EVENT_COMMAND) == SWITCH_STATUS_SUCCESS) {
 								switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-command", "execute");
 								switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "execute-app-name", cont->list[i].app);
@@ -1278,7 +1286,7 @@
 						if (switch_event_create(&event, SWITCH_EVENT_DETECTED_TONE) == SWITCH_STATUS_SUCCESS) {
 							switch_event_t *dup;
 							switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detected-Tone", cont->list[i].key);
-
+							
 							if (switch_event_dup(&dup, event) == SWITCH_STATUS_SUCCESS) {
 								switch_event_fire(&dup);
 							}
@@ -1298,7 +1306,7 @@
 	default:
 		break;
 	}
-	return SWITCH_TRUE;
+	return rval;
 }
 
 SWITCH_DECLARE(switch_status_t) switch_ivr_stop_tone_detect_session(switch_core_session_t *session)
@@ -1316,7 +1324,9 @@
 
 SWITCH_DECLARE(switch_status_t) switch_ivr_tone_detect_session(switch_core_session_t *session,
 															   const char *key, const char *tone_spec,
-															   const char *flags, time_t timeout, int hits, const char *app, const char *data)
+															   const char *flags, time_t timeout, 
+															   int hits, const char *app, const char *data, 
+															   switch_tone_detect_callback_t callback)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 	switch_codec_t *read_codec = switch_core_session_get_read_codec(session);
@@ -1395,6 +1405,8 @@
 		cont->list[cont->index].data = switch_core_session_strdup(session, data);
 	}
 
+	cont->list[cont->index].callback = callback;
+
 	if (!hits) hits = 1;
 
 	cont->list[cont->index].hits = 0;
@@ -1410,6 +1422,10 @@
 	if (switch_strlen_zero(flags)) {
 		bflags = SMBF_READ_REPLACE;
 	} else {
+		if (strchr(flags, 'o')) {
+			cont->list[cont->index].once = 1;
+		}
+
 		if (strchr(flags, 'r')) {
 			bflags |= SMBF_READ_REPLACE;
 		} else if (strchr(flags, 'w')) {


From intralanman at freeswitch.org  Mon Jan 19 08:14:50 2009
From: intralanman at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 10:14:50 -0600
Subject: [Freeswitch-svn] [commit] r11276 -
	freeswitch/trunk/scripts/contrib/Phil
Message-ID: 

Author: intralanman
Date: Mon Jan 19 10:14:49 2009
New Revision: 11276

Log:
new contrib dir for phm_it


Added:
   freeswitch/trunk/scripts/contrib/Phil/


From brian at freeswitch.org  Mon Jan 19 08:15:22 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 10:15:22 -0600
Subject: [Freeswitch-svn] [commit] r11277 - in
	freeswitch/trunk/src/mod/languages/mod_managed: . managed
Message-ID: 

Author: brian
Date: Mon Jan 19 10:15:21 2009
New Revision: 11277

Log:
swigall

Modified:
   freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
   freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs

Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	Mon Jan 19 10:15:21 2009
@@ -20087,6 +20087,18 @@
 }
 
 
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_mux_channels(void * jarg1, unsigned long jarg2, unsigned long jarg3) {
+  int16_t *arg1 = (int16_t *) 0 ;
+  uint32_t arg2 ;
+  uint32_t arg3 ;
+  
+  arg1 = (int16_t *)jarg1; 
+  arg2 = (uint32_t)jarg2; 
+  arg3 = (uint32_t)jarg3; 
+  switch_mux_channels(arg1,arg2,arg3);
+}
+
+
 SWIGEXPORT void SWIGSTDCALL CSharp_switch_unicast_conninfo_session_set(void * jarg1, void * jarg2) {
   switch_unicast_conninfo *arg1 = (switch_unicast_conninfo *) 0 ;
   switch_core_session_t *arg2 = (switch_core_session_t *) 0 ;

Modified: freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs	Mon Jan 19 10:15:21 2009
@@ -2883,6 +2883,10 @@
     return ret;
   }
 
+  public static void switch_mux_channels(SWIGTYPE_p_short data, uint samples, uint channels) {
+    freeswitchPINVOKE.switch_mux_channels(SWIGTYPE_p_short.getCPtr(data), samples, channels);
+  }
+
   public static switch_status_t switch_ivr_deactivate_unicast(SWIGTYPE_p_switch_core_session session) {
     switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_deactivate_unicast(SWIGTYPE_p_switch_core_session.getCPtr(session));
     return ret;
@@ -9137,6 +9141,9 @@
   [DllImport("mod_managed", EntryPoint="CSharp_switch_merge_sln")]
   public static extern uint switch_merge_sln(HandleRef jarg1, uint jarg2, HandleRef jarg3, uint jarg4);
 
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_mux_channels")]
+  public static extern void switch_mux_channels(HandleRef jarg1, uint jarg2, uint jarg3);
+
   [DllImport("mod_managed", EntryPoint="CSharp_switch_unicast_conninfo_session_set")]
   public static extern void switch_unicast_conninfo_session_set(HandleRef jarg1, HandleRef jarg2);
 


From brian at freeswitch.org  Mon Jan 19 08:25:49 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 10:25:49 -0600
Subject: [Freeswitch-svn] [commit] r11278 - freeswitch/trunk/src
Message-ID: 

Author: brian
Date: Mon Jan 19 10:25:49 2009
New Revision: 11278

Log:
just fail silently in these cases.  see FSCORE-272

Modified:
   freeswitch/trunk/src/switch_channel.c

Modified: freeswitch/trunk/src/switch_channel.c
==============================================================================
--- freeswitch/trunk/src/switch_channel.c	(original)
+++ freeswitch/trunk/src/switch_channel.c	Mon Jan 19 10:25:49 2009
@@ -1641,12 +1641,6 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
-	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
-		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CRIT, "INVALID! Channel [%s] is an outbound leg\n", channel->name);
-		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
-		return SWITCH_STATUS_FALSE;
-	}
-
 	if (switch_channel_test_flag(channel, CF_ANSWERED)) {
 		return SWITCH_STATUS_SUCCESS;
 	}
@@ -1655,6 +1649,10 @@
 		return SWITCH_STATUS_SUCCESS;
 	}
 
+	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+		return SWITCH_STATUS_SUCCESS;
+	}
+
 	msg.message_id = SWITCH_MESSAGE_INDICATE_PROGRESS;
 	msg.from = channel->name;
 	status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
@@ -1679,12 +1677,6 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
-	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
-		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CRIT, "INVALID! Channel [%s] is an outbound leg\n", channel->name);
-		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
-		return SWITCH_STATUS_FALSE;
-	}
-
 	if (switch_channel_test_flag(channel, CF_ANSWERED)) {
 		return SWITCH_STATUS_SUCCESS;
 	}
@@ -1693,6 +1685,10 @@
 		return SWITCH_STATUS_SUCCESS;
 	}
 
+	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+		return SWITCH_STATUS_SUCCESS;
+	}
+
 	msg.message_id = SWITCH_MESSAGE_INDICATE_RINGING;
 	msg.from = channel->name;
 	status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
@@ -1794,13 +1790,11 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
-	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
-		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CRIT, "INVALID! Channel [%s] is an outbound leg\n", channel->name);
-		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
-		return SWITCH_STATUS_FALSE;
+	if (switch_channel_test_flag(channel, CF_ANSWERED)) {
+		return SWITCH_STATUS_SUCCESS;
 	}
 
-	if (switch_channel_test_flag(channel, CF_ANSWERED)) {
+	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
 		return SWITCH_STATUS_SUCCESS;
 	}
 
@@ -1814,8 +1808,6 @@
 		switch_channel_hangup(channel, SWITCH_CAUSE_INCOMPATIBLE_DESTINATION);
 	}
 
-
-	
 	return status;
 }
 


From Phil at freeswitch.org  Mon Jan 19 08:30:20 2009
From: Phil at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 10:30:20 -0600
Subject: [Freeswitch-svn] [commit] r11279 -
	freeswitch/trunk/scripts/contrib/Phil/pylons
Message-ID: 

Author: Phil
Date: Mon Jan 19 10:30:20 2009
New Revision: 11279

Log:
pylons controllers for FS

Added:
   freeswitch/trunk/scripts/contrib/Phil/pylons/


From anthm at freeswitch.org  Mon Jan 19 08:53:51 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 10:53:51 -0600
Subject: [Freeswitch-svn] [commit] r11280 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Mon Jan 19 10:53:51 2009
New Revision: 11280

Log:
no timers with 0 interval

Modified:
   freeswitch/trunk/src/switch_time.c

Modified: freeswitch/trunk/src/switch_time.c
==============================================================================
--- freeswitch/trunk/src/switch_time.c	(original)
+++ freeswitch/trunk/src/switch_time.c	Mon Jan 19 10:53:51 2009
@@ -238,7 +238,7 @@
 		}
 	}
 
-	if (globals.RUNNING != 1 || !globals.mutex) {
+	if (globals.RUNNING != 1 || !globals.mutex || timer->interval < 1) {
 		return SWITCH_STATUS_FALSE;
 	}
 
@@ -255,7 +255,7 @@
 		private_info->roll = TIMER_MATRIX[timer->interval].roll;
 		private_info->ready = 1;
 
-		if (timer->interval < MS_PER_TICK) {
+		if (timer->interval > 0 && timer->interval < MS_PER_TICK) {
 			MS_PER_TICK = timer->interval;
 		}
 


From mikej at freeswitch.org  Mon Jan 19 09:02:30 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 11:02:30 -0600
Subject: [Freeswitch-svn] [commit] r11281 - freeswitch/trunk/src
Message-ID: 

Author: mikej
Date: Mon Jan 19 11:02:30 2009
New Revision: 11281

Log:
fix windows build

Modified:
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Mon Jan 19 11:02:30 2009
@@ -221,11 +221,11 @@
 {
 
 	uint32_t i;
-	*hups = 0;
-	*idx = IDX_NADA;
-	int rval = 0;
+	uint8_t rval = 0;
 	switch_channel_t *caller_channel = NULL;
 	int pindex = -1;
+	*hups = 0;
+	*idx = IDX_NADA;
 
 	if (session) {
 		caller_channel = switch_core_session_get_channel(session);


From mikej at freeswitch.org  Mon Jan 19 09:06:29 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 11:06:29 -0600
Subject: [Freeswitch-svn] [commit] r11282 - in
	freeswitch/trunk/src/mod/languages/mod_managed: . managed
Message-ID: 

Author: mikej
Date: Mon Jan 19 11:06:29 2009
New Revision: 11282

Log:
swigall

Modified:
   freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
   freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs

Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	Mon Jan 19 11:06:29 2009
@@ -20953,7 +20953,7 @@
 }
 
 
-SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_tone_detect_session(void * jarg1, char * jarg2, char * jarg3, char * jarg4, void * jarg5, int jarg6, char * jarg7, char * jarg8) {
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_tone_detect_session(void * jarg1, char * jarg2, char * jarg3, char * jarg4, void * jarg5, int jarg6, char * jarg7, char * jarg8, void * jarg9) {
   int jresult ;
   switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
   char *arg2 = (char *) 0 ;
@@ -20963,6 +20963,7 @@
   int arg6 ;
   char *arg7 = (char *) 0 ;
   char *arg8 = (char *) 0 ;
+  switch_tone_detect_callback_t arg9 = (switch_tone_detect_callback_t) 0 ;
   switch_status_t result;
   time_t *argp5 ;
   
@@ -20979,7 +20980,8 @@
   arg6 = (int)jarg6; 
   arg7 = (char *)jarg7; 
   arg8 = (char *)jarg8; 
-  result = (switch_status_t)switch_ivr_tone_detect_session(arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4,arg5,arg6,(char const *)arg7,(char const *)arg8);
+  arg9 = (switch_tone_detect_callback_t)jarg9; 
+  result = (switch_status_t)switch_ivr_tone_detect_session(arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4,arg5,arg6,(char const *)arg7,(char const *)arg8,arg9);
   jresult = result; 
   return jresult;
 }

Modified: freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs	Mon Jan 19 11:06:29 2009
@@ -3032,8 +3032,8 @@
     return ret;
   }
 
-  public static switch_status_t switch_ivr_tone_detect_session(SWIGTYPE_p_switch_core_session session, string key, string tone_spec, string flags, SWIGTYPE_p_time_t timeout, int hits, string app, string data) {
-    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_tone_detect_session(SWIGTYPE_p_switch_core_session.getCPtr(session), key, tone_spec, flags, SWIGTYPE_p_time_t.getCPtr(timeout), hits, app, data);
+  public static switch_status_t switch_ivr_tone_detect_session(SWIGTYPE_p_switch_core_session session, string key, string tone_spec, string flags, SWIGTYPE_p_time_t timeout, int hits, string app, string data, SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_bool_t callback) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_tone_detect_session(SWIGTYPE_p_switch_core_session.getCPtr(session), key, tone_spec, flags, SWIGTYPE_p_time_t.getCPtr(timeout), hits, app, data, SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_bool_t.getCPtr(callback));
     if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve();
     return ret;
   }
@@ -9334,7 +9334,7 @@
   public static extern int switch_ivr_stop_tone_detect_session(HandleRef jarg1);
 
   [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_tone_detect_session")]
-  public static extern int switch_ivr_tone_detect_session(HandleRef jarg1, string jarg2, string jarg3, string jarg4, HandleRef jarg5, int jarg6, string jarg7, string jarg8);
+  public static extern int switch_ivr_tone_detect_session(HandleRef jarg1, string jarg2, string jarg3, string jarg4, HandleRef jarg5, int jarg6, string jarg7, string jarg8, HandleRef jarg9);
 
   [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_play_file")]
   public static extern int switch_ivr_play_file(HandleRef jarg1, HandleRef jarg2, string jarg3, HandleRef jarg4);
@@ -11856,6 +11856,36 @@
 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 1.3.35
+ *
+ * Do not make changes to this file unless you 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;
 


From mikej at freeswitch.org  Mon Jan 19 09:12:07 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 11:12:07 -0600
Subject: [Freeswitch-svn] [commit] r11283 -
	freeswitch/trunk/src/mod/event_handlers/mod_event_socket
Message-ID: 

Author: mikej
Date: Mon Jan 19 11:12:07 2009
New Revision: 11283

Log:
fix windows build

Modified:
   freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c

Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	Mon Jan 19 11:12:07 2009
@@ -1163,8 +1163,6 @@
 			switch_set_flag_locked(listener, LFLAG_HANDLE_DISCO);
 			if (switch_test_flag(listener, LFLAG_LINGER)) {
 				char message[128] = "";
-				int mlen;
-				switch_size_t len;
 				char disco_buf[512] = "";
 
 				switch_snprintf(message, sizeof(message), 
@@ -1175,7 +1173,7 @@
 								"Controlled-Session-UUID: %s\n"
 								"Content-Disposition: linger\n"
 								"Content-Length: %d\n\n", 
-								switch_core_session_get_uuid(listener->session), mlen);
+								switch_core_session_get_uuid(listener->session), (int)mlen);
 
 				len = strlen(disco_buf);
 				switch_socket_send(listener->sock, disco_buf, &len);


From mikej at freeswitch.org  Mon Jan 19 09:27:42 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 11:27:42 -0600
Subject: [Freeswitch-svn] [commit] r11284 -
	freeswitch/trunk/src/mod/formats/mod_shout
Message-ID: 

Author: mikej
Date: Mon Jan 19 11:27:42 2009
New Revision: 11284

Log:
use consistent var types.

Modified:
   freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c

Modified: freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c
==============================================================================
--- freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c	(original)
+++ freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c	Mon Jan 19 11:27:42 2009
@@ -911,7 +911,7 @@
 	shout_context_t *context;
 	int rlen = 0;
 	int16_t *audio = data;
-	int nsamples = *len;
+	size_t nsamples = *len;
 
 	if (!handle) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error no handle\n");
@@ -965,7 +965,7 @@
 	}
 
 	if (handle->channels == 2) {
-		int i, j = 0;
+		switch_size_t i, j = 0;
 		
 		if (context->llen < nsamples) {
 			context->l = switch_core_alloc(context->memory_pool, nsamples * 2);


From brian at freeswitch.org  Mon Jan 19 09:39:47 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 11:39:47 -0600
Subject: [Freeswitch-svn] [commit] r11285 - freeswitch/trunk/conf/dialplan
Message-ID: 

Author: brian
Date: Mon Jan 19 11:39:47 2009
New Revision: 11285

Log:
adding example of how to detect when inband is needed

Modified:
   freeswitch/trunk/conf/dialplan/default.xml

Modified: freeswitch/trunk/conf/dialplan/default.xml
==============================================================================
--- freeswitch/trunk/conf/dialplan/default.xml	(original)
+++ freeswitch/trunk/conf/dialplan/default.xml	Mon Jan 19 11:39:47 2009
@@ -94,6 +94,15 @@
       
 	
       
+      
+      
       
 	
 	


From anthm at freeswitch.org  Mon Jan 19 09:54:55 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 11:54:55 -0600
Subject: [Freeswitch-svn] [commit] r11286 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Mon Jan 19 11:54:54 2009
New Revision: 11286

Log:
refactor pass 2

Modified:
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Mon Jan 19 11:54:54 2009
@@ -74,6 +74,33 @@
 	/*.on_consume_media */ originate_on_consume_media_transmit
 };
 
+
+typedef struct {
+	switch_core_session_t *peer_session;
+	switch_channel_t *peer_channel;
+	switch_caller_profile_t *caller_profile;
+	uint8_t ring_ready;
+	uint8_t early_media;
+	uint8_t answered;
+	uint8_t dead;
+} originate_status_t;
+
+
+typedef struct {
+	switch_core_session_t *session;
+	int32_t idx;
+	uint32_t hups;
+	char file[512];
+	char key[80];
+	uint8_t early_ok;
+	uint8_t ring_ready;
+	uint8_t sent_ring;
+	uint8_t progress;
+	uint8_t return_ring_ready;
+} originate_global_t;
+
+
+
 typedef enum {
 	IDX_TIMEOUT = -3,
 	IDX_CANCEL = -2,
@@ -181,7 +208,7 @@
 	switch_thread_create(&thread, thd_attr, collect_thread_run, collect, switch_core_session_get_pool(collect->session));
 }
 
-static int check_per_channel_timeouts(switch_channel_t **peer_channels, 
+static int check_per_channel_timeouts(originate_status_t *originate_status, 
 									  uint32_t *per_channel_timelimit_sec, 
 									  uint32_t *per_channel_progress_timelimit_sec,
 									  int max,
@@ -191,19 +218,19 @@
 	time_t elapsed = switch_timestamp(NULL) - start;
 
 	for (i = 0; i < max; i++) {
-		if (peer_channels[i] && switch_channel_get_state(peer_channels[i]) < CS_HANGUP) {
+		if (originate_status[i].peer_channel && switch_channel_get_state(originate_status[i].peer_channel) < CS_HANGUP) {
 			if (per_channel_progress_timelimit_sec[i] && elapsed > per_channel_progress_timelimit_sec[i] &&
 				!(
-				  switch_channel_test_flag(peer_channels[i], CF_RING_READY) ||
-				  switch_channel_test_flag(peer_channels[i], CF_ANSWERED) ||
-				  switch_channel_test_flag(peer_channels[i], CF_EARLY_MEDIA)
+				  switch_channel_test_flag(originate_status[i].peer_channel, CF_RING_READY) ||
+				  switch_channel_test_flag(originate_status[i].peer_channel, CF_ANSWERED) ||
+				  switch_channel_test_flag(originate_status[i].peer_channel, CF_EARLY_MEDIA)
 				  )
 				) {
-				switch_channel_hangup(peer_channels[i], SWITCH_CAUSE_PROGRESS_TIMEOUT);
+				switch_channel_hangup(originate_status[i].peer_channel, SWITCH_CAUSE_PROGRESS_TIMEOUT);
 				x++;
 			}
 			if (per_channel_timelimit_sec[i] && elapsed > per_channel_timelimit_sec[i]) {
-				switch_channel_hangup(peer_channels[i], SWITCH_CAUSE_ALLOTTED_TIMEOUT);
+				switch_channel_hangup(originate_status[i].peer_channel, SWITCH_CAUSE_ALLOTTED_TIMEOUT);
 				x++;
 			}
 		}
@@ -212,86 +239,104 @@
 	return x;
 }
 
-static uint8_t check_channel_status(switch_core_session_t *session,
-									switch_channel_t **peer_channels,
-									switch_core_session_t **peer_sessions,
-									uint32_t len, int32_t *idx, uint32_t *hups, char *file, char *key, uint8_t early_ok, 
-									uint8_t *ring_ready, uint8_t *progress,
-									uint8_t return_ring_ready)
+static uint8_t check_channel_status(originate_global_t *oglobals, originate_status_t *originate_status, int len)
 {
 
 	uint32_t i;
-	uint8_t rval = 0;
+	oglobals->hups = 0;
+	oglobals->idx = IDX_NADA;
+	int rval = 0;
 	switch_channel_t *caller_channel = NULL;
 	int pindex = -1;
-	*hups = 0;
-	*idx = IDX_NADA;
 
-	if (session) {
-		caller_channel = switch_core_session_get_channel(session);
+	if (oglobals->session) {
+		caller_channel = switch_core_session_get_channel(oglobals->session);
 	}
-		
+	
 
 	for (i = 0; i < len; i++) {
 		switch_channel_state_t state;
-		if (!peer_channels[i]) {
+		if (!originate_status[i].peer_channel) {
 			continue;
 		}
-		if (!*ring_ready && switch_channel_test_flag(peer_channels[i], CF_RING_READY)) {
-			*ring_ready = 1;
+
+		if (switch_channel_test_flag(originate_status[i].peer_channel, CF_RING_READY)) {
+			if (!originate_status[i].ring_ready) {
+				originate_status[i].ring_ready = 1;
+			}
+
+			if (!oglobals->ring_ready) {
+				oglobals->ring_ready = 1;
+			}
 		}
-		if (!*ring_ready && switch_channel_test_flag(peer_channels[i], CF_EARLY_MEDIA)) {
-			*progress = 1;
-			pindex = i;
+		
+		if (switch_channel_test_flag(originate_status[i].peer_channel, CF_EARLY_MEDIA)) {
+			if (!originate_status[i].early_media) {
+				originate_status[i].early_media = 1;
+				if (oglobals->early_ok) {
+					pindex = i;
+				}
+			}
+			
+			if (!oglobals->progress) {
+				oglobals->progress = 1;
+			}
+			
+			if (!oglobals->ring_ready) {
+				oglobals->ring_ready = 1;
+			}
 		}
-
-		if (switch_core_session_private_event_count(peer_sessions[i])) {
-			switch_ivr_parse_all_events(peer_sessions[i]);
+		
+		if (switch_core_session_private_event_count(originate_status[i].peer_session)) {
+			switch_ivr_parse_all_events(originate_status[i].peer_session);
 		}
 
-		state = switch_channel_get_state(peer_channels[i]);
-		if (state >= CS_HANGUP || state == CS_RESET || switch_channel_test_flag(peer_channels[i], CF_TRANSFER) ||
-			switch_channel_test_flag(peer_channels[i], CF_REDIRECT) ||
-			switch_channel_test_flag(peer_channels[i], CF_BRIDGED) || 
-			!switch_channel_test_flag(peer_channels[i], CF_ORIGINATING)
-			) {
-			(*hups)++;
-		} else if ((switch_channel_test_flag(peer_channels[i], CF_ANSWERED) ||
-					(early_ok && switch_channel_test_flag(peer_channels[i], CF_EARLY_MEDIA)) ||
-					(*ring_ready && return_ring_ready && len == 1 && switch_channel_test_flag(peer_channels[i], CF_RING_READY))
-				   )
-				   && !switch_channel_test_flag(peer_channels[i], CF_TAGGED)
+		state = switch_channel_get_state(originate_status[i].peer_channel);
+		if (state >= CS_HANGUP || state == CS_RESET || switch_channel_test_flag(originate_status[i].peer_channel, CF_TRANSFER) ||
+			switch_channel_test_flag(originate_status[i].peer_channel, CF_REDIRECT) ||
+			switch_channel_test_flag(originate_status[i].peer_channel, CF_BRIDGED) || 
+			!switch_channel_test_flag(originate_status[i].peer_channel, CF_ORIGINATING)
 			) {
+			(oglobals->hups)++;
+		} else if ((switch_channel_test_flag(originate_status[i].peer_channel, CF_ANSWERED) ||
+					(oglobals->early_ok && switch_channel_test_flag(originate_status[i].peer_channel, CF_EARLY_MEDIA)) ||
+					(oglobals->ring_ready && oglobals->return_ring_ready && len == 1 && 
+					 switch_channel_test_flag(originate_status[i].peer_channel, CF_RING_READY))
+					)
+				   && !switch_channel_test_flag(originate_status[i].peer_channel, CF_TAGGED)
+				   ) {
 			
-			if (!switch_strlen_zero(key)) {
+			if (!switch_strlen_zero(oglobals->key)) {
 				struct key_collect *collect;
 
-				if ((collect = switch_core_session_alloc(peer_sessions[i], sizeof(*collect)))) {
-					switch_channel_set_flag(peer_channels[i], CF_TAGGED);
-					collect->key = key;
-					if (!switch_strlen_zero(file)) {
-						collect->file = switch_core_session_strdup(peer_sessions[i], file);
+				if ((collect = switch_core_session_alloc(originate_status[i].peer_session, sizeof(*collect)))) {
+					switch_channel_set_flag(originate_status[i].peer_channel, CF_TAGGED);
+					if (!switch_strlen_zero(oglobals->key)) {
+						collect->key = switch_core_session_strdup(originate_status[i].peer_session, oglobals->key);
+					}
+					if (!switch_strlen_zero(oglobals->file)) {
+						collect->file = switch_core_session_strdup(originate_status[i].peer_session, oglobals->file);
 					}
 
-					collect->session = peer_sessions[i];
+					collect->session = originate_status[i].peer_session;
 					launch_collect_thread(collect);
 				}
 			} else {
-				*idx = i;
+				oglobals->idx = i;
 				pindex = (uint32_t) i;
 				rval = 0;
 				goto end;
 
 			}
-		} else if (switch_channel_test_flag(peer_channels[i], CF_WINNER)) {
-			*idx = i;
+		} else if (switch_channel_test_flag(originate_status[i].peer_channel, CF_WINNER)) {
+			oglobals->idx = i;
 			rval = 0;
 			pindex = (uint32_t) i;
 			goto end;
 		}
 	}
 
-	if (*hups == len) {
+	if (oglobals->hups == len) {
 		rval = 0;
 	} else {
 		rval = 1;
@@ -306,7 +351,7 @@
 			char tmp[128] = "";
 
 			
-			switch_core_session_get_read_impl(peer_sessions[pindex], &impl);
+			switch_core_session_get_read_impl(originate_status[pindex].peer_session, &impl);
 			switch_snprintf(tmp, sizeof(tmp), "%s@%uk@%ui", impl.iananame, impl.samples_per_second, impl.microseconds_per_packet / 1000);
 			switch_channel_set_variable(caller_channel, "absolute_codec_string", tmp);
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Setting codec string on %s to %s\n", switch_channel_get_name(caller_channel), tmp);
@@ -619,6 +664,7 @@
 	}
 }
 
+
 #define MAX_PEERS 128
 SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *session,
 													 switch_core_session_t **bleg,
@@ -633,26 +679,27 @@
 													 switch_originate_flag_t flags
 													 )
 {
+	originate_status_t originate_status[MAX_PEERS] = { { 0 } }; 
 	switch_originate_flag_t dftflags = SOF_NONE, myflags = dftflags;
 	char *pipe_names[MAX_PEERS] = { 0 };
 	char *data = NULL;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
 	switch_channel_t *caller_channel = NULL;
 	char *peer_names[MAX_PEERS] = { 0 };
-	switch_core_session_t *new_session = NULL, *peer_session, *peer_sessions[MAX_PEERS] = { 0 };
-	switch_caller_profile_t *new_profile = NULL, *caller_profiles[MAX_PEERS] = { 0 }, *caller_caller_profile;
+	switch_core_session_t *new_session = NULL, *peer_session;
+	switch_caller_profile_t *new_profile = NULL, *caller_caller_profile;
 	char *chan_type = NULL, *chan_data;
-	switch_channel_t *peer_channel = NULL, *peer_channels[MAX_PEERS] = { 0 };
+	switch_channel_t *peer_channel = NULL;
 	ringback_t ringback = { 0 };
 	time_t start;
 	switch_frame_t *read_frame = NULL;
 	switch_memory_pool_t *pool = NULL;
 	int r = 0, i, and_argc = 0, or_argc = 0;
-	int32_t sleep_ms = 1000, try = 0, retries = 1, idx = IDX_NADA;
+	int32_t sleep_ms = 1000, try = 0, retries = 1;
 	switch_codec_t write_codec = { 0 };
 	switch_frame_t write_frame = { 0 };
 	uint8_t pass = 0;
-	char key[80] = SWITCH_BLANK_STRING, file[512] = SWITCH_BLANK_STRING, *odata, *var;
+	char *odata, *var;
 	switch_call_cause_t reason = SWITCH_CAUSE_NONE;
 	uint8_t to = 0;
 	char *var_val, *vars = NULL;
@@ -660,7 +707,6 @@
 	char *e = NULL;
 	const char *ringback_data = NULL;
 	switch_codec_t *read_codec = NULL;
-	uint8_t sent_ring = 0, early_ok = 1, return_ring_ready = 0, progress = 0;
 	switch_core_session_message_t *message = NULL;
 	switch_event_t *var_event = NULL;
 	uint8_t fail_on_single_reject = 0;
@@ -671,6 +717,13 @@
 	uint32_t per_channel_timelimit_sec[MAX_PEERS] = { 0 };
 	uint32_t per_channel_progress_timelimit_sec[MAX_PEERS] = { 0 };
 	const char *cid_tmp;
+	originate_global_t oglobals = { 0 };
+
+
+	oglobals.idx = IDX_NADA;
+	oglobals.early_ok = 1;
+	oglobals.session = session;
+
 
 	*bleg = NULL;
 
@@ -753,9 +806,9 @@
 		}
 	}
 
-	if (session) {
+	if (oglobals.session) {
 		switch_event_header_t *hi;
-		caller_channel = switch_core_session_get_channel(session);
+		caller_channel = switch_core_session_get_channel(oglobals.session);
 
 		/* Copy all the applicable channel variables into the event */
 		if ((hi = switch_channel_variable_first(caller_channel))) {
@@ -848,7 +901,7 @@
 				int sval = atoi(vvar);
 
 				if (sval) {
-					ringback_data = switch_core_session_sprintf(session, "silence:%d", sval);
+					ringback_data = switch_core_session_sprintf(oglobals.session, "silence:%d", sval);
 				}
 
 			}
@@ -856,13 +909,13 @@
 	}
 
 	if (ringback_data) {
-		early_ok = 0;
+		oglobals.early_ok = 0;
 	}
 
 	if ((var = switch_event_get_header(var_event, "group_confirm_key"))) {
-		switch_copy_string(key, var, sizeof(key));
+		switch_copy_string(oglobals.key, var, sizeof(oglobals.key));
 		if ((var = switch_event_get_header(var_event, "group_confirm_file"))) {
-			switch_copy_string(file, var, sizeof(file));
+			switch_copy_string(oglobals.file, var, sizeof(oglobals.file));
 		}
 	}
 	/* When using the AND operator, the fail_on_single_reject flag may be set in order to indicate that a single
@@ -875,16 +928,16 @@
 		fail_on_single_reject = 1;
 	}
 
-	if ((*file != '\0') && (!strcmp(file, "undef"))) {
-		*file = '\0';
+	if ((*oglobals.file != '\0') && (!strcmp(oglobals.file, "undef"))) {
+		*oglobals.file = '\0';
 	}
 
 	if ((var_val = switch_event_get_header(var_event, "ignore_early_media")) && switch_true(var_val)) {
-		early_ok = 0;
+		oglobals.early_ok = 0;
 	}
 
 	if ((var_val = switch_event_get_header(var_event, "return_ring_ready")) && switch_true(var_val)) {
-		return_ring_ready = 1;
+		oglobals.return_ring_ready = 1;
 	}
 
 	if ((var_val = switch_event_get_header(var_event, "ring_ready")) && switch_true(var_val)) {
@@ -971,16 +1024,14 @@
 		}
 
 		for (r = 0; r < or_argc; r++) {
-			uint32_t hups;
+			oglobals.hups = 0;
 			char *p, *end = NULL;
 			const char *var_begin, *var_end;
 			
 			reason = SWITCH_CAUSE_NONE;
 			memset(peer_names, 0, sizeof(peer_names));
 			peer_session = NULL;
-			memset(peer_sessions, 0, sizeof(peer_sessions));
-			memset(peer_channels, 0, sizeof(peer_channels));
-			memset(caller_profiles, 0, sizeof(caller_profiles));
+			memset(originate_status, 0, sizeof(originate_status));
 			new_profile = NULL;
 			new_session = NULL;
 			chan_type = NULL;
@@ -992,14 +1043,14 @@
 			pass = 0;
 			var = NULL;
 			to = 0;
-			sent_ring = 0;
-			progress = 0;
+			oglobals.sent_ring = 0;
+			oglobals.progress = 0;
 			myflags = dftflags;
 			
 			if (try > 0) {
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Originate attempt %d/%d in %d ms\n", try + 1, retries, sleep_ms);
 				if (caller_channel) {
-					switch_ivr_sleep(session, sleep_ms, SWITCH_TRUE, NULL);
+					switch_ivr_sleep(oglobals.session, sleep_ms, SWITCH_TRUE, NULL);
 				} else {
 					switch_yield(sleep_ms * 1000);
 				}
@@ -1054,14 +1105,14 @@
 					chan_data++;
 				}
 
-				if (session) {
+				if (oglobals.session) {
 					if (!switch_channel_ready(caller_channel)) {
 						status = SWITCH_STATUS_FALSE;
 						goto done;
 					}
 
 					caller_caller_profile = caller_profile_override ? caller_profile_override : switch_channel_get_caller_profile(caller_channel);
-					new_profile = switch_caller_profile_clone(session, caller_caller_profile);
+					new_profile = switch_caller_profile_clone(oglobals.session, caller_caller_profile);
 					new_profile->uuid = SWITCH_BLANK_STRING;
 					new_profile->chan_name = SWITCH_BLANK_STRING;
 					new_profile->destination_number = switch_core_strdup(new_profile->pool, chan_data);
@@ -1097,9 +1148,9 @@
 					}
 				}
 
-				caller_profiles[i] = NULL;
-				peer_channels[i] = NULL;
-				peer_sessions[i] = NULL;
+				originate_status[i].caller_profile = NULL;
+				originate_status[i].peer_channel = NULL;
+				originate_status[i].peer_session = NULL;
 				new_session = NULL;
 
 				if (and_argc > 1 || or_argc > 1) {
@@ -1150,10 +1201,10 @@
 					switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "origination_uuid", tmp);
 				}
 				
-				switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "originate_early_media", early_ok ? "true" : "false");
+				switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "originate_early_media", oglobals.early_ok ? "true" : "false");
 				
 
-				if ((reason = switch_core_session_outgoing_channel(session, var_event, chan_type, 
+				if ((reason = switch_core_session_outgoing_channel(oglobals.session, var_event, chan_type, 
 																   new_profile, &new_session, &pool, myflags)) != SWITCH_CAUSE_SUCCESS) {
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot create outgoing channel of type [%s] cause: [%s]\n", 
 									  chan_type, switch_channel_cause2str(reason));
@@ -1170,10 +1221,10 @@
 				}
 				pool = NULL;
 
-				caller_profiles[i] = new_profile;
-				peer_sessions[i] = new_session;
-				peer_channels[i] = switch_core_session_get_channel(new_session);
-				switch_channel_set_flag(peer_channels[i], CF_ORIGINATING);
+				originate_status[i].caller_profile = new_profile;
+				originate_status[i].peer_session = new_session;
+				originate_status[i].peer_channel = switch_core_session_get_channel(new_session);
+				switch_channel_set_flag(originate_status[i].peer_channel, CF_ORIGINATING);
 
 				if (vdata) {
 					char *var_array[1024] = { 0 };
@@ -1187,7 +1238,7 @@
 								 switch_separate_string(var_array[x], '=',
 														inner_var_array, (sizeof(inner_var_array) / sizeof(inner_var_array[0])))) == 2) {
 
-								switch_channel_set_variable(peer_channels[i], inner_var_array[0], inner_var_array[1]);
+								switch_channel_set_variable(originate_status[i].peer_channel, inner_var_array[0], inner_var_array[1]);
 							}
 						}
 					}
@@ -1198,31 +1249,31 @@
 					switch_event_header_t *header;
 					/* install the vars from the {} params */
 					for (header = var_event->headers; header; header = header->next) {
-						switch_channel_set_variable(peer_channels[i], header->name, header->value);
+						switch_channel_set_variable(originate_status[i].peer_channel, header->name, header->value);
 					}
 					switch_event_create(&event, SWITCH_EVENT_CHANNEL_ORIGINATE);
 					switch_assert(event);
-					switch_channel_event_set_data(peer_channels[i], event);
+					switch_channel_event_set_data(originate_status[i].peer_channel, event);
 					switch_event_fire(&event);
 				}
 
-				if (peer_channels[i]) {
+				if (originate_status[i].peer_channel) {
 					const char *vvar;
 
-					if ((vvar = switch_channel_get_variable(peer_channels[i], "leg_timeout"))) {
+					if ((vvar = switch_channel_get_variable(originate_status[i].peer_channel, "leg_timeout"))) {
 						int val = atoi(vvar);
 						if (val > 0) {
 							switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Setting leg timeout to %d\n", 
-											  switch_channel_get_name(peer_channels[0]), val);
+											  switch_channel_get_name(originate_status[0].peer_channel), val);
 							per_channel_timelimit_sec[i] = (uint32_t) val;
 						}
 					}
 					
-					if ((vvar = switch_channel_get_variable(peer_channels[i], "leg_progress_timeout"))) {
+					if ((vvar = switch_channel_get_variable(originate_status[i].peer_channel, "leg_progress_timeout"))) {
 						int val = atoi(vvar);
 						if (val > 0) {
 							switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Setting leg progress timeout to %d\n", 
-											  switch_channel_get_name(peer_channels[0]), val);
+											  switch_channel_get_name(originate_status[0].peer_channel), val);
 							per_channel_progress_timelimit_sec[i] = (uint32_t) val;
 						}
 					}
@@ -1233,23 +1284,23 @@
 				}
 
 				if (table) {
-					switch_channel_add_state_handler(peer_channels[i], table);
+					switch_channel_add_state_handler(originate_status[i].peer_channel, table);
 				}
 
-				if ((flags & SOF_NOBLOCK) && peer_sessions[i]) {
+				if ((flags & SOF_NOBLOCK) && originate_status[i].peer_session) {
 					status = SWITCH_STATUS_SUCCESS;
-					*bleg = peer_sessions[i];
+					*bleg = originate_status[i].peer_session;
 					*cause = SWITCH_CAUSE_SUCCESS;
 					goto outer_for;
 				}
 
-				if (!switch_core_session_running(peer_sessions[i])) {
+				if (!switch_core_session_running(originate_status[i].peer_session)) {
 					/*if (!(flags & SOF_NOBLOCK)) {
-					  switch_channel_set_state(peer_channels[i], CS_ROUTING);
+					  switch_channel_set_state(originate_status[i].peer_channel, CS_ROUTING);
 					  }
 					  } else {
 					*/
-					switch_core_session_thread_launch(peer_sessions[i]);
+					switch_core_session_thread_launch(originate_status[i].peer_session);
 				}
 			}
 
@@ -1261,11 +1312,11 @@
 					int state;
 					time_t elapsed;
 
-					if (!peer_channels[i]) {
+					if (!originate_status[i].peer_channel) {
 						continue;
 					}
 
-					state = switch_channel_get_state(peer_channels[i]);
+					state = switch_channel_get_state(originate_status[i].peer_channel);
 
 					if (state < CS_HANGUP) {
 						valid_channels++;
@@ -1285,20 +1336,20 @@
 				
 					if (elapsed > (time_t) timelimit_sec) {
 						to++;
-						idx = IDX_TIMEOUT;
+						oglobals.idx = IDX_TIMEOUT;
 						goto notready;
 					}
 
-					if (!sent_ring && !progress && (progress_timelimit_sec && elapsed > (time_t) progress_timelimit_sec)) {
+					if (!oglobals.sent_ring && !oglobals.progress && (progress_timelimit_sec && elapsed > (time_t) progress_timelimit_sec)) {
 						to++;
-						idx = IDX_TIMEOUT;
+						oglobals.idx = IDX_TIMEOUT;
 						goto notready;
 					}
 					
 					switch_yield(100000);
 				}
 
-				check_per_channel_timeouts(peer_channels, per_channel_timelimit_sec, per_channel_progress_timelimit_sec, and_argc, start);
+				check_per_channel_timeouts(originate_status, per_channel_timelimit_sec, per_channel_progress_timelimit_sec, and_argc, start);
 
 
 				if (valid_channels == 0) {
@@ -1324,7 +1375,7 @@
 				}
 			}
 
-			if (session && (read_codec = switch_core_session_get_read_codec(session)) && ringback_data) {
+			if (oglobals.session && (read_codec = switch_core_session_get_read_codec(oglobals.session)) && ringback_data) {
 				if (!(pass = (uint8_t) switch_test_flag(read_codec, SWITCH_CODEC_FLAG_PASSTHROUGH))) {
 					if (switch_core_codec_init(&write_codec,
 											   "L16",
@@ -1332,7 +1383,7 @@
 											   read_codec->implementation->actual_samples_per_second,
 											   read_codec->implementation->microseconds_per_packet / 1000,
 											   1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
-											   switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) {
+											   switch_core_session_get_pool(oglobals.session)) == SWITCH_STATUS_SUCCESS) {
 
 
 						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
@@ -1352,7 +1403,7 @@
 								char *ext;
 
 								if (strrchr(ringback_data, '.') || strstr(ringback_data, SWITCH_URL_SEPARATOR)) {
-									switch_core_session_set_read_codec(session, &write_codec);
+									switch_core_session_set_read_codec(oglobals.session, &write_codec);
 								} else {
 									ringback.asis++;
 									write_frame.codec = read_codec;
@@ -1415,32 +1466,29 @@
 			}
 
 			if (ringback_data) {
-				early_ok = 0;
+				oglobals.early_ok = 0;
 			}
 
-			while ((!caller_channel || switch_channel_ready(caller_channel)) &&
-				   check_channel_status(session,
-										peer_channels, 
-										peer_sessions, and_argc, &idx, &hups, file, key, early_ok, &ring_ready, &progress, return_ring_ready)) {
+			while ((!caller_channel || switch_channel_ready(caller_channel)) && check_channel_status(&oglobals, originate_status, and_argc)) {
 				time_t elapsed = switch_timestamp(NULL) - start;
-				if (caller_channel && !sent_ring && ring_ready && !return_ring_ready) {
+				if (caller_channel && !oglobals.sent_ring && ring_ready && !oglobals.return_ring_ready) {
 					switch_channel_ring_ready(caller_channel);
-					sent_ring = 1;
+					oglobals.sent_ring = 1;
 				}
 				/* When the AND operator is being used, and fail_on_single_reject is set, a hangup indicates that the call should fail. */
 				
-				check_per_channel_timeouts(peer_channels, per_channel_timelimit_sec, per_channel_progress_timelimit_sec, and_argc, start);
+				check_per_channel_timeouts(originate_status, per_channel_timelimit_sec, per_channel_progress_timelimit_sec, and_argc, start);
 
-				if (session && switch_core_session_private_event_count(session)) {
-					switch_ivr_parse_all_events(session);
+				if (oglobals.session && switch_core_session_private_event_count(oglobals.session)) {
+					switch_ivr_parse_all_events(oglobals.session);
 				}
 
-				if (!sent_ring && !progress && (progress_timelimit_sec && elapsed > (time_t) progress_timelimit_sec)) {
-					idx = IDX_TIMEOUT;
+				if (!oglobals.sent_ring && !oglobals.progress && (progress_timelimit_sec && elapsed > (time_t) progress_timelimit_sec)) {
+					oglobals.idx = IDX_TIMEOUT;
 					goto notready;
 				}
 
-				if ((to = (uint8_t) (elapsed >= (time_t) timelimit_sec)) || (fail_on_single_reject && hups)) {
+				if ((to = (uint8_t) (elapsed >= (time_t) timelimit_sec)) || (fail_on_single_reject && oglobals.hups)) {
 					int ok = 0;
 					
 					if (fail_on_single_reject_var && !switch_true(fail_on_single_reject_var)) {
@@ -1449,10 +1497,10 @@
 							switch_channel_t *pchannel;
 							const char *cause_str;
 							
-							if (!peer_sessions[i]) {
+							if (!originate_status[i].peer_session) {
 								continue;
 							}
-							pchannel = switch_core_session_get_channel(peer_sessions[i]);
+							pchannel = switch_core_session_get_channel(originate_status[i].peer_session);
 
 							if (switch_channel_get_state(pchannel) >= CS_HANGUP) {
 								cause_str = switch_channel_cause2str(switch_channel_get_cause(pchannel));
@@ -1464,15 +1512,15 @@
 						}
 					}
 					if (!ok) {
-						idx = IDX_TIMEOUT;
+						oglobals.idx = IDX_TIMEOUT;
 						goto notready;
 					}
 				}
 
-				if (peer_sessions[0]
-					&& switch_core_session_dequeue_message(peer_sessions[0], &message) == SWITCH_STATUS_SUCCESS) {
-					if (session && !ringback_data && or_argc == 1 && and_argc == 1) {	/* when there is only 1 channel to call and bridge and no ringback */
-						switch_core_session_receive_message(session, message);
+				if (originate_status[0].peer_session
+					&& switch_core_session_dequeue_message(originate_status[0].peer_session, &message) == SWITCH_STATUS_SUCCESS) {
+					if (oglobals.session && !ringback_data && or_argc == 1 && and_argc == 1) {	/* when there is only 1 channel to call and bridge and no ringback */
+						switch_core_session_receive_message(oglobals.session, message);
 					}
 
 					if (switch_test_flag(message, SCSMF_DYNAMIC)) {
@@ -1483,7 +1531,7 @@
 				}
 
 				/* read from the channel while we wait if the audio is up on it */
-				if (session &&
+				if (oglobals.session &&
 					!switch_channel_test_flag(caller_channel, CF_PROXY_MODE) &&
 					!switch_channel_test_flag(caller_channel, CF_PROXY_MEDIA) &&
 					(ringback_data
@@ -1493,7 +1541,7 @@
 					int silence = 0;
 
 					if (switch_channel_media_ready(caller_channel)) {
-						tstatus = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
+						tstatus = switch_core_session_read_frame(oglobals.session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
 
 						if (!SWITCH_READ_ACCEPTABLE(tstatus)) {
 							break;
@@ -1550,7 +1598,7 @@
 							switch_generate_sln_silence((int16_t *) write_frame.data, write_frame.datalen / 2, silence);
 						}
 						
-						if (switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) {
+						if (switch_core_session_write_frame(oglobals.session, &write_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) {
 							break;
 						}
 					}
@@ -1564,35 +1612,35 @@
 		  notready:
 
 			if (caller_channel && !switch_channel_ready(caller_channel)) {
-				idx = IDX_CANCEL;
+				oglobals.idx = IDX_CANCEL;
 			}
 
-			if (session && (ringback_data || !(switch_channel_test_flag(caller_channel, CF_PROXY_MODE) &&
+			if (oglobals.session && (ringback_data || !(switch_channel_test_flag(caller_channel, CF_PROXY_MODE) &&
 											   switch_channel_test_flag(caller_channel, CF_PROXY_MEDIA)))) {
-				switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
+				switch_core_session_reset(oglobals.session, SWITCH_FALSE, SWITCH_TRUE);
 			}
 
 			for (i = 0; i < and_argc; i++) {
-				if (!peer_channels[i]) {
+				if (!originate_status[i].peer_channel) {
 					continue;
 				}
 
-				if (switch_channel_test_flag(peer_channels[i], CF_TRANSFER) 
-					|| switch_channel_test_flag(peer_channels[i], CF_REDIRECT) 
-					|| switch_channel_test_flag(peer_channels[i], CF_BRIDGED) ||
-					switch_channel_get_state(peer_channels[i]) == CS_RESET || 
-					!switch_channel_test_flag(peer_channels[i], CF_ORIGINATING)
+				if (switch_channel_test_flag(originate_status[i].peer_channel, CF_TRANSFER) 
+					|| switch_channel_test_flag(originate_status[i].peer_channel, CF_REDIRECT) 
+					|| switch_channel_test_flag(originate_status[i].peer_channel, CF_BRIDGED) ||
+					switch_channel_get_state(originate_status[i].peer_channel) == CS_RESET || 
+					!switch_channel_test_flag(originate_status[i].peer_channel, CF_ORIGINATING)
 					) {
 					continue;
 				}
 
-				if (i != idx) {
+				if (i != oglobals.idx) {
 					const char *holding = NULL;
 
-					if (idx == IDX_TIMEOUT || to) {
+					if (oglobals.idx == IDX_TIMEOUT || to) {
 						reason = SWITCH_CAUSE_NO_ANSWER;
 					} else {
-						if (idx == IDX_CANCEL) {
+						if (oglobals.idx == IDX_CANCEL) {
 							reason = SWITCH_CAUSE_ORIGINATOR_CANCEL;
 						} else {
 							if (and_argc > 1) {
@@ -1602,29 +1650,29 @@
 							}
 						}
 					}
-					if (switch_channel_ready(peer_channels[i])) {
+					if (switch_channel_ready(originate_status[i].peer_channel)) {
 						if (caller_channel && i == 0) {
 							holding = switch_channel_get_variable(caller_channel, SWITCH_HOLDING_UUID_VARIABLE);
-							holding = switch_core_session_strdup(session, holding);
+							holding = switch_core_session_strdup(oglobals.session, holding);
 							switch_channel_set_variable(caller_channel, SWITCH_HOLDING_UUID_VARIABLE, NULL);
 						}
 						if (holding) {
-							switch_ivr_uuid_bridge(holding, switch_core_session_get_uuid(peer_sessions[i]));
+							switch_ivr_uuid_bridge(holding, switch_core_session_get_uuid(originate_status[i].peer_session));
 						} else {
-							switch_channel_hangup(peer_channels[i], reason);
+							switch_channel_hangup(originate_status[i].peer_channel, reason);
 						}
 					}
 				}
 			}
 
 
-			if (idx > IDX_NADA) {
-				peer_session = peer_sessions[idx];
-				peer_channel = peer_channels[idx];
+			if (oglobals.idx > IDX_NADA) {
+				peer_session = originate_status[oglobals.idx].peer_session;
+				peer_channel = originate_status[oglobals.idx].peer_channel;
 			} else {
 				status = SWITCH_STATUS_FALSE;
 				if (caller_channel && peer_channel) {
-					process_import(session, peer_channel);
+					process_import(oglobals.session, peer_channel);
 				}
 				peer_channel = NULL;
 				goto done;
@@ -1646,8 +1694,8 @@
 			}
 
 			if (switch_channel_test_flag(peer_channel, CF_ANSWERED) ||
-				(early_ok && switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA)) ||
-				(return_ring_ready && switch_channel_test_flag(peer_channel, CF_RING_READY))
+				(oglobals.early_ok && switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA)) ||
+				(oglobals.return_ring_ready && switch_channel_test_flag(peer_channel, CF_RING_READY))
 				) {
 				*bleg = peer_session;
 				status = SWITCH_STATUS_SUCCESS;
@@ -1669,7 +1717,7 @@
 				if (caller_channel) {
 					switch_channel_set_variable(caller_channel, "originate_disposition", "call accepted");
 					if (peer_channel) {
-						process_import(session, peer_channel);
+						process_import(oglobals.session, peer_channel);
 					}
 				}
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Originate Resulted in Success: [%s]\n", switch_channel_get_name(peer_channel));
@@ -1690,21 +1738,21 @@
 					*cause = switch_channel_get_cause(peer_channel);					
 				} else {
 					for (i = 0; i < and_argc; i++) {
-						if (!peer_channels[i]) {
+						if (!originate_status[i].peer_channel) {
 							continue;
 						}
-						*cause = switch_channel_get_cause(peer_channels[i]);
+						*cause = switch_channel_get_cause(originate_status[i].peer_channel);
 						break;
 					}
 				}
 				
 				if (cdr_var) {
 					for (i = 0; i < and_argc; i++) {
-						if (!peer_sessions[i]) {
+						if (!originate_status[i].peer_session) {
                             continue;
                         }
 						
-						if (switch_ivr_generate_xml_cdr(peer_sessions[i], &cdr) == SWITCH_STATUS_SUCCESS) {
+						if (switch_ivr_generate_xml_cdr(originate_status[i].peer_session, &cdr) == SWITCH_STATUS_SUCCESS) {
 							if ((xml_text = switch_xml_toxml(cdr, SWITCH_FALSE))) {
 								switch_snprintf(buf, sizeof(buf), "%s_%d", cdr_var, ++cdr_total);
 								switch_channel_set_variable(caller_channel, buf, xml_text);
@@ -1734,7 +1782,7 @@
 					*cause = SWITCH_CAUSE_ORIGINATOR_CANCEL;
 				}
 
-				if (idx == IDX_CANCEL) {
+				if (oglobals.idx == IDX_CANCEL) {
 					*cause = SWITCH_CAUSE_ORIGINATOR_CANCEL;
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
 									  "Originate Cancelled by originator termination Cause: %d [%s]\n", *cause, switch_channel_cause2str(*cause));
@@ -1757,8 +1805,8 @@
 				switch_buffer_destroy(&ringback.audio_buffer);
 			}
 
-			if (session) {
-				switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
+			if (oglobals.session) {
+				switch_core_session_reset(oglobals.session, SWITCH_FALSE, SWITCH_TRUE);
 			}
 
 			if (write_codec.implementation) {
@@ -1768,25 +1816,26 @@
 			for (i = 0; i < and_argc; i++) {
 				switch_channel_state_t state;
 
-				if (!peer_channels[i]) {
+				if (!originate_status[i].peer_channel) {
 					continue;
 				}
 				
 				if (status == SWITCH_STATUS_SUCCESS) { 
-					switch_channel_clear_flag(peer_channels[i], CF_ORIGINATING);
-					if (bleg && *bleg && *bleg == peer_sessions[i]) {
+					switch_channel_clear_flag(originate_status[i].peer_channel, CF_ORIGINATING);
+					if (bleg && *bleg && *bleg == originate_status[i].peer_session) {
 						continue;
 					}
-				} else if ((state=switch_channel_get_state(peer_channels[i])) < CS_HANGUP && switch_channel_test_flag(peer_channels[i], CF_ORIGINATING)) {
-					if (!(state == CS_RESET || switch_channel_test_flag(peer_channels[i], CF_TRANSFER) || 
-						  switch_channel_test_flag(peer_channels[i], CF_REDIRECT) ||
-						  switch_channel_test_flag(peer_channels[i], CF_BRIDGED))) {
-						switch_channel_hangup(peer_channels[i], *cause);
+				} else if ((state=switch_channel_get_state(originate_status[i].peer_channel)) < CS_HANGUP && 
+						   switch_channel_test_flag(originate_status[i].peer_channel, CF_ORIGINATING)) {
+					if (!(state == CS_RESET || switch_channel_test_flag(originate_status[i].peer_channel, CF_TRANSFER) || 
+						  switch_channel_test_flag(originate_status[i].peer_channel, CF_REDIRECT) ||
+						  switch_channel_test_flag(originate_status[i].peer_channel, CF_BRIDGED))) {
+						switch_channel_hangup(originate_status[i].peer_channel, *cause);
 					}
 				}
-				switch_channel_clear_flag(peer_channels[i], CF_ORIGINATING);
+				switch_channel_clear_flag(originate_status[i].peer_channel, CF_ORIGINATING);
 
-				switch_core_session_rwunlock(peer_sessions[i]);
+				switch_core_session_rwunlock(originate_status[i].peer_session);
 			}
 
 			if (status == SWITCH_STATUS_SUCCESS) {
@@ -1806,8 +1855,8 @@
 		switch_ivr_sleep(*bleg, 0, SWITCH_TRUE, NULL);
 	}
 
-	if (session) {
-		switch_ivr_sleep(session, 0, SWITCH_TRUE, NULL);
+	if (oglobals.session) {
+		switch_ivr_sleep(oglobals.session, 0, SWITCH_TRUE, NULL);
 	}
 
 	if (var_event && var_event != ovars) {


From anthm at freeswitch.org  Mon Jan 19 10:01:44 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 12:01:44 -0600
Subject: [Freeswitch-svn] [commit] r11287 -
	freeswitch/trunk/src/mod/applications/mod_conference
Message-ID: 

Author: anthm
Date: Mon Jan 19 12:01:44 2009
New Revision: 11287

Log:
MODAPP-200

Modified:
   freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c

Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	Mon Jan 19 12:01:44 2009
@@ -1536,10 +1536,8 @@
 	switch_channel_t *channel;
 	switch_status_t status;
 	switch_frame_t *read_frame = NULL;
-
-	switch_codec_t *read_codec;
 	uint32_t hangover = 40, hangunder = 15, hangover_hits = 0, hangunder_hits = 0, energy_level = 0, diff_level = 400;
-
+	switch_codec_implementation_t read_impl = {0};
 
 	switch_assert(member != NULL);
 
@@ -1547,8 +1545,7 @@
 
 	channel = switch_core_session_get_channel(member->session);
 
-	read_codec = switch_core_session_get_read_codec(member->session);
-	switch_assert(read_codec != NULL);
+	switch_core_session_get_read_impl(member->session, &read_impl);
 
 	/* As long as we have a valid read, feed that data into an input buffer where the conference thread will take it 
 	   and mux it with any audio from other channels. */
@@ -1601,7 +1598,7 @@
 
 			data = read_frame->data;
 
-			if (!(divisor = read_codec->implementation->actual_samples_per_second / 8000)) {
+			if (!(divisor = read_impl.actual_samples_per_second / 8000)) {
 				divisor = 1;
 			}
 
@@ -1610,7 +1607,7 @@
 			if ((samples = read_frame->datalen / sizeof(*data))) {
 				for (i = 0; i < samples; i++) {
 					energy += abs(data[j]);
-					j += read_codec->implementation->number_of_channels;
+					j += read_impl.number_of_channels;
 				}
 				member->score = energy / (samples / divisor);
 			}


From anthm at freeswitch.org  Mon Jan 19 10:39:44 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 12:39:44 -0600
Subject: [Freeswitch-svn] [commit] r11288 -
	freeswitch/trunk/src/mod/endpoints/mod_loopback
Message-ID: 

Author: anthm
Date: Mon Jan 19 12:39:44 2009
New Revision: 11288

Log:
fix backwards call in mod_loopback

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c	Mon Jan 19 12:39:44 2009
@@ -248,7 +248,7 @@
 		switch_set_flag_locked(tech_pvt, TFLAG_LINKED);
 		switch_set_flag_locked(b_tech_pvt, TFLAG_LINKED);
 		switch_set_flag_locked(b_tech_pvt, TFLAG_OUTBOUND);
-	
+		
 		switch_channel_set_flag(channel, CF_ACCEPT_CNG);	
 		//switch_ivr_transfer_variable(session, tech_pvt->other_session, "process_cdr");
 		switch_ivr_transfer_variable(session, tech_pvt->other_session, NULL);
@@ -610,14 +610,14 @@
 	case SWITCH_MESSAGE_INDICATE_ANSWER:
 		if (tech_pvt->other_channel) {
 			if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
-				switch_channel_answer(tech_pvt->other_channel);
+				switch_channel_mark_answered(tech_pvt->other_channel);
 			}
 		}
 		break;
 	case SWITCH_MESSAGE_INDICATE_PROGRESS:
 		if (tech_pvt->other_channel) {
 			if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
-				switch_channel_pre_answer(tech_pvt->other_channel);
+				switch_channel_mark_pre_answered(tech_pvt->other_channel);
 			}
 		}
 		break;


From anthm at freeswitch.org  Mon Jan 19 11:32:44 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 13:32:44 -0600
Subject: [Freeswitch-svn] [commit] r11289 - in freeswitch/trunk/src: .
	mod/endpoints/mod_loopback
Message-ID: 

Author: anthm
Date: Mon Jan 19 13:32:44 2009
New Revision: 11289

Log:
more cleanup from refactor of originate code

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c	Mon Jan 19 13:32:44 2009
@@ -50,7 +50,8 @@
 	TFLAG_WRITE = (1 << 2),
 	TFLAG_CNG = (1 << 3),
 	TFLAG_BRIDGE = (1 << 4),
-	TFLAG_BOWOUT = (1 << 5)
+	TFLAG_BOWOUT = (1 << 5),
+	TFLAG_BLEG = (1 << 6)
 } TFLAGS;
 
 struct private_object {
@@ -210,8 +211,8 @@
 
 	channel = switch_core_session_get_channel(session);
 	switch_assert(channel != NULL);
-
-	if (!switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
+	
+	if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND) && !switch_test_flag(tech_pvt, TFLAG_BLEG)) {
 		
 		if (!(b_session = switch_core_session_request(loopback_endpoint_interface, NULL))) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failure.\n");
@@ -247,7 +248,8 @@
 		
 		switch_set_flag_locked(tech_pvt, TFLAG_LINKED);
 		switch_set_flag_locked(b_tech_pvt, TFLAG_LINKED);
-		switch_set_flag_locked(b_tech_pvt, TFLAG_OUTBOUND);
+		switch_set_flag_locked(b_tech_pvt, TFLAG_BLEG);
+
 		
 		switch_channel_set_flag(channel, CF_ACCEPT_CNG);	
 		//switch_ivr_transfer_variable(session, tech_pvt->other_session, "process_cdr");
@@ -608,17 +610,13 @@
 	
 	switch (msg->message_id) {
 	case SWITCH_MESSAGE_INDICATE_ANSWER:
-		if (tech_pvt->other_channel) {
-			if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
-				switch_channel_mark_answered(tech_pvt->other_channel);
-			}
+		if (tech_pvt->other_channel && !switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
+			switch_channel_mark_answered(tech_pvt->other_channel);
 		}
 		break;
 	case SWITCH_MESSAGE_INDICATE_PROGRESS:
-		if (tech_pvt->other_channel) {
-			if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
-				switch_channel_mark_pre_answered(tech_pvt->other_channel);
-			}
+		if (tech_pvt->other_channel && !switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
+			switch_channel_mark_pre_answered(tech_pvt->other_channel);
 		}
 		break;
 	case SWITCH_MESSAGE_INDICATE_BRIDGE:
@@ -703,7 +701,7 @@
 			switch_snprintf(name, sizeof(name), "loopback/%s-a", caller_profile->destination_number);
 			switch_channel_set_name(channel, name);
 			switch_channel_set_flag(channel, CF_OUTBOUND);
-
+			switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND);
 			switch_channel_set_caller_profile(channel, caller_profile);
 			tech_pvt->caller_profile = caller_profile;
 		} else {

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Mon Jan 19 13:32:44 2009
@@ -560,7 +560,7 @@
 				message = NULL;
 			}
 		}
-
+		
 		if (switch_channel_media_ready(caller_channel)) {
 			status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
 			if (!SWITCH_READ_ACCEPTABLE(status)) {
@@ -569,8 +569,9 @@
 		} else {
 			read_frame = NULL;
 		}
-
+		
 		if (read_frame && !pass) {
+
 			if (ringback.fh) {
 				switch_size_t mlen, olen;
 				unsigned int pos = 0;
@@ -711,7 +712,6 @@
 	switch_event_t *var_event = NULL;
 	uint8_t fail_on_single_reject = 0;
 	char *fail_on_single_reject_var = NULL;
-	uint8_t ring_ready = 0;
 	char *loop_data = NULL;
 	uint32_t progress_timelimit_sec = 0;
 	uint32_t per_channel_timelimit_sec[MAX_PEERS] = { 0 };
@@ -941,7 +941,7 @@
 	}
 
 	if ((var_val = switch_event_get_header(var_event, "ring_ready")) && switch_true(var_val)) {
-		ring_ready = 1;
+		oglobals.ring_ready = 1;
 	}
 
 	if ((var_val = switch_event_get_header(var_event, "originate_timeout"))) {
@@ -1471,7 +1471,7 @@
 
 			while ((!caller_channel || switch_channel_ready(caller_channel)) && check_channel_status(&oglobals, originate_status, and_argc)) {
 				time_t elapsed = switch_timestamp(NULL) - start;
-				if (caller_channel && !oglobals.sent_ring && ring_ready && !oglobals.return_ring_ready) {
+				if (caller_channel && !oglobals.sent_ring && oglobals.ring_ready && !oglobals.return_ring_ready) {
 					switch_channel_ring_ready(caller_channel);
 					oglobals.sent_ring = 1;
 				}
@@ -1519,7 +1519,8 @@
 
 				if (originate_status[0].peer_session
 					&& switch_core_session_dequeue_message(originate_status[0].peer_session, &message) == SWITCH_STATUS_SUCCESS) {
-					if (oglobals.session && !ringback_data && or_argc == 1 && and_argc == 1) {	/* when there is only 1 channel to call and bridge and no ringback */
+					if (oglobals.session && !ringback_data && or_argc == 1 && and_argc == 1) {	
+						/* when there is only 1 channel to call and bridge and no ringback */
 						switch_core_session_receive_message(oglobals.session, message);
 					}
 
@@ -1542,15 +1543,14 @@
 
 					if (switch_channel_media_ready(caller_channel)) {
 						tstatus = switch_core_session_read_frame(oglobals.session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
-
 						if (!SWITCH_READ_ACCEPTABLE(tstatus)) {
 							break;
 						}
 					} else {
 						read_frame = NULL;
 					}
-
-					if (ring_ready && read_frame && !pass) {
+					
+					if (oglobals.ring_ready && read_frame && !pass) {
 						if (ringback.fh) {
 							switch_size_t mlen, olen;
 							unsigned int pos = 0;


From brian at freeswitch.org  Mon Jan 19 12:19:01 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 14:19:01 -0600
Subject: [Freeswitch-svn] [commit] r11290 -
	freeswitch/trunk/src/mod/applications/mod_commands
Message-ID: 

Author: brian
Date: Mon Jan 19 14:19:01 2009
New Revision: 11290

Log:
update the text

Modified:
   freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c

Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	Mon Jan 19 14:19:01 2009
@@ -3255,7 +3255,7 @@
 	SWITCH_ADD_API(commands_api_interface, "sched_hangup", "Schedule a running call to hangup", sched_hangup_function, SCHED_HANGUP_SYNTAX);
 	SWITCH_ADD_API(commands_api_interface, "sched_broadcast", "Schedule a broadcast event to a running call", sched_broadcast_function,
 				   SCHED_BROADCAST_SYNTAX);
-	SWITCH_ADD_API(commands_api_interface, "sched_transfer", "Schedule a broadcast event to a running call", sched_transfer_function,
+	SWITCH_ADD_API(commands_api_interface, "sched_transfer", "Schedule a transfer for a running call", sched_transfer_function,
 				   SCHED_TRANSFER_SYNTAX);
 	SWITCH_ADD_API(commands_api_interface, "create_uuid", "Create a uuid", uuid_function, UUID_SYNTAX);
 	SWITCH_ADD_API(commands_api_interface, "sched_api", "Schedule an api command", sched_api_function, SCHED_SYNTAX);


From brian at freeswitch.org  Mon Jan 19 12:58:01 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 14:58:01 -0600
Subject: [Freeswitch-svn] [commit] r11291 -
	freeswitch/trunk/src/mod/applications/mod_voicemail
Message-ID: 

Author: brian
Date: Mon Jan 19 14:58:01 2009
New Revision: 11291

Log:
fix MODAPP-198 Seems pgsql doesn't return things in the expected order but this will fix that just in case

Modified:
   freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c

Modified: freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c	Mon Jan 19 14:58:01 2009
@@ -1739,8 +1739,8 @@
 				case MSG_NEW:
 					{
 						switch_snprintf(sql, sizeof(sql),
-										"select * from voicemail_msgs where username='%s' and domain='%s' and read_epoch=0 order by read_flags", myid,
-										domain_name);
+										"select * from voicemail_msgs where username='%s' and domain='%s' and read_epoch=0"
+										" order by read_flags, created_epoch", myid, domain_name);
 						total_messages = total_new_messages;
 						heard_auto_new = heard_auto_saved = 1;
 					}
@@ -1749,8 +1749,8 @@
 				default:
 					{
 						switch_snprintf(sql, sizeof(sql),
-										"select * from voicemail_msgs where username='%s' and domain='%s' and read_epoch !=0 order by read_flags", myid,
-										domain_name);
+										"select * from voicemail_msgs where username='%s' and domain='%s' and read_epoch !=0"
+										" order by read_flags, created_epoch", myid, domain_name);
 						total_messages = total_saved_messages;
 						heard_auto_new = heard_auto_saved = 1;
 					}
@@ -3276,7 +3276,8 @@
 	vm_execute_sql(profile, sql, profile->mutex);
 	free(sql);
 
-	sql = switch_mprintf("select * from voicemail_msgs where username='%s' and domain='%s' and file_path like '%%%s'", user, domain, file);
+	sql = switch_mprintf("select * from voicemail_msgs where username='%s' and domain='%s' and file_path like '%%%s' order by created_epoch",
+						 user, domain, file);
 	memset(&holder, 0, sizeof(holder));
 	holder.profile = profile;
 	holder.stream = stream;
@@ -3298,7 +3299,8 @@
 		ref = switch_event_get_header(stream->param_event, "http-referer");
 	}
 
-	sql = switch_mprintf("select * from voicemail_msgs where username='%s' and domain='%s' and file_path like '%%%s'", user, domain, file);
+	sql = switch_mprintf("select * from voicemail_msgs where username='%s' and domain='%s' and file_path like '%%%s' order by created_epoch",
+						 user, domain, file);
 	memset(&holder, 0, sizeof(holder));
 	holder.profile = profile;
 	holder.stream = stream;
@@ -3562,7 +3564,7 @@
 	x_tmp = switch_xml_add_child_d(holder.x_channel, "ttl", 0);
 	switch_xml_set_txt_d(x_tmp, "15");
 
-	sql = switch_mprintf("select * from voicemail_msgs where username='%s' and domain='%s' order by read_flags", user, domain);
+	sql = switch_mprintf("select * from voicemail_msgs where username='%s' and domain='%s' order by read_flags, created_epoch", user, domain);
 	vm_execute_sql_callback(profile, profile->mutex, sql, rss_callback, &holder);
 
 	xmlstr = switch_xml_toxml(holder.xml, SWITCH_TRUE);
@@ -3601,7 +3603,7 @@
 	cbt.buf = buf;
 	cbt.len = sizeof(buf);
 
-	sql = switch_mprintf("select * from voicemail_msgs where username='%s' and domain='%s' order by read_flags", user, domain);
+	sql = switch_mprintf("select * from voicemail_msgs where username='%s' and domain='%s' order by read_flags, created_epoch", user, domain);
 	vm_execute_sql_callback(profile, profile->mutex, sql, web_callback, &holder);
 	switch_safe_free(sql);
 


From mikej at freeswitch.org  Mon Jan 19 13:11:01 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 15:11:01 -0600
Subject: [Freeswitch-svn] [commit] r11292 - freeswitch/trunk/src
Message-ID: 

Author: mikej
Date: Mon Jan 19 15:11:01 2009
New Revision: 11292

Log:
fix windows build

Modified:
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Mon Jan 19 15:11:01 2009
@@ -239,15 +239,15 @@
 	return x;
 }
 
-static uint8_t check_channel_status(originate_global_t *oglobals, originate_status_t *originate_status, int len)
+static uint8_t check_channel_status(originate_global_t *oglobals, originate_status_t *originate_status, uint32_t len)
 {
 
 	uint32_t i;
-	oglobals->hups = 0;
-	oglobals->idx = IDX_NADA;
-	int rval = 0;
+	uint8_t rval = 0;
 	switch_channel_t *caller_channel = NULL;
 	int pindex = -1;
+	oglobals->hups = 0;
+	oglobals->idx = IDX_NADA;
 
 	if (oglobals->session) {
 		caller_channel = switch_core_session_get_channel(oglobals->session);
@@ -1024,9 +1024,9 @@
 		}
 
 		for (r = 0; r < or_argc; r++) {
-			oglobals.hups = 0;
 			char *p, *end = NULL;
 			const char *var_begin, *var_end;
+			oglobals.hups = 0;
 			
 			reason = SWITCH_CAUSE_NONE;
 			memset(peer_names, 0, sizeof(peer_names));


From anthm at freeswitch.org  Mon Jan 19 13:12:20 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 15:12:20 -0600
Subject: [Freeswitch-svn] [commit] r11293 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Mon Jan 19 15:12:20 2009
New Revision: 11293

Log:
FSCORE-273

Modified:
   freeswitch/trunk/src/switch_rtp.c

Modified: freeswitch/trunk/src/switch_rtp.c
==============================================================================
--- freeswitch/trunk/src/switch_rtp.c	(original)
+++ freeswitch/trunk/src/switch_rtp.c	Mon Jan 19 15:12:20 2009
@@ -1374,110 +1374,6 @@
 			goto end;
 		}
 
-#ifdef DEBUG_2833
-		if (rtp_session->dtmf_data.in_digit_sanity && !(rtp_session->dtmf_data.in_digit_sanity % 100)) {
-			printf("sanity %d\n", rtp_session->dtmf_data.in_digit_sanity);
-		}
-#endif
-
-		if (rtp_session->dtmf_data.in_digit_sanity && !--rtp_session->dtmf_data.in_digit_sanity) {
-			rtp_session->dtmf_data.last_digit = 0;
-			rtp_session->dtmf_data.in_digit_ts = 0;
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed DTMF sanity check.\n");
-		}
-
-		/* RFC2833 ... like all RFC RE: VoIP, guaranteed to drive you to insanity! 
-		   We know the real rules here, but if we enforce them, it's an interop nightmare so,
-		   we put up with as much as we can so we don't have to deal with being punished for
-		   doing it right. Nice guys finish last!
-		 */
-		if (bytes && !switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA) && 
-			!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PASS_RFC2833) && rtp_session->recv_msg.header.pt == rtp_session->te) {
-			unsigned char *packet = (unsigned char *) rtp_session->recv_msg.body;
-			int end = packet[1] & 0x80 ? 1 : 0;
-			uint16_t duration = (packet[2] << 8) + packet[3];
-			char key = switch_rfc2833_to_char(packet[0]);
-			uint16_t in_digit_seq = ntohs((uint16_t) rtp_session->recv_msg.header.seq);
-			uint32_t ts = htonl(rtp_session->recv_msg.header.ts);
-
-			if (in_digit_seq < rtp_session->dtmf_data.in_digit_seq) {
-				if (rtp_session->dtmf_data.in_digit_seq - in_digit_seq > 100) {
-					rtp_session->dtmf_data.in_digit_seq = 0;
-				}
-			}
-
-			if (in_digit_seq > rtp_session->dtmf_data.in_digit_seq) {
-
-				rtp_session->dtmf_data.in_digit_seq = in_digit_seq;
-
-#ifdef DEBUG_2833
-				
-				printf("read: %c %u %u %u %u %d %d %s\n", 
-					   key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, 
-					   ts, duration, rtp_session->recv_msg.header.m, end, end && !rtp_session->dtmf_data.in_digit_ts ? "ignored" : "");
-#endif
-
-				if (rtp_session->dtmf_data.last_duration > duration && ts == rtp_session->dtmf_data.in_digit_ts) {
-					rtp_session->dtmf_data.flip++;
-				}
-				
-				if (end) {
-					if (rtp_session->dtmf_data.in_digit_ts) {
-						switch_dtmf_t dtmf = { key, duration };
-
-						if (ts > rtp_session->dtmf_data.in_digit_ts) {
-							dtmf.duration += (ts - rtp_session->dtmf_data.in_digit_ts);
-						}
-						if (rtp_session->dtmf_data.flip) {
-							dtmf.duration += rtp_session->dtmf_data.flip * 0xFFFF;
-							rtp_session->dtmf_data.flip = 0;
-#ifdef DEBUG_2833
-							printf("you're welcome!\n");
-#endif
-						}
-
-#ifdef DEBUG_2833
-						printf("done digit=%c ts=%u start_ts=%u dur=%u ddur=%u\n", 
-							   dtmf.digit, ts, rtp_session->dtmf_data.in_digit_ts, duration, dtmf.duration);
-#endif
-						switch_rtp_queue_rfc2833_in(rtp_session, &dtmf);
-						rtp_session->dtmf_data.last_digit = rtp_session->dtmf_data.first_digit;
-
-						rtp_session->dtmf_data.in_digit_ts = 0;
-						rtp_session->dtmf_data.in_digit_sanity = 0;
-						do_cng = 1;
-					} else {
-						if (!switch_rtp_ready(rtp_session)) {
-							goto end;
-						}
-						switch_cond_next();
-						goto recvfrom;
-					}
-
-				} else if (!rtp_session->dtmf_data.in_digit_ts) {
-					rtp_session->dtmf_data.in_digit_ts = ts;
-					rtp_session->dtmf_data.first_digit = key;
-					rtp_session->dtmf_data.in_digit_sanity = 2000;
-				}
-
-				rtp_session->dtmf_data.last_duration = duration;
-#ifdef DEBUG_2833
-			} else {
-				printf("drop: %c %u %u %u %u %d %d\n", 
-					   key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, ts, duration, rtp_session->recv_msg.header.m, end);
-#endif
-			}
-		}
-		
-		if (rtp_session->dtmf_data.in_digit_ts) {
-			if (!switch_rtp_ready(rtp_session)) {
-				goto end;
-			}
-			switch_cond_next();
-			goto recvfrom;
-		}
-
-
 		if (rtp_session->max_missed_packets) {
 			if (bytes) {
 				rtp_session->missed_count = 0;
@@ -1659,6 +1555,109 @@
 		}
 
 
+#ifdef DEBUG_2833
+		if (rtp_session->dtmf_data.in_digit_sanity && !(rtp_session->dtmf_data.in_digit_sanity % 100)) {
+			printf("sanity %d\n", rtp_session->dtmf_data.in_digit_sanity);
+		}
+#endif
+
+		if (rtp_session->dtmf_data.in_digit_sanity && !--rtp_session->dtmf_data.in_digit_sanity) {
+			rtp_session->dtmf_data.last_digit = 0;
+			rtp_session->dtmf_data.in_digit_ts = 0;
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed DTMF sanity check.\n");
+		}
+
+		/* RFC2833 ... like all RFC RE: VoIP, guaranteed to drive you to insanity! 
+		   We know the real rules here, but if we enforce them, it's an interop nightmare so,
+		   we put up with as much as we can so we don't have to deal with being punished for
+		   doing it right. Nice guys finish last!
+		 */
+		if (bytes && !switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA) && 
+			!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PASS_RFC2833) && rtp_session->recv_msg.header.pt == rtp_session->te) {
+			unsigned char *packet = (unsigned char *) rtp_session->recv_msg.body;
+			int end = packet[1] & 0x80 ? 1 : 0;
+			uint16_t duration = (packet[2] << 8) + packet[3];
+			char key = switch_rfc2833_to_char(packet[0]);
+			uint16_t in_digit_seq = ntohs((uint16_t) rtp_session->recv_msg.header.seq);
+			uint32_t ts = htonl(rtp_session->recv_msg.header.ts);
+
+			if (in_digit_seq < rtp_session->dtmf_data.in_digit_seq) {
+				if (rtp_session->dtmf_data.in_digit_seq - in_digit_seq > 100) {
+					rtp_session->dtmf_data.in_digit_seq = 0;
+				}
+			}
+
+			if (in_digit_seq > rtp_session->dtmf_data.in_digit_seq) {
+
+				rtp_session->dtmf_data.in_digit_seq = in_digit_seq;
+
+#ifdef DEBUG_2833
+				
+				printf("read: %c %u %u %u %u %d %d %s\n", 
+					   key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, 
+					   ts, duration, rtp_session->recv_msg.header.m, end, end && !rtp_session->dtmf_data.in_digit_ts ? "ignored" : "");
+#endif
+
+				if (rtp_session->dtmf_data.last_duration > duration && ts == rtp_session->dtmf_data.in_digit_ts) {
+					rtp_session->dtmf_data.flip++;
+				}
+				
+				if (end) {
+					if (rtp_session->dtmf_data.in_digit_ts) {
+						switch_dtmf_t dtmf = { key, duration };
+
+						if (ts > rtp_session->dtmf_data.in_digit_ts) {
+							dtmf.duration += (ts - rtp_session->dtmf_data.in_digit_ts);
+						}
+						if (rtp_session->dtmf_data.flip) {
+							dtmf.duration += rtp_session->dtmf_data.flip * 0xFFFF;
+							rtp_session->dtmf_data.flip = 0;
+#ifdef DEBUG_2833
+							printf("you're welcome!\n");
+#endif
+						}
+
+#ifdef DEBUG_2833
+						printf("done digit=%c ts=%u start_ts=%u dur=%u ddur=%u\n", 
+							   dtmf.digit, ts, rtp_session->dtmf_data.in_digit_ts, duration, dtmf.duration);
+#endif
+						switch_rtp_queue_rfc2833_in(rtp_session, &dtmf);
+						rtp_session->dtmf_data.last_digit = rtp_session->dtmf_data.first_digit;
+
+						rtp_session->dtmf_data.in_digit_ts = 0;
+						rtp_session->dtmf_data.in_digit_sanity = 0;
+						do_cng = 1;
+					} else {
+						if (!switch_rtp_ready(rtp_session)) {
+							goto end;
+						}
+						switch_cond_next();
+						goto recvfrom;
+					}
+
+				} else if (!rtp_session->dtmf_data.in_digit_ts) {
+					rtp_session->dtmf_data.in_digit_ts = ts;
+					rtp_session->dtmf_data.first_digit = key;
+					rtp_session->dtmf_data.in_digit_sanity = 2000;
+				}
+
+				rtp_session->dtmf_data.last_duration = duration;
+#ifdef DEBUG_2833
+			} else {
+				printf("drop: %c %u %u %u %u %d %d\n", 
+					   key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, ts, duration, rtp_session->recv_msg.header.m, end);
+#endif
+			}
+		}
+		
+		if (rtp_session->dtmf_data.in_digit_ts) {
+			if (!switch_rtp_ready(rtp_session)) {
+				goto end;
+			}
+			switch_cond_next();
+			goto recvfrom;
+		}
+
 	timer_check:
 
 		if (do_cng) {


From anthm at freeswitch.org  Mon Jan 19 13:49:08 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 15:49:08 -0600
Subject: [Freeswitch-svn] [commit] r11294 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Mon Jan 19 15:49:07 2009
New Revision: 11294

Log:
tweak

Modified:
   freeswitch/trunk/src/switch_rtp.c

Modified: freeswitch/trunk/src/switch_rtp.c
==============================================================================
--- freeswitch/trunk/src/switch_rtp.c	(original)
+++ freeswitch/trunk/src/switch_rtp.c	Mon Jan 19 15:49:07 2009
@@ -1590,7 +1590,7 @@
 			if (in_digit_seq > rtp_session->dtmf_data.in_digit_seq) {
 
 				rtp_session->dtmf_data.in_digit_seq = in_digit_seq;
-
+				rtp_session->dtmf_data.in_digit_sanity = 2000;
 #ifdef DEBUG_2833
 				
 				printf("read: %c %u %u %u %u %d %d %s\n", 


From anthm at freeswitch.org  Mon Jan 19 15:15:59 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 17:15:59 -0600
Subject: [Freeswitch-svn] [commit] r11295 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Mon Jan 19 17:15:59 2009
New Revision: 11295

Log:
monitor_media function

Modified:
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Mon Jan 19 17:15:59 2009
@@ -97,6 +97,8 @@
 	uint8_t sent_ring;
 	uint8_t progress;
 	uint8_t return_ring_ready;
+	uint8_t monitor_early_media_ring;
+	uint8_t monitor_early_media_fail;
 } originate_global_t;
 
 
@@ -239,6 +241,25 @@
 	return x;
 }
 
+static switch_bool_t monitor_callback(switch_core_session_t *session, const char *app, const char *data)
+{
+	if (app) {
+		switch_channel_t *channel = switch_core_session_get_channel(session);
+		if (!strcmp(app, "fail")) {
+			switch_channel_hangup(channel, data ? switch_channel_str2cause(data) : SWITCH_CAUSE_USER_BUSY);
+		} else if (!strcmp(app, "ring")) {
+			originate_global_t *oglobals = (originate_global_t *) switch_channel_get_private(channel, "_oglobals_");
+
+			if (oglobals) {
+				switch_channel_set_private(channel, "_oglobals_", NULL);
+				oglobals->early_ok = 1;
+			}
+		}
+	}
+
+	return SWITCH_FALSE;
+}
+
 static uint8_t check_channel_status(originate_global_t *oglobals, originate_status_t *originate_status, uint32_t len)
 {
 
@@ -276,8 +297,118 @@
 				if (oglobals->early_ok) {
 					pindex = i;
 				}
+				
+				if (oglobals->monitor_early_media_fail) {
+					const char *var = switch_channel_get_variable(originate_status[i].peer_channel, "monitor_early_media_fail");
+					if (!switch_strlen_zero(var)) {
+						char *fail_array[128] = {0};
+						int fail_count = 0;
+						char *fail_data = strdup(var);
+						int fx;
+					
+						switch_assert(fail_data);
+						fail_count = switch_separate_string(fail_data, '!', fail_array, (sizeof(fail_array) / sizeof(fail_array[0])));
+					
+						for(fx = 0; fx < fail_count; fx++) {
+							char *cause = fail_array[fx];
+							int hits = 2;
+							char *p, *q;
+						
+							if (!(p = strchr(cause, ':'))) {
+								switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error\n");
+								continue;
+							}
+							*p++ = '\0';
+						
+
+							if (!p) {
+								switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error\n");
+								continue;
+							}
+						
+
+							if (!(hits = atoi(p))) {
+								hits = 2;
+							}
+						
+
+							if (!(p = strchr(p, ':'))) {
+								switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error\n");
+								continue;
+							}
+							*p++ = '\0';
+						
+							if (!p) {
+								switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error\n");
+								continue;
+							}
+
+							for(q = p; q && *q; q++) {
+								if (*q == '+') {
+									*q = ',';
+								}
+							}
+						
+							switch_ivr_tone_detect_session(originate_status[i].peer_session,
+														   "monitor_early_media_fail",
+														   p, "r", 0, hits, "fail", cause, monitor_callback);
+						
+						}
+					
+						switch_safe_free(fail_data);
+					
+					}
+				}
+				
+				if (oglobals->monitor_early_media_ring) {
+					const char *var = switch_channel_get_variable(originate_status[i].peer_channel, "monitor_early_media_ring");
+					if (!switch_strlen_zero(var)) {
+						char *ring_array[128] = {0};
+						int ring_count = 0;
+						char *ring_data = strdup(var);
+						int fx;
+					
+						switch_assert(ring_data);
+						ring_count = switch_separate_string(ring_data, '!', ring_array, (sizeof(ring_array) / sizeof(ring_array[0])));
+					
+						for(fx = 0; fx < ring_count; fx++) {
+							int hits = 2;
+							char *p = ring_array[fx], *q;
+						
+							if (!(hits = atoi(p))) {
+								hits = 2;
+							}
+						
+							if (!(p = strchr(p, ':'))) {
+								switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error\n");
+								continue;
+							}
+							*p++ = '\0';
+						
+							if (!p) {
+								switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error\n");
+								continue;
+							}
+
+							for(q = p; q && *q; q++) {
+								if (*q == '+') {
+									*q = ',';
+								}
+							}
+						
+							switch_channel_set_private(originate_status[i].peer_channel, "_oglobals_", oglobals);
+							switch_ivr_tone_detect_session(originate_status[i].peer_session,
+														   "monitor_early_media_ring",
+														   p, "r", 0, hits, "ring", NULL, monitor_callback);
+							
+						}
+					
+						switch_safe_free(ring_data);
+					
+					}
+				}
 			}
-			
+
 			if (!oglobals->progress) {
 				oglobals->progress = 1;
 			}
@@ -619,7 +750,7 @@
 		}
 	}
 
-  done:
+ done:
 
 	if (ringback.fh) {
 		switch_core_file_close(ringback.fh);
@@ -796,7 +927,7 @@
 	/* Some channel are created from an originating channel and some aren't so not all outgoing calls have a way to get params
 	   so we will normalize dialstring params and channel variables (when there is an originator) into an event that we 
 	   will use as a pseudo hash to consult for params as needed.
-	 */
+	*/
 
 	if (ovars) {
 		var_event = ovars;
@@ -824,6 +955,10 @@
 					ok = 1;
 				} else if (!strcasecmp((char *) hi->name, "ignore_early_media")) {
 					ok = 1;
+				} else if (!strcasecmp((char *) hi->name, "monitor_early_media_ring")) {
+					ok = 1;
+				} else if (!strcasecmp((char *) hi->name, "monitor_early_media_fail")) {
+					ok = 1;
 				} else if (!strcasecmp((char *) hi->name, "return_ring_ready")) {
 					ok = 1;
 				} else if (!strcasecmp((char *) hi->name, "ring_ready")) {
@@ -849,16 +984,16 @@
 			switch_channel_variable_last(caller_channel);
 		}
 		/*
-		   if ((hi = switch_channel_variable_first(caller_channel))) {
-		   for (; hi; hi = switch_hash_next(hi)) {
-		   switch_hash_this(hi, &vvar, NULL, &vval);
-		   if (vvar && vval) {
-		   switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, (void *) vvar, (char *) vval);
-		   }
-		   }
-		   switch_channel_variable_last(caller_channel);
-		   }
-		 */
+		  if ((hi = switch_channel_variable_first(caller_channel))) {
+		  for (; hi; hi = switch_hash_next(hi)) {
+		  switch_hash_this(hi, &vvar, NULL, &vval);
+		  if (vvar && vval) {
+		  switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, (void *) vvar, (char *) vval);
+		  }
+		  }
+		  switch_channel_variable_last(caller_channel);
+		  }
+		*/
 	}
 
 	if (vars) {					/* Parse parameters specified from the dialstring */
@@ -936,6 +1071,16 @@
 		oglobals.early_ok = 0;
 	}
 
+	if ((var_val = switch_event_get_header(var_event, "monitor_early_media_ring"))) {
+		oglobals.early_ok = 0;
+		oglobals.monitor_early_media_ring = 1;
+	}
+
+	if ((var_val = switch_event_get_header(var_event, "monitor_early_media_fail"))) {
+		oglobals.early_ok = 0;
+		oglobals.monitor_early_media_fail = 1;
+	}
+
 	if ((var_val = switch_event_get_header(var_event, "return_ring_ready")) && switch_true(var_val)) {
 		oglobals.return_ring_ready = 1;
 	}
@@ -1359,7 +1504,7 @@
 
 			}
 
-		  endfor1:
+		endfor1:
 
 			if (caller_channel) {
 				if (switch_channel_test_flag(caller_channel, CF_PROXY_MODE) || switch_channel_test_flag(caller_channel, CF_PROXY_MEDIA)) {
@@ -1698,6 +1843,12 @@
 				(oglobals.return_ring_ready && switch_channel_test_flag(peer_channel, CF_RING_READY))
 				) {
 				*bleg = peer_session;
+
+				if (oglobals.monitor_early_media_ring || oglobals.monitor_early_media_fail) {
+					switch_ivr_stop_tone_detect_session(peer_session);
+					switch_channel_set_private(peer_channel, "_oglobals_", NULL);
+				}
+
 				status = SWITCH_STATUS_SUCCESS;
 			} else {
 				status = SWITCH_STATUS_FALSE;


From ctrix at freeswitch.org  Mon Jan 19 15:30:29 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 17:30:29 -0600
Subject: [Freeswitch-svn] [commit] r11296 - in
	freeswitch/branches/ctrix/mod_airpe: . config
Message-ID: 

Author: ctrix
Date: Mon Jan 19 17:30:28 2009
New Revision: 11296

Log:
tweaks...

(add some locking, add option "restart-clients-on-reloadxml", reworking of reloadxml, 
reworking the shutdown of the module, remove noisy debug messages, airpe_uuid api command)



Modified:
   freeswitch/branches/ctrix/mod_airpe/Makefile
   freeswitch/branches/ctrix/mod_airpe/airpe_api.c
   freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
   freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c
   freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.h

Modified: freeswitch/branches/ctrix/mod_airpe/Makefile
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/Makefile	(original)
+++ freeswitch/branches/ctrix/mod_airpe/Makefile	Mon Jan 19 17:30:28 2009
@@ -2,6 +2,7 @@
 
 MODNAME=mod_airpe
 
+LOCAL_CFLAGS=
 LOCAL_LDFLAGS=-lX11
 LOCAL_OBJS=airpe_if_common.o airpe_api.o airpe_apps.o airpe_if_x11.o airpe_if_osx.o airpe_if_win32.o
 LOCAL_SOURCES=airpe_if_common.c airpe_api.c airpe_apps.c airpe_if_x11.c airpe_if_osx.c airpe_if_win32.c

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_api.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_api.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_api.c	Mon Jan 19 17:30:28 2009
@@ -37,6 +37,45 @@
 */
 
 
+#define AIRPE_UUID_SYNTAX "airpe_uuid_command "
+SWITCH_STANDARD_API(airpe_uuid_command)
+{
+    int argc = 0;
+    char *argv[2] = { 0 };
+    char *mycmd  = NULL;
+    char *client = NULL;
+    airpe_interface_t *airpe = NULL;
+
+    if (!switch_strlen_zero(cmd) && (mycmd = strdup(cmd))) {
+	argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+	switch_assert(argv[0]);
+    }
+
+    if ( argc != 1 ) {
+	stream->write_function(stream, "-USAGE: %s\n", AIRPE_UUID_SYNTAX);
+	goto done;
+    }
+
+    client = argv[0];
+    airpe = airpe_find_interface(client);
+
+    if ( !airpe ) {
+	stream->write_function(stream, "-ERR interface not found for client ");
+	stream->write_function(stream, client);
+	goto done;
+    } 
+
+    if ( !airpe->active_session_uuid ) {
+	goto done;
+    }
+
+    stream->write_function(stream, airpe->active_session_uuid);
+    stream->write_function(stream, "\n");
+
+ done:
+    return SWITCH_STATUS_SUCCESS;
+}
+
 #define AIRPE_RAW_SYNTAX "airpe_raw_command  "
 SWITCH_STANDARD_API(airpe_raw_command)
 {
@@ -255,7 +294,6 @@
 		stream->write_function(stream, buf);
 	    }
 	}
-
     }
 
  done:
@@ -350,6 +388,9 @@
 
     switch_api_interface_t *api;
 
+    switch_console_set_complete("add airpe_uuid ");
+    SWITCH_ADD_API(api, "airpe_uuid", "gets the uuid of the (eventually) attached session", airpe_uuid_command, AIRPE_UUID_SYNTAX);
+
     switch_console_set_complete("add airpe_debug ");
     SWITCH_ADD_API(api, "airpe_debug", "gets/sets debug status of an airpe client", airpe_debug_command, AIRPE_DEBUG_SYNTAX);
 

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	Mon Jan 19 17:30:28 2009
@@ -174,7 +174,7 @@
 
     assert(airpe);
 
-    if ( airpe->debug )
+    if ( airpe->debug && strncmp(msg, "PING", 4) )
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "msg to airpe client %s: > %s\n", airpe->name, msg);
 
     status = airpe_skype_send_message(airpe->skype_window, msg);
@@ -204,13 +204,14 @@
 }
 
 switch_status_t airpe_explicit_hangup(airpe_interface_t *airpe) {
+    switch_status_t status = SWITCH_STATUS_FALSE;
     char buf[SKYPE_MSG_LEN];
 
-    if ( airpe->active_call_id > 0 ) {
+    if ( airpe && airpe->active_call_id > 0 ) {
 	snprintf(buf, sizeof(buf), "SET CALL %d STATUS FINISHED", airpe->active_call_id);
-	return airpe_cmd_write(airpe, buf);
+	status = airpe_cmd_write(airpe, buf);
     }
-    return SWITCH_STATUS_FALSE;
+    return status;
 }
 
 /*****************************************************************************
@@ -536,7 +537,7 @@
     assert(airpe);
     assert(msg);
 
-    if ( airpe->debug )
+    if ( airpe->debug && strncmp(msg, "PONG", 4) )
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "airpe client %s: < %s\n", airpe->name, msg);
 
     if ( airpe->active_session_uuid ) {

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c	Mon Jan 19 17:30:28 2009
@@ -129,6 +129,8 @@
     disp 	= window->disp;
     handle_P 	= window->win;
 
+    trap_errors();
+
     atom1 = XInternAtom(disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False);
     atom2 = XInternAtom(disp, "SKYPECONTROLAPI_MESSAGE", False);
     pos = 0;
@@ -141,7 +143,6 @@
     xev.xclient.window 		= handle_P;
     xev.xclient.format 		= 8;
 
-    trap_errors();
     do {
 	unsigned int i;
 	for (i = 0; i < 20 && i + pos <= len; ++i)
@@ -158,6 +159,7 @@
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe client X11 error.\n");
 	airpe_skype_avalaible(window);
     }
+
     return SWITCH_STATUS_SUCCESS;
 }
 
@@ -275,6 +277,7 @@
 	    struct timeval timeout;
 	    int ret;
 
+	    memset(&timeout, 0, sizeof(struct timeval) );
 	    timeout.tv_usec = 10 * 1000;
 	    ret = select(x11_fd+1, &rset, 0, 0, &timeout);
 
@@ -328,14 +331,14 @@
 
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "airpe client %s: exiting thread\n", airpe->name);
 
-	/* Hangup our call, if we have one */
-	airpe_explicit_hangup(airpe);
-
+	XCloseDisplay(disp);
     } else {
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe client %s: skype not running on display %s\n", airpe->name, airpe->X11_display);
     }
 
-  return NULL;
+    airpe->airpe_thread_skype = NULL;
+
+    return NULL;
 }
 
 #endif

Modified: freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml	(original)
+++ freeswitch/branches/ctrix/mod_airpe/config/airpe.conf.xml	Mon Jan 19 17:30:28 2009
@@ -2,6 +2,7 @@
 
   
     
+    
 
     
     

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	Mon Jan 19 17:30:28 2009
@@ -41,6 +41,7 @@
     char *context;
     char *destination;
     int  audio_tcp_port_start;
+    int  restart_on_reload;
 
     switch_mutex_t *mutex;
     switch_hash_t  *interfaces_hash;
@@ -51,7 +52,12 @@
 
 
 airpe_interface_t *airpe_find_interface( const char *name) {
-    return switch_core_hash_find(globals.interfaces_hash, name);
+    airpe_interface_t *ret = NULL;
+
+    switch_mutex_lock(globals.mutex);
+    ret = switch_core_hash_find(globals.interfaces_hash, name);
+    switch_mutex_unlock(globals.mutex);
+    return ret;
 }
 
 
@@ -65,10 +71,8 @@
     if ( !globals.last_port_used )
 	globals.last_port_used = globals.audio_tcp_port_start;
 
-    switch_mutex_lock(globals.mutex);
     port = globals.last_port_used;
     globals.last_port_used++;
-    switch_mutex_unlock(globals.mutex);
 
     return port;
 }
@@ -207,12 +211,6 @@
 
 static switch_status_t airpe_destroy_client(airpe_interface_t *airpe) {
 
-    if ( airpe->active_call_id ) {
-	char buf[SKYPE_MSG_LEN] = "";
-	snprintf(buf, sizeof(buf), "ALTER CALL %d END HANGUP", airpe->active_call_id );
-	airpe_cmd_write(airpe, buf);
-    }
-
     if ( airpe->audio_in_socket ) {
 	if ( airpe->debug )
 	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Shutting down socket on port %d for client %s\n", airpe->audio_in_port, airpe->name);
@@ -235,7 +233,9 @@
     airpe_set_partner_handle(airpe, NULL);
     airpe_clear_call_id(airpe);
 
-    switch_core_hash_destroy(&airpe->variables_hash);
+    if ( airpe->variables_hash )
+	switch_core_hash_destroy(&airpe->variables_hash);
+    airpe->variables_hash = NULL;
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -638,7 +638,7 @@
     CONFIGURATION
  *****************************************************************************/
 
-static switch_status_t load_config(void) {
+static switch_status_t load_config( int reload ) {
     switch_xml_t    	cfg, 
 			xml, 
 			global_settings, 
@@ -669,7 +669,11 @@
 		globals.destination = switch_core_strdup(pool, val);
 	    } else if (!strcmp(var, "audio-tcp-port_start")) {
 		globals.audio_tcp_port_start = atoi(val);
+	    } else if (!strcmp(var, "restart-clients-on-reloadxml")) {
+		globals.restart_on_reload = switch_true(val);
 	    }
+	    else
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Unknown parameter %s\n", var);
 	}
     }
 
@@ -698,7 +702,8 @@
     	    }
 
 	    if ( (newconf = switch_core_hash_find(globals.interfaces_hash, name)) ) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Duplicated client %s. Skipping\n", name);
+		if ( !reload )
+		    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Duplicated client %s. Skipping\n", name);
 		continue;
 	    }
 
@@ -787,13 +792,14 @@
 	    if ( newconf->skype_window ) {
 		status = airpe_create_client(newconf);
 		if ( status == SWITCH_STATUS_SUCCESS ) {
-		    switch_core_hash_insert(globals.interfaces_hash, name, newconf);
+		    switch_mutex_lock(globals.mutex);
+		    switch_core_hash_insert(globals.interfaces_hash, newconf->name, newconf);
+		    switch_mutex_unlock(globals.mutex);
 		}
 		else {
 		    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Airpe: cannot start client %s.\n", newconf->name);
 		}
 	    }
-
 	}
 
     }
@@ -804,32 +810,35 @@
 
 static void reloadxml_event_handler(switch_event_t *event)
 {
-    airpe_interface_t *airpe;
-    switch_hash_index_t *hi;
-    void *val;
+    airpe_interface_t *airpe = NULL;
+    switch_hash_index_t *hi = NULL;
+    void *val = NULL;
 
     switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Reloading airpe configuration.\n");
 
-    /* First, mark all of them to be reloaded */
-    for (hi = switch_hash_first(NULL, globals.interfaces_hash); hi; hi = switch_hash_next(hi)) {
-	switch_hash_this(hi, NULL, NULL, &val);
-	airpe = ( airpe_interface_t *) val;
-	airpe->should_reload = 1;
+    if ( globals.restart_on_reload ) {
+	switch_mutex_lock(globals.mutex);
+	hi = switch_hash_first(NULL, globals.interfaces_hash);
+	while ( hi ) {
+	    switch_hash_this(hi, NULL, NULL, &val);
+	    airpe = ( airpe_interface_t *) val;
+	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Stopping airpe client %s\n", airpe->name);
+	    airpe_explicit_hangup(airpe);
+
+	    airpe->running = 0;
+	    while ( airpe->airpe_thread_skype ) {
+		switch_sleep(100000);
+	    }
+	    hi = switch_hash_next(hi);
+    	    switch_core_hash_delete(globals.interfaces_hash, airpe->name ); 
+	    airpe_destroy_client(airpe);
+	}
+	switch_mutex_unlock(globals.mutex);
     }
 
     /* Update the data of each client */
-//    load_config(1);
+    load_config(1);
 
-    /* Find eventual clients not updated and stop them */
-    for (hi = switch_hash_first(NULL, globals.interfaces_hash); hi; hi = switch_hash_next(hi)) {
-	switch_hash_this(hi, NULL, NULL, &val);
-	airpe = ( airpe_interface_t *) val;
-	if ( airpe->should_reload ) {
-	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Stopping airpe client %s.\n", airpe->name);
-	    switch_core_hash_delete(globals.interfaces_hash, airpe->name); 
-	    airpe_destroy_client(airpe);
-	}
-    }
 }
 
 
@@ -868,10 +877,10 @@
 
     memset(&globals, 0, sizeof(globals));
 
-    switch_core_hash_init(&globals.interfaces_hash, pool);
     switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, pool);
+    switch_core_hash_init(&globals.interfaces_hash, pool);
 
-    load_config();
+    load_config(0);
 
     *module_interface = switch_loadable_module_create_module_interface(pool, modname);
 
@@ -898,28 +907,33 @@
     airpe_interface_t *airpe;
     switch_hash_index_t *hi;
     void *val;
+    const void *var = NULL;
 
     pool = airpe_module_pool;
 
     switch_event_unbind(&EVENT_NODE);
 
-    for (hi = switch_hash_first(NULL, globals.interfaces_hash); hi; hi = switch_hash_next(hi)) {
-	switch_hash_this(hi, NULL, NULL, &val);
+    switch_mutex_lock(globals.mutex);
+    hi = switch_hash_first(NULL, globals.interfaces_hash);
+    while ( hi ) {
+	switch_hash_this(hi, &var, NULL, &val);
 	airpe = ( airpe_interface_t *) val;
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Shutting down airpe client: %s\n", airpe->name);
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Shutting down airpe client: %s\n", (char *)var);
+	airpe_explicit_hangup(airpe);
+
 	airpe->running = 0;
-	/* Wake up the socket */
 	airpe_cmd_write(airpe, "PING");
+    	while ( airpe->airpe_thread_skype ) {
+	    switch_sleep(100000);
+	}
+
+	hi = switch_hash_next(hi);
+	switch_core_hash_delete(globals.interfaces_hash, var); 
 	airpe_destroy_client(airpe);
-	/*
-	we won't delete the hash element. we're going to destroy the whole pool 
-	switch_core_hash_delete(globals.interfaces_hash, airpe->name); 
-	*/
     }
+    switch_mutex_unlock(globals.mutex);
     switch_yield(500000);
 
-    /* TODO... should we check that all interfaces has been switched off ? */
-
     switch_core_hash_destroy(&globals.interfaces_hash);
     switch_core_destroy_memory_pool(&pool);
     return SWITCH_STATUS_UNLOAD;

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.h
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.h	Mon Jan 19 17:30:28 2009
@@ -31,7 +31,7 @@
 #include 
 #include 
 
-#define MODNAME "airpe"
+#define MODNAME "mod_airpe"
 
 #define AIRPE_EVENT_AUTHREQUEST "airpe::authrequest"
 #define AIRPE_EVENT_STATUSCHANGE "airpe::statuschange"
@@ -135,6 +135,7 @@
 struct airpe_interface_s {
     char 			*name;
     int  			debug;
+    int  			detached;
     char 			*dialplan;
     char 			*context;
     char 			*destination;
@@ -160,7 +161,6 @@
     CALL_STATUS			call_status;
     CONN_STATUS			conn_status;
 
-    int				should_reload;
     char			*skype_version;
     char			*mood_text;
     int 			active_call_id;


From anthm at freeswitch.org  Mon Jan 19 15:30:41 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 17:30:41 -0600
Subject: [Freeswitch-svn] [commit] r11297 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Mon Jan 19 17:30:41 2009
New Revision: 11297

Log:
update

Modified:
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Mon Jan 19 17:30:41 2009
@@ -252,6 +252,15 @@
 
 			if (oglobals) {
 				switch_channel_set_private(channel, "_oglobals_", NULL);
+				
+				if (!oglobals->progress) {
+					oglobals->progress = 1;
+				}
+			
+				if (!oglobals->ring_ready) {
+					oglobals->ring_ready = 1;
+				}
+
 				oglobals->early_ok = 1;
 			}
 		}
@@ -409,12 +418,15 @@
 				}
 			}
 
-			if (!oglobals->progress) {
-				oglobals->progress = 1;
-			}
+			if (!oglobals->monitor_early_media_ring) {
+
+				if (!oglobals->progress) {
+					oglobals->progress = 1;
+				}
 			
-			if (!oglobals->ring_ready) {
-				oglobals->ring_ready = 1;
+				if (!oglobals->ring_ready) {
+					oglobals->ring_ready = 1;
+				}
 			}
 		}
 		


From ctrix at freeswitch.org  Mon Jan 19 15:55:57 2009
From: ctrix at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 17:55:57 -0600
Subject: [Freeswitch-svn] [commit] r11298 - in
	freeswitch/branches/ctrix/mod_airpe: . scripts
Message-ID: 

Author: ctrix
Date: Mon Jan 19 17:55:57 2009
New Revision: 11298

Log:
Tweaks
(modify some debug messages, add example script to launch skype)



Added:
   freeswitch/branches/ctrix/mod_airpe/scripts/
   freeswitch/branches/ctrix/mod_airpe/scripts/skype_launch   (contents, props changed)
Modified:
   freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
   freeswitch/branches/ctrix/mod_airpe/mod_airpe.c

Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_common.c	Mon Jan 19 17:55:57 2009
@@ -754,7 +754,7 @@
 	    }
 	}
 	else {
-	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "CALL ID %d\n", callid);
+	    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Unmanaged message %s\n", msg);
 	}
     }
     else if ( !strncmp( buf, "DTMF", strlen("DTMF")) && argc>3 ) {

Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	(original)
+++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.c	Mon Jan 19 17:55:57 2009
@@ -488,7 +488,7 @@
     assert(tech_pvt);
 
     if ( !tech_pvt->airpe ) {
-	ADEBUG("airpe_audio_write ERROR: no client\n");
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe_audio_write ERROR: no client\n");
 	return SWITCH_STATUS_FALSE;
     }
 
@@ -497,7 +497,7 @@
     rv = airpe_audio_write(tech_pvt, frame);
 
     if ( rv != SWITCH_STATUS_SUCCESS ) {
-	ADEBUG("airpe_audio_write ERROR\n");
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe_audio_write ERROR\n");
 	return SWITCH_STATUS_FALSE;
     }
 

Added: freeswitch/branches/ctrix/mod_airpe/scripts/skype_launch
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/scripts/skype_launch	Mon Jan 19 17:55:57 2009
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# Set the directory where your Skype settings and users are located
+DB_PATH=/home/ctrix/.Skype/
+
+function launch() {
+    local ACCOUNT=$1
+    local PASSWD=$2
+    local DISP=$3
+
+    /usr/bin/Xvfb :$DISP &
+    sleep 2 
+    echo "$ACCOUNT $PASSWD"| DISPLAY=:$DISP /usr/bin/skype --pipelogin --dbpath=$DB_PATH
+
+    return;
+}
+
+
+# add as many lines you need to launch each skype client
+launch youraccount yourpass display
+
+
+exit 0;


From anthm at freeswitch.org  Mon Jan 19 16:21:58 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 18:21:58 -0600
Subject: [Freeswitch-svn] [commit] r11299 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Mon Jan 19 18:21:58 2009
New Revision: 11299

Log:
refactor

Modified:
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Mon Jan 19 18:21:58 2009
@@ -83,6 +83,8 @@
 	uint8_t early_media;
 	uint8_t answered;
 	uint8_t dead;
+	uint32_t per_channel_timelimit_sec;
+	uint32_t per_channel_progress_timelimit_sec;
 } originate_status_t;
 
 
@@ -211,8 +213,6 @@
 }
 
 static int check_per_channel_timeouts(originate_status_t *originate_status, 
-									  uint32_t *per_channel_timelimit_sec, 
-									  uint32_t *per_channel_progress_timelimit_sec,
 									  int max,
 									  time_t start)
 {
@@ -221,7 +221,7 @@
 
 	for (i = 0; i < max; i++) {
 		if (originate_status[i].peer_channel && switch_channel_get_state(originate_status[i].peer_channel) < CS_HANGUP) {
-			if (per_channel_progress_timelimit_sec[i] && elapsed > per_channel_progress_timelimit_sec[i] &&
+			if (originate_status[i].per_channel_progress_timelimit_sec && elapsed > originate_status[i].per_channel_progress_timelimit_sec &&
 				!(
 				  switch_channel_test_flag(originate_status[i].peer_channel, CF_RING_READY) ||
 				  switch_channel_test_flag(originate_status[i].peer_channel, CF_ANSWERED) ||
@@ -231,7 +231,7 @@
 				switch_channel_hangup(originate_status[i].peer_channel, SWITCH_CAUSE_PROGRESS_TIMEOUT);
 				x++;
 			}
-			if (per_channel_timelimit_sec[i] && elapsed > per_channel_timelimit_sec[i]) {
+			if (originate_status[i].per_channel_timelimit_sec && elapsed > originate_status[i].per_channel_timelimit_sec) {
 				switch_channel_hangup(originate_status[i].peer_channel, SWITCH_CAUSE_ALLOTTED_TIMEOUT);
 				x++;
 			}
@@ -857,8 +857,6 @@
 	char *fail_on_single_reject_var = NULL;
 	char *loop_data = NULL;
 	uint32_t progress_timelimit_sec = 0;
-	uint32_t per_channel_timelimit_sec[MAX_PEERS] = { 0 };
-	uint32_t per_channel_progress_timelimit_sec[MAX_PEERS] = { 0 };
 	const char *cid_tmp;
 	originate_global_t oglobals = { 0 };
 
@@ -1422,7 +1420,7 @@
 						if (val > 0) {
 							switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Setting leg timeout to %d\n", 
 											  switch_channel_get_name(originate_status[0].peer_channel), val);
-							per_channel_timelimit_sec[i] = (uint32_t) val;
+							originate_status[i].per_channel_timelimit_sec = (uint32_t) val;
 						}
 					}
 					
@@ -1431,7 +1429,7 @@
 						if (val > 0) {
 							switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Setting leg progress timeout to %d\n", 
 											  switch_channel_get_name(originate_status[0].peer_channel), val);
-							per_channel_progress_timelimit_sec[i] = (uint32_t) val;
+							originate_status[i].per_channel_progress_timelimit_sec = (uint32_t) val;
 						}
 					}
 				}
@@ -1506,7 +1504,7 @@
 					switch_yield(100000);
 				}
 
-				check_per_channel_timeouts(originate_status, per_channel_timelimit_sec, per_channel_progress_timelimit_sec, and_argc, start);
+				check_per_channel_timeouts(originate_status, and_argc, start);
 
 
 				if (valid_channels == 0) {
@@ -1634,7 +1632,7 @@
 				}
 				/* When the AND operator is being used, and fail_on_single_reject is set, a hangup indicates that the call should fail. */
 				
-				check_per_channel_timeouts(originate_status, per_channel_timelimit_sec, per_channel_progress_timelimit_sec, and_argc, start);
+				check_per_channel_timeouts(originate_status, and_argc, start);
 
 				if (oglobals.session && switch_core_session_private_event_count(oglobals.session)) {
 					switch_ivr_parse_all_events(oglobals.session);


From anthm at freeswitch.org  Mon Jan 19 16:28:20 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 18:28:20 -0600
Subject: [Freeswitch-svn] [commit] r11300 - freeswitch/trunk
Message-ID: 

Author: anthm
Date: Mon Jan 19 18:28:20 2009
New Revision: 11300

Log:
make message more clear

Modified:
   freeswitch/trunk/bootstrap.sh

Modified: freeswitch/trunk/bootstrap.sh
==============================================================================
--- freeswitch/trunk/bootstrap.sh	(original)
+++ freeswitch/trunk/bootstrap.sh	Mon Jan 19 18:28:20 2009
@@ -91,7 +91,7 @@
 lt_pversion=`$libtool --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
 if test -z "$lt_pversion"; then
 echo "bootstrap: libtool not found."
-echo "           You need libtool version 1.5.14 or newer up to 1.9.x installed"
+echo "           You need libtool version 1.5.14 or newer (up to 1.9.x) installed. 2.x will not work! see http://jira.freeswitch.org/browse/FSBUILD-82"
 echo "           libtool version 2.0 and above WILL NOT work."
 echo "           to build FreeSWITCH from SVN."
 exit 1
@@ -115,7 +115,7 @@
    echo "bootstrap: libtool version $lt_pversion (ok)"
 else
 echo "bootstrap: libtool version $lt_pversion found."
-echo "           You need libtool version 1.5.14 or newer installed"
+echo "           You need libtool version 1.5.14 or newer (up to 1.9.x) installed. 2.x will not work! see http://jira.freeswitch.org/browse/FSBUILD-82"
 echo "           to build FreeSWITCH from SVN."
 
 exit 1


From robertj at freeswitch.org  Mon Jan 19 16:47:43 2009
From: robertj at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 18:47:43 -0600
Subject: [Freeswitch-svn] [commit] r11301 - freeswitch/trunk/w32
Message-ID: 

Author: robertj
Date: Mon Jan 19 18:47:43 2009
New Revision: 11301

Log:
Removed error on warning for compiles, as DevStudio 2005 is more or less deprecated keeping the warnings out is becoming less and less "maintained".

Modified:
   freeswitch/trunk/w32/modules.vsprops

Modified: freeswitch/trunk/w32/modules.vsprops
==============================================================================
--- freeswitch/trunk/w32/modules.vsprops	(original)
+++ freeswitch/trunk/w32/modules.vsprops	Mon Jan 19 18:47:43 2009
@@ -12,7 +12,6 @@
 		AdditionalIncludeDirectories=""$(SolutionDir)\src\include""
 		PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;MOD_EXPORTS"
 		WarningLevel="4"
-		WarnAsError="true"
 	/>
 	

Author: robertj
Date: Mon Jan 19 18:48:33 2009
New Revision: 11302

Log:
Added mod_opal to old unsupported DevStudio 2005 solution.

Modified:
   freeswitch/trunk/Freeswitch.2005.unsupported.sln

Modified: freeswitch/trunk/Freeswitch.2005.unsupported.sln
==============================================================================
--- freeswitch/trunk/Freeswitch.2005.unsupported.sln	(original)
+++ freeswitch/trunk/Freeswitch.2005.unsupported.sln	Mon Jan 19 18:48:33 2009
@@ -801,6 +801,8 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlparse", "libs\xmlrpc-c\Windows\xmlparse.vcproj", "{0D108721-EAE8-4BAF-8102-D8960EC93647}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_opal", "src\mod\endpoints\mod_opal\mod_opal_2005.vcproj", "{426B1369-FDB7-4B18-A7EF-9C6A9097A130}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Win32 = Debug|Win32
@@ -1321,6 +1323,12 @@
 		{0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.ActiveCfg = Release|Win32
 		{0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.Build.0 = Release|Win32
 		{0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.ActiveCfg = Release|Win32
+		{426B1369-FDB7-4B18-A7EF-9C6A9097A130}.Debug|Win32.ActiveCfg = Debug|Win32
+		{426B1369-FDB7-4B18-A7EF-9C6A9097A130}.Debug|Win32.Build.0 = Debug|Win32
+		{426B1369-FDB7-4B18-A7EF-9C6A9097A130}.Debug|x64.ActiveCfg = Debug|Win32
+		{426B1369-FDB7-4B18-A7EF-9C6A9097A130}.Release|Win32.ActiveCfg = Release|Win32
+		{426B1369-FDB7-4B18-A7EF-9C6A9097A130}.Release|Win32.Build.0 = Release|Win32
+		{426B1369-FDB7-4B18-A7EF-9C6A9097A130}.Release|x64.ActiveCfg = Release|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -1341,6 +1349,7 @@
 		{3A5B9131-F20C-4A85-9447-6C1610941CEE} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
 		{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
 		{0DF3ABD0-DDC0-4265-B778-07C66780979B} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
+		{426B1369-FDB7-4B18-A7EF-9C6A9097A130} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
 		{30A5B29C-983E-4580-9FD0-D647CCDCC7EB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
 		{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
 		{C24FB505-05D7-4319-8485-7540B44C8603} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}


From robertj at freeswitch.org  Mon Jan 19 16:49:48 2009
From: robertj at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 18:49:48 -0600
Subject: [Freeswitch-svn] [commit] r11303 -
	freeswitch/trunk/src/mod/endpoints/mod_opal
Message-ID: 

Author: robertj
Date: Mon Jan 19 18:49:48 2009
New Revision: 11303

Log:
Made sure RTP timestamp, ssrc and marker bit are transferred from FS to OPAL structure.

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp

Modified: freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp	Mon Jan 19 18:49:48 2009
@@ -1229,6 +1229,9 @@
         RTP_DataFrame rtp;
         rtp.SetPayloadType(mediaFormat.GetPayloadType());
         rtp.SetPayloadSize(frame->datalen);
+        rtp.SetTimestamp(frame->timestamp);
+        rtp.SetSyncSource(frame->ssrc);
+        rtp.SetMarker(frame->m);
         memcpy(rtp.GetPayloadPtr(), frame->data, frame->datalen);
         if (GetPatch()->PushFrame(rtp))
             return SWITCH_STATUS_SUCCESS;


From brian at freeswitch.org  Mon Jan 19 17:57:01 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Mon, 19 Jan 2009 19:57:01 -0600
Subject: [Freeswitch-svn] [commit] r11304 -
	freeswitch/trunk/src/mod/formats/mod_shout
Message-ID: 

Author: brian
Date: Mon Jan 19 19:57:01 2009
New Revision: 11304

Log:
multiples of 16 are better for when you try to record 48kHz because 144kbit is INVALID and lame is really lame and can only say it failed -3 and not give you one bit of clue wth is wrong.

Modified:
   freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c

Modified: freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c
==============================================================================
--- freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c	(original)
+++ freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c	Mon Jan 19 19:57:01 2009
@@ -38,7 +38,7 @@
 
 #define OUTSCALE 8192 * 2
 #define MP3_SCACHE 16384 * 2
-#define MP3_DCACHE 8192 *2
+#define MP3_DCACHE 8192 * 2
 #define MP3_TOOSMALL -1234
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_shout_load);
@@ -692,7 +692,7 @@
 
 		}
 		context->channels = handle->channels;
-		lame_set_brate(context->gfp, 24 * (handle->samplerate / 8000) * handle->channels);
+		lame_set_brate(context->gfp, 16 * (handle->samplerate / 8000) * handle->channels);
 		lame_set_num_channels(context->gfp, handle->channels);
 		lame_set_in_samplerate(context->gfp, handle->samplerate);
 		lame_set_out_samplerate(context->gfp, handle->samplerate);
@@ -1188,7 +1188,7 @@
 
 		lame_set_num_channels(gfp, read_codec->implementation->number_of_channels);
 		lame_set_in_samplerate(gfp, read_codec->implementation->actual_samples_per_second);
-		lame_set_brate(gfp, 24);
+		lame_set_brate(gfp, 16 * (read_codec->implementation->actual_samples_per_second / 8000) * read_codec->implementation->number_of_channels);
 		lame_set_mode(gfp, 3);
 		lame_set_quality(gfp, 2);
 		lame_set_errorf(gfp, log_error);
@@ -1300,7 +1300,7 @@
 
 	lame_set_num_channels(gfp, fh.channels);
 	lame_set_in_samplerate(gfp, fh.samplerate);
-	lame_set_brate(gfp, 24);
+	lame_set_brate(gfp, 16 * (fh.samplerate / 8000) * fh.channels);
 	lame_set_mode(gfp, 3);
 	lame_set_quality(gfp, 2);
 	lame_set_errorf(gfp, log_error);


From silik0n at freeswitch.org  Mon Jan 19 22:18:19 2009
From: silik0n at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 00:18:19 -0600
Subject: [Freeswitch-svn] [commit] r11305 -
	freeswitch/trunk/src/mod/applications/mod_easyroute
Message-ID: 

Author: silik0n
Date: Tue Jan 20 00:18:19 2009
New Revision: 11305

Log:
better error handling when people dont use --enable-core-odbc-support

Modified:
   freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c

Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	Tue Jan 20 00:18:19 2009
@@ -87,6 +87,7 @@
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_default_gateway, globals.default_gateway);
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_custom_query, globals.custom_query);
 
+#ifdef SWITCH_HAVE_ODBC
 static int route_callback(void *pArg, int argc, char **argv, char **columnNames)
 {
 	route_callback_t *cbt = (route_callback_t *) pArg;
@@ -100,8 +101,7 @@
 
 	return 0;
 }
-
-
+#endif
 
 static switch_status_t load_config(void)
 {
@@ -175,10 +175,10 @@
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot Open ODBC Connection (did you enable it?!)\n");
 #ifdef SWITCH_HAVE_ODBC
 	}
-#endif
 
 reallydone:
 
+#endif
 	if (xml) {
 		switch_xml_free(xml);
 	}
@@ -193,7 +193,7 @@
 
 static char SQL_LOOKUP[] = "SELECT gateways.gateway_ip, gateways.group, gateways.limit, gateways.techprofile, numbers.acctcode, numbers.translated from gateways, numbers where numbers.number = '%s' and numbers.gateway_id = gateways.gateway_id limit 1;";
 
-static switch_status_t route_lookup(char *dn, easyroute_results_t *results)
+static switch_status_t route_lookup(char *dn, easyroute_results_t *results, int noat, char *seperator)
 {	
 	switch_status_t sstatus = SWITCH_STATUS_SUCCESS;
 	char sql[1024] = "";
@@ -241,8 +241,13 @@
 		} else {
 			switch_set_string(results->translated, pdata.translated);
 		}
-
-		switch_snprintf(results->dialstring, 256, "%s/%s@%s", tmp_profile , results->translated, tmp_gateway);
+		if (noat) {
+			switch_snprintf(results->dialstring, 256, "%s/%s%s", tmp_profile , results->translated, tmp_gateway);
+		} else if (seperator) {
+			switch_snprintf(results->dialstring, 256, "%s/%s%s%s", tmp_profile , results->translated, seperator, tmp_gateway);
+		} else {
+			switch_snprintf(results->dialstring, 256, "%s/%s@%s", tmp_profile , results->translated, tmp_gateway);
+		}
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "THE ROUTE [%s]\n", results->dialstring);
 
 		if (switch_strlen_zero(pdata.group)){
@@ -259,10 +264,19 @@
 	} else {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DB Error Setting Default Route!\n");
 		switch_set_string(results->limit, "9999");
-		switch_snprintf(results->dialstring, 256, "%s/%s@%s", globals.default_techprofile, dn, globals.default_gateway);
+		if (noat){
+			switch_snprintf(results->dialstring, 256, "%s/%s%s", globals.default_techprofile, dn, globals.default_gateway);
+		} else if (seperator){
+			switch_snprintf(results->dialstring, 256, "%s/%s%s%s", globals.default_techprofile, dn, seperator, globals.default_gateway);
+		} else { 
+			switch_snprintf(results->dialstring, 256, "%s/%s@%s", globals.default_techprofile, dn, globals.default_gateway);
+		}
 		switch_set_string(results->group, "");
 		switch_set_string(results->acctcode, "");
 	}
+
+#else
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "mod_easyroute requires core ODBC support. Please refer to the documentation on how to enable this\n");
 #endif
 	if (globals.mutex){
 		switch_mutex_unlock(globals.mutex);
@@ -276,6 +290,10 @@
 	char *argv[4] = { 0 };
 	char *mydata = NULL;
 	char *destnum = NULL; 
+
+	int noat = 0;
+	char *seperator = NULL;
+
 	easyroute_results_t results;
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 
@@ -289,7 +307,16 @@
 	
 	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
 		destnum = argv[0];
-		route_lookup(destnum, &results);
+		if (argc == 2) {
+			if (!strcasecmp(argv[1], "noat")) {
+				noat = 1;
+                        } else if (!strcasecmp(argv[1], "seperator")) {
+                                if (argc == 3){
+					switch_set_string(seperator, argv[2]);
+				}
+			}
+		}
+		route_lookup(destnum, &results, noat, seperator);
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "EASY ROUTE DEST: [%s]\n", results.dialstring);
 		switch_channel_set_variable(channel, "easy_destnum", results.destnum);
 		switch_channel_set_variable(channel, "easy_dialstring", results.dialstring);
@@ -305,12 +332,19 @@
 	char *argv[4] = { 0 };
 	char *mydata = NULL;
 	char *destnum = NULL;
+	char *seperator = NULL;
+	int noat = 0;
 	easyroute_results_t results;
 	
 	if (session) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "This function cannot be called from the dialplan.\n");
 		return SWITCH_STATUS_FALSE;
 	}
+
+#ifdef SWITCH_HAVE_ODBC
+	stream->write_function(stream, "mod_easyroute requires you enable core odbc support\n");
+	return SWITCH_STATUS_SUCCESS;
+#endif
 	
 	if (!cmd || !(mydata = strdup(cmd))) {
 		stream->write_function(stream, "Usage: easyroute \n");
@@ -319,12 +353,21 @@
 	
 	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
 		destnum = argv[0];
-		if (argc < 1 || argc > 2){
+		if (argc < 1 || argc > 3){
 			stream->write_function(stream, "Invalid Input!\n");
 			return SWITCH_STATUS_SUCCESS;
 		} 
+		if (argc == 2) {
+			if (!strcasecmp(argv[1], "noat")) {
+				noat = 1;
+                        } else if (!strcasecmp(argv[1], "seperator")) {
+                                if (argc == 3){
+					switch_set_string(seperator, argv[2]);
+				}
+			}
+		}
 		
-		if (!route_lookup(destnum, &results) == SWITCH_STATUS_SUCCESS) {
+		if (!route_lookup(destnum, &results, noat, seperator) == SWITCH_STATUS_SUCCESS) {
 			stream->write_function(stream, "No Match!\n");
 			return SWITCH_STATUS_SUCCESS;
 		}
@@ -374,7 +417,9 @@
 
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_easyroute_shutdown)
 {	
+#ifdef SWITCH_HAVE_ODBC
 	switch_odbc_handle_disconnect(globals.master_odbc);
+#endif
 	return SWITCH_STATUS_UNLOAD;
 }
 


From andrew at freeswitch.org  Mon Jan 19 22:25:06 2009
From: andrew at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 00:25:06 -0600
Subject: [Freeswitch-svn] [commit] r11306 -
	freeswitch/trunk/src/mod/endpoints/mod_portaudio
Message-ID: 

Author: andrew
Date: Tue Jan 20 00:25:06 2009
New Revision: 11306

Log:
defaultLowOutputLatency -> defaultLowInputLatency (not that it matters, hopefully)


Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Tue Jan 20 00:25:06 2009
@@ -1170,7 +1170,7 @@
 		inputParameters.device = i;
 		inputParameters.channelCount = deviceInfo->maxInputChannels;
 		inputParameters.sampleFormat = paInt16;
-		inputParameters.suggestedLatency = deviceInfo->defaultLowOutputLatency;	/* ignored by Pa_IsFormatSupported() */
+		inputParameters.suggestedLatency = deviceInfo->defaultLowInputLatency;	/* ignored by Pa_IsFormatSupported() */
 		inputParameters.hostApiSpecificStreamInfo = NULL;
 		
 		outputParameters.device = i;


From anthm at freeswitch.org  Tue Jan 20 05:55:00 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 07:55:00 -0600
Subject: [Freeswitch-svn] [commit] r11307 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Tue Jan 20 07:55:00 2009
New Revision: 11307

Log:
MODAPP-201

Modified:
   freeswitch/trunk/src/switch_core_media_bug.c

Modified: freeswitch/trunk/src/switch_core_media_bug.c
==============================================================================
--- freeswitch/trunk/src/switch_core_media_bug.c	(original)
+++ freeswitch/trunk/src/switch_core_media_bug.c	Tue Jan 20 07:55:00 2009
@@ -235,7 +235,6 @@
 	bug->flags = flags;
 
 	bug->stop_time = stop_time;
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Attaching BUG to %s\n", switch_channel_get_name(session->channel));
 	bytes = session->read_codec->implementation->decoded_bytes_per_packet;
 
 	if (!bug->flags) {
@@ -258,6 +257,16 @@
 		bug->thread_id = switch_thread_self();
 	}
 
+	if (bug->callback) {
+		switch_bool_t result = bug->callback(bug, bug->user_data, SWITCH_ABC_TYPE_INIT);
+		if (result == SWITCH_FALSE) {
+			switch_core_media_bug_remove(session, new_bug);
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error attaching BUG to %s\n", switch_channel_get_name(session->channel));
+			return SWITCH_STATUS_GENERR;
+		}
+	}
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Attaching BUG to %s\n", switch_channel_get_name(session->channel));
 	bug->ready = 1;
 	switch_thread_rwlock_wrlock(session->bug_rwlock);
 	bug->next = session->bugs;
@@ -265,13 +274,6 @@
 	switch_thread_rwlock_unlock(session->bug_rwlock);
 	*new_bug = bug;
 
-	if (bug->callback) {
-		switch_bool_t result = bug->callback(bug, bug->user_data, SWITCH_ABC_TYPE_INIT);
-		if (result == SWITCH_FALSE) {
-			return switch_core_media_bug_remove(session, new_bug);
-		}
-	}
-
 	return SWITCH_STATUS_SUCCESS;
 }
 


From brian at freeswitch.org  Tue Jan 20 07:17:53 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 09:17:53 -0600
Subject: [Freeswitch-svn] [commit] r11308 -
	freeswitch/trunk/conf/sip_profiles
Message-ID: 

Author: brian
Date: Tue Jan 20 09:17:53 2009
New Revision: 11308

Log:
cleanup the comment

Modified:
   freeswitch/trunk/conf/sip_profiles/internal.xml

Modified: freeswitch/trunk/conf/sip_profiles/internal.xml
==============================================================================
--- freeswitch/trunk/conf/sip_profiles/internal.xml	(original)
+++ freeswitch/trunk/conf/sip_profiles/internal.xml	Tue Jan 20 09:17:53 2009
@@ -158,7 +158,10 @@
     
     
 
-	
+    
     
 	
     


From anthm at freeswitch.org  Tue Jan 20 07:39:32 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 09:39:32 -0600
Subject: [Freeswitch-svn] [commit] r11309 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Tue Jan 20 09:39:32 2009
New Revision: 11309

Log:
add ignore_ring_ready tone_detect_sleep and tone_detect_expires

Modified:
   freeswitch/trunk/src/switch_ivr_async.c
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/switch_ivr_async.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_async.c	(original)
+++ freeswitch/trunk/src/switch_ivr_async.c	Tue Jan 20 09:39:32 2009
@@ -1197,6 +1197,8 @@
 	int hits;
 	int sleep;
 	int expires;
+	int default_sleep;
+	int default_expires;
 	int once;
 	switch_tone_detect_callback_t callback;
 } switch_tone_detect_t;
@@ -1261,8 +1263,8 @@
 					
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "TONE %s HIT %d/%d\n", 
 									  cont->list[i].key, cont->list[i].hits, cont->list[i].total_hits);
-					cont->list[i].sleep = 50;
-					cont->list[i].expires = 250;
+					cont->list[i].sleep = cont->list[i].default_sleep;
+					cont->list[i].expires = cont->list[i].default_expires;
 					
 					if (cont->list[i].hits >= cont->list[i].total_hits) {
 						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "TONE %s DETECTED\n", cont->list[i].key);
@@ -1335,6 +1337,7 @@
 	char *p, *next;
 	int i = 0, ok = 0;
 	switch_media_bug_flag_t bflags = 0;
+	const char *var;
 
 	switch_assert(read_codec != NULL);
 
@@ -1419,6 +1422,24 @@
 
 	switch_channel_pre_answer(channel);
 
+	cont->list[cont->index].default_sleep = 25;
+	cont->list[cont->index].default_expires = 250;
+
+	if ((var = switch_channel_get_variable(channel, "tone_detect_sleep"))) {
+		int tmp = atoi(var);
+		if (tmp > 0) {
+			cont->list[cont->index].default_sleep = tmp;
+		}
+	}
+
+	if ((var = switch_channel_get_variable(channel, "tone_detect_expires"))) {
+		int tmp = atoi(var);
+		if (tmp > 0) {
+			cont->list[cont->index].default_expires = tmp;
+		}
+	}
+
+
 	if (switch_strlen_zero(flags)) {
 		bflags = SMBF_READ_REPLACE;
 	} else {

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Tue Jan 20 09:39:32 2009
@@ -82,7 +82,6 @@
 	uint8_t ring_ready;
 	uint8_t early_media;
 	uint8_t answered;
-	uint8_t dead;
 	uint32_t per_channel_timelimit_sec;
 	uint32_t per_channel_progress_timelimit_sec;
 } originate_status_t;
@@ -101,6 +100,9 @@
 	uint8_t return_ring_ready;
 	uint8_t monitor_early_media_ring;
 	uint8_t monitor_early_media_fail;
+	uint8_t gen_ringback;
+	uint8_t ignore_early_media;
+	uint8_t ignore_ring_ready;
 } originate_global_t;
 
 
@@ -257,11 +259,13 @@
 					oglobals->progress = 1;
 				}
 			
-				if (!oglobals->ring_ready) {
+				if (!oglobals->ring_ready && !oglobals->ignore_ring_ready) {
 					oglobals->ring_ready = 1;
 				}
-
-				oglobals->early_ok = 1;
+				
+				if (!oglobals->ignore_early_media && !oglobals->early_ok) {
+					oglobals->early_ok = 1;
+				}
 			}
 		}
 	}
@@ -417,14 +421,14 @@
 					}
 				}
 			}
-
+			
 			if (!oglobals->monitor_early_media_ring) {
 
 				if (!oglobals->progress) {
 					oglobals->progress = 1;
 				}
 			
-				if (!oglobals->ring_ready) {
+				if (!oglobals->ring_ready && !oglobals->ignore_ring_ready) {
 					oglobals->ring_ready = 1;
 				}
 			}
@@ -965,6 +969,8 @@
 					ok = 1;
 				} else if (!strcasecmp((char *) hi->name, "ignore_early_media")) {
 					ok = 1;
+				} else if (!strcasecmp((char *) hi->name, "ignore_ring_ready")) {
+					ok = 1;
 				} else if (!strcasecmp((char *) hi->name, "monitor_early_media_ring")) {
 					ok = 1;
 				} else if (!strcasecmp((char *) hi->name, "monitor_early_media_fail")) {
@@ -1079,6 +1085,11 @@
 
 	if ((var_val = switch_event_get_header(var_event, "ignore_early_media")) && switch_true(var_val)) {
 		oglobals.early_ok = 0;
+		oglobals.ignore_early_media = 1;
+	}
+
+	if ((var_val = switch_event_get_header(var_event, "ignore_ring_ready")) && switch_true(var_val)) {
+		oglobals.ignore_ring_ready = 1;
 	}
 
 	if ((var_val = switch_event_get_header(var_event, "monitor_early_media_ring"))) {
@@ -1553,7 +1564,8 @@
 						if (ringback_data) {
 							char *tmp_data = NULL;
 
-							
+							oglobals.gen_ringback = 1;
+
 							if (switch_is_file_path(ringback_data)) {
 								char *ext;
 


From mikej at freeswitch.org  Tue Jan 20 08:29:32 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 10:29:32 -0600
Subject: [Freeswitch-svn] [commit] r11310 - freeswitch/trunk
Message-ID: 

Author: mikej
Date: Tue Jan 20 10:29:32 2009
New Revision: 11310

Log:
fix esl solaris build (FSBUILD-104)

Modified:
   freeswitch/trunk/Makefile.am
   freeswitch/trunk/configure.in

Modified: freeswitch/trunk/Makefile.am
==============================================================================
--- freeswitch/trunk/Makefile.am	(original)
+++ freeswitch/trunk/Makefile.am	Tue Jan 20 10:29:32 2009
@@ -168,7 +168,7 @@
 freeswitch_SOURCES = src/switch.c
 nodist_freeswitch_SOURCES = src/include/switch_version.h
 fs_cli_CFLAGS = $(AM_CFLAGS) -Ilibs/esl/src/include 
-fs_cli_LDFLAGS = $(AM_LDFLAGS) -lpthread
+fs_cli_LDFLAGS = $(AM_LDFLAGS) -lpthread $(ESL_LDFLAGS)
 freeswitch_CFLAGS = $(AM_CFLAGS) $(CORE_CFLAGS)
 freeswitch_LDFLAGS = $(AM_LDFLAGS) -rpath $(libdir)
 freeswitch_LDADD = libfreeswitch.la libs/apr/libapr-1.la

Modified: freeswitch/trunk/configure.in
==============================================================================
--- freeswitch/trunk/configure.in	(original)
+++ freeswitch/trunk/configure.in	Tue Jan 20 10:29:32 2009
@@ -174,7 +174,7 @@
 
 AM_CONDITIONAL([WANT_DEBUG],[test "${enable_debug}" = "yes"])
 
-
+ESL_LDFLAGS=
 # tweak platform specific flags
 case "$host" in
     *darwin*)
@@ -183,6 +183,7 @@
     ;;
     *-solaris2*)
         APR_ADDTO(SWITCH_AM_CFLAGS, -DPATH_MAX=2048)
+        APR_ADDTO(ESL_LDFLAGS, -lnsl)
     ;;
     *bsd*)
         APR_ADDTO(SWITCH_AM_CFLAGS, -I/usr/local/include)
@@ -194,6 +195,7 @@
 AC_SUBST(SWITCH_AM_CFLAGS)
 AC_SUBST(SWITCH_AM_CXXFLAGS)
 AC_SUBST(SWITCH_AM_LDFLAGS)
+AC_SUBST(ESL_LDFLAGS)
 AC_SUBST(SOLINK)
 AC_SUBST(DYNAMIC_LIB_EXTEN)
 


From brian at freeswitch.org  Tue Jan 20 09:03:13 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 11:03:13 -0600
Subject: [Freeswitch-svn] [commit] r11311 - freeswitch/trunk/conf/dialplan
Message-ID: 

Author: brian
Date: Tue Jan 20 11:03:13 2009
New Revision: 11311

Log:
tweak the mad boss a bit, no pun inteded

Modified:
   freeswitch/trunk/conf/dialplan/default.xml

Modified: freeswitch/trunk/conf/dialplan/default.xml
==============================================================================
--- freeswitch/trunk/conf/dialplan/default.xml	(original)
+++ freeswitch/trunk/conf/dialplan/default.xml	Tue Jan 20 11:03:13 2009
@@ -336,7 +336,7 @@
 	
 	
 	
-	
+	
 	
 	
 	
@@ -354,7 +354,7 @@
 	
 	
 	
-	
+	
 	
 	
 	


From anthm at freeswitch.org  Tue Jan 20 09:22:56 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 11:22:56 -0600
Subject: [Freeswitch-svn] [commit] r11312 -
	freeswitch/trunk/src/mod/endpoints/mod_opal
Message-ID: 

Author: anthm
Date: Tue Jan 20 11:22:56 2009
New Revision: 11312

Log:
workaround to test a theory

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp
   freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h

Modified: freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp	Tue Jan 20 11:22:56 2009
@@ -1212,6 +1212,8 @@
 
 switch_status_t FSMediaStream::write_frame(const switch_frame_t *frame, switch_io_flag_t flags)
 {
+    RTP_DataFrame rtp;
+
     if (!switch_channel_ready(m_fsChannel)) {
         return SWITCH_STATUS_FALSE;
     }
@@ -1221,22 +1223,41 @@
         m_callOnStart = false;
     }
 
+    if ((frame->flags & SFF_CNG)) {
+        return SWITCH_STATUS_SUCCESS;
+    }
+
     if ((frame->flags & SFF_RAW_RTP) != 0) {
         RTP_DataFrame rtp((const BYTE *) frame->packet, frame->packetlen, false);
-        if (GetPatch()->PushFrame(rtp))
-            return SWITCH_STATUS_SUCCESS;
-    } else if (frame->flags == 0) {
-        RTP_DataFrame rtp;
-        rtp.SetPayloadType(mediaFormat.GetPayloadType());
-        rtp.SetPayloadSize(frame->datalen);
-        rtp.SetTimestamp(frame->timestamp);
-        rtp.SetSyncSource(frame->ssrc);
-        rtp.SetMarker(frame->m);
-        memcpy(rtp.GetPayloadPtr(), frame->data, frame->datalen);
-        if (GetPatch()->PushFrame(rtp))
+        if (GetPatch()->PushFrame(rtp)) {
             return SWITCH_STATUS_SUCCESS;
+        }
+    } 
+    
+    /* If we reach this code it means a call to an ivr or something else that does not generate timestamps
+       Its possible that frame->timestamp is set but not guarenteed and is best ignored for the time being.
+       We are probably relying on the rtp stack to generate the timestamp and ssrc for us at this point.
+       As a quick hack I am going to keep a sample counter and increment it by frame->samples but it would be 
+       better if we could engage whatever it is in opal that makes it generate the timestamp.
+     */
+
+    rtp.SetPayloadType(mediaFormat.GetPayloadType());
+    rtp.SetPayloadSize(frame->datalen);
+
+    m_timeStamp += frame->samples;
+    rtp.SetTimestamp(m_timeStamp);
+    
+    //rtp.SetTimestamp(frame->timestamp);
+    //rtp.SetSyncSource(frame->ssrc);
+    //rtp.SetMarker(frame->m);
+
+    memcpy(rtp.GetPayloadPtr(), frame->data, frame->datalen);
+
+    if (GetPatch()->PushFrame(rtp)) {
+        return SWITCH_STATUS_SUCCESS;
     }
 
+
     return SWITCH_STATUS_FALSE;
 }
 

Modified: freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h	Tue Jan 20 11:22:56 2009
@@ -216,6 +216,7 @@
     switch_frame_t m_readFrame;
     RTP_DataFrame m_readRTP;
     bool m_callOnStart;
+    uint32_t m_timeStamp;
 };
 
 


From andrew at freeswitch.org  Tue Jan 20 09:59:08 2009
From: andrew at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 11:59:08 -0600
Subject: [Freeswitch-svn] [commit] r11313 -
	freeswitch/trunk/src/mod/endpoints/mod_portaudio
Message-ID: 

Author: andrew
Date: Tue Jan 20 11:59:08 2009
New Revision: 11313

Log:
Show the default low input/output latencies for each device in pa dump


Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Tue Jan 20 11:59:08 2009
@@ -1166,6 +1166,9 @@
 
 		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Default rate: %8.2f\n", deviceInfo->defaultSampleRate);
 
+		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Default input latency: %.3f | ", deviceInfo->defaultLowInputLatency);
+		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Default output latency: %.3f\n", deviceInfo->defaultLowOutputLatency);
+
 		/* poll for standard sample rates */
 		inputParameters.device = i;
 		inputParameters.channelCount = deviceInfo->maxInputChannels;


From anthm at freeswitch.org  Tue Jan 20 10:35:07 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 12:35:07 -0600
Subject: [Freeswitch-svn] [commit] r11314 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Tue Jan 20 12:35:07 2009
New Revision: 11314

Log:
fix restart for mac

Modified:
   freeswitch/trunk/src/switch.c

Modified: freeswitch/trunk/src/switch.c
==============================================================================
--- freeswitch/trunk/src/switch.c	(original)
+++ freeswitch/trunk/src/switch.c	Tue Jan 20 12:35:07 2009
@@ -653,8 +653,18 @@
 	}
 
 	if (destroy_status == SWITCH_STATUS_RESTART) {
-        switch_sleep(1000000);
+		char buf[1024] = "";
+		int i = 0;
+		
+		switch_sleep(1000000);
 		ret = (int)execv(argv[0], argv);
+		fprintf(stderr, "Restart Failed [%s] resorting to plan b\n", strerror(errno));
+
+		for(i = 0; i < argc; i++) {
+			switch_snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "%s ", argv[i]);
+		}
+
+		ret = system(buf);
 	}
 
 	return ret;


From anthm at freeswitch.org  Tue Jan 20 10:36:02 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 12:36:02 -0600
Subject: [Freeswitch-svn] [commit] r11315 - in freeswitch/trunk/src: .
	mod/endpoints/mod_portaudio
Message-ID: 

Author: anthm
Date: Tue Jan 20 12:36:02 2009
New Revision: 11315

Log:
FSCORE-274

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
   freeswitch/trunk/src/switch_channel.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Tue Jan 20 12:36:02 2009
@@ -1455,7 +1455,7 @@
 			} else {
 				switch_channel_t *channel = switch_core_session_get_channel(tp->session);
 				switch_set_flag_locked(tp, TFLAG_ANSWER);
-				switch_channel_answer(channel);
+				switch_channel_mark_answered(channel);
 				add_pvt(tp, PA_MASTER);
 			}
 		} else {
@@ -1469,7 +1469,7 @@
 		if (!switch_test_flag(tp, TFLAG_ANSWER)) {
 			switch_channel_t *channel = switch_core_session_get_channel(tp->session);
 			switch_set_flag_locked(tp, TFLAG_ANSWER);
-			switch_channel_answer(channel);
+			switch_channel_mark_answered(channel);
 			add_pvt(tp, PA_MASTER);
 			x++;
 			break;

Modified: freeswitch/trunk/src/switch_channel.c
==============================================================================
--- freeswitch/trunk/src/switch_channel.c	(original)
+++ freeswitch/trunk/src/switch_channel.c	Tue Jan 20 12:36:02 2009
@@ -1633,7 +1633,7 @@
 SWITCH_DECLARE(switch_status_t) switch_channel_perform_pre_answer(switch_channel_t *channel, const char *file, const char *func, int line)
 {
 	switch_core_session_message_t msg;
-	switch_status_t status;
+	switch_status_t status = SWITCH_STATUS_SUCCESS;
 
 	switch_assert(channel != NULL);
 
@@ -1649,14 +1649,12 @@
 		return SWITCH_STATUS_SUCCESS;
 	}
 
-	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
-		return SWITCH_STATUS_SUCCESS;
+	if (!switch_channel_test_flag(channel, CF_OUTBOUND)) {
+		msg.message_id = SWITCH_MESSAGE_INDICATE_PROGRESS;
+		msg.from = channel->name;
+		status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
 	}
 
-	msg.message_id = SWITCH_MESSAGE_INDICATE_PROGRESS;
-	msg.from = channel->name;
-	status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
-	
 	if (status == SWITCH_STATUS_SUCCESS) {
 		switch_channel_perform_mark_pre_answered(channel, file, func, line);
 	} else {
@@ -1669,7 +1667,7 @@
 SWITCH_DECLARE(switch_status_t) switch_channel_perform_ring_ready(switch_channel_t *channel, const char *file, const char *func, int line)
 {
 	switch_core_session_message_t msg;
-	switch_status_t status;
+	switch_status_t status = SWITCH_STATUS_SUCCESS;
 
 	switch_assert(channel != NULL);
 
@@ -1685,14 +1683,12 @@
 		return SWITCH_STATUS_SUCCESS;
 	}
 
-	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
-		return SWITCH_STATUS_SUCCESS;
+	if (!switch_channel_test_flag(channel, CF_OUTBOUND)) {
+		msg.message_id = SWITCH_MESSAGE_INDICATE_RINGING;
+		msg.from = channel->name;
+		status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
 	}
-
-	msg.message_id = SWITCH_MESSAGE_INDICATE_RINGING;
-	msg.from = channel->name;
-	status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
-
+	
 	if (status == SWITCH_STATUS_SUCCESS) {
 		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_NOTICE, "Ring Ready %s!\n", channel->name);
 	} else {
@@ -1782,7 +1778,7 @@
 SWITCH_DECLARE(switch_status_t) switch_channel_perform_answer(switch_channel_t *channel, const char *file, const char *func, int line)
 {
 	switch_core_session_message_t msg;
-	switch_status_t status;
+	switch_status_t status = SWITCH_STATUS_SUCCESS;
 
 	switch_assert(channel != NULL);
 
@@ -1793,15 +1789,13 @@
 	if (switch_channel_test_flag(channel, CF_ANSWERED)) {
 		return SWITCH_STATUS_SUCCESS;
 	}
-
-	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
-		return SWITCH_STATUS_SUCCESS;
+	
+	if (!switch_channel_test_flag(channel, CF_OUTBOUND)) {
+		msg.message_id = SWITCH_MESSAGE_INDICATE_ANSWER;
+		msg.from = channel->name;
+		status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
 	}
 
-	msg.message_id = SWITCH_MESSAGE_INDICATE_ANSWER;
-	msg.from = channel->name;
-	status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
-
 	if (status == SWITCH_STATUS_SUCCESS) {
 		switch_channel_perform_mark_answered(channel, file, func, line);
 	} else {


From andrew at freeswitch.org  Tue Jan 20 11:50:54 2009
From: andrew at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 13:50:54 -0600
Subject: [Freeswitch-svn] [commit] r11316 -
	freeswitch/trunk/src/mod/endpoints/mod_portaudio
Message-ID: 

Author: andrew
Date: Tue Jan 20 13:50:54 2009
New Revision: 11316

Log:
Don't use the portaudio dual_streams stuff on Solaris, it makes it break


Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Tue Jan 20 13:50:54 2009
@@ -739,7 +739,12 @@
 
 	memset(&globals, 0, sizeof(globals));
 
+	/* dual streams makes portaudio on solaris choke */
+#if defined(sun) || defined(__sun)
+	globals.dual_streams = 0;
+#else
 	globals.dual_streams = 1;
+#endif
 
 	if ((status = load_config()) != SWITCH_STATUS_SUCCESS) {
 		return status;


From mikej at freeswitch.org  Tue Jan 20 12:12:06 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 14:12:06 -0600
Subject: [Freeswitch-svn] [commit] r11317 -
	freeswitch/trunk/libs/portaudio/build/msvc
Message-ID: 

Author: mikej
Date: Tue Jan 20 14:12:06 2009
New Revision: 11317

Log:
don't build ASIO when selecting direct sound

Modified:
   freeswitch/trunk/libs/portaudio/build/msvc/portaudio.2008.vcproj

Modified: freeswitch/trunk/libs/portaudio/build/msvc/portaudio.2008.vcproj
==============================================================================
--- freeswitch/trunk/libs/portaudio/build/msvc/portaudio.2008.vcproj	(original)
+++ freeswitch/trunk/libs/portaudio/build/msvc/portaudio.2008.vcproj	Tue Jan 20 14:12:06 2009
@@ -1555,6 +1555,7 @@
 						
 						
 							
 						
 							
 							
 								
 							
 								
 							
 								
 							
 								
 							
 								
 							
 								
 							
 								
 							
 								
 							
 								
 							
 								
 							
 								
 							
 								
 							
 								
 							
 								

Author: mikej
Date: Tue Jan 20 14:47:20 2009
New Revision: 11318

Log:
more direct sound build fixes

Modified:
   freeswitch/trunk/libs/portaudio/build/msvc/portaudio.2008.vcproj

Modified: freeswitch/trunk/libs/portaudio/build/msvc/portaudio.2008.vcproj
==============================================================================
--- freeswitch/trunk/libs/portaudio/build/msvc/portaudio.2008.vcproj	(original)
+++ freeswitch/trunk/libs/portaudio/build/msvc/portaudio.2008.vcproj	Tue Jan 20 14:47:20 2009
@@ -393,7 +393,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="..\..\src\common,..\..\include,.\,..\..\src\os\win"
-				PreprocessorDefinitions="WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO"
+				PreprocessorDefinitions="WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PAWIN_USE_WDMKS_DEVICE_INFO"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="3"
@@ -583,7 +583,7 @@
 				Optimization="2"
 				InlineFunctionExpansion="1"
 				AdditionalIncludeDirectories="..\..\src\common,..\..\include,.\,..\..\src\os\win"
-				PreprocessorDefinitions="WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE"
+				PreprocessorDefinitions="WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO"
 				StringPooling="true"
 				RuntimeLibrary="2"
 				EnableFunctionLevelLinking="true"


From anthm at freeswitch.org  Tue Jan 20 12:49:47 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 14:49:47 -0600
Subject: [Freeswitch-svn] [commit] r11319 - in freeswitch/trunk/src: .
	include mod/applications/mod_conference
	mod/applications/mod_dptools mod/endpoints/mod_dingaling
	mod/endpoints/mod_sofia
Message-ID: 

Author: anthm
Date: Tue Jan 20 14:49:47 2009
New Revision: 11319

Log:
add chat interface EXTRAGUY-00

Modified:
   freeswitch/trunk/src/include/switch_core.h
   freeswitch/trunk/src/include/switch_module_interfaces.h
   freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
   freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
   freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c
   freeswitch/trunk/src/switch_core.c
   freeswitch/trunk/src/switch_loadable_module.c

Modified: freeswitch/trunk/src/include/switch_core.h
==============================================================================
--- freeswitch/trunk/src/include/switch_core.h	(original)
+++ freeswitch/trunk/src/include/switch_core.h	Tue Jan 20 14:49:47 2009
@@ -1707,6 +1707,8 @@
 SWITCH_DECLARE(int) switch_system(const char *cmd, switch_bool_t wait);
 SWITCH_DECLARE(void) switch_cond_yield(switch_interval_time_t t);
 SWITCH_DECLARE(void) switch_cond_next(void);
+SWITCH_DECLARE(switch_status_t) switch_core_chat_send(const char *name, const char *proto, const char *from, const char *to, 
+													  const char *subject, const char *body, const char *type, const char *hint);
 ///\}
 
 /*!

Modified: freeswitch/trunk/src/include/switch_module_interfaces.h
==============================================================================
--- freeswitch/trunk/src/include/switch_module_interfaces.h	(original)
+++ freeswitch/trunk/src/include/switch_module_interfaces.h	Tue Jan 20 14:49:47 2009
@@ -442,7 +442,8 @@
 	/*! the name of the interface */
 	const char *interface_name;
 	/*! function to open the directory interface */
-	switch_status_t (*chat_send) (char *proto, char *from, char *to, char *subject, char *body, char *hint);
+	switch_status_t (*chat_send) (const char *proto, const char *from, const char *to, 
+								  const char *subject, const char *body, const char *type, const char *hint);
 	switch_thread_rwlock_t *rwlock;
 	int refs;
 	switch_mutex_t *reflock;

Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c	Tue Jan 20 14:49:47 2009
@@ -372,7 +372,9 @@
 static switch_status_t conference_member_say(conference_member_t *member, char *text, uint32_t leadin);
 static uint32_t conference_member_stop_file(conference_member_t *member, file_stop_t stop);
 static conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_memory_pool_t *pool);
-static switch_status_t chat_send(char *proto, char *from, char *to, char *subject, char *body, char *hint);
+static switch_status_t chat_send(const char *proto, const char *from, const char *to, const char *subject, 
+								 const char *body, const char *type, const char *hint);
+
 static void launch_conference_record_thread(conference_obj_t *conference, char *path);
 
 typedef switch_status_t (*conf_api_args_cmd_t) (conference_obj_t *, switch_stream_handle_t *, int, char **);
@@ -1907,7 +1909,7 @@
 						freeme = switch_mprintf("%s+%s@%s", CONF_CHAT_PROTO, member->conference->name, member->conference->domain);
 						to = freeme;
 					}
-					chat_send(proto, from, to, subject, body, hint);
+					chat_send(proto, from, to, subject, body, NULL, hint);
 					switch_safe_free(freeme);
 				}
 			}
@@ -4957,10 +4959,10 @@
 	switch_thread_create(&thread, thd_attr, conference_record_thread_run, rec, rec->pool);
 }
 
-static switch_status_t chat_send(char *proto, char *from, char *to, char *subject, char *body, char *hint)
+static switch_status_t chat_send(const char *proto, const char *from, const char *to, const char *subject,
+								 const char *body, const char *type, const char *hint)
 {
 	char name[512] = "", *p, *lbuf = NULL;
-	switch_chat_interface_t *ci;
 	conference_obj_t *conference = NULL;
 	switch_stream_handle_t stream = { 0 };
 
@@ -4972,12 +4974,6 @@
 		return SWITCH_STATUS_SUCCESS;
 	}
 
-	if (!(ci = switch_loadable_module_get_chat_interface(proto))) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Chat Interface [%s]!\n", proto);
-		return SWITCH_STATUS_FALSE;
-	}
-
-
 	if ((p = strchr(to, '@'))) {
 		switch_copy_string(name, to, ++p - to);
 	} else {
@@ -4986,7 +4982,7 @@
 
 
 	if (!(conference = (conference_obj_t *) switch_core_hash_find(globals.conference_hash, name))) {
-		ci->chat_send(CONF_CHAT_PROTO, to, hint && strchr(hint, '/') ? hint : from, "", "Conference not active.", NULL);
+		switch_core_chat_send(proto, CONF_CHAT_PROTO, to, hint && strchr(hint, '/') ? hint : from, "", "Conference not active.", NULL, NULL);
 		return SWITCH_STATUS_FALSE;
 	}
 
@@ -5014,7 +5010,7 @@
 
 	switch_safe_free(lbuf);
 	
-	ci->chat_send(CONF_CHAT_PROTO, to, hint && strchr(hint, '/') ? hint : from, "", stream.data, NULL);
+	switch_core_chat_send(proto, CONF_CHAT_PROTO, to, hint && strchr(hint, '/') ? hint : from, "", stream.data, NULL, NULL);
 	switch_safe_free(stream.data);
 
 	return SWITCH_STATUS_SUCCESS;

Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	Tue Jan 20 14:49:47 2009
@@ -1069,16 +1069,11 @@
 
 	if (!switch_strlen_zero(cmd) && (lbuf = strdup(cmd))
 		&& (argc = switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0])))) == 4) {
-		switch_chat_interface_t *ci;
-
-		if ((ci = switch_loadable_module_get_chat_interface(argv[0]))) {
-			if (ci->chat_send("dp", argv[1], argv[2], "", argv[3], "") == SWITCH_STATUS_SUCCESS) {
-				stream->write_function(stream, "Sent");
-			} else {
-				stream->write_function(stream, "Error! Message Not Sent");
-			}
+		
+		if (switch_core_chat_send(argv[0], "dp", argv[1], argv[2], "", argv[3], NULL, "") == SWITCH_STATUS_SUCCESS) {
+			stream->write_function(stream, "Sent");
 		} else {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Chat Interface [%s]!\n", argv[0]);
+			stream->write_function(stream, "Error! Message Not Sent");
 		}
 	} else {
 		stream->write_function(stream, "Invalid");
@@ -2438,7 +2433,8 @@
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Usage: %s\n", WAIT_FOR_SILENCE_SYNTAX);
 }
 
-static switch_status_t event_chat_send(char *proto, char *from, char *to, char *subject, char *body, char *hint)
+static switch_status_t event_chat_send(const char *proto, const char *from, const char *to, const char *subject,
+									   const char *body, const char *type, const char *hint)
 {
 	switch_event_t *event;
 
@@ -2466,14 +2462,14 @@
 	return SWITCH_STATUS_MEMERR;
 }
 
-static switch_status_t api_chat_send(char *proto, char *from, char *to, char *subject, char *body, char *hint)
+static switch_status_t api_chat_send(const char *proto, const char *from, const char *to, const char *subject,
+									 const char *body, const char *type, const char *hint)
 {
 	if (to) { 
 		const char *v;
 		switch_stream_handle_t stream = { 0 };
 		char *cmd, *arg;
-		switch_chat_interface_t *ci;
-
+		
 		if (!(v = switch_core_get_variable(to))) {
 			v = to;
 		}
@@ -2490,8 +2486,8 @@
 		SWITCH_STANDARD_STREAM(stream);
 		switch_api_execute(cmd, arg, NULL, &stream);
 
-		if (proto && (ci = switch_loadable_module_get_chat_interface(proto))) {
-			ci->chat_send("api", to, hint && strchr(hint, '/') ? hint : from, "text/plain", (char *) stream.data, NULL);
+		if (proto) {
+			switch_core_chat_send(proto, "api", to, hint && strchr(hint, '/') ? hint : from, "text/plain", (char *) stream.data, NULL, NULL);
 		}
 
 		switch_safe_free(stream.data);

Modified: freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c	Tue Jan 20 14:49:47 2009
@@ -506,7 +506,8 @@
 	switch_safe_free(sql);
 }
 
-static switch_status_t chat_send(char *proto, char *from, char *to, char *subject, char *body, char *hint)
+static switch_status_t chat_send(const char *proto, const char *from, const char *to, const char *subject,
+                                 const char *body, const char *type, const char *hint);
 {
 	char *user, *host, *f_user = NULL, *ffrom = NULL, *f_host = NULL, *f_resource = NULL;
 	mdl_profile_t *profile = NULL;
@@ -2459,10 +2460,9 @@
 
 		switch (dl_signal) {
 		case LDL_SIGNAL_MSG:{
-				switch_chat_interface_t *ci;
-				char *proto = MDL_CHAT_PROTO;
-				char *pproto = NULL, *ffrom = NULL;
-				char *hint;
+			char *proto = MDL_CHAT_PROTO;
+			char *pproto = NULL, *ffrom = NULL;
+			char *hint;
 #ifdef AUTO_REPLY
 				if (profile->auto_reply) {
 					ldl_handle_send_msg(handle,
@@ -2489,11 +2489,8 @@
 					from = ffrom;
 				}
 
-				if ((ci = switch_loadable_module_get_chat_interface(proto))) {
-					ci->chat_send(MDL_CHAT_PROTO, from, to, subject, switch_str_nil(msg), hint);
-				} else {
-					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Chat Interface [%s]!\n", proto);
-				}
+
+				switch_core_chat_send(proto, MDL_CHAT_PROTO, from, to, subject, switch_str_nil(msg), NULL, hint);
 
 				switch_safe_free(pproto);
 				switch_safe_free(ffrom);

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	Tue Jan 20 14:49:47 2009
@@ -624,7 +624,8 @@
 
 void launch_sofia_profile_thread(sofia_profile_t *profile);
 
-switch_status_t sofia_presence_chat_send(char *proto, char *from, char *to, char *subject, char *body, char *hint);
+switch_status_t sofia_presence_chat_send(const char *proto, const char *from, const char *to, const char *subject,
+						  const char *body, const char *type, const char *hint);
 void sofia_glue_tech_absorb_sdp(private_object_t *tech_pvt);
 switch_status_t sofia_glue_tech_media(private_object_t *tech_pvt, const char *r_sdp);
 char *sofia_reg_find_reg_url(sofia_profile_t *profile, const char *user, const char *host, char *val, switch_size_t len);

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c	Tue Jan 20 14:49:47 2009
@@ -49,7 +49,8 @@
 	char last_uuid[512];
 };
 
-switch_status_t sofia_presence_chat_send(char *proto, char *from, char *to, char *subject, char *body, char *hint)
+switch_status_t sofia_presence_chat_send(const char *proto, const char *from, const char *to, const char *subject,
+										 const char *body, const char *type, const char *hint)
 {
 	char buf[256];
 	char *prof = NULL, *user = NULL, *host = NULL;
@@ -2003,12 +2004,7 @@
 					}
 				}
 			} else {
-				switch_chat_interface_t *ci;
-				if ((ci = switch_loadable_module_get_chat_interface(proto))) {
-					ci->chat_send(SOFIA_CHAT_PROTO, from_addr, to_addr, "", msg, full_from);
-				} else {
-					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Chat Interface [%s]!\n", proto);
-				}
+				switch_core_chat_send(proto, SOFIA_CHAT_PROTO, from_addr, to_addr, "", msg, NULL, full_from);
 			}
 			switch_safe_free(to_addr);
 			switch_safe_free(from_addr);

Modified: freeswitch/trunk/src/switch_core.c
==============================================================================
--- freeswitch/trunk/src/switch_core.c	(original)
+++ freeswitch/trunk/src/switch_core.c	Tue Jan 20 14:49:47 2009
@@ -1503,6 +1503,24 @@
 	return switch_test_flag((&runtime), SCF_RESTART) ? SWITCH_STATUS_RESTART : SWITCH_STATUS_SUCCESS;
 }
 
+SWITCH_DECLARE(switch_status_t) switch_core_chat_send(const char *name, const char *proto, const char *from, const char *to, 
+													  const char *subject, const char *body, const char *type, const char *hint)
+{
+	switch_chat_interface_t *ci;
+	switch_status_t status;
+
+	if (!name || !(ci = switch_loadable_module_get_chat_interface(name)) || !ci->chat_send) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Chat Interface [%s]!\n", name);
+		return SWITCH_STATUS_FALSE;
+	}
+
+	status = ci->chat_send(proto, from, to, subject, body, type, hint);
+
+	UNPROTECT_INTERFACE(ci);
+
+	return status;
+}
+
 SWITCH_DECLARE(switch_status_t) switch_core_management_exec(char *relative_oid, switch_management_action_t action, char *data, switch_size_t datalen)
 {
 	const switch_management_interface_t *ptr;
@@ -1594,6 +1612,8 @@
 	return ret;
 }
 
+
+
 /* For Emacs:
  * Local Variables:
  * mode:c

Modified: freeswitch/trunk/src/switch_loadable_module.c
==============================================================================
--- freeswitch/trunk/src/switch_loadable_module.c	(original)
+++ freeswitch/trunk/src/switch_loadable_module.c	Tue Jan 20 14:49:47 2009
@@ -1353,13 +1353,9 @@
 HASH_FUNC(speech)
 HASH_FUNC(asr)
 HASH_FUNC(directory)
+HASH_FUNC(chat)
 
 
-SWITCH_DECLARE(switch_chat_interface_t *) switch_loadable_module_get_chat_interface(const char *name)
-{
-    return switch_core_hash_find_locked(loadable_modules.chat_hash, name, loadable_modules.mutex);
-}
-
 SWITCH_DECLARE(switch_say_interface_t *) switch_loadable_module_get_say_interface(const char *name)
 {
     return switch_core_hash_find_locked(loadable_modules.say_hash, name, loadable_modules.mutex);


From brian at freeswitch.org  Tue Jan 20 13:24:38 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 15:24:38 -0600
Subject: [Freeswitch-svn] [commit] r11320 - in freeswitch/trunk/src/mod:
	applications/mod_dptools endpoints/mod_sofia
Message-ID: 

Author: brian
Date: Tue Jan 20 15:24:37 2009
New Revision: 11320

Log:
fix MODENDP-173

Modified:
   freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c

Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	Tue Jan 20 15:24:37 2009
@@ -1064,13 +1064,14 @@
 
 SWITCH_STANDARD_API(chat_api_function)
 {
-	char *lbuf, *argv[4];
+	char *lbuf, *argv[5];
 	int argc = 0;
 
 	if (!switch_strlen_zero(cmd) && (lbuf = strdup(cmd))
-		&& (argc = switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0])))) == 4) {
-		
-		if (switch_core_chat_send(argv[0], "dp", argv[1], argv[2], "", argv[3], NULL, "") == SWITCH_STATUS_SUCCESS) {
+		&& (argc = switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0])))) >= 4) {
+
+		if (switch_core_chat_send(argv[0], "dp", argv[1], argv[2], "", argv[3],
+								  !switch_strlen_zero(argv[4]) ? argv[4] : NULL , "") == SWITCH_STATUS_SUCCESS) {
 			stream->write_function(stream, "Sent");
 		} else {
 			stream->write_function(stream, "Error! Message Not Sent");
@@ -2487,7 +2488,8 @@
 		switch_api_execute(cmd, arg, NULL, &stream);
 
 		if (proto) {
-			switch_core_chat_send(proto, "api", to, hint && strchr(hint, '/') ? hint : from, "text/plain", (char *) stream.data, NULL, NULL);
+			switch_core_chat_send(proto, "api", to, hint && strchr(hint, '/') ? hint : from, 
+								  !switch_strlen_zero(type) ? type : NULL, (char *) stream.data, NULL, NULL);
 		}
 
 		switch_safe_free(stream.data);
@@ -2540,7 +2542,7 @@
 	SWITCH_ADD_CHAT(chat_interface, "api", api_chat_send);
 	
 	SWITCH_ADD_API(api_interface, "strepoch", "Convert a date string into epoch time", strepoch_api_function, "");
-	SWITCH_ADD_API(api_interface, "chat", "chat", chat_api_function, "|||");
+	SWITCH_ADD_API(api_interface, "chat", "chat", chat_api_function, "||||[]");
 	SWITCH_ADD_API(api_interface, "strftime", "strftime", strftime_api_function, "");
 	SWITCH_ADD_API(api_interface, "presence", "presence", presence_api_function, "  ");
 	SWITCH_ADD_APP(app_interface, "privacy", "Set privacy on calls", "Set caller privacy on calls.", privacy_function, "off|on|name|full|number",

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c	Tue Jan 20 15:24:37 2009
@@ -62,15 +62,15 @@
 	switch_status_t status = SWITCH_STATUS_FALSE;
 	const char *ct = "text/html";
 
-	if (subject && strchr(subject, '/')) {
-		ct = subject;
-	}
-
 	if (!to) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing To: header.\n");
 		goto end;
 	}
 
+	if (!switch_strlen_zero(type)) {
+		ct = type;
+	}
+
 	dup = strdup(to);
 	switch_assert(dup);
 	prof = dup;
@@ -88,13 +88,19 @@
 		if (!prof) prof = host;
 	}
 
-	if (!host || !(profile = sofia_glue_find_profile(prof))) {
+	if (!prof || !(profile = sofia_glue_find_profile(prof))) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
 						  "Chat proto [%s]\nfrom [%s]\nto [%s]\n%s\nInvalid Profile %s\n", proto, from, to,
 						  body ? body : "[no body]", prof ? prof : "NULL");
 		goto end;
 	}
 
+	if (switch_strlen_zero(host)) {
+		host = profile->domain_name;
+		if (switch_strlen_zero(host)) {
+			host=prof;
+		}
+	}
 	if (!sofia_reg_find_reg_url(profile, user, host, buf, sizeof(buf))) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find user. [%s][%s]\n", user, host);
 		goto end;
@@ -103,22 +109,29 @@
 	if (!strcasecmp(proto, SOFIA_CHAT_PROTO)) {
 		from = hint;
 	} else {
-		char *fp, *p, *fu = NULL;
+		char *fp, *p = NULL;
+
 		fp = strdup(from);
+
 		if (!fp) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error!\n");
 			goto end;
 		}
 
 		if ((p = strchr(fp, '@'))) {
-			*p = '\0';
-			fu = strdup(fp);
-			*p = '+';
+			*p++ = '\0';
 		}
 
-		ffrom = switch_mprintf("\"%s\" ", fu, proto, fp, profile->domain_name);
+		if (switch_strlen_zero(p)) {
+			p=profile->domain_name;
+			if (switch_strlen_zero(p)) {
+				p=host;
+			}
+		}
+
+		ffrom = switch_mprintf("\"%s\" ", fp, proto, fp, p);
+
 		from = ffrom;
-		switch_safe_free(fu);
 		switch_safe_free(fp);
 	}
 


From brian at freeswitch.org  Tue Jan 20 13:28:25 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 15:28:25 -0600
Subject: [Freeswitch-svn] [commit] r11321 -
	freeswitch/trunk/src/mod/endpoints/mod_sofia
Message-ID: 

Author: brian
Date: Tue Jan 20 15:28:25 2009
New Revision: 11321

Log:
picky picky

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c	Tue Jan 20 15:28:25 2009
@@ -98,7 +98,7 @@
 	if (switch_strlen_zero(host)) {
 		host = profile->domain_name;
 		if (switch_strlen_zero(host)) {
-			host=prof;
+			host = prof;
 		}
 	}
 	if (!sofia_reg_find_reg_url(profile, user, host, buf, sizeof(buf))) {
@@ -125,7 +125,7 @@
 		if (switch_strlen_zero(p)) {
 			p=profile->domain_name;
 			if (switch_strlen_zero(p)) {
-				p=host;
+				p = host;
 			}
 		}
 


From brian at freeswitch.org  Tue Jan 20 13:28:55 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 15:28:55 -0600
Subject: [Freeswitch-svn] [commit] r11322 -
	freeswitch/trunk/src/mod/endpoints/mod_sofia
Message-ID: 

Author: brian
Date: Tue Jan 20 15:28:54 2009
New Revision: 11322

Log:
picky picky

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c	Tue Jan 20 15:28:54 2009
@@ -123,7 +123,7 @@
 		}
 
 		if (switch_strlen_zero(p)) {
-			p=profile->domain_name;
+			p = profile->domain_name;
 			if (switch_strlen_zero(p)) {
 				p = host;
 			}


From brian at freeswitch.org  Tue Jan 20 13:55:27 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 15:55:27 -0600
Subject: [Freeswitch-svn] [commit] r11323 - freeswitch/trunk
Message-ID: 

Author: brian
Date: Tue Jan 20 15:55:27 2009
New Revision: 11323

Log:
try to fix osx build when you --enable-core-odbc-support

Modified:
   freeswitch/trunk/Makefile.am
   freeswitch/trunk/configure.in

Modified: freeswitch/trunk/Makefile.am
==============================================================================
--- freeswitch/trunk/Makefile.am	(original)
+++ freeswitch/trunk/Makefile.am	Tue Jan 20 15:55:27 2009
@@ -153,7 +153,7 @@
 
 lib_LTLIBRARIES	          = libfreeswitch.la
 libfreeswitch_la_CFLAGS   = $(CORE_CFLAGS) $(AM_CFLAGS)
-libfreeswitch_la_LDFLAGS  = -version-info 1:0:0 $(AM_LDFLAGS)
+libfreeswitch_la_LDFLAGS  = -version-info 1:0:0 $(AM_LDFLAGS) $(PLATFORM_CORE_DEPLIBS)
 libfreeswitch_la_LIBADD  = $(CORE_LIBS)
 libfreeswitch_la_DEPENDENCIES = $(BUILT_SOURCES)
 nodist_libfreeswitch_la_SOURCES = src/include/switch_version.h src/include/switch_swigable_cpp.h

Modified: freeswitch/trunk/configure.in
==============================================================================
--- freeswitch/trunk/configure.in	(original)
+++ freeswitch/trunk/configure.in	Tue Jan 20 15:55:27 2009
@@ -175,11 +175,15 @@
 AM_CONDITIONAL([WANT_DEBUG],[test "${enable_debug}" = "yes"])
 
 ESL_LDFLAGS=
+PLATFORM_CORE_DEPLIBS=
 # tweak platform specific flags
 case "$host" in
     *darwin*)
         APR_ADDTO(SWITCH_AM_CFLAGS, -DMACOSX)
         APR_REMOVEFROM(SWITCH_AM_CFLAGS, -fPIC)
+	if test "x$enable_core_odbc_support" != "xno"; then
+	        APR_ADDTO(PLATFORM_CORE_DEPLIBS, --framework CoreFoundation)
+	fi
     ;;
     *-solaris2*)
         APR_ADDTO(SWITCH_AM_CFLAGS, -DPATH_MAX=2048)
@@ -196,6 +200,7 @@
 AC_SUBST(SWITCH_AM_CXXFLAGS)
 AC_SUBST(SWITCH_AM_LDFLAGS)
 AC_SUBST(ESL_LDFLAGS)
+AC_SUBST(PLATFORM_CORE_DEPLIBS)
 AC_SUBST(SOLINK)
 AC_SUBST(DYNAMIC_LIB_EXTEN)
 


From michaelgg at freeswitch.org  Tue Jan 20 14:35:15 2009
From: michaelgg at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 16:35:15 -0600
Subject: [Freeswitch-svn] [commit] r11324 -
	freeswitch/trunk/src/mod/languages/mod_managed
Message-ID: 

Author: michaelgg
Date: Tue Jan 20 16:35:15 2009
New Revision: 11324

Log:
This should fix mono crash on Linux

Modified:
   freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_managed.h
   freeswitch/trunk/src/mod/languages/mod_managed/mod_managed.cpp

Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_managed.h
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_managed.h	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_managed.h	Tue Jan 20 16:35:15 2009
@@ -47,6 +47,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #endif

Modified: freeswitch/trunk/src/mod/languages/mod_managed/mod_managed.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/mod_managed.cpp	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/mod_managed.cpp	Tue Jan 20 16:35:15 2009
@@ -49,7 +49,7 @@
 SWITCH_BEGIN_EXTERN_C 
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_managed_load);
-SWITCH_MODULE_DEFINITION(mod_managed, mod_managed_load, NULL, NULL);
+SWITCH_MODULE_DEFINITION_EX(mod_managed, mod_managed_load, NULL, NULL, SMODF_GLOBAL_SYMBOLS);
 
 SWITCH_STANDARD_API(managedrun_api_function);	/* ExecuteBackground */
 SWITCH_STANDARD_API(managed_api_function);	/* Execute */
@@ -186,6 +186,11 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
+#ifndef WIN32 	
+	// So linux can find the .so
+	mono_config_parse_memory("");
+#endif
+
 	switch_snprintf(filename, 256, "%s%s%s", SWITCH_GLOBAL_dirs.mod_dir, SWITCH_PATH_SEPARATOR, MOD_MANAGED_DLL);
 	globals.domain = mono_jit_init(filename);
 
@@ -336,13 +341,12 @@
 	/* Run loader */ 
 	MonoObject * exception = NULL;
 	MonoObject * objResult = mono_runtime_invoke(globals.loadMethod, NULL, NULL, &exception);
-	success = *(int *) mono_object_unbox(objResult);
-
 	if (exception) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Load threw an exception.\n");
 		mono_print_unhandled_exception(exception);
 		return SWITCH_STATUS_FALSE;
 	}
+	success = *(int *) mono_object_unbox(objResult);
 #endif
 	if (success) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Load completed successfully.\n");


From brian at freeswitch.org  Tue Jan 20 15:43:34 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 17:43:34 -0600
Subject: [Freeswitch-svn] [commit] r11325 -
	freeswitch/trunk/src/mod/endpoints/mod_dingaling
Message-ID: 

Author: brian
Date: Tue Jan 20 17:43:34 2009
New Revision: 11325

Log:
doh

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c	Tue Jan 20 17:43:34 2009
@@ -507,7 +507,7 @@
 }
 
 static switch_status_t chat_send(const char *proto, const char *from, const char *to, const char *subject,
-                                 const char *body, const char *type, const char *hint);
+                                 const char *body, const char *type, const char *hint)
 {
 	char *user, *host, *f_user = NULL, *ffrom = NULL, *f_host = NULL, *f_resource = NULL;
 	mdl_profile_t *profile = NULL;


From brian at freeswitch.org  Tue Jan 20 15:53:05 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 17:53:05 -0600
Subject: [Freeswitch-svn] [commit] r11326 -
	freeswitch/trunk/src/mod/endpoints/mod_dingaling
Message-ID: 

Author: brian
Date: Tue Jan 20 17:53:05 2009
New Revision: 11326

Log:
cast to char

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c	Tue Jan 20 17:53:05 2009
@@ -540,7 +540,7 @@
 					*p = '\0';
 				}
 			}
-			ldl_handle_send_msg(profile->handle, from, to, NULL, switch_str_nil(body));
+			ldl_handle_send_msg(profile->handle, (char*)from, (char*)to, NULL, switch_str_nil(body));
 		} else {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Profile %s\n", f_host ? f_host : "NULL");
 			return SWITCH_STATUS_FALSE;


From mikej at freeswitch.org  Tue Jan 20 18:09:41 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 20:09:41 -0600
Subject: [Freeswitch-svn] [commit] r11327 - in
	freeswitch/trunk/src/mod/languages/mod_managed: . managed
Message-ID: 

Author: mikej
Date: Tue Jan 20 20:09:41 2009
New Revision: 11327

Log:
swigall

Modified:
   freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
   freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs

Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx	Tue Jan 20 20:09:41 2009
@@ -7817,6 +7817,32 @@
 }
 
 
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_chat_send(char * jarg1, char * jarg2, char * jarg3, char * jarg4, char * jarg5, char * jarg6, char * jarg7, char * jarg8) {
+  int jresult ;
+  char *arg1 = (char *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  char *arg4 = (char *) 0 ;
+  char *arg5 = (char *) 0 ;
+  char *arg6 = (char *) 0 ;
+  char *arg7 = (char *) 0 ;
+  char *arg8 = (char *) 0 ;
+  switch_status_t result;
+  
+  arg1 = (char *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  arg4 = (char *)jarg4; 
+  arg5 = (char *)jarg5; 
+  arg6 = (char *)jarg6; 
+  arg7 = (char *)jarg7; 
+  arg8 = (char *)jarg8; 
+  result = (switch_status_t)switch_core_chat_send((char const *)arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4,(char const *)arg5,(char const *)arg6,(char const *)arg7,(char const *)arg8);
+  jresult = result; 
+  return jresult;
+}
+
+
 SWIGEXPORT int SWIGSTDCALL CSharp_SWITCH_CMD_CHUNK_LEN_get() {
   int jresult ;
   int result;
@@ -14764,10 +14790,10 @@
 
 SWIGEXPORT void SWIGSTDCALL CSharp_switch_chat_interface_chat_send_set(void * jarg1, void * jarg2) {
   switch_chat_interface *arg1 = (switch_chat_interface *) 0 ;
-  switch_status_t (*arg2)(char *,char *,char *,char *,char *,char *) = (switch_status_t (*)(char *,char *,char *,char *,char *,char *)) 0 ;
+  switch_status_t (*arg2)(char const *,char const *,char const *,char const *,char const *,char const *,char const *) = (switch_status_t (*)(char const *,char const *,char const *,char const *,char const *,char const *,char const *)) 0 ;
   
   arg1 = (switch_chat_interface *)jarg1; 
-  arg2 = (switch_status_t (*)(char *,char *,char *,char *,char *,char *))jarg2; 
+  arg2 = (switch_status_t (*)(char const *,char const *,char const *,char const *,char const *,char const *,char const *))jarg2; 
   if (arg1) (arg1)->chat_send = arg2;
   
 }
@@ -14776,10 +14802,10 @@
 SWIGEXPORT void * SWIGSTDCALL CSharp_switch_chat_interface_chat_send_get(void * jarg1) {
   void * jresult ;
   switch_chat_interface *arg1 = (switch_chat_interface *) 0 ;
-  switch_status_t (*result)(char *,char *,char *,char *,char *,char *) = 0 ;
+  switch_status_t (*result)(char const *,char const *,char const *,char const *,char const *,char const *,char const *) = 0 ;
   
   arg1 = (switch_chat_interface *)jarg1; 
-  result = (switch_status_t (*)(char *,char *,char *,char *,char *,char *)) ((arg1)->chat_send);
+  result = (switch_status_t (*)(char const *,char const *,char const *,char const *,char const *,char const *,char const *)) ((arg1)->chat_send);
   jresult = (void *)result; 
   return jresult;
 }

Modified: freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs	(original)
+++ freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs	Tue Jan 20 20:09:41 2009
@@ -1943,6 +1943,11 @@
     freeswitchPINVOKE.switch_cond_next();
   }
 
+  public static switch_status_t switch_core_chat_send(string name, string proto, string from, string to, string subject, string body, string type, string hint) {
+    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_chat_send(name, proto, from, to, subject, body, type, hint);
+    return ret;
+  }
+
   public static void switch_console_loop() {
     freeswitchPINVOKE.switch_console_loop();
   }
@@ -6183,6 +6188,9 @@
   [DllImport("mod_managed", EntryPoint="CSharp_switch_cond_next")]
   public static extern void switch_cond_next();
 
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_core_chat_send")]
+  public static extern int switch_core_chat_send(string jarg1, string jarg2, string jarg3, string jarg4, string jarg5, string jarg6, string jarg7, string jarg8);
+
   [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_CMD_CHUNK_LEN_get")]
   public static extern int SWITCH_CMD_CHUNK_LEN_get();
 
@@ -11286,18 +11294,18 @@
 using System;
 using System.Runtime.InteropServices;
 
-public class SWIGTYPE_p_f_p_char_p_char_p_char_p_char_p_char_p_char__switch_status_t {
+public class SWIGTYPE_p_f_p_p_switch_core_session_p_p_apr_pool_t_p_void__switch_call_cause_t {
   private HandleRef swigCPtr;
 
-  internal SWIGTYPE_p_f_p_char_p_char_p_char_p_char_p_char_p_char__switch_status_t(IntPtr cPtr, bool futureUse) {
+  internal SWIGTYPE_p_f_p_p_switch_core_session_p_p_apr_pool_t_p_void__switch_call_cause_t(IntPtr cPtr, bool futureUse) {
     swigCPtr = new HandleRef(this, cPtr);
   }
 
-  protected SWIGTYPE_p_f_p_char_p_char_p_char_p_char_p_char_p_char__switch_status_t() {
+  protected SWIGTYPE_p_f_p_p_switch_core_session_p_p_apr_pool_t_p_void__switch_call_cause_t() {
     swigCPtr = new HandleRef(null, IntPtr.Zero);
   }
 
-  internal static HandleRef getCPtr(SWIGTYPE_p_f_p_char_p_char_p_char_p_char_p_char_p_char__switch_status_t obj) {
+  internal static HandleRef getCPtr(SWIGTYPE_p_f_p_p_switch_core_session_p_p_apr_pool_t_p_void__switch_call_cause_t obj) {
     return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
   }
 }
@@ -11316,18 +11324,18 @@
 using System;
 using System.Runtime.InteropServices;
 
-public class SWIGTYPE_p_f_p_p_switch_core_session_p_p_apr_pool_t_p_void__switch_call_cause_t {
+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_core_session_p_p_apr_pool_t_p_void__switch_call_cause_t(IntPtr cPtr, bool futureUse) {
+  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_core_session_p_p_apr_pool_t_p_void__switch_call_cause_t() {
+  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_core_session_p_p_apr_pool_t_p_void__switch_call_cause_t obj) {
+  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;
   }
 }
@@ -11346,18 +11354,18 @@
 using System;
 using System.Runtime.InteropServices;
 
-public class SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t {
+public class SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__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) {
+  internal SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_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_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t() {
+  protected SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_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_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t obj) {
+  internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__switch_status_t obj) {
     return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
   }
 }
@@ -17410,13 +17418,13 @@
     } 
   }
 
-  public SWIGTYPE_p_f_p_char_p_char_p_char_p_char_p_char_p_char__switch_status_t chat_send {
+  public SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__switch_status_t chat_send {
     set {
-      freeswitchPINVOKE.switch_chat_interface_chat_send_set(swigCPtr, SWIGTYPE_p_f_p_char_p_char_p_char_p_char_p_char_p_char__switch_status_t.getCPtr(value));
+      freeswitchPINVOKE.switch_chat_interface_chat_send_set(swigCPtr, SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__switch_status_t.getCPtr(value));
     } 
     get {
       IntPtr cPtr = freeswitchPINVOKE.switch_chat_interface_chat_send_get(swigCPtr);
-      SWIGTYPE_p_f_p_char_p_char_p_char_p_char_p_char_p_char__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_char_p_char_p_char_p_char_p_char_p_char__switch_status_t(cPtr, false);
+      SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__switch_status_t(cPtr, false);
       return ret;
     } 
   }


From mikej at freeswitch.org  Tue Jan 20 18:18:03 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Tue, 20 Jan 2009 20:18:03 -0600
Subject: [Freeswitch-svn] [commit] r11328 - freeswitch/trunk/src
Message-ID: 

Author: mikej
Date: Tue Jan 20 20:18:03 2009
New Revision: 11328

Log:
fix build

Modified:
   freeswitch/trunk/src/switch_core_media_bug.c
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/switch_core_media_bug.c
==============================================================================
--- freeswitch/trunk/src/switch_core_media_bug.c	(original)
+++ freeswitch/trunk/src/switch_core_media_bug.c	Tue Jan 20 20:18:03 2009
@@ -260,7 +260,8 @@
 	if (bug->callback) {
 		switch_bool_t result = bug->callback(bug, bug->user_data, SWITCH_ABC_TYPE_INIT);
 		if (result == SWITCH_FALSE) {
-			switch_core_media_bug_remove(session, new_bug);
+			switch_core_media_bug_remove(session, &bug);
+			*new_bug = NULL;
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error attaching BUG to %s\n", switch_channel_get_name(session->channel));
 			return SWITCH_STATUS_GENERR;
 		}

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Tue Jan 20 20:18:03 2009
@@ -388,6 +388,11 @@
 							int hits = 2;
 							char *p = ring_array[fx], *q;
 						
+							if (!p) {
+								switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error\n");
+								continue;
+							}
+
 							if (!(hits = atoi(p))) {
 								hits = 2;
 							}


From silik0n at freeswitch.org  Tue Jan 20 23:49:25 2009
From: silik0n at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 21 Jan 2009 01:49:25 -0600
Subject: [Freeswitch-svn] [commit] r11329 -
	freeswitch/trunk/src/mod/applications/mod_easyroute
Message-ID: 

Author: silik0n
Date: Wed Jan 21 01:49:25 2009
New Revision: 11329

Log:
fix a few bugs

Modified:
   freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c

Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c	Wed Jan 21 01:49:25 2009
@@ -154,21 +154,23 @@
 			status = SWITCH_STATUS_FALSE;
 			goto reallydone;
 		} else {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Opened ODBC Database!\n");
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Opened ODBC Database!\n");
 		}
 		if (switch_odbc_handle_connect(globals.master_odbc) != SWITCH_ODBC_SUCCESS) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot Open ODBC Database!\n");
 			status = SWITCH_STATUS_FALSE;
 			goto reallydone;
 		} else {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Opened ODBC Database!\n");
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Opened ODBC Database!\n");
 		}
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Connected ODBC DSN: %s\n", globals.db_dsn);
-		if (switch_odbc_handle_exec(globals.master_odbc, "select count(*) from numbers", NULL) != SWITCH_STATUS_SUCCESS) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot find  SQL Database! (Where\'s the numbers table\?\?)\n");
-		}
-		if (switch_odbc_handle_exec(globals.master_odbc, "select count(*) from gateways", NULL) != SWITCH_STATUS_SUCCESS) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot find  SQL Database! (Where\'s the gateways table\?\?)\n");
+		if (!globals.custom_query){
+			if (switch_odbc_handle_exec(globals.master_odbc, "select count(*) from numbers", NULL) != SWITCH_STATUS_SUCCESS) {
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot find  SQL Database! (Where\'s the numbers table\?\?)\n");
+			}
+			if (switch_odbc_handle_exec(globals.master_odbc, "select count(*) from gateways", NULL) != SWITCH_STATUS_SUCCESS) {
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot find  SQL Database! (Where\'s the gateways table\?\?)\n");
+			}
 		}
 	} else {
 #endif
@@ -191,30 +193,29 @@
 	return status;
 }
 
-static char SQL_LOOKUP[] = "SELECT gateways.gateway_ip, gateways.group, gateways.limit, gateways.techprofile, numbers.acctcode, numbers.translated from gateways, numbers where numbers.number = '%s' and numbers.gateway_id = gateways.gateway_id limit 1;";
+static char SQL_LOOKUP[] = "SELECT gateways.gateway_ip, gateways.group, gateways.limit, gateways.techprofile, numbers.acctcode, numbers.translated from gateways, numbers where numbers.number = '%q' and numbers.gateway_id = gateways.gateway_id limit 1;";
 
 static switch_status_t route_lookup(char *dn, easyroute_results_t *results, int noat, char *seperator)
 {	
+#ifdef SWITCH_HAVE_ODBC
 	switch_status_t sstatus = SWITCH_STATUS_SUCCESS;
-	char sql[1024] = "";
+	char *sql = NULL;
 	route_callback_t pdata;
 
 	memset(&pdata, 0, sizeof(pdata));
 	if (!globals.custom_query){
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "Doing static Query\n[%s]\n", SQL_LOOKUP);
-		snprintf(sql, 1024, SQL_LOOKUP, dn);
+		sql = switch_mprintf(SQL_LOOKUP, dn);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "Doing static Query\n[%s]\n", sql);
 	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "Doing custom Query\n[%s]\n", globals.custom_query);
-		snprintf(sql, 1024, globals.custom_query, dn);
+		sql = switch_mprintf(globals.custom_query, dn);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "Doing custom Query\n[%s]\n", sql);
 	}
 
 	if (globals.mutex){
 		switch_mutex_lock(globals.mutex);
 	}
 	/* Do the Query */
-#ifdef SWITCH_HAVE_ODBC
 	if (switch_odbc_handle_callback_exec(globals.master_odbc, sql, route_callback, &pdata) == SWITCH_ODBC_SUCCESS){
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "SQL Query\n[%s]\n", sql);
 		char tmp_profile[129];
 		char tmp_gateway[129];
 
@@ -341,7 +342,7 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
-#ifdef SWITCH_HAVE_ODBC
+#ifndef SWITCH_HAVE_ODBC
 	stream->write_function(stream, "mod_easyroute requires you enable core odbc support\n");
 	return SWITCH_STATUS_SUCCESS;
 #endif
@@ -359,6 +360,7 @@
 		} 
 		if (argc == 2) {
 			if (!strcasecmp(argv[1], "noat")) {
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Entering noat.\n");
 				noat = 1;
                         } else if (!strcasecmp(argv[1], "seperator")) {
                                 if (argc == 3){


From anthm at freeswitch.org  Wed Jan 21 10:41:53 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 21 Jan 2009 12:41:53 -0600
Subject: [Freeswitch-svn] [commit] r11330 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Wed Jan 21 12:41:53 2009
New Revision: 11330

Log:
MODAPP-201

Modified:
   freeswitch/trunk/src/switch_core_media_bug.c

Modified: freeswitch/trunk/src/switch_core_media_bug.c
==============================================================================
--- freeswitch/trunk/src/switch_core_media_bug.c	(original)
+++ freeswitch/trunk/src/switch_core_media_bug.c	Wed Jan 21 12:41:53 2009
@@ -37,8 +37,13 @@
 
 static void switch_core_media_bug_destroy(switch_media_bug_t *bug)
 {
-	switch_buffer_destroy(&bug->raw_read_buffer);
-	switch_buffer_destroy(&bug->raw_write_buffer);
+	if (bug->raw_read_buffer) {
+		switch_buffer_destroy(&bug->raw_read_buffer);
+	}
+
+	if (bug->raw_write_buffer) {
+		switch_buffer_destroy(&bug->raw_write_buffer);
+	}
 }
 
 SWITCH_DECLARE(uint32_t) switch_core_media_bug_test_flag(switch_media_bug_t *bug, uint32_t flag)
@@ -197,8 +202,10 @@
 	switch_media_bug_t *bug;	//, *bp;
 	switch_size_t bytes;
 
-	if (flags & SMBF_WRITE_REPLACE) {
+	*new_bug = NULL;
+
 #if 0
+	if (flags & SMBF_WRITE_REPLACE) {
 		switch_thread_rwlock_wrlock(session->bug_rwlock);
 		for (bp = session->bugs; bp; bp = bp->next) {
 			if (switch_test_flag(bp, SMBF_WRITE_REPLACE)) {
@@ -208,11 +215,9 @@
 			}
 		}
 		switch_thread_rwlock_unlock(session->bug_rwlock);
-#endif
 	}
 
 	if (flags & SMBF_READ_REPLACE) {
-#if 0
 		switch_thread_rwlock_wrlock(session->bug_rwlock);
 		for (bp = session->bugs; bp; bp = bp->next) {
 			if (switch_test_flag(bp, SMBF_READ_REPLACE)) {
@@ -222,8 +227,8 @@
 			}
 		}
 		switch_thread_rwlock_unlock(session->bug_rwlock);
-#endif
 	}
+#endif
 
 	if (!(bug = switch_core_session_alloc(session, sizeof(*bug)))) {
 		return SWITCH_STATUS_MEMERR;
@@ -260,8 +265,7 @@
 	if (bug->callback) {
 		switch_bool_t result = bug->callback(bug, bug->user_data, SWITCH_ABC_TYPE_INIT);
 		if (result == SWITCH_FALSE) {
-			switch_core_media_bug_remove(session, &bug);
-			*new_bug = NULL;
+			switch_core_media_bug_destroy(bug);
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error attaching BUG to %s\n", switch_channel_get_name(session->channel));
 			return SWITCH_STATUS_GENERR;
 		}
@@ -377,7 +381,9 @@
 			last = bp;
 		}
 		switch_thread_rwlock_unlock(session->bug_rwlock);
-		status = switch_core_media_bug_close(&bp);
+		if (bp) {
+			status = switch_core_media_bug_close(&bp);
+		}
 	}
 	
 	if (!session->bugs && session->bug_codec.implementation) {


From anthm at freeswitch.org  Wed Jan 21 10:44:07 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 21 Jan 2009 12:44:07 -0600
Subject: [Freeswitch-svn] [commit] r11331 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Wed Jan 21 12:44:07 2009
New Revision: 11331

Log:
FSCORE-276

Modified:
   freeswitch/trunk/src/switch_odbc.c

Modified: freeswitch/trunk/src/switch_odbc.c
==============================================================================
--- freeswitch/trunk/src/switch_odbc.c	(original)
+++ freeswitch/trunk/src/switch_odbc.c	Wed Jan 21 12:44:07 2009
@@ -32,6 +32,10 @@
 #include 
 #include 
 
+#if (ODBCVER < 0x0300)
+#define SQL_NO_DATA SQL_SUCCESS
+#endif 
+
 struct switch_odbc_handle {
 	char *dsn;
 	char *username;
@@ -222,6 +226,10 @@
 
 	result = SQLExecute(stmt);
 
+	if (result != SQL_SUCCESS && result != SQL_SUCCESS_WITH_INFO) {
+		goto error;
+	}
+
 	SQLRowCount (stmt, &m);
 	rc = SQLNumResultCols (stmt, &nresultcols);
 	if (rc != SQL_SUCCESS){
@@ -351,7 +359,7 @@
 
 	result = SQLExecute(stmt);
 
-	if (result != SQL_SUCCESS && result != SQL_SUCCESS_WITH_INFO) {
+	if (result != SQL_SUCCESS && result != SQL_SUCCESS_WITH_INFO && result != SQL_NO_DATA) {
 		goto error;
 	}
 
@@ -366,8 +374,12 @@
 		int y = 0;
 		int done = 0;
 
-		if (!(result = SQLFetch(stmt)) == SQL_SUCCESS) {
-			err++;
+		result = SQLFetch(stmt);
+
+		if (result != SQL_SUCCESS) {
+			if (result != SQL_NO_DATA){
+				err++;
+			}
 			break;
 		}
 


From brian at freeswitch.org  Wed Jan 21 10:48:54 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Wed, 21 Jan 2009 12:48:54 -0600
Subject: [Freeswitch-svn] [commit] r11332 - freeswitch/trunk/conf
Message-ID: 

Author: brian
Date: Wed Jan 21 12:48:54 2009
New Revision: 11332

Log:
FSSCRIPTS-13

Modified:
   freeswitch/trunk/conf/vars.xml

Modified: freeswitch/trunk/conf/vars.xml
==============================================================================
--- freeswitch/trunk/conf/vars.xml	(original)
+++ freeswitch/trunk/conf/vars.xml	Wed Jan 21 12:48:54 2009
@@ -129,6 +129,7 @@
   
   
   
+  
   
   
   
     
+
+    
+    
   
 


From mikej at freeswitch.org  Thu Jan 22 09:45:23 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 11:45:23 -0600
Subject: [Freeswitch-svn] [commit] r11359 -
	freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket
Message-ID: 

Author: mikej
Date: Thu Jan 22 11:45:22 2009
New Revision: 11359

Log:
mod_event_socket: add ability to use a comma sep list of events on event-sink create-listener (r:11056)

Modified:
   freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket/mod_event_socket.c

Modified: freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	(original)
+++ freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	Thu Jan 22 11:45:22 2009
@@ -719,6 +719,7 @@
 		listener->last_flush = switch_timestamp(NULL);
 		
 		if (events) {
+			char delim = ',';
 
 			if (switch_stristr("xml", format)) {
 				listener->format = EVENT_FORMAT_XML;
@@ -727,11 +728,15 @@
 			}
 			
 			edup = strdup(events);
-			
+
+			if (strchr(edup, ' ')) {
+				delim = ' ';
+			}
+
 			for (cur = edup; cur; count++) {
 				switch_event_types_t type;
 				
-				if ((next = strchr(cur, ' '))) {
+				if ((next = strchr(cur, delim))) {
 					*next++ = '\0';
 				}
 


From mikej at freeswitch.org  Thu Jan 22 09:47:57 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 11:47:57 -0600
Subject: [Freeswitch-svn] [commit] r11360 - freeswitch/branches/1.0/libs/esl
Message-ID: 

Author: mikej
Date: Thu Jan 22 11:47:57 2009
New Revision: 11360

Log:
fs_cli: add "debug" command to change the esl debug level at runtime (r:11057)

Modified:
   freeswitch/branches/1.0/libs/esl/fs_cli.c

Modified: freeswitch/branches/1.0/libs/esl/fs_cli.c
==============================================================================
--- freeswitch/branches/1.0/libs/esl/fs_cli.c	(original)
+++ freeswitch/branches/1.0/libs/esl/fs_cli.c	Thu Jan 22 11:47:57 2009
@@ -285,6 +285,17 @@
 
 			goto end;
 		}
+		
+		if (!strncasecmp(cmd, "debug", 5)){
+			int tmp_debug = atoi(cmd+6);
+			if (tmp_debug > -1 && tmp_debug < 8){
+				esl_global_set_default_logger(tmp_debug);
+				printf("fs_cli debug level set to %d\n", tmp_debug);
+			} else {
+				printf("fs_cli debug level must be 0 - 7\n");
+			}
+			goto end;
+		}
 	
 		printf("Unknown command [%s]\n", cmd);
 	} else {


From mikej at freeswitch.org  Thu Jan 22 10:12:26 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 12:12:26 -0600
Subject: [Freeswitch-svn] [commit] r11361 - freeswitch/trunk/docs
Message-ID: 

Author: mikej
Date: Thu Jan 22 12:12:26 2009
New Revision: 11361

Log:
update version number

Modified:
   freeswitch/trunk/docs/Doxygen.conf

Modified: freeswitch/trunk/docs/Doxygen.conf
==============================================================================
--- freeswitch/trunk/docs/Doxygen.conf	(original)
+++ freeswitch/trunk/docs/Doxygen.conf	Thu Jan 22 12:12:26 2009
@@ -4,7 +4,7 @@
 # Project related configuration options
 #---------------------------------------------------------------------------
 PROJECT_NAME           = FreeSWITCH
-PROJECT_NUMBER         = 1.0.2
+PROJECT_NUMBER         = 1.0.3
 OUTPUT_DIRECTORY       = .
 CREATE_SUBDIRS         = NO
 OUTPUT_LANGUAGE        = English


From mikej at freeswitch.org  Thu Jan 22 10:15:21 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 12:15:21 -0600
Subject: [Freeswitch-svn] [commit] r11362 - freeswitch/branches/1.0/docs
Message-ID: 

Author: mikej
Date: Thu Jan 22 12:15:21 2009
New Revision: 11362

Log:
bump version number (r:11058,11361)

Modified:
   freeswitch/branches/1.0/docs/Doxygen.conf

Modified: freeswitch/branches/1.0/docs/Doxygen.conf
==============================================================================
--- freeswitch/branches/1.0/docs/Doxygen.conf	(original)
+++ freeswitch/branches/1.0/docs/Doxygen.conf	Thu Jan 22 12:15:21 2009
@@ -4,7 +4,7 @@
 # Project related configuration options
 #---------------------------------------------------------------------------
 PROJECT_NAME           = FreeSWITCH
-PROJECT_NUMBER         = 1.0.1
+PROJECT_NUMBER         = 1.0.3
 OUTPUT_DIRECTORY       = .
 CREATE_SUBDIRS         = NO
 OUTPUT_LANGUAGE        = English


From mikej at freeswitch.org  Thu Jan 22 10:17:41 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 12:17:41 -0600
Subject: [Freeswitch-svn] [commit] r11363 -
	freeswitch/branches/1.0/src/mod/endpoints/mod_sofia
Message-ID: 

Author: mikej
Date: Thu Jan 22 12:17:41 2009
New Revision: 11363

Log:
mod_sofia: improve outbound registration error message (r:11059)

Modified:
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_reg.c

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_reg.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_reg.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_reg.c	Thu Jan 22 12:17:41 2009
@@ -1252,8 +1252,8 @@
 			break;
 		default:
 			sofia_private->gateway->state = REG_STATE_FAILED;
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s Registration Failed with status %d. failure #%d\n", 
-							  sofia_private->gateway->name, status, ++sofia_private->gateway->failures);
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s Registration Failed with status %s [%d]. failure #%d\n", 
+							  sofia_private->gateway->name, switch_str_nil(phrase), status, ++sofia_private->gateway->failures);
 			break;
 		}
 		if (ostate != sofia_private->gateway->state) {


From anthm at freeswitch.org  Thu Jan 22 10:28:24 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 12:28:24 -0600
Subject: [Freeswitch-svn] [commit] r11364 - in freeswitch/trunk:
	libs/libg722_1/src src/mod/endpoints/mod_portaudio
Message-ID: 

Author: anthm
Date: Thu Jan 22 12:28:24 2009
New Revision: 11364

Log:
more pa bs

Modified:
   freeswitch/trunk/libs/libg722_1/src/dct4.h
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c

Modified: freeswitch/trunk/libs/libg722_1/src/dct4.h
==============================================================================
--- freeswitch/trunk/libs/libg722_1/src/dct4.h	(original)
+++ freeswitch/trunk/libs/libg722_1/src/dct4.h	Thu Jan 22 12:28:24 2009
@@ -3,34 +3,34 @@
      5.572937315437795e-02f,
      5.435713103213160e-02f,
      5.164643594289910e-02f,
-     4.766403419605858e-02f,
-     4.250798573945089e-02f,
-     3.630524959802148e-02f,
+     4.766403419605859e-02f,
+     4.250798573945090e-02f,
+     3.630524959802149e-02f,
      2.920855772127337e-02f,
      2.139265421578210e-02f,
      1.304999256534943e-02f,
      4.385996787515619e-03f,
      5.435713103213160e-02f,
-     4.250798573945089e-02f,
+     4.250798573945090e-02f,
      2.139265421578210e-02f,
     -4.385996787515612e-03f,
     -2.920855772127336e-02f,
     -4.766403419605858e-02f,
     -5.572937315437795e-02f,
-    -5.164643594289911e-02f,
+    -5.164643594289910e-02f,
     -3.630524959802151e-02f,
     -1.304999256534941e-02f,
      5.164643594289910e-02f,
      2.139265421578210e-02f,
     -2.139265421578209e-02f,
     -5.164643594289910e-02f,
-    -5.164643594289911e-02f,
+    -5.164643594289910e-02f,
     -2.139265421578213e-02f,
      2.139265421578211e-02f,
      5.164643594289909e-02f,
      5.164643594289910e-02f,
-     2.139265421578213e-02f,
-     4.766403419605858e-02f,
+     2.139265421578214e-02f,
+     4.766403419605859e-02f,
     -4.385996787515612e-03f,
     -5.164643594289910e-02f,
     -4.250798573945090e-02f,
@@ -40,17 +40,17 @@
     -2.139265421578210e-02f,
     -5.572937315437795e-02f,
     -2.920855772127336e-02f,
-     4.250798573945089e-02f,
+     4.250798573945090e-02f,
     -2.920855772127336e-02f,
-    -5.164643594289911e-02f,
+    -5.164643594289910e-02f,
      1.304999256534939e-02f,
      5.572937315437795e-02f,
      4.385996787515657e-03f,
     -5.435713103213161e-02f,
     -2.139265421578214e-02f,
-     4.766403419605858e-02f,
+     4.766403419605859e-02f,
      3.630524959802153e-02f,
-     3.630524959802148e-02f,
+     3.630524959802149e-02f,
     -4.766403419605858e-02f,
     -2.139265421578213e-02f,
      5.435713103213161e-02f,
@@ -66,12 +66,12 @@
      3.630524959802152e-02f,
     -5.435713103213161e-02f,
      1.304999256534937e-02f,
-     4.250798573945089e-02f,
+     4.250798573945090e-02f,
     -5.164643594289908e-02f,
-     4.385996787515504e-03f,
+     4.385996787515503e-03f,
      4.766403419605861e-02f,
      2.139265421578210e-02f,
-    -5.164643594289911e-02f,
+    -5.164643594289910e-02f,
      5.164643594289909e-02f,
     -2.139265421578210e-02f,
     -2.139265421578214e-02f,
@@ -84,15 +84,15 @@
     -3.630524959802151e-02f,
      5.164643594289910e-02f,
     -5.572937315437795e-02f,
-     4.766403419605858e-02f,
+     4.766403419605859e-02f,
     -2.920855772127332e-02f,
-     4.385996787515504e-03f,
+     4.385996787515503e-03f,
      2.139265421578216e-02f,
     -4.250798573945092e-02f,
      5.435713103213160e-02f,
      4.385996787515619e-03f,
     -1.304999256534941e-02f,
-     2.139265421578213e-02f,
+     2.139265421578214e-02f,
     -2.920855772127336e-02f,
      3.630524959802153e-02f,
     -4.250798573945090e-02f,
@@ -107,54 +107,54 @@
      7.881323533747238e-02f,
      7.687259191733195e-02f,
      7.303909015868119e-02f,
-     6.740712359748102e-02f,
-     6.011536994189358e-02f,
-     5.134337636686234e-02f,
+     6.740712359748104e-02f,
+     6.011536994189359e-02f,
+     5.134337636686236e-02f,
      4.130713846678219e-02f,
      3.025378172711701e-02f,
      1.845547647478522e-02f,
      6.202736141429415e-03f,
      7.687259191733195e-02f,
-     6.011536994189358e-02f,
+     6.011536994189359e-02f,
      3.025378172711701e-02f,
-    -6.202736141429404e-03f,
+    -6.202736141429406e-03f,
     -4.130713846678218e-02f,
     -6.740712359748102e-02f,
     -7.881323533747238e-02f,
-    -7.303909015868121e-02f,
+    -7.303909015868119e-02f,
     -5.134337636686238e-02f,
-    -1.845547647478519e-02f,
+    -1.845547647478520e-02f,
      7.303909015868119e-02f,
      3.025378172711701e-02f,
     -3.025378172711701e-02f,
     -7.303909015868119e-02f,
-    -7.303909015868121e-02f,
+    -7.303909015868119e-02f,
     -3.025378172711705e-02f,
      3.025378172711703e-02f,
      7.303909015868118e-02f,
      7.303909015868119e-02f,
-     3.025378172711706e-02f,
-     6.740712359748102e-02f,
-    -6.202736141429404e-03f,
+     3.025378172711707e-02f,
+     6.740712359748104e-02f,
+    -6.202736141429406e-03f,
     -7.303909015868119e-02f,
     -6.011536994189359e-02f,
      1.845547647478516e-02f,
      7.687259191733196e-02f,
      5.134337636686239e-02f,
-    -3.025378172711702e-02f,
+    -3.025378172711701e-02f,
     -7.881323533747238e-02f,
     -4.130713846678218e-02f,
-     6.011536994189358e-02f,
+     6.011536994189359e-02f,
     -4.130713846678218e-02f,
-    -7.303909015868121e-02f,
+    -7.303909015868119e-02f,
      1.845547647478516e-02f,
      7.881323533747238e-02f,
      6.202736141429469e-03f,
     -7.687259191733196e-02f,
     -3.025378172711707e-02f,
-     6.740712359748102e-02f,
+     6.740712359748104e-02f,
      5.134337636686240e-02f,
-     5.134337636686234e-02f,
+     5.134337636686236e-02f,
     -6.740712359748102e-02f,
     -3.025378172711705e-02f,
      7.687259191733196e-02f,
@@ -170,17 +170,17 @@
      5.134337636686239e-02f,
     -7.687259191733196e-02f,
      1.845547647478515e-02f,
-     6.011536994189358e-02f,
-    -7.303909015868118e-02f,
-     6.202736141429252e-03f,
+     6.011536994189359e-02f,
+    -7.303909015868117e-02f,
+     6.202736141429251e-03f,
      6.740712359748108e-02f,
      3.025378172711701e-02f,
-    -7.303909015868121e-02f,
+    -7.303909015868119e-02f,
      7.303909015868118e-02f,
-    -3.025378172711702e-02f,
+    -3.025378172711701e-02f,
     -3.025378172711707e-02f,
      7.303909015868119e-02f,
-    -7.303909015868118e-02f,
+    -7.303909015868117e-02f,
      3.025378172711699e-02f,
      3.025378172711710e-02f,
     -7.303909015868128e-02f,
@@ -188,15 +188,15 @@
     -5.134337636686238e-02f,
      7.303909015868119e-02f,
     -7.881323533747238e-02f,
-     6.740712359748102e-02f,
+     6.740712359748104e-02f,
     -4.130713846678212e-02f,
-     6.202736141429252e-03f,
+     6.202736141429251e-03f,
      3.025378172711710e-02f,
     -6.011536994189360e-02f,
      7.687259191733195e-02f,
      6.202736141429415e-03f,
-    -1.845547647478519e-02f,
-     3.025378172711706e-02f,
+    -1.845547647478520e-02f,
+     3.025378172711707e-02f,
     -4.130713846678218e-02f,
      5.134337636686240e-02f,
     -6.011536994189359e-02f,
@@ -211,8 +211,8 @@
     {9.969173337331280e-01f, -7.845909572784494e-02f},
     {9.723699203976766e-01f, -2.334453638559054e-01f},
     {9.238795325112867e-01f, -3.826834323650898e-01f},
-    {8.526401643540922e-01f, -5.224985647159488e-01f},
-    {7.604059656000309e-01f, -6.494480483301837e-01f}
+    {8.526401643540923e-01f, -5.224985647159488e-01f},
+    {7.604059656000310e-01f, -6.494480483301837e-01f}
 };
 
 static const cos_msin_t cos_msin_10[10] =
@@ -222,8 +222,8 @@
     {9.807852804032304e-01f, -1.950903220161282e-01f},
     {9.624552364536473e-01f, -2.714404498650743e-01f},
     {9.381913359224842e-01f, -3.461170570774930e-01f},
-    {9.081431738250813e-01f, -4.186597375374281e-01f},
-    {8.724960070727972e-01f, -4.886212414969549e-01f},
+    {9.081431738250814e-01f, -4.186597375374281e-01f},
+    {8.724960070727972e-01f, -4.886212414969550e-01f},
     {8.314696123025452e-01f, -5.555702330196022e-01f},
     {7.853169308807449e-01f, -6.190939493098340e-01f},
     {7.343225094356856e-01f, -6.788007455329417e-01f}
@@ -241,7 +241,7 @@
     {9.569403357322088e-01f, -2.902846772544623e-01f},
     {9.448060464668780e-01f, -3.276301795616935e-01f},
     {9.312149347588036e-01f, -3.644704998791496e-01f},
-    {9.161879571171360e-01f, -4.007488331031410e-01f},
+    {9.161879571171359e-01f, -4.007488331031410e-01f},
     {8.997482840522215e-01f, -4.364092406733421e-01f},
     {8.819212643483550e-01f, -4.713967368259976e-01f},
     {8.627343859777918e-01f, -5.056573733779846e-01f},
@@ -286,13 +286,13 @@
     {8.474695394742344e-01f, -5.308440257395095e-01f},
     {8.368837533084094e-01f, -5.473806568087964e-01f},
     {8.259753325248732e-01f, -5.637062622150167e-01f},
-    {8.147484825274894e-01f, -5.798145481265136e-01f},
+    {8.147484825274895e-01f, -5.798145481265136e-01f},
     {8.032075314806449e-01f, -5.956993044924334e-01f},
-    {7.913569286406602e-01f, -6.113544074368165e-01f},
+    {7.913569286406603e-01f, -6.113544074368165e-01f},
     {7.792012426405167e-01f, -6.267738216194696e-01f},
-    {7.667451597285615e-01f, -6.419516025627030e-01f},
+    {7.667451597285615e-01f, -6.419516025627031e-01f},
     {7.539934819618694e-01f, -6.568818989430414e-01f},
-    {7.409511253549591e-01f, -6.715589548470183e-01f},
+    {7.409511253549592e-01f, -6.715589548470183e-01f},
     {7.276231179845748e-01f, -6.859771119901928e-01f},
     {7.140145980512683e-01f, -7.001308118985236e-01f}
 };
@@ -327,7 +327,7 @@
     {9.688268450411880e-01f, -2.477388631755984e-01f},
     {9.663480247352773e-01f, -2.572382069021397e-01f},
     {9.637760657954398e-01f, -2.667127574748984e-01f},
-    {9.611112161124317e-01f, -2.761616017169707e-01f},
+    {9.611112161124316e-01f, -2.761616017169707e-01f},
     {9.583537325300114e-01f, -2.855838289290823e-01f},
     {9.555038808201862e-01f, -2.949785309773635e-01f},
     {9.525619356575953e-01f, -3.043448023808773e-01f},
@@ -339,11 +339,11 @@
     {9.329927988347390e-01f, -3.598950365349881e-01f},
     {9.294146324393044e-01f, -3.690371810640665e-01f},
     {9.257468871271640e-01f, -3.781437570215405e-01f},
-    {9.219899164032445e-01f, -3.872138866966656e-01f},
+    {9.219899164032446e-01f, -3.872138866966656e-01f},
     {9.181440823722039e-01f, -3.962466958914656e-01f},
     {9.142097557035307e-01f, -4.052413140049899e-01f},
     {9.101873155958178e-01f, -4.141968741172237e-01f},
-    {9.060771497402148e-01f, -4.231125130726441e-01f},
+    {9.060771497402147e-01f, -4.231125130726441e-01f},
     {9.018796542830616e-01f, -4.319873715634118e-01f},
     {8.975952337877069e-01f, -4.408205942121939e-01f},
     {8.932243011955153e-01f, -4.496113296546065e-01f},
@@ -365,12 +365,12 @@
     {8.118925199965048e-01f, -5.838069338177863e-01f},
     {8.061219749505210e-01f, -5.917494076903429e-01f},
     {8.002737341907743e-01f, -5.996348475233523e-01f},
-    {7.943483613828813e-01f, -6.074624933017110e-01f},
+    {7.943483613828815e-01f, -6.074624933017110e-01f},
     {7.883464276266063e-01f, -6.152315905806268e-01f},
     {7.822685114008164e-01f, -6.229413905583340e-01f},
     {7.761151985077279e-01f, -6.305911501482637e-01f},
-    {7.698870820164444e-01f, -6.381801320506653e-01f},
-    {7.635847622057965e-01f, -6.457076048236672e-01f},
+    {7.698870820164445e-01f, -6.381801320506653e-01f},
+    {7.635847622057965e-01f, -6.457076048236673e-01f},
     {7.572088465064846e-01f, -6.531728429537768e-01f},
     {7.507599494425343e-01f, -6.605751269258050e-01f},
     {7.442386925720670e-01f, -6.679137432922161e-01f},
@@ -417,7 +417,7 @@
     {9.880693132714919e-01f, -1.540098443970461e-01f},
     {9.873014181578584e-01f, -1.588581433338614e-01f},
     {9.865097333595187e-01f, -1.637026144779952e-01f},
-    {9.856942779526452e-01f, -1.685431410986913e-01f},
+    {9.856942779526452e-01f, -1.685431410986914e-01f},
     {9.848550715861784e-01f, -1.733796065602395e-01f},
     {9.839921344813541e-01f, -1.782118943247859e-01f},
     {9.831054874312163e-01f, -1.830398879551410e-01f},
@@ -490,17 +490,17 @@
     {8.712941233961736e-01f, -4.907611950177941e-01f},
     {8.688746174820854e-01f, -4.950322202598127e-01f},
     {8.664341754558650e-01f, -4.992913173710469e-01f},
-    {8.639728561215868e-01f, -5.035383837257176e-01f},
+    {8.639728561215867e-01f, -5.035383837257176e-01f},
     {8.614907187863783e-01f, -5.077733169879345e-01f},
-    {8.589878232589904e-01f, -5.119960151141624e-01f},
+    {8.589878232589903e-01f, -5.119960151141624e-01f},
     {8.564642298483565e-01f, -5.162063763556797e-01f},
     {8.539199993621391e-01f, -5.204042992610306e-01f},
     {8.513551931052652e-01f, -5.245896826784689e-01f},
     {8.487698728784481e-01f, -5.287624257583958e-01f},
-    {8.461641009766995e-01f, -5.329224279557898e-01f},
+    {8.461641009766994e-01f, -5.329224279557898e-01f},
     {8.435379401878270e-01f, -5.370695890326298e-01f},
     {8.408914537909229e-01f, -5.412038090603096e-01f},
-    {8.382247055548381e-01f, -5.453249884220465e-01f},
+    {8.382247055548380e-01f, -5.453249884220465e-01f},
     {8.355377597366458e-01f, -5.494330278152808e-01f},
     {8.328306810800937e-01f, -5.535278282540700e-01f},
     {8.301035348140438e-01f, -5.576092910714722e-01f},
@@ -518,12 +518,12 @@
     {7.958369046088836e-01f, -6.055110414043255e-01f},
     {7.928550330615741e-01f, -6.094102858903271e-01f},
     {7.898540571446090e-01f, -6.132948462299359e-01f},
-    {7.868340491684999e-01f, -6.171646288220856e-01f},
+    {7.868340491685000e-01f, -6.171646288220856e-01f},
     {7.837950819023488e-01f, -6.210195404217892e-01f},
     {7.807372285720945e-01f, -6.248594881423863e-01f},
     {7.776605628587479e-01f, -6.286843794577813e-01f},
     {7.745651588966166e-01f, -6.324941222046724e-01f},
-    {7.714510912715192e-01f, -6.362886245847729e-01f},
+    {7.714510912715193e-01f, -6.362886245847729e-01f},
     {7.683184350189877e-01f, -6.400677951670226e-01f},
     {7.651672656224590e-01f, -6.438315428897914e-01f},
     {7.619976590114568e-01f, -6.475797770630733e-01f},
@@ -534,15 +534,15 @@
     {7.458757562673048e-01f, -6.660850968252301e-01f},
     {7.425971456384329e-01f, -6.697383662966099e-01f},
     {7.393006416371488e-01f, -6.733754979763520e-01f},
-    {7.359863236949099e-01f, -6.769964042253483e-01f},
+    {7.359863236949100e-01f, -6.769964042253483e-01f},
     {7.326542716724128e-01f, -6.806009977954530e-01f},
     {7.293045658576685e-01f, -6.841891918315852e-01f},
-    {7.259372869640676e-01f, -6.877608998738217e-01f},
+    {7.259372869640677e-01f, -6.877608998738217e-01f},
     {7.225525161284360e-01f, -6.913160358594803e-01f},
     {7.191503349090794e-01f, -6.948545141251936e-01f},
     {7.157308252838186e-01f, -6.983762494089729e-01f},
     {7.122940696480137e-01f, -7.018811568522627e-01f},
-    {7.088401508125785e-01f, -7.053691520019861e-01f}
+    {7.088401508125786e-01f, -7.053691520019861e-01f}
 };
 
 static const cos_msin_t cos_msin_320[320] =
@@ -562,17 +562,17 @@
     {9.995294175010931e-01f, -3.067480317663663e-02f},
     {9.994511197373437e-01f, -3.312792259967294e-02f},
     {9.993668013545645e-01f, -3.558084246257342e-02f},
-    {9.992764628606833e-01f, -3.803354798913168e-02f},
+    {9.992764628606832e-01f, -3.803354798913168e-02f},
     {9.991801047998923e-01f, -4.048602440443251e-02f},
     {9.990777277526454e-01f, -4.293825693494082e-02f},
     {9.989693323356542e-01f, -4.539023080859068e-02f},
     {9.988549192018848e-01f, -4.784193125487429e-02f},
     {9.987344890405533e-01f, -5.029334350493095e-02f},
     {9.986080425771219e-01f, -5.274445279163603e-02f},
-    {9.984755805732948e-01f, -5.519524434968993e-02f},
+    {9.984755805732948e-01f, -5.519524434968994e-02f},
     {9.983371038270131e-01f, -5.764570341570704e-02f},
     {9.981926131724506e-01f, -6.009581522830464e-02f},
-    {9.980421094800079e-01f, -6.254556502819182e-02f},
+    {9.980421094800079e-01f, -6.254556502819184e-02f},
     {9.978855936563085e-01f, -6.499493805825848e-02f},
     {9.977230666441916e-01f, -6.744391956366405e-02f},
     {9.975545294227081e-01f, -6.989249479192657e-02f},
@@ -646,10 +646,10 @@
     {9.720827077212779e-01f, -2.346384651954331e-01f},
     {9.715038909862518e-01f, -2.370236059943672e-01f},
     {9.709192219842182e-01f, -2.394073189807704e-01f},
-    {9.703287042371799e-01f, -2.417895897953334e-01f},
+    {9.703287042371798e-01f, -2.417895897953334e-01f},
     {9.697323413023714e-01f, -2.441704040874346e-01f},
     {9.691301367722388e-01f, -2.465497475152259e-01f},
-    {9.685220942744174e-01f, -2.489276057457201e-01f},
+    {9.685220942744173e-01f, -2.489276057457201e-01f},
     {9.679082174717095e-01f, -2.513039644548766e-01f},
     {9.672885100620635e-01f, -2.536788093276874e-01f},
     {9.666629757785506e-01f, -2.560521260582643e-01f},
@@ -667,12 +667,12 @@
     {9.587034748958716e-01f, -2.844075372112719e-01f},
     {9.580025469007496e-01f, -2.867596905628075e-01f},
     {9.572958479697103e-01f, -2.891101164953470e-01f},
-    {9.565833823598556e-01f, -2.914588008500998e-01f},
+    {9.565833823598557e-01f, -2.914588008500998e-01f},
     {9.558651543630251e-01f, -2.938057294787664e-01f},
-    {9.551411683057708e-01f, -2.961508882436238e-01f},
+    {9.551411683057707e-01f, -2.961508882436238e-01f},
     {9.544114285493304e-01f, -2.984942630176104e-01f},
     {9.536759394896021e-01f, -3.008358396844112e-01f},
-    {9.529347055571170e-01f, -3.031756041385431e-01f},
+    {9.529347055571171e-01f, -3.031756041385431e-01f},
     {9.521877312170133e-01f, -3.055135422854393e-01f},
     {9.514350209690083e-01f, -3.078496400415349e-01f},
     {9.506765793473728e-01f, -3.101838833343510e-01f},
@@ -709,7 +709,7 @@
     {9.243484599469451e-01f, -3.815493737299417e-01f},
     {9.234092137297489e-01f, -3.838169146859046e-01f},
     {9.224644049642953e-01f, -3.860821435573893e-01f},
-    {9.215140393420420e-01f, -3.883450466988262e-01f},
+    {9.215140393420419e-01f, -3.883450466988262e-01f},
     {9.205581225879205e-01f, -3.906056104786556e-01f},
     {9.195966604603021e-01f, -3.928638212794095e-01f},
     {9.186296587509630e-01f, -3.951196654977946e-01f},
@@ -728,12 +728,12 @@
     {9.055572304297014e-01f, -4.242241181456904e-01f},
     {9.045133013352465e-01f, -4.264454099971220e-01f},
     {9.034639235201017e-01f, -4.286641329731982e-01f},
-    {9.024091033056408e-01f, -4.308802737084970e-01f},
+    {9.024091033056407e-01f, -4.308802737084971e-01f},
     {9.013488470460220e-01f, -4.330938188531520e-01f},
     {9.002831611281501e-01f, -4.353047550729321e-01f},
     {8.992120519716374e-01f, -4.375130690493225e-01f},
     {8.981355260287659e-01f, -4.397187474796043e-01f},
-    {8.970535897844474e-01f, -4.419217770769352e-01f},
+    {8.970535897844474e-01f, -4.419217770769353e-01f},
     {8.959662497561852e-01f, -4.441221445704292e-01f},
     {8.948735124940346e-01f, -4.463198367052365e-01f},
     {8.937753845805634e-01f, -4.485148402426236e-01f},
@@ -745,12 +745,12 @@
     {8.870737861323454e-01f, -4.616276616027529e-01f},
     {8.859381106942048e-01f, -4.638034756441384e-01f},
     {8.847970984309378e-01f, -4.659764957679662e-01f},
-    {8.836507562159172e-01f, -4.681467088841250e-01f},
+    {8.836507562159173e-01f, -4.681467088841250e-01f},
     {8.824990909546231e-01f, -4.703141019194129e-01f},
     {8.813421095846011e-01f, -4.724786618176158e-01f},
     {8.801798190754208e-01f, -4.746403755395864e-01f},
     {8.790122264286335e-01f, -4.767992300633221e-01f},
-    {8.778393386777302e-01f, -4.789552123840445e-01f},
+    {8.778393386777303e-01f, -4.789552123840445e-01f},
     {8.766611628880995e-01f, -4.811083095142767e-01f},
     {8.754777061569843e-01f, -4.832585084839222e-01f},
     {8.742889756134398e-01f, -4.854057963403425e-01f},
@@ -770,15 +770,15 @@
     {8.570970653106597e-01f, -5.151549481814718e-01f},
     {8.558301045664012e-01f, -5.172570271324139e-01f},
     {8.545579883654005e-01f, -5.193559901655896e-01f},
-    {8.532807243707908e-01f, -5.214518246370019e-01f},
+    {8.532807243707907e-01f, -5.214518246370019e-01f},
     {8.519983202767152e-01f, -5.235445179215000e-01f},
     {8.507107838082801e-01f, -5.256340574128560e-01f},
     {8.494181227215095e-01f, -5.277204305238395e-01f},
     {8.481203448032972e-01f, -5.298036246862946e-01f},
     {8.468174578713608e-01f, -5.318836273512150e-01f},
-    {8.455094697741939e-01f, -5.339604259888194e-01f},
+    {8.455094697741938e-01f, -5.339604259888194e-01f},
     {8.441963883910193e-01f, -5.360340080886280e-01f},
-    {8.428782216317413e-01f, -5.381043611595366e-01f},
+    {8.428782216317414e-01f, -5.381043611595366e-01f},
     {8.415549774368984e-01f, -5.401714727298929e-01f},
     {8.402266637776148e-01f, -5.422353303475707e-01f},
     {8.388932886555529e-01f, -5.442959215800456e-01f},
@@ -791,7 +791,7 @@
     {8.294186203736174e-01f, -5.586275612405148e-01f},
     {8.280450452577558e-01f, -5.606615761973360e-01f},
     {8.266664820602777e-01f, -5.626922137706231e-01f},
-    {8.252829390855451e-01f, -5.647194617279668e-01f},
+    {8.252829390855451e-01f, -5.647194617279667e-01f},
     {8.238944246679176e-01f, -5.667433078573766e-01f},
     {8.225009471717026e-01f, -5.687637399673542e-01f},
     {8.211025149911046e-01f, -5.707807458869673e-01f},
@@ -800,14 +800,14 @@
     {8.168775747324537e-01f, -5.768110851043212e-01f},
     {8.154594083525400e-01f, -5.788142649670318e-01f},
     {8.140363297059484e-01f, -5.808139580957645e-01f},
-    {8.126083473651983e-01f, -5.828101524445172e-01f},
+    {8.126083473651982e-01f, -5.828101524445172e-01f},
     {8.111754699323488e-01f, -5.848028359883638e-01f},
     {8.097377060389469e-01f, -5.867919967235272e-01f},
-    {8.082950643459751e-01f, -5.887776226674516e-01f},
+    {8.082950643459751e-01f, -5.887776226674515e-01f},
     {8.068475535437993e-01f, -5.907597018588742e-01f},
-    {8.053951823521167e-01f, -5.927382223578977e-01f},
+    {8.053951823521167e-01f, -5.927382223578979e-01f},
     {8.039379595199031e-01f, -5.947131722460625e-01f},
-    {8.024758938253601e-01f, -5.966845396264172e-01f},
+    {8.024758938253600e-01f, -5.966845396264172e-01f},
     {8.010089940758625e-01f, -5.986523126235920e-01f},
     {7.995372691079050e-01f, -6.006164793838690e-01f},
     {7.980607277870492e-01f, -6.025770280752539e-01f},
@@ -823,11 +823,11 @@
     {7.830323862678940e-01f, -6.219809338360844e-01f},
     {7.815034584514979e-01f, -6.239009091421072e-01f},
     {7.799698229165344e-01f, -6.258171261155689e-01f},
-    {7.784314889015095e-01f, -6.277295732133219e-01f},
+    {7.784314889015094e-01f, -6.277295732133219e-01f},
     {7.768884656732324e-01f, -6.296382389149270e-01f},
     {7.753407625267603e-01f, -6.315431117227246e-01f},
     {7.737883887853415e-01f, -6.334441801619028e-01f},
-    {7.722313538003597e-01f, -6.353414327805670e-01f},
+    {7.722313538003597e-01f, -6.353414327805671e-01f},
     {7.706696669512773e-01f, -6.372348581498091e-01f},
     {7.691033376455797e-01f, -6.391244448637757e-01f},
     {7.675323753187178e-01f, -6.410101815397373e-01f},
@@ -844,29 +844,29 @@
     {7.499487366876190e-01f, -6.614959503584616e-01f},
     {7.483229241734281e-01f, -6.633346072356920e-01f},
     {7.466926038177344e-01f, -6.651692682347043e-01f},
-    {7.450577854414661e-01f, -6.669999223036375e-01f},
+    {7.450577854414659e-01f, -6.669999223036375e-01f},
     {7.434184788926470e-01f, -6.688265584147679e-01f},
-    {7.417746940463380e-01f, -6.706491655645758e-01f},
+    {7.417746940463379e-01f, -6.706491655645758e-01f},
     {7.401264408045760e-01f, -6.724677327738116e-01f},
-    {7.384737290963160e-01f, -6.742822490875620e-01f},
-    {7.368165688773699e-01f, -6.760927035753159e-01f},
-    {7.351549701303474e-01f, -6.778990853310308e-01f},
-    {7.334889428645953e-01f, -6.797013834731973e-01f},
+    {7.384737290963159e-01f, -6.742822490875620e-01f},
+    {7.368165688773698e-01f, -6.760927035753159e-01f},
+    {7.351549701303473e-01f, -6.778990853310308e-01f},
+    {7.334889428645954e-01f, -6.797013834731973e-01f},
     {7.318184971161379e-01f, -6.814995871449060e-01f},
     {7.301436429476156e-01f, -6.832936855139119e-01f},
     {7.284643904482252e-01f, -6.850836677727004e-01f},
     {7.267807497336585e-01f, -6.868695231385515e-01f},
     {7.250927309460417e-01f, -6.886512408536060e-01f},
-    {7.234003442538740e-01f, -6.904288101849290e-01f},
-    {7.217035998519666e-01f, -6.922022204245754e-01f},
-    {7.200025079613817e-01f, -6.939714608896540e-01f},
-    {7.182970788293696e-01f, -6.957365209223924e-01f},
+    {7.234003442538739e-01f, -6.904288101849290e-01f},
+    {7.217035998519667e-01f, -6.922022204245754e-01f},
+    {7.200025079613817e-01f, -6.939714608896539e-01f},
+    {7.182970788293694e-01f, -6.957365209223924e-01f},
     {7.165873227293083e-01f, -6.974973898902004e-01f},
     {7.148732499606411e-01f, -6.992540571857347e-01f},
     {7.131548708488146e-01f, -7.010065122269625e-01f},
     {7.114321957452164e-01f, -7.027547444572253e-01f},
-    {7.097052350271130e-01f, -7.044987433453024e-01f},
-    {7.079739990975870e-01f, -7.062384983854745e-01f}
+    {7.097052350271131e-01f, -7.044987433453024e-01f},
+    {7.079739990975871e-01f, -7.062384983854745e-01f}
 };
 
 static const cos_msin_t cos_msin_640[640] =
@@ -941,7 +941,7 @@
     {9.965711457905548e-01f, -8.274026454937569e-02f},
     {9.964688578260101e-01f, -8.396317873286374e-02f},
     {9.963650691973739e-01f, -8.518596646932200e-02f},
-    {9.962597800609497e-01f, -8.640862591725426e-02f},
+    {9.962597800609497e-01f, -8.640862591725428e-02f},
     {9.961529905753015e-01f, -8.763115523535747e-02f},
     {9.960447009012520e-01f, -8.885355258252460e-02f},
     {9.959349112018836e-01f, -9.007581611784729e-02f},
@@ -959,7 +959,7 @@
     {9.945004952793278e-01f, -1.047318714106244e-01f},
     {9.943712211188022e-01f, -1.059522279647869e-01f},
     {9.942404494531879e-01f, -1.071724249568088e-01f},
-    {9.941081804794248e-01f, -1.083924605490956e-01f},
+    {9.941081804794248e-01f, -1.083924605490957e-01f},
     {9.939744143967076e-01f, -1.096123329042957e-01f},
     {9.938391514064855e-01f, -1.108320401853034e-01f},
     {9.937023917124622e-01f, -1.120515805552615e-01f},
@@ -979,14 +979,14 @@
     {9.916307215336136e-01f, -1.291065920498434e-01f},
     {9.914715372589731e-01f, -1.303234085087122e-01f},
     {9.913108598461154e-01f, -1.315400287028831e-01f},
-    {9.911486895370180e-01f, -1.327564508001479e-01f},
+    {9.911486895370178e-01f, -1.327564508001479e-01f},
     {9.909850265759061e-01f, -1.339726729685971e-01f},
     {9.908198712092535e-01f, -1.351886933766218e-01f},
     {9.906532236857811e-01f, -1.364045101929175e-01f},
     {9.904850842564571e-01f, -1.376201215864860e-01f},
     {9.903154531744962e-01f, -1.388355257266385e-01f},
     {9.901443306953601e-01f, -1.400507207829983e-01f},
-    {9.899717170767560e-01f, -1.412657049255036e-01f},
+    {9.899717170767559e-01f, -1.412657049255036e-01f},
     {9.897976125786367e-01f, -1.424804763244102e-01f},
     {9.896220174632009e-01f, -1.436950331502945e-01f},
     {9.894449319948911e-01f, -1.449093735740556e-01f},
@@ -1077,7 +1077,7 @@
     {9.689786733147769e-01f, -2.471443518697825e-01f},
     {9.686746520086348e-01f, -2.483332812088429e-01f},
     {9.683691718959728e-01f, -2.495218365624697e-01f},
-    {9.680622334368384e-01f, -2.507100161407201e-01f},
+    {9.680622334368385e-01f, -2.507100161407201e-01f},
     {9.677538370934755e-01f, -2.518978181542170e-01f},
     {9.674439833303232e-01f, -2.530852408141520e-01f},
     {9.671326726140158e-01f, -2.542722823322882e-01f},
@@ -1101,7 +1101,7 @@
     {9.612804858113206e-01f, -2.755718193109581e-01f},
     {9.609415845594780e-01f, -2.767512801493782e-01f},
     {9.606012361469752e-01f, -2.779303242053718e-01f},
-    {9.602594410863711e-01f, -2.791089497033199e-01f},
+    {9.602594410863710e-01f, -2.791089497033199e-01f},
     {9.599161998924024e-01f, -2.802871548682339e-01f},
     {9.595715130819845e-01f, -2.814649379257579e-01f},
     {9.592253811742094e-01f, -2.826422971021723e-01f},
@@ -1117,11 +1117,11 @@
     {9.556846974971080e-01f, -2.943921856467341e-01f},
     {9.553227044003364e-01f, -2.955647652498983e-01f},
     {9.549592726048367e-01f, -2.967368997378675e-01f},
-    {9.545944026579306e-01f, -2.979085873454284e-01f},
+    {9.545944026579306e-01f, -2.979085873454283e-01f},
     {9.542280951091057e-01f, -2.990798263080405e-01f},
     {9.538603505100144e-01f, -3.002506148618392e-01f},
     {9.534911694144735e-01f, -3.014209512436381e-01f},
-    {9.531205523784633e-01f, -3.025908336909318e-01f},
+    {9.531205523784632e-01f, -3.025908336909318e-01f},
     {9.527484999601259e-01f, -3.037602604418984e-01f},
     {9.523750127197659e-01f, -3.049292297354024e-01f},
     {9.520000912198481e-01f, -3.060977398109971e-01f},
@@ -1156,29 +1156,29 @@
     {9.405060705932683e-01f, -3.397768844068269e-01f},
     {9.400883935350755e-01f, -3.409308028627527e-01f},
     {9.396693007207513e-01f, -3.420842078830508e-01f},
-    {9.392487927814420e-01f, -3.432370977307140e-01f},
+    {9.392487927814421e-01f, -3.432370977307140e-01f},
     {9.388268703504251e-01f, -3.443894706695110e-01f},
     {9.384035340631081e-01f, -3.455413249639891e-01f},
     {9.379787845570278e-01f, -3.466926588794764e-01f},
-    {9.375526224718491e-01f, -3.478434706820849e-01f},
+    {9.375526224718490e-01f, -3.478434706820849e-01f},
     {9.371250484493645e-01f, -3.489937586387129e-01f},
     {9.366960631334929e-01f, -3.501435210170474e-01f},
     {9.362656671702783e-01f, -3.512927560855671e-01f},
     {9.358338612078891e-01f, -3.524414621135448e-01f},
     {9.354006458966176e-01f, -3.535896373710499e-01f},
     {9.349660218888781e-01f, -3.547372801289512e-01f},
-    {9.345299898392064e-01f, -3.558843886589194e-01f},
+    {9.345299898392063e-01f, -3.558843886589194e-01f},
     {9.340925504042590e-01f, -3.570309612334300e-01f},
     {9.336537042428116e-01f, -3.581769961257653e-01f},
     {9.332134520157588e-01f, -3.593224916100174e-01f},
     {9.327717943861125e-01f, -3.604674459610909e-01f},
     {9.323287320190009e-01f, -3.616118574547051e-01f},
     {9.318842655816681e-01f, -3.627557243673972e-01f},
-    {9.314383957434725e-01f, -3.638990449765241e-01f},
+    {9.314383957434724e-01f, -3.638990449765241e-01f},
     {9.309911231758859e-01f, -3.650418175602657e-01f},
     {9.305424485524929e-01f, -3.661840403976272e-01f},
     {9.300923725489892e-01f, -3.673257117684415e-01f},
-    {9.296408958431813e-01f, -3.684668299533723e-01f},
+    {9.296408958431812e-01f, -3.684668299533723e-01f},
     {9.291880191149847e-01f, -3.696073932339162e-01f},
     {9.287337430464239e-01f, -3.707473998924054e-01f},
     {9.282780683216301e-01f, -3.718868482120106e-01f},
@@ -1199,7 +1199,7 @@
     {9.212755803477590e-01f, -3.889104074911081e-01f},
     {9.207976218807237e-01f, -3.900406895937958e-01f},
     {9.203182767091106e-01f, -3.911703843022539e-01f},
-    {9.198375455548048e-01f, -3.922994899151824e-01f},
+    {9.198375455548049e-01f, -3.922994899151824e-01f},
     {9.193554291417789e-01f, -3.934280047321689e-01f},
     {9.188719281960914e-01f, -3.945559270536903e-01f},
     {9.183870434458861e-01f, -3.956832551811160e-01f},
@@ -1217,8 +1217,8 @@
     {9.124607575766490e-01f, -4.091642284983474e-01f},
     {9.119579505754890e-01f, -4.102836779377824e-01f},
     {9.114537701821365e-01f, -4.114025094974132e-01f},
-    {9.109482171558779e-01f, -4.125207214922996e-01f},
-    {9.104412922580672e-01f, -4.136383122384345e-01f},
+    {9.109482171558780e-01f, -4.125207214922996e-01f},
+    {9.104412922580672e-01f, -4.136383122384346e-01f},
     {9.099329962521239e-01f, -4.147552800527466e-01f},
     {9.094233299035327e-01f, -4.158716232531024e-01f},
     {9.089122939798419e-01f, -4.169873401583093e-01f},
@@ -1252,23 +1252,23 @@
     {8.940504215712870e-01f, -4.479663421376699e-01f},
     {8.935000110874138e-01f, -4.490631694837502e-01f},
     {8.929482550086714e-01f, -4.501593205488127e-01f},
-    {8.923951541659944e-01f, -4.512547936820739e-01f},
+    {8.923951541659945e-01f, -4.512547936820739e-01f},
     {8.918407093923427e-01f, -4.523495872337709e-01f},
     {8.912849215227001e-01f, -4.534436995551644e-01f},
     {8.907277913940732e-01f, -4.545371289985410e-01f},
-    {8.901693198454897e-01f, -4.556298739172159e-01f},
+    {8.901693198454899e-01f, -4.556298739172159e-01f},
     {8.896095077179980e-01f, -4.567219326655349e-01f},
     {8.890483558546646e-01f, -4.578133035988772e-01f},
     {8.884858651005743e-01f, -4.589039850736579e-01f},
     {8.879220363028281e-01f, -4.599939754473306e-01f},
     {8.873568703105417e-01f, -4.610832730783892e-01f},
-    {8.867903679748451e-01f, -4.621718763263714e-01f},
+    {8.867903679748452e-01f, -4.621718763263714e-01f},
     {8.862225301488806e-01f, -4.632597835518601e-01f},
     {8.856533576878016e-01f, -4.643469931164871e-01f},
     {8.850828514487716e-01f, -4.654335033829341e-01f},
     {8.845110122909626e-01f, -4.665193127149364e-01f},
     {8.839378410755541e-01f, -4.676044194772847e-01f},
-    {8.833633386657316e-01f, -4.686888220358279e-01f},
+    {8.833633386657316e-01f, -4.686888220358280e-01f},
     {8.827875059266853e-01f, -4.697725187574754e-01f},
     {8.822103437256089e-01f, -4.708555080101994e-01f},
     {8.816318529316984e-01f, -4.719377881630376e-01f},
@@ -1279,11 +1279,11 @@
     {8.787195006314716e-01f, -4.773384954201548e-01f},
     {8.781330566456232e-01f, -4.784164867834454e-01f},
     {8.775452902072614e-01f, -4.794937576601530e-01f},
-    {8.769562022015515e-01f, -4.805703064279270e-01f},
+    {8.769562022015513e-01f, -4.805703064279270e-01f},
     {8.763657935156495e-01f, -4.816461314655044e-01f},
-    {8.757740650387004e-01f, -4.827212311527123e-01f},
+    {8.757740650387003e-01f, -4.827212311527123e-01f},
     {8.751810176618363e-01f, -4.837956038704698e-01f},
-    {8.745866522781761e-01f, -4.848692480007911e-01f},
+    {8.745866522781762e-01f, -4.848692480007911e-01f},
     {8.739909697828232e-01f, -4.859421619267875e-01f},
     {8.733939710728648e-01f, -4.870143440326701e-01f},
     {8.727956570473698e-01f, -4.880857927037520e-01f},
@@ -1297,13 +1297,13 @@
     {8.679619020254642e-01f, -4.966307850227757e-01f},
     {8.673517909446490e-01f, -4.976955603027919e-01f},
     {8.667403736477115e-01f, -4.987595860622885e-01f},
-    {8.661276510554351e-01f, -4.998228606988624e-01f},
+    {8.661276510554352e-01f, -4.998228606988624e-01f},
     {8.655136240905691e-01f, -5.008853826112407e-01f},
     {8.648982936778269e-01f, -5.019471501992850e-01f},
     {8.642816607438848e-01f, -5.030081618639924e-01f},
-    {8.636637262173812e-01f, -5.040684160074983e-01f},
+    {8.636637262173812e-01f, -5.040684160074984e-01f},
     {8.630444910289141e-01f, -5.051279110330795e-01f},
-    {8.624239561110406e-01f, -5.061866453451552e-01f},
+    {8.624239561110405e-01f, -5.061866453451552e-01f},
     {8.618021223982749e-01f, -5.072446173492910e-01f},
     {8.611789908270876e-01f, -5.083018254522002e-01f},
     {8.605545623359034e-01f, -5.093582680617462e-01f},
@@ -1322,8 +1322,8 @@
     {8.523194027626210e-01f, -5.230216397763758e-01f},
     {8.516769170172609e-01f, -5.240671989544601e-01f},
     {8.510331486618554e-01f, -5.251119688968137e-01f},
-    {8.503880986659081e-01f, -5.261559480300321e-01f},
-    {8.497417680008525e-01f, -5.271991347819013e-01f},
+    {8.503880986659080e-01f, -5.261559480300321e-01f},
+    {8.497417680008525e-01f, -5.271991347819014e-01f},
     {8.490941576400509e-01f, -5.282415275814013e-01f},
     {8.484452685587929e-01f, -5.292831248587072e-01f},
     {8.477951017342936e-01f, -5.303239250451923e-01f},
@@ -1342,7 +1342,7 @@
     {8.392271065094661e-01f, -5.437810806747042e-01f},
     {8.385591549620770e-01f, -5.448105575604123e-01f},
     {8.378899405597550e-01f, -5.458392139712668e-01f},
-    {8.372194643103249e-01f, -5.468670483581293e-01f},
+    {8.372194643103250e-01f, -5.468670483581293e-01f},
     {8.365477272235120e-01f, -5.478940591731002e-01f},
     {8.358747303109401e-01f, -5.489202448695194e-01f},
     {8.352004745861303e-01f, -5.499456039019702e-01f},
@@ -1367,37 +1367,37 @@
     {8.221518032996592e-01f, -5.692683131275782e-01f},
     {8.214525870777344e-01f, -5.702768162772331e-01f},
     {8.207521337630588e-01f, -5.712844606003090e-01f},
-    {8.200504444105025e-01f, -5.722912445793115e-01f},
-    {8.193475200767969e-01f, -5.732971666980422e-01f},
+    {8.200504444105026e-01f, -5.722912445793115e-01f},
+    {8.193475200767970e-01f, -5.732971666980422e-01f},
     {8.186433618205335e-01f, -5.743022254416005e-01f},
     {8.179379707021619e-01f, -5.753064192963863e-01f},
-    {8.172313477839882e-01f, -5.763097467501014e-01f},
+    {8.172313477839883e-01f, -5.763097467501014e-01f},
     {8.165234941301740e-01f, -5.773122062917532e-01f},
     {8.158144108067338e-01f, -5.783137964116556e-01f},
-    {8.151040988815345e-01f, -5.793145156014319e-01f},
+    {8.151040988815346e-01f, -5.793145156014319e-01f},
     {8.143925594242929e-01f, -5.803143623540171e-01f},
     {8.136797935065747e-01f, -5.813133351636602e-01f},
-    {8.129658022017924e-01f, -5.823114325259262e-01f},
+    {8.129658022017923e-01f, -5.823114325259262e-01f},
     {8.122505865852039e-01f, -5.833086529376983e-01f},
-    {8.115341477339112e-01f, -5.843049948971807e-01f},
-    {8.108164867268581e-01f, -5.853004569039005e-01f},
+    {8.115341477339113e-01f, -5.843049948971807e-01f},
+    {8.108164867268581e-01f, -5.853004569039004e-01f},
     {8.100976046448293e-01f, -5.862950374587097e-01f},
     {8.093775025704479e-01f, -5.872887350637883e-01f},
     {8.086561815881750e-01f, -5.882815482226452e-01f},
     {8.079336427843067e-01f, -5.892734754401222e-01f},
-    {8.072098872469734e-01f, -5.902645152223945e-01f},
+    {8.072098872469735e-01f, -5.902645152223945e-01f},
     {8.064849160661379e-01f, -5.912546660769743e-01f},
     {8.057587303335938e-01f, -5.922439265127122e-01f},
     {8.050313311429637e-01f, -5.932322950397998e-01f},
     {8.043027195896973e-01f, -5.942197701697721e-01f},
     {8.035728967710708e-01f, -5.952063504155093e-01f},
     {8.028418637861839e-01f, -5.961920342912395e-01f},
-    {8.021096217359593e-01f, -5.971768203125404e-01f},
-    {8.013761717231402e-01f, -5.981607069963423e-01f},
+    {8.021096217359593e-01f, -5.971768203125405e-01f},
+    {8.013761717231402e-01f, -5.981607069963424e-01f},
     {8.006415148522891e-01f, -5.991436928609294e-01f},
     {7.999056522297859e-01f, -6.001257764259429e-01f},
     {7.991685849638264e-01f, -6.011069562123827e-01f},
-    {7.984303141644207e-01f, -6.020872307426096e-01f},
+    {7.984303141644207e-01f, -6.020872307426097e-01f},
     {7.976908409433912e-01f, -6.030665985403482e-01f},
     {7.969501664143711e-01f, -6.040450581306880e-01f},
     {7.962082916928030e-01f, -6.050226080400867e-01f},
@@ -1426,30 +1426,30 @@
     {7.788165123814760e-01f, -6.272518154951441e-01f},
     {7.780461723455767e-01f, -6.282070945941292e-01f},
     {7.772746605862029e-01f, -6.291614276245828e-01f},
-    {7.765019782652373e-01f, -6.301148131492967e-01f},
+    {7.765019782652371e-01f, -6.301148131492967e-01f},
     {7.757281265463254e-01f, -6.310672497324895e-01f},
-    {7.749531065948739e-01f, -6.320187359398091e-01f},
+    {7.749531065948738e-01f, -6.320187359398091e-01f},
     {7.741769195780490e-01f, -6.329692703383341e-01f},
     {7.733995666647743e-01f, -6.339188514965771e-01f},
     {7.726210490257291e-01f, -6.348674779844861e-01f},
     {7.718413678333470e-01f, -6.358151483734467e-01f},
     {7.710605242618138e-01f, -6.367618612362842e-01f},
     {7.702785194870657e-01f, -6.377076151472665e-01f},
-    {7.694953546867879e-01f, -6.386524086821050e-01f},
+    {7.694953546867880e-01f, -6.386524086821050e-01f},
     {7.687110310404124e-01f, -6.395962404179578e-01f},
     {7.679255497291163e-01f, -6.405391089334316e-01f},
     {7.671389119358204e-01f, -6.414810128085832e-01f},
-    {7.663511188451869e-01f, -6.424219506249224e-01f},
+    {7.663511188451870e-01f, -6.424219506249224e-01f},
     {7.655621716436182e-01f, -6.433619209654138e-01f},
-    {7.647720715192542e-01f, -6.443009224144792e-01f},
+    {7.647720715192541e-01f, -6.443009224144792e-01f},
     {7.639808196619715e-01f, -6.452389535579994e-01f},
-    {7.631884172633813e-01f, -6.461760129833163e-01f},
+    {7.631884172633814e-01f, -6.461760129833163e-01f},
     {7.623948655168271e-01f, -6.471120992792355e-01f},
     {7.616001656173835e-01f, -6.480472110360278e-01f},
     {7.608043187618542e-01f, -6.489813468454321e-01f},
     {7.600073261487703e-01f, -6.499145053006563e-01f},
-    {7.592091889783881e-01f, -6.508466849963809e-01f},
-    {7.584099084526877e-01f, -6.517778845287601e-01f},
+    {7.592091889783880e-01f, -6.508466849963810e-01f},
+    {7.584099084526879e-01f, -6.517778845287601e-01f},
     {7.576094857753715e-01f, -6.527081024954242e-01f},
     {7.568079221518612e-01f, -6.536373374954818e-01f},
     {7.560052187892974e-01f, -6.545655881295217e-01f},
@@ -1457,16 +1457,16 @@
     {7.543963976841503e-01f, -6.564191307093185e-01f},
     {7.535902823644226e-01f, -6.573444198636738e-01f},
     {7.527830321513488e-01f, -6.582687190692122e-01f},
-    {7.519746482606328e-01f, -6.591920269339562e-01f},
-    {7.511651319096865e-01f, -6.601143420674205e-01f},
-    {7.503544843176265e-01f, -6.610356630806152e-01f},
-    {7.495427067052737e-01f, -6.619559885860479e-01f},
-    {7.487298002951505e-01f, -6.628753171977246e-01f},
-    {7.479157663114792e-01f, -6.637936475311532e-01f},
+    {7.519746482606329e-01f, -6.591920269339562e-01f},
+    {7.511651319096864e-01f, -6.601143420674205e-01f},
+    {7.503544843176265e-01f, -6.610356630806153e-01f},
+    {7.495427067052738e-01f, -6.619559885860480e-01f},
+    {7.487298002951506e-01f, -6.628753171977246e-01f},
+    {7.479157663114792e-01f, -6.637936475311533e-01f},
     {7.471006059801801e-01f, -6.647109782033448e-01f},
-    {7.462843205288703e-01f, -6.656273078328160e-01f},
+    {7.462843205288703e-01f, -6.656273078328161e-01f},
     {7.454669111868606e-01f, -6.665426350395909e-01f},
-    {7.446483791851549e-01f, -6.674569584452033e-01f},
+    {7.446483791851548e-01f, -6.674569584452033e-01f},
     {7.438287257564475e-01f, -6.683702766726985e-01f},
     {7.430079521351217e-01f, -6.692825883466360e-01f},
     {7.421860595572477e-01f, -6.701938920930909e-01f},
@@ -1474,28 +1474,28 @@
     {7.405389224845600e-01f, -6.720134703154446e-01f},
     {7.397136804703048e-01f, -6.729217420510915e-01f},
     {7.388873244606151e-01f, -6.738290003787560e-01f},
-    {7.380598556999681e-01f, -6.747352439321236e-01f},
+    {7.380598556999680e-01f, -6.747352439321236e-01f},
     {7.372312754345167e-01f, -6.756404713464076e-01f},
     {7.364015849120877e-01f, -6.765446812583521e-01f},
-    {7.355707853821803e-01f, -6.774478723062332e-01f},
-    {7.347388780959635e-01f, -6.783500431298615e-01f},
+    {7.355707853821805e-01f, -6.774478723062332e-01f},
+    {7.347388780959634e-01f, -6.783500431298615e-01f},
     {7.339058643062745e-01f, -6.792511923705841e-01f},
     {7.330717452676171e-01f, -6.801513186712865e-01f},
     {7.322365222361595e-01f, -6.810504206763948e-01f},
-    {7.314001964697324e-01f, -6.819484970318775e-01f},
+    {7.314001964697325e-01f, -6.819484970318775e-01f},
     {7.305627692278276e-01f, -6.828455463852481e-01f},
     {7.297242417715950e-01f, -6.837415673855661e-01f},
     {7.288846153638420e-01f, -6.846365586834405e-01f},
     {7.280438912690308e-01f, -6.855305189310302e-01f},
-    {7.272020707532766e-01f, -6.864234467820476e-01f},
+    {7.272020707532767e-01f, -6.864234467820476e-01f},
     {7.263591550843460e-01f, -6.873153408917591e-01f},
     {7.255151455316546e-01f, -6.882061999169885e-01f},
     {7.246700433662657e-01f, -6.890960225161182e-01f},
-    {7.238238498608879e-01f, -6.899848073490914e-01f},
-    {7.229765662898732e-01f, -6.908725530774144e-01f},
+    {7.238238498608880e-01f, -6.899848073490914e-01f},
+    {7.229765662898732e-01f, -6.908725530774142e-01f},
     {7.221281939292153e-01f, -6.917592583641577e-01f},
     {7.212787340565479e-01f, -6.926449218739597e-01f},
-    {7.204281879511419e-01f, -6.935295422730269e-01f},
+    {7.204281879511419e-01f, -6.935295422730268e-01f},
     {7.195765568939045e-01f, -6.944131182291369e-01f},
     {7.187238421673769e-01f, -6.952956484116404e-01f},
     {7.178700450557317e-01f, -6.961771314914630e-01f},
@@ -1503,13 +1503,13 @@
     {7.161592088219294e-01f, -6.979369510346534e-01f},
     {7.153021722762606e-01f, -6.988152848477649e-01f},
     {7.144440584984474e-01f, -6.996925662576865e-01f},
-    {7.135848687807936e-01f, -7.005687939432483e-01f},
-    {7.127246044172235e-01f, -7.014439665848672e-01f},
-    {7.118632667032795e-01f, -7.023180828645491e-01f},
+    {7.135848687807935e-01f, -7.005687939432483e-01f},
+    {7.127246044172235e-01f, -7.014439665848673e-01f},
+    {7.118632667032795e-01f, -7.023180828645490e-01f},
     {7.110008569361208e-01f, -7.031911414658905e-01f},
     {7.101373764145209e-01f, -7.040631410740809e-01f},
     {7.092728264388657e-01f, -7.049340803759049e-01f},
-    {7.084072083111520e-01f, -7.058039580597435e-01f},
+    {7.084072083111521e-01f, -7.058039580597435e-01f},
     {7.075405233349850e-01f, -7.066727728155766e-01f}
 };
 

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Thu Jan 22 12:28:24 2009
@@ -157,8 +157,8 @@
 static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id);
 static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id);
 static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig);
-static switch_status_t engage_device(int samplerate, int codec_ms);
-static switch_status_t engage_ring_device(int sample_rate, int channels);
+static switch_status_t engage_device(int restart);
+static switch_status_t engage_ring_device(void);
 static void deactivate_ring_device(void);
 static int dump_info(int verbose);
 static switch_status_t load_config(void);
@@ -200,12 +200,12 @@
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL INIT %d %d\n",
 						  switch_channel_get_name(channel), switch_channel_get_state(channel), switch_test_flag(tech_pvt, TFLAG_ANSWER));
 
-		if (engage_device(globals.sample_rate, globals.codec_ms) != SWITCH_STATUS_SUCCESS) {
+		if (engage_device(0) != SWITCH_STATUS_SUCCESS) {
 			switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
 			return SWITCH_STATUS_FALSE;
 		}
 
-		if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
+		if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND) && !switch_test_flag(tech_pvt, TFLAG_AUTO_ANSWER)) {
 			add_pvt(tech_pvt, PA_SLAVE);
 
 			ring_file = globals.ring_file;
@@ -224,7 +224,7 @@
 										  globals.read_codec.implementation->actual_samples_per_second,
 										  SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) == SWITCH_STATUS_SUCCESS) {
 
-					if (engage_ring_device(fh.samplerate, fh.channels) != SWITCH_STATUS_SUCCESS) {
+					if (engage_ring_device() != SWITCH_STATUS_SUCCESS) {
 						switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
 						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Ring Error!\n");
 						switch_core_file_close(&fh);
@@ -290,7 +290,7 @@
 	}
 
 	if (ring_file) {
-		deactivate_ring_device();
+		//deactivate_ring_device();
 		switch_core_file_close(&fh);
 	}
 
@@ -331,6 +331,9 @@
 	/* LOCKED ************************************************************************************************** */
 
 	if (globals.audio_stream) {
+		if (globals.ring_stream == globals.audio_stream) {
+			globals.ring_stream = NULL;
+		}
 		CloseAudioStream(globals.audio_stream);
 		globals.audio_stream = NULL;
 	}
@@ -370,7 +373,7 @@
 	}
 
 	switch_mutex_lock(globals.device_lock);
-	if (globals.ringdev != globals.outdev && globals.ring_stream) {
+	if (globals.ring_stream && globals.ring_stream != globals.audio_stream) {
 		CloseAudioStream(globals.ring_stream);
 	}
 	globals.ring_stream = NULL;
@@ -762,12 +765,19 @@
 
 	Pa_Initialize();
 
-	if (dump_info(0)) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't find any audio devices!\n");
-		return SWITCH_STATUS_TERM;
-	}
-
 	memset(&globals, 0, sizeof(globals));
+	switch_core_hash_init(&globals.call_hash, module_pool);
+	switch_mutex_init(&globals.device_lock, SWITCH_MUTEX_NESTED, module_pool);
+	switch_mutex_init(&globals.pvt_lock, SWITCH_MUTEX_NESTED, module_pool);
+	switch_mutex_init(&globals.flag_mutex, SWITCH_MUTEX_NESTED, module_pool);
+	switch_mutex_init(&globals.pa_mutex, SWITCH_MUTEX_NESTED, module_pool);
+
+	globals.read_frame.data = globals.databuf;
+	globals.read_frame.buflen = sizeof(globals.databuf);
+	globals.cng_frame.data = globals.cngbuf;
+	globals.cng_frame.buflen = sizeof(globals.cngbuf);
+	globals.cng_frame.datalen = switch_samples_per_packet(globals.sample_rate, globals.codec_ms) * 2;
+	switch_set_flag((&globals.cng_frame), SFF_CNG);
 
 	/* dual streams makes portaudio on solaris choke */
 #if defined(sun) || defined(__sun)
@@ -775,33 +785,26 @@
 #else
 	globals.dual_streams = 1;
 #endif
-
+	
 	if ((status = load_config()) != SWITCH_STATUS_SUCCESS) {
 		return status;
 	}
 
+	if (dump_info(0)) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't find any audio devices!\n");
+		return SWITCH_STATUS_TERM;
+	}
 
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
 					  "Input Device: %d, Output Device: %d, Ring Device: %d Sample Rate: %d MS: %d\n", globals.indev,
 					  globals.outdev, globals.ringdev, globals.sample_rate, globals.codec_ms);
 
-	switch_core_hash_init(&globals.call_hash, module_pool);
-	switch_mutex_init(&globals.device_lock, SWITCH_MUTEX_NESTED, module_pool);
-	switch_mutex_init(&globals.pvt_lock, SWITCH_MUTEX_NESTED, module_pool);
-	switch_mutex_init(&globals.flag_mutex, SWITCH_MUTEX_NESTED, module_pool);
-	switch_mutex_init(&globals.pa_mutex, SWITCH_MUTEX_NESTED, module_pool);
 
 	if (switch_event_reserve_subclass(MY_EVENT_RINGING) != SWITCH_STATUS_SUCCESS) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass!\n");
 		return SWITCH_STATUS_GENERR;
 	}
 
-	globals.read_frame.data = globals.databuf;
-	globals.read_frame.buflen = sizeof(globals.databuf);
-	globals.cng_frame.data = globals.cngbuf;
-	globals.cng_frame.buflen = sizeof(globals.cngbuf);
-	globals.cng_frame.datalen = switch_samples_per_packet(globals.sample_rate, globals.codec_ms) * 2;
-	switch_set_flag((&globals.cng_frame), SFF_CNG);
 
 	/* connect my internal structure to the blank pointer passed to me */
 	*module_interface = switch_loadable_module_create_module_interface(pool, modname);
@@ -923,9 +926,9 @@
 	if (globals.indev < 0) {
 		globals.indev = get_dev_by_name(NULL, 1);
 		if (globals.indev > -1) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Switching to default input device!\n");
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Switching to default input device\n");
 		} else {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find an input device!\n");
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find an input device\n");
 			status = SWITCH_STATUS_GENERR;
 		}
 	}
@@ -933,16 +936,16 @@
 	if (globals.outdev < 0) {
 		globals.outdev = get_dev_by_name(NULL, 0);
 		if (globals.outdev > -1) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Switching to default output device!\n");
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Switching to default output device\n");
 		} else {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find an input device!\n");
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find an input device\n");
 			status = SWITCH_STATUS_GENERR;
 		}
 	}
 
 	if (globals.ringdev < 0) {
 		if (globals.outdev > -1) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid ring device configured using output device!\n");
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid ring device configured using output device\n");
 			globals.ringdev = globals.outdev;
 		}
 	}
@@ -954,6 +957,7 @@
 
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_portaudio_shutdown)
 {
+#if 0
 	if (globals.monitor_running == 1) {
 		int sanity = 20;
 		globals.monitor_running = -1;
@@ -964,19 +968,12 @@
 			}
 		}
 	}
-
-	if (globals.read_codec.implementation) {
-		switch_core_codec_destroy(&globals.read_codec);
-	}
-
-	if (globals.write_codec.implementation) {
-		switch_core_codec_destroy(&globals.write_codec);
-	}
+#endif
 
 	deactivate_audio_device();
 	deactivate_ring_device();
 	destroy_codecs();
-
+	
 	Pa_Terminate();
 	switch_core_hash_destroy(&globals.call_hash);
 
@@ -1162,76 +1159,78 @@
 	PaError err;
 	const char *line = "--------------------------------------------------------------------------------\n";
 
-	switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO,
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
 					  "PortAudio version number = %d\nPortAudio version text = '%s'\n", Pa_GetVersion(), Pa_GetVersionText());
-	if (globals.audio_stream) {
-		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
+	if (globals.call_list) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
 		return 0;
 	}
 
 	if (verbose < 0) {
+		deactivate_audio_device();
+		deactivate_ring_device();
+		destroy_codecs();
 		Pa_Terminate();
 		Pa_Initialize();
 		load_config();
 		verbose = 0;
 	}
 
-
 	numDevices = Pa_GetDeviceCount();
 	if (numDevices < 0) {
-		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "ERROR: Pa_CountDevices returned 0x%x\n", numDevices);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Pa_CountDevices returned 0x%x\n", numDevices);
 		err = numDevices;
 		goto error;
 	}
 
-	switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Number of devices = %d\n", numDevices);
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Number of devices = %d\n", numDevices);
 
 	if (!verbose) {
 		return 0;
 	}
 
 	for (i = 0; i < numDevices; i++) {
-		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "%s", line);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s", line);
 		deviceInfo = Pa_GetDeviceInfo(i);
-		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Device #%d ", i);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Device #%d ", i);
 
 		/* Mark global and API specific default devices */
 		defaultDisplayed = 0;
 		if (i == Pa_GetDefaultInputDevice()) {
-			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "**Default Input");
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "**Default Input");
 			defaultDisplayed = 1;
 
 		} else if (i == Pa_GetHostApiInfo(deviceInfo->hostApi)->defaultInputDevice) {
 
 			const PaHostApiInfo *hostInfo = Pa_GetHostApiInfo(deviceInfo->hostApi);
-			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "**Default %s Input", hostInfo->name);
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "**Default %s Input", hostInfo->name);
 			defaultDisplayed = 1;
 		}
 
 		if (i == Pa_GetDefaultOutputDevice()) {
-			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "**Default Output");
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "**Default Output");
 			defaultDisplayed = 1;
 
 		} else if (i == Pa_GetHostApiInfo(deviceInfo->hostApi)->defaultOutputDevice) {
 
 			const PaHostApiInfo *hostInfo = Pa_GetHostApiInfo(deviceInfo->hostApi);
-			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "**Default %s Output", hostInfo->name);
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "**Default %s Output", hostInfo->name);
 			defaultDisplayed = 1;
 		}
 
 		if (defaultDisplayed) {
-			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "** | ");
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "** | ");
 		}
 		/* print device info fields */
-		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Name: %s\n", deviceInfo->name);
-		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Host: %s | ", Pa_GetHostApiInfo(deviceInfo->hostApi)->name);
-		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "inputs: %d | ", deviceInfo->maxInputChannels);
-		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "outputs: %d | ", deviceInfo->maxOutputChannels);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Name: %s\n", deviceInfo->name);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Host: %s | ", Pa_GetHostApiInfo(deviceInfo->hostApi)->name);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "inputs: %d | ", deviceInfo->maxInputChannels);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "outputs: %d | ", deviceInfo->maxOutputChannels);
 
-		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Default rate: %8.2f\n", deviceInfo->defaultSampleRate);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Default rate: %8.2f\n", deviceInfo->defaultSampleRate);
 
-		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Default input latency: %.3f | ", deviceInfo->defaultLowInputLatency);
-		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Default output latency: %.3f\n", deviceInfo->defaultLowOutputLatency);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Default input latency: %.3f | ", deviceInfo->defaultLowInputLatency);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Default output latency: %.3f\n", deviceInfo->defaultLowOutputLatency);
 
 		/* poll for standard sample rates */
 		inputParameters.device = i;
@@ -1248,25 +1247,25 @@
 
 		if (inputParameters.channelCount > 0) {
 
-			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "half-duplex 16 bit %d channel input rates:", inputParameters.channelCount);
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "half-duplex 16 bit %d channel input rates:", inputParameters.channelCount);
 			PrintSupportedStandardSampleRates(&inputParameters, NULL);
 		}
 
 		if (outputParameters.channelCount > 0) {
-			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "half-duplex 16 bit %d channel output rates:", outputParameters.channelCount);
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "half-duplex 16 bit %d channel output rates:", outputParameters.channelCount);
 			PrintSupportedStandardSampleRates(NULL, &outputParameters);
 		}
 
 		if (inputParameters.channelCount > 0 && outputParameters.channelCount > 0) {
 			
-			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO,
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
 							  "full-duplex 16 bit %d channel input, %d channel output rates:", inputParameters.channelCount,
 							  outputParameters.channelCount);
 			PrintSupportedStandardSampleRates(&inputParameters, &outputParameters);
 		}
 	}
 	
-	switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "%s", line);
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s", line);
 
 	return 0;
 
@@ -1277,148 +1276,165 @@
 	return err;
 }
 
-static switch_status_t engage_device(int sample_rate, int codec_ms)
+static switch_status_t engage_device(int restart)
 {
 	PaStreamParameters inputParameters, outputParameters;
 	PaError err;
+	int sample_rate = globals.sample_rate;
+	int codec_ms = globals.codec_ms;
 
-	if (!globals.audio_stream) {
-		if (!sample_rate) {
-			sample_rate = globals.sample_rate;
-		}
-		if (!codec_ms) {
-			codec_ms = globals.codec_ms;
-		}
-
-		if (!globals.read_codec.implementation) {
-			if (switch_core_codec_init(&globals.read_codec,
-									   "L16",
-									   NULL, sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
-									   NULL) != SWITCH_STATUS_SUCCESS) {
-				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n");
-				return SWITCH_STATUS_FALSE;
-			}
-		}
 
-		switch_assert(globals.read_codec.implementation);
+	if (restart) {
+		deactivate_audio_device();
+		deactivate_ring_device();
+		destroy_codecs();
+	}
 
-		if (!globals.write_codec.implementation) {
-			if (switch_core_codec_init(&globals.write_codec,
-									   "L16",
-									   NULL,
-									   sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
-									   NULL) != SWITCH_STATUS_SUCCESS) {
-				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n");
-				switch_core_codec_destroy(&globals.read_codec);
-				return SWITCH_STATUS_FALSE;
-			}
-		}
+	if (globals.timer.timer_interface) {
+		switch_core_timer_sync(&globals.timer);
+	}
 
-		if (!globals.timer.timer_interface) {
-			if (switch_core_timer_init(&globals.timer,
-									   globals.timer_name, codec_ms, globals.read_codec.implementation->samples_per_packet,
-									   module_pool) != SWITCH_STATUS_SUCCESS) {
-				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "setup timer failed!\n");
-				switch_core_codec_destroy(&globals.read_codec);
-				switch_core_codec_destroy(&globals.write_codec);
-				return SWITCH_STATUS_FALSE;
-			}
-		}
+	if (globals.audio_stream) {
+		return SWITCH_STATUS_SUCCESS;
+	}
 
-		if (!globals.hold_timer.timer_interface) {
-			if (switch_core_timer_init(&globals.hold_timer,
-									   globals.timer_name, codec_ms, globals.read_codec.implementation->samples_per_packet,
-									   module_pool) != SWITCH_STATUS_SUCCESS) {
-				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "setup hold timer failed!\n");
-				switch_core_codec_destroy(&globals.read_codec);
-				switch_core_codec_destroy(&globals.write_codec);
-				switch_core_timer_destroy(&globals.timer);
-				return SWITCH_STATUS_FALSE;
-			}
+	if (!globals.read_codec.implementation) {
+		if (switch_core_codec_init(&globals.read_codec,
+								   "L16",
+								   NULL, sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
+								   NULL) != SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n");
+			return SWITCH_STATUS_FALSE;
 		}
-		
-		globals.read_frame.rate = sample_rate;
-		globals.read_frame.codec = &globals.read_codec;
-
-		switch_mutex_lock(globals.device_lock);
-		/* LOCKED ************************************************************************************************** */
-		inputParameters.device = globals.indev;
-		inputParameters.channelCount = 1;
-		inputParameters.sampleFormat = SAMPLE_TYPE;
-		inputParameters.suggestedLatency = Pa_GetDeviceInfo(inputParameters.device)->defaultLowInputLatency;
-		inputParameters.hostApiSpecificStreamInfo = NULL;
+	}
 
-		outputParameters.device = globals.outdev;
-		outputParameters.channelCount = 1;
-		outputParameters.sampleFormat = SAMPLE_TYPE;
-		outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency;
-		outputParameters.hostApiSpecificStreamInfo = NULL;
-		//err = OpenAudioStream(&globals.audio_stream, NULL/*&inputParameters*/, &outputParameters, sample_rate, paClipOff,
-		//globals.read_codec.implementation->samples_per_packet);
+	switch_assert(globals.read_codec.implementation);
 
-		err = OpenAudioStream(&globals.audio_stream, &inputParameters, &outputParameters, sample_rate, paClipOff,
-							  globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
-		/* UNLOCKED ************************************************************************************************* */
+	if (!globals.write_codec.implementation) {
+		if (switch_core_codec_init(&globals.write_codec,
+								   "L16",
+								   NULL,
+								   sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
+								   NULL) != SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n");
+			switch_core_codec_destroy(&globals.read_codec);
+			return SWITCH_STATUS_FALSE;
+		}
+	}
 
-		if (err != paNoError) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error opening audio device! retrying\n");
-			switch_yield(1000000);
-			err = OpenAudioStream(&globals.audio_stream, &inputParameters, &outputParameters, sample_rate, paClipOff,
-								  globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
+	if (!globals.timer.timer_interface) {
+		if (switch_core_timer_init(&globals.timer,
+								   globals.timer_name, codec_ms, globals.read_codec.implementation->samples_per_packet,
+								   module_pool) != SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "setup timer failed!\n");
+			switch_core_codec_destroy(&globals.read_codec);
+			switch_core_codec_destroy(&globals.write_codec);
+			return SWITCH_STATUS_FALSE;
 		}
+	}
 
-		switch_mutex_unlock(globals.device_lock);
-		
-		if (err != paNoError) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't open audio device!\n");
+	if (!globals.hold_timer.timer_interface) {
+		if (switch_core_timer_init(&globals.hold_timer,
+								   globals.timer_name, codec_ms, globals.read_codec.implementation->samples_per_packet,
+								   module_pool) != SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "setup hold timer failed!\n");
 			switch_core_codec_destroy(&globals.read_codec);
 			switch_core_codec_destroy(&globals.write_codec);
 			switch_core_timer_destroy(&globals.timer);
-			switch_core_timer_destroy(&globals.hold_timer);
 			return SWITCH_STATUS_FALSE;
 		}
 	}
 
+	globals.read_frame.rate = sample_rate;
+	globals.read_frame.codec = &globals.read_codec;
+
+	switch_mutex_lock(globals.device_lock);
+	/* LOCKED ************************************************************************************************** */
+	inputParameters.device = globals.indev;
+	inputParameters.channelCount = 1;
+	inputParameters.sampleFormat = SAMPLE_TYPE;
+	inputParameters.suggestedLatency = Pa_GetDeviceInfo(inputParameters.device)->defaultLowInputLatency;
+	inputParameters.hostApiSpecificStreamInfo = NULL;
+	outputParameters.device = globals.outdev;
+	outputParameters.channelCount = 1;
+	outputParameters.sampleFormat = SAMPLE_TYPE;
+	outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency;
+	outputParameters.hostApiSpecificStreamInfo = NULL;
+	//err = OpenAudioStream(&globals.audio_stream, NULL/*&inputParameters*/, &outputParameters, sample_rate, paClipOff,
+	//globals.read_codec.implementation->samples_per_packet);
+	err = OpenAudioStream(&globals.audio_stream, &inputParameters, &outputParameters, sample_rate, paClipOff,
+						  globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
+	/* UNLOCKED ************************************************************************************************* */
+	if (err != paNoError) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error opening audio device retrying\n");
+		switch_yield(1000000);
+		err = OpenAudioStream(&globals.audio_stream, &inputParameters, &outputParameters, sample_rate, paClipOff,
+							  globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
+	}
+
+	switch_mutex_unlock(globals.device_lock);
+		
+	if (err != paNoError) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't open audio device\n");
+		switch_core_codec_destroy(&globals.read_codec);
+		switch_core_codec_destroy(&globals.write_codec);
+		switch_core_timer_destroy(&globals.timer);
+		switch_core_timer_destroy(&globals.hold_timer);
+		return SWITCH_STATUS_FALSE;
+	}
+	
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Engage audio device rate: %d channels %d\n", sample_rate, outputParameters.channelCount);
+
+	engage_ring_device();
+
 	return SWITCH_STATUS_SUCCESS;
 }
 
-static switch_status_t engage_ring_device(int sample_rate, int channels)
+static switch_status_t engage_ring_device(void)
 {
 	PaStreamParameters outputParameters = {0};
 	PaError err;
+	int sample_rate = globals.sample_rate;
+	int channels = 1;
 
-	if (!globals.ring_stream) {
-		if (globals.ringdev == globals.outdev) {
+	if (globals.ring_stream) {
+		return SWITCH_STATUS_SUCCESS;
+	}
+
+	if (globals.ringdev == globals.outdev) {
+		if (engage_device(0) == SWITCH_STATUS_SUCCESS) {
 			globals.ring_stream = globals.audio_stream;
 		} else {
-			if (!sample_rate) {
-				sample_rate = globals.sample_rate;
-			}
+			goto error;
+		}
+	} else {
+		switch_mutex_lock(globals.device_lock);
+		/* LOCKED ************************************************************************************************** */
+		outputParameters.device = globals.ringdev;
+		outputParameters.channelCount = channels;
+		outputParameters.sampleFormat = SAMPLE_TYPE;
+		outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency;
+		outputParameters.hostApiSpecificStreamInfo = NULL;
+		err = OpenAudioStream(&globals.ring_stream, NULL, 
+							  &outputParameters, sample_rate, paClipOff, globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
+		/* UNLOCKED ************************************************************************************************* */
+		switch_mutex_unlock(globals.device_lock);
 
-			switch_mutex_lock(globals.device_lock);
-			/* LOCKED ************************************************************************************************** */
-			outputParameters.device = globals.ringdev;
-			outputParameters.channelCount = channels;
-			outputParameters.sampleFormat = SAMPLE_TYPE;
-			outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency;
-			outputParameters.hostApiSpecificStreamInfo = NULL;
-			err = OpenAudioStream(&globals.ring_stream, NULL, 
-								  &outputParameters, sample_rate, paClipOff, globals.read_codec.implementation->samples_per_packet, globals.dual_streams);
-
-			/* UNLOCKED ************************************************************************************************* */
-			switch_mutex_unlock(globals.device_lock);
-
-			if (err != paNoError) {
-				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't open ring device!\n");
-				return SWITCH_STATUS_FALSE;
-			}
+		if (err != paNoError) {
+			goto error;
 		}
 	}
 
 	switch_yield(10000);
-
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Engage ring device! rate: %d channels %d\n", sample_rate, channels);
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Engage ring device rate: %d channels %d\n", sample_rate, channels);
 	return SWITCH_STATUS_SUCCESS;
+
+
+ error:
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't open ring device\n");
+	return SWITCH_STATUS_FALSE;
+
 }
 
 static switch_status_t dtmf_call(char **argv, int argc, switch_stream_handle_t *stream)
@@ -1723,7 +1739,7 @@
 			switch_channel_set_caller_profile(channel, tech_pvt->caller_profile);
 		}
 		tech_pvt->session = session;
-		if ((status = engage_device(tech_pvt->sample_rate, tech_pvt->codec_ms)) == SWITCH_STATUS_SUCCESS) {
+		if ((status = engage_device(0)) == SWITCH_STATUS_SUCCESS) {
 			switch_set_flag_locked(tech_pvt, TFLAG_ANSWER);
 			switch_channel_mark_answered(channel);
 			switch_channel_set_state(channel, CS_INIT);
@@ -1772,8 +1788,7 @@
 		"pa indev #|\n"
 		"pa outdev #|\n"
 		"pa ringdev #|\n"
-		"pa play \n"
-		"pa ringtest\n"
+		"pa play [ringtest|]\n"
 		"pa looptest\n" "--------------------------------------------------------------------------------\n";
 
 
@@ -1843,7 +1858,13 @@
 	} else if (!strcasecmp(argv[0], "devlist")) {
 		func = devlist;
 	} else if (!strcasecmp(argv[0], "rescan")) {
-		switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "Looking for new devices.\n");
+
+		if (globals.call_list) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
+			goto done;
+		}
+
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Looking for new devices.\n");
 		dump_info(-1);
 		goto done;
 	} else if (!strcasecmp(argv[0], "dump")) {
@@ -1862,6 +1883,12 @@
 	} else if (!strcasecmp(argv[0], "dtmf")) {
 		func = dtmf_call;
 	} else if (argv[1] && !strcmp(argv[0], "indev")) {
+
+		if (globals.call_list) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
+			goto done;
+		}
+
 		if (*argv[1] == '#') {
 			devval = get_dev_by_number(argv[1] + 1, 1);
 		} else {
@@ -1870,8 +1897,15 @@
 		devname = "indev";
 		if (devval > -1) {
 			globals.indev = devval;
+			engage_device(1);
 		}
 	} else if (argv[1] && !strcmp(argv[0], "outdev")) {
+
+		if (globals.call_list) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
+			goto done;
+		}
+
 		if (*argv[1] == '#') {
 			devval = get_dev_by_number(argv[1] + 1, 0);
 		} else {
@@ -1880,8 +1914,15 @@
 		devname = "outdev";
 		if (devval > -1) {
 			globals.outdev = devval;
+			engage_device(1);
 		}
 	} else if (argv[1] && !strcmp(argv[0], "ringdev")) {
+
+		if (globals.call_list) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
+			goto done;
+		}
+
 		if (*argv[1] == '#') {
 			devval = get_dev_by_number(argv[1] + 1, 0);
 		} else {
@@ -1890,52 +1931,71 @@
 		devname = "ringdev";
 		if (devval > -1) {
 			globals.ringdev = devval;
+			engage_device(1);
 		}
-	} else if ((argv[1] && !strcasecmp(argv[0], "play")) || !strcasecmp(argv[0], "ringtest")) {
+	} else if ((argv[1] && !strcasecmp(argv[0], "play"))) {
 		switch_file_handle_t fh = { 0 };
 		char *playfile = NULL;
-		if (globals.audio_stream) {
-			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
+		int samples = 0;
+		int seconds = 5;
+
+		if (globals.call_list) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
 			goto done;
 		}
 
-		if (!strcasecmp(argv[0], "ringtest")) {
+		if (!strcasecmp(argv[1], "ringtest")) {
 			playfile = globals.ring_file;
 		} else {
 			playfile = argv[1];
 		}
 
-		if (engage_device(globals.sample_rate, globals.codec_ms) == SWITCH_STATUS_SUCCESS) {
+		fh.pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
+		if (engage_device(0) == SWITCH_STATUS_SUCCESS) {
 			if (switch_core_file_open(&fh,
-						playfile,
-						globals.read_codec.implementation->number_of_channels,
-						globals.read_codec.implementation->actual_samples_per_second,
-						SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) == SWITCH_STATUS_SUCCESS) {
-				switch_size_t olen = globals.timer.samples;
+									  playfile,
+									  globals.read_codec.implementation->number_of_channels,
+									  globals.read_codec.implementation->actual_samples_per_second,
+									  SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) == SWITCH_STATUS_SUCCESS) {
+				switch_size_t olen = globals.read_codec.implementation->samples_per_packet;
 				int16_t abuf[2048];
 				
+				if (argv[2]) {
+					int i = atoi(argv[2]);
+					if (i > 0) {
+						seconds = i;
+					}
+				}
+
+				samples = globals.read_codec.implementation->actual_samples_per_second * seconds;
+				stream->write_function(stream, "playback test [%s] %d second(s) %d samples @%dkhz", 
+									   playfile, seconds, samples, globals.read_codec.implementation->actual_samples_per_second);
+				
 				while (switch_core_file_read(&fh, abuf, &olen) == SWITCH_STATUS_SUCCESS) {
 					WriteAudioStream(globals.audio_stream, abuf, (long) olen, &globals.timer);
 					switch_core_timer_next(&globals.timer);
-					olen = globals.timer.samples;
+					samples -= (int) olen;
+					if (samples <= 0) {
+						break;
+					}
+					olen = globals.read_codec.implementation->samples_per_packet;
 				} 
 
 				switch_core_file_close(&fh);
 			} else {
 				stream->write_function(stream, "Cannot play requested file %s\n", argv[1]);
 			}
-			deactivate_audio_device();
 		} else {
 			stream->write_function(stream, "Failed to engage audio device\n");
 		}
 		goto done;
 	} else if (!strcasecmp(argv[0], "looptest")) {
-		if (globals.audio_stream) {
-			switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
+		if (globals.call_list) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ERROR: Cannot use this command this while a call is in progress\n");
 			goto done;
 		}
 
-		if (engage_device(globals.sample_rate, globals.codec_ms) == SWITCH_STATUS_SUCCESS) {
+		if (engage_device(0) == SWITCH_STATUS_SUCCESS) {
 			int samples = 0;
 			int success = 0;
 			int i;
@@ -1947,7 +2007,6 @@
 				}
 				switch_yield(10000);
 			}
-			deactivate_audio_device();
 			if (!success) {
 				stream->write_function(stream, "Failed to read any bytes from indev\n");
 			}


From mikej at freeswitch.org  Thu Jan 22 10:30:12 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 12:30:12 -0600
Subject: [Freeswitch-svn] [commit] r11365 -
	freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket
Message-ID: 

Author: mikej
Date: Thu Jan 22 12:30:12 2009
New Revision: 11365

Log:
mod_event_socket: add debug logging to event-sink (r:11060)

Modified:
   freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket/mod_event_socket.c

Modified: freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	(original)
+++ freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	Thu Jan 22 12:30:12 2009
@@ -778,6 +778,7 @@
 		stream->write_function(stream, " Listener %u Created\n", listener->id);
 		xmlize_listener(listener, stream);
 		stream->write_function(stream, "\n");
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating event-sink listener [%u]\n", listener->id);
 
 		goto end;
 	} else if (!strcasecmp(wcmd, "destroy-listener")) {		
@@ -789,6 +790,7 @@
 		}
 
 		if ((listener = find_listener(idl))) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Destroying event-sink listener [%u]\n", idl);
 			remove_listener(listener);
 			stream->write_function(stream, "\n listener %u destroyed\n", listener->id);
 			xmlize_listener(listener, stream);
@@ -796,6 +798,7 @@
 			expire_listener(&listener);
 			goto end;
 		} else {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Request to destroy unknown event-sink listener [%u]\n", idl);
 			stream->write_function(stream, "Can't find listener\n");
 			goto end;
 		}


From anthm at freeswitch.org  Thu Jan 22 10:40:53 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 12:40:53 -0600
Subject: [Freeswitch-svn] [commit] r11366 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Thu Jan 22 12:40:53 2009
New Revision: 11366

Log:
fix for fix that broke the other fix

Modified:
   freeswitch/trunk/src/switch_core_io.c

Modified: freeswitch/trunk/src/switch_core_io.c
==============================================================================
--- freeswitch/trunk/src/switch_core_io.c	(original)
+++ freeswitch/trunk/src/switch_core_io.c	Thu Jan 22 12:40:53 2009
@@ -616,7 +616,7 @@
 	
 
 	if ((session->write_codec && frame->codec && session->write_codec->implementation != frame->codec->implementation)) {
-		if (session->write_impl.codec_id != frame->codec->implementation->codec_id) {
+		if (session->write_impl.microseconds_per_packet != frame->codec->implementation->microseconds_per_packet) {
 			ptime_mismatch = TRUE;
 			if (switch_test_flag(frame->codec, SWITCH_CODEC_FLAG_PASSTHROUGH) || switch_test_flag(session->read_codec, SWITCH_CODEC_FLAG_PASSTHROUGH)) {
 				status = perform_write(session, frame, flags, stream_id);


From brian at freeswitch.org  Thu Jan 22 10:45:07 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 12:45:07 -0600
Subject: [Freeswitch-svn] [commit] r11367 -
	freeswitch/trunk/libs/libg722_1/src
Message-ID: 

Author: brian
Date: Thu Jan 22 12:45:07 2009
New Revision: 11367

Log:
remove generated file from tree

Removed:
   freeswitch/trunk/libs/libg722_1/src/dct4.h


From anthm at freeswitch.org  Thu Jan 22 11:06:48 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 13:06:48 -0600
Subject: [Freeswitch-svn] [commit] r11369 -
	freeswitch/trunk/src/mod/xml_int/mod_xml_rpc
Message-ID: 

Author: anthm
Date: Thu Jan 22 13:06:48 2009
New Revision: 11369

Log:
fix domain param lookup

Modified:
   freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c

Modified: freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
==============================================================================
--- freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	(original)
+++ freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	Thu Jan 22 13:06:48 2009
@@ -148,7 +148,7 @@
 	return ret ? SWITCH_STATUS_FALSE : SWITCH_STATUS_SUCCESS;
 }
 
-static abyss_bool http_directory_auth(TSession * r, char *domain_name)
+static abyss_bool http_directory_auth(TSession *r, char *domain_name)
 {
 	char *p;
 	char *x;
@@ -210,7 +210,7 @@
 				switch_event_create(¶ms, SWITCH_EVENT_REQUEST_PARAMS);
 				switch_assert(params);
 				switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "mailbox", "check");
-
+				
 				if (switch_xml_locate_user("id", user, domain_name, NULL, &x_domain_root, &x_domain, &x_user, NULL, params) != SWITCH_STATUS_SUCCESS) {
 					switch_event_destroy(¶ms);
 					goto fail;
@@ -218,17 +218,20 @@
 
 				switch_event_destroy(¶ms);
 				box = switch_xml_attr_soft(x_user, "mailbox");
-				
-				for (x_param = switch_xml_child(x_domain, "param"); x_param; x_param = x_param->next) {
-					const char *var = switch_xml_attr_soft(x_param, "name");
-					const char *val = switch_xml_attr_soft(x_param, "value");
 
-					if (!strcasecmp(var, "password")) {
-						mypass1 = val;
-					} else if (!strcasecmp(var, "vm-password")) {
-						mypass2 = val;
-					} else if (!strncasecmp(var, "http-", 5)) {
-						ResponseAddField(r, (char *) var, (char *) val);
+				if ((x_params = switch_xml_child(x_domain, "params"))) {
+				
+					for (x_param = switch_xml_child(x_params, "param"); x_param; x_param = x_param->next) {
+						const char *var = switch_xml_attr_soft(x_param, "name");
+						const char *val = switch_xml_attr_soft(x_param, "value");
+						
+						if (!strcasecmp(var, "password")) {
+							mypass1 = val;
+						} else if (!strcasecmp(var, "vm-password")) {
+							mypass2 = val;
+						} else if (!strncasecmp(var, "http-", 5)) {
+							ResponseAddField(r, (char *) var, (char *) val);
+						}
 					}
 				}
 
@@ -240,7 +243,7 @@
 				for (x_param = switch_xml_child(x_params, "param"); x_param; x_param = x_param->next) {
 					const char *var = switch_xml_attr_soft(x_param, "name");
 					const char *val = switch_xml_attr_soft(x_param, "value");
-
+					
 					if (!strcasecmp(var, "password")) {
 						mypass1 = val;
 					} else if (!strcasecmp(var, "vm-password")) {


From mikej at freeswitch.org  Thu Jan 22 11:30:47 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 13:30:47 -0600
Subject: [Freeswitch-svn] [commit] r11375 - freeswitch/branches/1.0/src
Message-ID: 

Author: mikej
Date: Thu Jan 22 13:30:46 2009
New Revision: 11375

Log:
core: fix c leg no hangup when converting attended to blind transfer before b leg answers (MODENDP-165/r:11061)

Modified:
   freeswitch/branches/1.0/src/switch_ivr_bridge.c
   freeswitch/branches/1.0/src/switch_ivr_originate.c

Modified: freeswitch/branches/1.0/src/switch_ivr_bridge.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_ivr_bridge.c	(original)
+++ freeswitch/branches/1.0/src/switch_ivr_bridge.c	Thu Jan 22 13:30:46 2009
@@ -829,8 +829,8 @@
 			switch_channel_set_variable(peer_channel, SWITCH_BRIDGE_VARIABLE, switch_core_session_get_uuid(session));
 
 			if (!switch_channel_media_ready(caller_channel) || 
-				!(switch_channel_test_flag(peer_channel, CF_ANSWERED) || switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA))) {
-				if ((status = switch_ivr_wait_for_answer(session, peer_session)) != SWITCH_STATUS_SUCCESS) {
+				(!switch_channel_test_flag(peer_channel, CF_ANSWERED) && !switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA))) {
+				if ((status = switch_ivr_wait_for_answer(session, peer_session)) != SWITCH_STATUS_SUCCESS || !switch_channel_ready(caller_channel)) {
 					switch_channel_state_t w_state = switch_channel_get_state(caller_channel);
 					switch_channel_hangup(peer_channel, SWITCH_CAUSE_ALLOTTED_TIMEOUT);
 					if (w_state < CS_HANGUP && w_state != CS_ROUTING && w_state != CS_PARK && 
@@ -850,6 +850,7 @@
 					switch_core_session_rwunlock(peer_session);
 					goto done;
 				}
+
 				if (switch_channel_test_flag(peer_channel, CF_ANSWERED) && !switch_channel_test_flag(caller_channel, CF_ANSWERED)) {
 					switch_channel_answer(caller_channel);
 				}

Modified: freeswitch/branches/1.0/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_ivr_originate.c	(original)
+++ freeswitch/branches/1.0/src/switch_ivr_originate.c	Thu Jan 22 13:30:46 2009
@@ -330,7 +330,7 @@
 	}
 
 	if ((switch_channel_test_flag(peer_channel, CF_ANSWERED) || switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA))) {
-		return SWITCH_STATUS_SUCCESS;
+		goto end;
 	}
 
 	switch_zmalloc(write_frame.data, SWITCH_RECOMMENDED_BUFFER_SIZE);
@@ -551,7 +551,9 @@
 
 	switch_safe_free(write_frame.data);
 
-	return status;
+ end:
+
+	return (!caller_channel || switch_channel_ready(caller_channel)) ? status : SWITCH_STATUS_FALSE;
 }
 
 static void process_import(switch_core_session_t *session, switch_channel_t *peer_channel)


From andrew at freeswitch.org  Thu Jan 22 11:34:53 2009
From: andrew at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 13:34:53 -0600
Subject: [Freeswitch-svn] [commit] r11376 -
	freeswitch/trunk/src/mod/event_handlers/mod_erlang_event
Message-ID: 

Author: andrew
Date: Thu Jan 22 13:34:53 2009
New Revision: 11376

Log:
Merge in Rob Charlton's patch for outbound session support in mod_erlang_event


Added:
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h
Modified:
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/Makefile
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c

Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/Makefile
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/Makefile	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/Makefile	Thu Jan 22 13:34:53 2009
@@ -1,5 +1,8 @@
 BASE=../../../..
+LOCAL_SOURCES=handle_msg.c ei_helpers.c
+LOCAL_OBJS=handle_msg.o ei_helpers.o
 include $(BASE)/build/modmake.rules
 
-LOCAL_CFLAGS=-I/usr/local/lib/erlang/lib/erl_interface-3.5.8/include -L/usr/local/lib/erlang/lib/erl_interface-3.5.8/lib/ -D_REENTRANT
+
+LOCAL_CFLAGS=-I/usr/local/lib/erlang/lib/erl_interface-3.5.9/include -L/usr/local/lib/erlang/lib/erl_interface-3.5.9/lib/ -D_REENTRANT
 LOCAL_LDFLAGS=-lei

Added: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c	Thu Jan 22 13:34:53 2009
@@ -0,0 +1,183 @@
+/* 
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II 
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Anthony Minessale II 
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * 
+ * Anthony Minessale II 
+ * Andrew Thompson 
+ * Rob Charlton 
+ *
+ *
+ * ei_helpers.c -- helper functions for ei
+ *
+ */
+#include 
+#include 
+#include "mod_erlang_event.h"
+
+/* Stolen from code added to ei in R12B-5.
+ * Since not everyone has this version yet;
+ * provide our own version. 
+ * */
+
+#define put8(s,n) do { \
+	  (s)[0] = (char)((n) & 0xff); \
+	  (s) += 1; \
+} while (0)
+
+#define put32be(s,n) do {  \
+	  (s)[0] = ((n) >>  24) & 0xff; \
+	  (s)[1] = ((n) >>  16) & 0xff; \
+	  (s)[2] = ((n) >>  8) & 0xff;  \
+	  (s)[3] = (n) & 0xff; \
+	  (s) += 4; \
+} while (0)
+
+void ei_link(listener_t *listener, erlang_pid *from, erlang_pid *to) {
+	char msgbuf[2048];
+	char *s;
+	int index = 0;
+	/*int n;*/
+
+	index = 5;                                     /* max sizes: */
+	ei_encode_version(msgbuf,&index);                     /*   1 */
+	ei_encode_tuple_header(msgbuf,&index,3);
+	ei_encode_long(msgbuf,&index,ERL_LINK);
+	ei_encode_pid(msgbuf,&index,from);                    /* 268 */
+	ei_encode_pid(msgbuf,&index,to);                      /* 268 */
+
+	/* 5 byte header missing */
+	s = msgbuf;
+	put32be(s, index - 4);                                /*   4 */
+	put8(s, ERL_PASS_THROUGH);                            /*   1 */
+	/* sum:  542 */
+
+	switch_mutex_lock(listener->sock_mutex);
+	write(listener->sockfd, msgbuf, index);
+	switch_mutex_unlock(listener->sock_mutex);
+}
+
+void ei_encode_switch_event_headers(ei_x_buff *ebuf, switch_event_t *event)
+{
+	int i;
+	char *uuid = switch_event_get_header(event, "unique-id");
+
+	switch_event_header_t *hp;
+
+	for (i = 0, hp = event->headers; hp; hp = hp->next, i++);
+
+	if (event->body)
+		i++;
+
+	ei_x_encode_list_header(ebuf, i+1);
+
+	if (uuid) {
+		ei_x_encode_string(ebuf, switch_event_get_header(event, "unique-id"));
+	} else {
+		ei_x_encode_atom(ebuf, "undefined");
+	}
+
+	for (hp = event->headers; hp; hp = hp->next) {
+		ei_x_encode_tuple_header(ebuf, 2);
+		ei_x_encode_string(ebuf, hp->name);
+		ei_x_encode_string(ebuf, hp->value);
+	}
+
+	if (event->body) {
+		ei_x_encode_tuple_header(ebuf, 2);
+		ei_x_encode_string(ebuf, "body");
+		ei_x_encode_string(ebuf, event->body);
+	}
+
+	ei_x_encode_empty_list(ebuf);
+}
+
+
+void ei_encode_switch_event_tag(ei_x_buff *ebuf, switch_event_t *event, char *tag)
+{
+
+	ei_x_encode_tuple_header(ebuf, 2);
+	ei_x_encode_atom(ebuf, tag);
+	ei_encode_switch_event_headers(ebuf, event);
+}
+
+
+switch_status_t initialise_ei(struct ei_cnode_s *ec)
+{
+	switch_status_t rv;
+	struct sockaddr_in server_addr;
+
+	/* zero out the struct before we use it */
+	memset(&server_addr, 0, sizeof(server_addr));
+	
+	/* convert the configured IP to network byte order, handing errors */
+	rv = inet_pton(AF_INET, prefs.ip, &server_addr.sin_addr.s_addr);
+	if (rv == 0) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not parse invalid ip address: %s\n", prefs.ip);
+		return SWITCH_STATUS_FALSE;
+	} else if (rv == -1) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error when parsing ip address %s : %s\n", prefs.ip, strerror(errno));
+		return SWITCH_STATUS_FALSE;
+	}
+	
+	/* set the address family and port */
+	server_addr.sin_family = AF_INET;
+	server_addr.sin_port = htons(prefs.port);
+	
+	struct hostent *nodehost = gethostbyaddr(&server_addr.sin_addr.s_addr, sizeof(server_addr.sin_addr.s_addr), AF_INET);
+	
+	char *thishostname = nodehost->h_name;
+	char thisnodename[MAXNODELEN+1];
+	
+	if (!strcmp(thishostname, "localhost"))
+		gethostname(thishostname, EI_MAXHOSTNAMELEN);
+	
+	if (prefs.shortname) {
+		char *off;
+		if ((off = strchr(thishostname, '.'))) {
+			*off = '\0';
+		}
+	}
+	
+	snprintf(thisnodename, MAXNODELEN+1, "%s@%s", prefs.nodename, thishostname);
+	
+	/* init the ei stuff */
+	if (ei_connect_xinit(ec, thishostname, prefs.nodename, thisnodename, (Erl_IpAddr)(&server_addr.sin_addr.s_addr), prefs.cookie, 0) < 0) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to init ei connection\n");
+		return SWITCH_STATUS_FALSE;
+	}
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ei initialized at %s\n", thisnodename);
+	return SWITCH_STATUS_SUCCESS;
+}
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4:
+ */

Added: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c	Thu Jan 22 13:34:53 2009
@@ -0,0 +1,713 @@
+/* 
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II 
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Anthony Minessale II 
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * 
+ * Anthony Minessale II 
+ * Andrew Thompson 
+ * Rob Charlton 
+ *
+ *
+ * handle_msg.c -- handle messages received from erlang nodes
+ *
+ */
+#include 
+#include 
+#include "mod_erlang_event.h"
+
+static char *MARKER = "1";
+
+static void *SWITCH_THREAD_FUNC api_exec(switch_thread_t *thread, void *obj)
+{
+	switch_bool_t r = SWITCH_TRUE;
+	struct api_command_struct *acs = (struct api_command_struct *) obj;
+	switch_stream_handle_t stream = { 0 };
+	char *reply, *freply = NULL;
+	switch_status_t status;
+
+	if (!acs) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Internal error.\n");
+		return NULL;
+	}
+
+	if (!acs->listener || !acs->listener->rwlock || switch_thread_rwlock_tryrdlock(acs->listener->rwlock) != SWITCH_STATUS_SUCCESS) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error! cannot get read lock.\n");
+		goto done;
+	}
+
+	SWITCH_STANDARD_STREAM(stream);
+
+	if ((status = switch_api_execute(acs->api_cmd, acs->arg, NULL, &stream)) == SWITCH_STATUS_SUCCESS) {
+		reply = stream.data;
+	} else {
+		freply = switch_mprintf("%s: Command not found!\n", acs->api_cmd);
+		reply = freply;
+		r = SWITCH_FALSE;
+	}
+
+	if (!reply) {
+		reply = "Command returned no output!";
+		r = SWITCH_FALSE;
+	}
+
+	if (*reply == '-')
+		r = SWITCH_FALSE;
+
+	if (acs->bg) {
+		switch_event_t *event;
+
+		if (switch_event_create(&event, SWITCH_EVENT_BACKGROUND_JOB) == SWITCH_STATUS_SUCCESS) {
+			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-UUID", acs->uuid_str);
+			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-Command", acs->api_cmd);
+
+			ei_x_buff ebuf;
+			ei_x_new_with_version(&ebuf);
+
+			if (acs->arg) {
+				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-Command-Arg", acs->arg);
+			}
+
+			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-Successful", r ? "true" : "false");
+			switch_event_add_body(event, "%s", reply);
+
+			switch_event_fire(&event);
+
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending bgapi reply to %s\n", acs->pid.node);
+
+			ei_x_encode_tuple_header(&ebuf, 3);
+
+			if (r)
+				ei_x_encode_atom(&ebuf, "bgok");
+			else
+				ei_x_encode_atom(&ebuf, "bgerror");
+
+			ei_x_encode_string(&ebuf, acs->uuid_str);
+			ei_x_encode_string(&ebuf, reply);
+
+			switch_mutex_lock(acs->listener->sock_mutex);
+			ei_send(acs->listener->sockfd, &acs->pid, ebuf.buff, ebuf.index);
+			switch_mutex_unlock(acs->listener->sock_mutex);
+
+			ei_x_free(&ebuf);
+		}
+	} else {
+		ei_x_buff rbuf;
+		ei_x_new_with_version(&rbuf);
+		ei_x_encode_tuple_header(&rbuf, 2);
+
+		if (!strlen(reply)) {
+			reply = "Command returned no output!";
+			r = SWITCH_FALSE;
+		}
+
+		if (r) {
+			ei_x_encode_atom(&rbuf, "ok");
+		} else {
+			ei_x_encode_atom(&rbuf, "error");
+		}
+		
+		ei_x_encode_string(&rbuf, reply);
+
+
+		switch_mutex_lock(acs->listener->sock_mutex);
+		ei_send(acs->listener->sockfd, &acs->pid, rbuf.buff, rbuf.index);
+		switch_mutex_unlock(acs->listener->sock_mutex);
+
+		ei_x_free(&rbuf);
+	}
+
+	switch_safe_free(stream.data);
+	switch_safe_free(freply);
+
+	if (acs->listener->rwlock) {
+		switch_thread_rwlock_unlock(acs->listener->rwlock);
+	}
+
+  done:
+	if (acs->bg) {
+		switch_memory_pool_t *pool = acs->pool;
+		acs = NULL;
+		switch_core_destroy_memory_pool(&pool);
+		pool = NULL;
+	}
+	return NULL;
+
+}
+
+static switch_status_t  handle_msg_fetch_reply(listener_t *listener, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
+
+	if (ei_decode_string(buf->buff, &buf->index, uuid_str)) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "badarg");
+	}
+	else {
+		ei_x_buff *nbuf = switch_core_alloc(listener->pool, sizeof(nbuf));
+		nbuf->buff = switch_core_alloc(listener->pool, buf->buffsz);
+		memcpy(nbuf->buff, buf->buff, buf->buffsz);
+		nbuf->index = buf->index;
+		nbuf->buffsz = buf->buffsz;
+	
+		switch_core_hash_insert(listener->fetch_reply_hash, uuid_str, nbuf);
+		ei_x_encode_atom(rbuf, "ok");
+	}
+	return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t handle_msg_set_log_level(listener_t *listener, int arity, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	switch_log_level_t ltype = SWITCH_LOG_DEBUG;
+	char loglevelstr[MAXATOMLEN];
+	if (arity != 2 ||
+		ei_decode_atom(buf->buff, &buf->index, loglevelstr)) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "badarg");
+	}
+	else {
+		ltype = switch_log_str2level(loglevelstr);
+		
+		if (ltype && ltype != SWITCH_LOG_INVALID) {
+			listener->level = ltype;
+			ei_x_encode_atom(rbuf, "ok");
+		} else {
+			ei_x_encode_tuple_header(rbuf, 2);
+			ei_x_encode_atom(rbuf, "error");
+			ei_x_encode_atom(rbuf, "badarg");
+		}
+	}
+	return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t handle_msg_event(listener_t *listener, int arity, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	char atom[MAXATOMLEN];
+
+	if (arity == 1) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "badarg");
+	}
+	else {
+		int custom = 0;
+		switch_event_types_t type;
+		
+		if (!switch_test_flag(listener, LFLAG_EVENTS)) {
+			switch_set_flag_locked(listener, LFLAG_EVENTS);
+		}
+		
+		for (int i = 1; i < arity; i++) {
+			if (!ei_decode_atom(buf->buff, &buf->index, atom)) {
+				
+				if (custom) {
+					switch_core_hash_insert(listener->event_hash, atom, MARKER);
+				} else if (switch_name_event(atom, &type) == SWITCH_STATUS_SUCCESS) {
+					if (type == SWITCH_EVENT_ALL) {
+						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "ALL events enabled\n");
+						uint32_t x = 0;
+						for (x = 0; x < SWITCH_EVENT_ALL; x++) {
+							listener->event_list[x] = 1;
+						}
+					}
+					if (type <= SWITCH_EVENT_ALL) {
+						listener->event_list[type] = 1;
+					}
+					if (type == SWITCH_EVENT_CUSTOM) {
+						custom++;
+					}
+					
+				}
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "enable event %s\n", atom);
+			}
+		}
+		ei_x_encode_atom(rbuf, "ok");
+	}
+	return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t handle_msg_nixevent(listener_t *listener, int arity, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	char atom[MAXATOMLEN];
+
+	if (arity == 1) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "badarg");
+	}
+	else {
+		int custom = 0;
+		switch_event_types_t type;
+		
+		for (int i = 1; i < arity; i++) {
+			if (!ei_decode_atom(buf->buff, &buf->index, atom)) {
+				
+				if (custom) {
+					switch_core_hash_delete(listener->event_hash, atom);
+				} else if (switch_name_event(atom, &type) == SWITCH_STATUS_SUCCESS) {
+					uint32_t x = 0;
+					
+					if (type == SWITCH_EVENT_CUSTOM) {
+						custom++;
+					} else if (type == SWITCH_EVENT_ALL) {
+						for (x = 0; x <= SWITCH_EVENT_ALL; x++) {
+							listener->event_list[x] = 0;
+						}
+					} else {
+						if (listener->event_list[SWITCH_EVENT_ALL]) {
+							listener->event_list[SWITCH_EVENT_ALL] = 0;
+							for (x = 0; x < SWITCH_EVENT_ALL; x++) {
+								listener->event_list[x] = 1;
+							}
+						}
+						listener->event_list[type] = 0;
+					}
+				}
+			}
+		}
+		ei_x_encode_atom(rbuf, "ok");
+	}
+	return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t handle_msg_api(listener_t *listener, erlang_msg *msg, int arity, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	char api_cmd[MAXATOMLEN];
+	char arg[1024];
+	if (arity < 3 ||
+		ei_decode_atom(buf->buff, &buf->index, api_cmd) ||
+		ei_decode_string(buf->buff, &buf->index, arg)) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "badarg");
+		return SWITCH_STATUS_SUCCESS;
+	}
+	else {
+		struct api_command_struct acs = { 0 };
+		acs.listener = listener;
+		acs.api_cmd = api_cmd;
+		acs.arg = arg;
+		acs.bg = 0;
+		acs.pid = msg->from;
+		api_exec(NULL, (void *) &acs);
+		/* don't reply */
+		return SWITCH_STATUS_FALSE;
+	}
+}
+
+static switch_status_t handle_msg_bgapi(listener_t *listener, erlang_msg *msg, int arity, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	char api_cmd[MAXATOMLEN];
+	char arg[1024];
+	if (arity < 3 ||
+		ei_decode_atom(buf->buff, &buf->index, api_cmd) ||
+		ei_decode_string(buf->buff, &buf->index, arg)) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "badarg");
+	}
+	else {
+		struct api_command_struct *acs = NULL;
+		switch_memory_pool_t *pool;
+		switch_thread_t *thread;
+		switch_threadattr_t *thd_attr = NULL;
+		switch_uuid_t uuid;
+		
+		switch_core_new_memory_pool(&pool);
+		acs = switch_core_alloc(pool, sizeof(*acs));
+		switch_assert(acs);
+		acs->pool = pool;
+		acs->listener = listener;
+		acs->api_cmd = switch_core_strdup(acs->pool, api_cmd);
+		acs->arg = switch_core_strdup(acs->pool, arg);
+		acs->bg = 1;
+		acs->pid = msg->from;
+		
+		switch_threadattr_create(&thd_attr, acs->pool);
+		switch_threadattr_detach_set(thd_attr, 1);
+		switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
+		
+		switch_uuid_get(&uuid);
+		switch_uuid_format(acs->uuid_str, &uuid);
+		switch_thread_create(&thread, thd_attr, api_exec, acs, acs->pool);
+		
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "ok");
+		ei_x_encode_string(rbuf, acs->uuid_str);
+	}
+	return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t handle_msg_sendevent(listener_t *listener, int arity, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	char ename[MAXATOMLEN];
+	int headerlength;
+	
+	if (ei_decode_atom(buf->buff, &buf->index, ename) ||
+		ei_decode_list_header(buf->buff, &buf->index, &headerlength)) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "badarg");
+	}
+	else {
+		switch_event_types_t etype;
+		if (switch_name_event(ename, &etype) == SWITCH_STATUS_SUCCESS) {
+			switch_event_t *event;
+			if (switch_event_create(&event, etype) == SWITCH_STATUS_SUCCESS) {
+				char key[1024];
+				char value[1024];
+				int i = 0;
+				switch_bool_t fail = SWITCH_FALSE;
+
+				while(!ei_decode_tuple_header(buf->buff, &buf->index, &arity) && arity == 2) {
+					i++;
+					if (ei_decode_string(buf->buff, &buf->index, key) ||
+						ei_decode_string(buf->buff, &buf->index, value)) {
+						fail = SWITCH_TRUE;
+						break;
+					}
+					
+					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, key, value);
+				}
+				
+				if (headerlength != i || fail) {
+					ei_x_encode_tuple_header(rbuf, 2);
+					ei_x_encode_atom(rbuf, "error");
+					ei_x_encode_atom(rbuf, "badarg");
+				}
+				else {
+					switch_event_fire(&event);
+					ei_x_encode_atom(rbuf, "ok");
+				}
+			}
+		}
+	}
+	return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t handle_msg_sendmsg(listener_t *listener, int arity, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	char uuid[37];
+	int headerlength;
+			
+	if (ei_decode_string(buf->buff, &buf->index, uuid) ||
+		ei_decode_list_header(buf->buff, &buf->index, &headerlength)) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "badarg");
+	}
+	else {
+		switch_core_session_t *session;
+		if (!switch_strlen_zero(uuid) && (session = switch_core_session_locate(uuid))) {
+			switch_event_t *event;	  
+			if (switch_event_create(&event, SWITCH_EVENT_SEND_MESSAGE) == SWITCH_STATUS_SUCCESS) {
+				
+				char key[1024];
+				char value[1024];
+				int i = 0;
+				switch_bool_t fail = SWITCH_FALSE;
+				while(!ei_decode_tuple_header(buf->buff, &buf->index, &arity) && arity == 2) {
+					i++;
+					if (ei_decode_string(buf->buff, &buf->index, key) ||
+						ei_decode_string(buf->buff, &buf->index, value)) {
+						fail = SWITCH_TRUE;
+						break;
+					}					
+					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, key, value);
+				}
+				
+				if (headerlength != i || fail) {
+					ei_x_encode_tuple_header(rbuf, 2);
+					ei_x_encode_atom(rbuf, "error");
+					ei_x_encode_atom(rbuf, "badarg");
+				}
+				else {
+					if (switch_core_session_queue_private_event(session, &event) == SWITCH_STATUS_SUCCESS) {
+						ei_x_encode_atom(rbuf, "ok");
+					} else {
+						ei_x_encode_tuple_header(rbuf, 2);
+						ei_x_encode_atom(rbuf, "error");
+						ei_x_encode_atom(rbuf, "badmem");
+					}
+					
+				}
+			}
+			/* release the lock returned by switch_core_locate_session */
+			switch_core_session_rwunlock(session);
+
+		} else {
+			ei_x_encode_tuple_header(rbuf, 2);
+			ei_x_encode_atom(rbuf, "error");
+			ei_x_encode_atom(rbuf, "nosession");
+		}
+	}
+	return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t handle_msg_bind(listener_t *listener, erlang_msg *msg, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	/* format is (result|config|directory|dialplan|phrases)  */
+	char sectionstr[MAXATOMLEN];
+	switch_xml_section_t section;
+
+	if (ei_decode_atom(buf->buff, &buf->index, sectionstr) ||
+		!(section = switch_xml_parse_section_string(sectionstr))) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "badarg");
+	}
+	else {
+		struct erlang_binding *binding, *ptr;
+
+		if (!(binding = switch_core_alloc(listener->pool, sizeof(*binding)))) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error\n");
+			ei_x_encode_tuple_header(rbuf, 2);
+			ei_x_encode_atom(rbuf, "error");
+			ei_x_encode_atom(rbuf, "badmem");
+		}
+		else {
+			binding->section = section;
+			binding->pid = msg->from;
+			binding->listener = listener;
+
+			switch_core_hash_init(&listener->fetch_reply_hash, listener->pool);
+
+			switch_mutex_lock(globals.listener_mutex);
+
+			for (ptr = bindings.head; ptr && ptr->next; ptr = ptr->next);
+
+			if (ptr) {
+				ptr->next = binding;
+			} else {
+				bindings.head = binding;
+			}
+			
+			switch_xml_set_binding_sections(bindings.search_binding, switch_xml_get_binding_sections(bindings.search_binding) | section);
+			switch_mutex_unlock(globals.listener_mutex);
+
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "sections %d\n", switch_xml_get_binding_sections(bindings.search_binding));
+
+			ei_link(listener, ei_self(listener->ec), &msg->from);
+			ei_x_encode_atom(rbuf, "ok");
+		}
+	}
+	return SWITCH_STATUS_SUCCESS;
+}
+
+/* {handlecall,,} */
+static switch_status_t handle_msg_handlecall(listener_t *listener, int arity, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	char reg_name[MAXATOMLEN];
+	char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
+
+	if (arity != 3 ||
+		ei_decode_string(buf->buff, &buf->index, uuid_str) ||
+		ei_decode_string(buf->buff, &buf->index, reg_name)) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "badarg");
+	}
+	else {
+		switch_core_session_t *session;
+		if (!switch_strlen_zero(uuid_str) && (session = switch_core_session_locate(uuid_str))) {
+			/* create a new sesion list element and attach it to this listener */
+			if (attach_call_to_listener(listener,reg_name,session)) {
+				ei_x_encode_atom(rbuf, "ok");
+			}
+			else {
+				ei_x_encode_tuple_header(rbuf, 2);
+				ei_x_encode_atom(rbuf, "error");
+				ei_x_encode_atom(rbuf, "badsession");
+			}
+		}
+		else {
+			ei_x_encode_tuple_header(rbuf, 2);
+			ei_x_encode_atom(rbuf, "error");
+			ei_x_encode_atom(rbuf, "badarg");
+		}
+	}
+	return SWITCH_STATUS_SUCCESS;
+}
+
+static switch_status_t handle_msg_tuple(listener_t *listener, erlang_msg *msg, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	char tupletag[MAXATOMLEN];
+	int arity;
+	switch_status_t ret = SWITCH_STATUS_SUCCESS;
+
+	ei_decode_tuple_header(buf->buff, &buf->index, &arity);
+	if (ei_decode_atom(buf->buff, &buf->index, tupletag)) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "badarg");
+	}
+	else {
+		if (!strncmp(tupletag, "fetch_reply", MAXATOMLEN)) {
+			ret = handle_msg_fetch_reply(listener,buf,rbuf);
+		} else if (!strncmp(tupletag, "set_log_level", MAXATOMLEN)) {
+			ret = handle_msg_set_log_level(listener,arity,buf,rbuf);
+		} else if (!strncmp(tupletag, "event", MAXATOMLEN)) {
+			ret = handle_msg_event(listener,arity,buf,rbuf);
+		} else if (!strncmp(tupletag, "nixevent", MAXATOMLEN)) {
+			ret = handle_msg_nixevent(listener,arity,buf,rbuf);
+		} else if (!strncmp(tupletag, "api", MAXATOMLEN)) {
+			ret = handle_msg_api(listener,msg,arity,buf,rbuf);
+		} else if (!strncmp(tupletag, "bgapi", MAXATOMLEN)) {
+			ret = handle_msg_bgapi(listener,msg,arity,buf,rbuf);
+		} else if (!strncmp(tupletag, "sendevent", MAXATOMLEN)) {
+			ret = handle_msg_sendevent(listener,arity,buf,rbuf);
+		} else if (!strncmp(tupletag, "sendmsg", MAXATOMLEN)) {
+			ret = handle_msg_sendmsg(listener,arity,buf,rbuf);
+		} else if (!strncmp(tupletag, "bind", MAXATOMLEN)) {
+			ret = handle_msg_bind(listener,msg,buf,rbuf);
+		} else if (!strncmp(tupletag, "handlecall", MAXATOMLEN)) {
+			ret = handle_msg_handlecall(listener,arity,buf,rbuf);
+		} else {
+			ei_x_encode_tuple_header(rbuf, 2);
+			ei_x_encode_atom(rbuf, "error");
+			ei_x_encode_atom(rbuf, "undef");
+		}
+	}
+	return ret;
+}
+
+static switch_status_t  handle_msg_atom(listener_t *listener, erlang_msg *msg, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	char atom[MAXATOMLEN];
+	switch_status_t ret = SWITCH_STATUS_SUCCESS;
+
+	if (ei_decode_atom(buf->buff, &buf->index, atom)) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "badarg");
+	}
+	else if (!strncmp(atom, "nolog", MAXATOMLEN)) {
+		if (switch_test_flag(listener, LFLAG_LOG)) {
+			switch_clear_flag_locked(listener, LFLAG_LOG);
+		}
+		ei_x_encode_atom(rbuf, "ok");
+	} else if (!strncmp(atom, "register_log_handler", MAXATOMLEN)) {
+		ei_link(listener, ei_self(listener->ec), &msg->from);
+		listener->log_pid = msg->from;
+		listener->level = SWITCH_LOG_DEBUG;
+		switch_set_flag(listener, LFLAG_LOG);
+		ei_x_encode_atom(rbuf, "ok");
+	} else if (!strncmp(atom, "register_event_handler", MAXATOMLEN)) {
+		ei_link(listener, ei_self(listener->ec), &msg->from);
+		listener->event_pid = msg->from;
+		if (!switch_test_flag(listener, LFLAG_EVENTS)) {
+			switch_set_flag_locked(listener, LFLAG_EVENTS);
+		}
+		ei_x_encode_atom(rbuf, "ok");
+	} else if (!strncmp(atom, "noevents", MAXATOMLEN)) {
+		void *pop;
+		/*purge the event queue */
+		while (switch_queue_trypop(listener->event_queue, &pop) == SWITCH_STATUS_SUCCESS);
+		
+		if (switch_test_flag(listener, LFLAG_EVENTS)) {
+			uint8_t x = 0;
+			switch_clear_flag_locked(listener, LFLAG_EVENTS);
+			for (x = 0; x <= SWITCH_EVENT_ALL; x++) {
+				listener->event_list[x] = 0;
+			}
+			/* wipe the hash */
+			switch_core_hash_destroy(&listener->event_hash);
+			switch_core_hash_init(&listener->event_hash, listener->pool);
+			ei_x_encode_atom(rbuf, "ok");
+		} else {
+			ei_x_encode_tuple_header(rbuf, 2);
+			ei_x_encode_atom(rbuf, "error");
+			ei_x_encode_atom(rbuf, "notlistening");
+		}
+	} else if (!strncmp(atom, "exit", MAXATOMLEN)) {
+		ei_x_encode_atom(rbuf, "ok");
+		ret = SWITCH_STATUS_TERM;
+	} else if (!strncmp(atom, "getpid", MAXATOMLEN)) {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "ok");
+		ei_x_encode_pid(rbuf, ei_self(listener->ec));
+	} else if (!strncmp(atom, "link", MAXATOMLEN)) {
+		/* debugging */
+		ei_link(listener, ei_self(listener->ec), &msg->from);
+		ret = SWITCH_STATUS_FALSE;
+	} else {
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "undef");
+	}
+	
+	return ret;
+}
+
+int handle_msg(listener_t *listener, erlang_msg *msg, ei_x_buff *buf, ei_x_buff *rbuf)
+{
+	int type, size, version;
+	switch_status_t ret = SWITCH_STATUS_SUCCESS;
+
+	buf->index = 0;
+	ei_decode_version(buf->buff, &buf->index, &version);
+	ei_get_type(buf->buff, &buf->index, &type, &size);
+
+	switch(type) {
+	case ERL_SMALL_TUPLE_EXT :
+	case ERL_LARGE_TUPLE_EXT :
+		ret = handle_msg_tuple(listener,msg,buf,rbuf);
+		break;
+						 
+	case ERL_ATOM_EXT :
+		ret = handle_msg_atom(listener,msg,buf,rbuf);
+		break;
+
+	default :
+		/* some other kind of erlang term */
+		ei_x_encode_tuple_header(rbuf, 2);
+		ei_x_encode_atom(rbuf, "error");
+		ei_x_encode_atom(rbuf, "undef");
+		break;
+	}
+
+	if (SWITCH_STATUS_FALSE==ret)
+		return 0;
+	else {
+		switch_mutex_lock(listener->sock_mutex);
+		ei_send(listener->sockfd, &msg->from, rbuf->buff, rbuf->index);
+		switch_mutex_unlock(listener->sock_mutex);
+
+		if (SWITCH_STATUS_SUCCESS==ret)
+			return 0;
+		else /* SWITCH_STATUS_TERM */
+			return 1;
+	}
+}
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4:
+ */

Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c	Thu Jan 22 13:34:53 2009
@@ -25,101 +25,22 @@
  * 
  * Anthony Minessale II 
  * Andrew Thompson 
+ * Rob Charlton 
  *
  *
  * mod_erlang_event.c -- Erlang Event Handler derived from mod_event_socket
  *
  */
 #include 
-
 #include 
+#define DEFINE_GLOBALS
+#include "mod_erlang_event.h"
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_erlang_event_load);
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_erlang_event_shutdown);
 SWITCH_MODULE_RUNTIME_FUNCTION(mod_erlang_event_runtime);
 SWITCH_MODULE_DEFINITION(mod_erlang_event, mod_erlang_event_load, mod_erlang_event_shutdown, mod_erlang_event_runtime);
 
-static char *MARKER = "1";
-
-typedef enum {
-	LFLAG_AUTHED = (1 << 0),
-	LFLAG_RUNNING = (1 << 1),
-	LFLAG_EVENTS = (1 << 2),
-	LFLAG_LOG = (1 << 3),
-	LFLAG_FULL = (1 << 4),
-	LFLAG_MYEVENTS = (1 << 5),
-	LFLAG_SESSION = (1 << 6),
-	LFLAG_ASYNC = (1 << 7),
-	LFLAG_STATEFUL = (1 << 8)
-} event_flag_t;
-
-struct listener {
-	int sockfd;
-	struct ei_cnode_s *ec;
-	erlang_pid log_pid;
-	erlang_pid event_pid;
-	switch_queue_t *event_queue;
-	switch_queue_t *log_queue;
-	switch_memory_pool_t *pool;
-	switch_mutex_t *flag_mutex;
-	switch_mutex_t *sock_mutex;
-	char *ebuf;
-	uint32_t flags;
-	switch_log_level_t level;
-	uint8_t event_list[SWITCH_EVENT_ALL + 1];
-	switch_hash_t *event_hash;
-	switch_hash_t *fetch_reply_hash;
-	switch_thread_rwlock_t *rwlock;
-	switch_core_session_t *session;
-	int lost_events;
-	int lost_logs;
-	time_t last_flush;
-	uint32_t timeout;
-	uint32_t id;
-	char remote_ip[50];
-	/*switch_port_t remote_port;*/
-	struct listener *next;
-};
-
-typedef struct listener listener_t;
-
-static struct {
-	int sockfd;
-	switch_mutex_t *sock_mutex;
-	listener_t *listeners;
-	uint8_t ready;
-} listen_list;
-
-#define MAX_ACL 100
-
-struct erlang_binding {
-	switch_xml_section_t section;
-	erlang_pid pid;
-	char *registered_process; /* TODO */
-	listener_t *listener;
-	struct erlang_binding *next;
-};
-
-static struct {
-	struct erlang_binding *head;
-	switch_xml_binding_t *search_binding;
-} bindings;
-
-static struct {
-	switch_mutex_t *mutex;
-	char *ip;
-	char *nodename;
-	switch_bool_t shortname;
-	uint16_t port;
-	char *cookie;
-	int done;
-	int threads;
-	char *acl[MAX_ACL];
-	uint32_t acl_count;
-	uint32_t id;
-} prefs;
-
-
 static void remove_listener(listener_t *listener);
 
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_pref_ip, prefs.ip);
@@ -129,12 +50,6 @@
 static void *SWITCH_THREAD_FUNC listener_run(switch_thread_t *thread, void *obj);
 static void launch_listener_thread(listener_t *listener);
 
-static struct {
-	switch_mutex_t *listener_mutex;
-	switch_event_node_t *node;
-} globals;
-
-
 static switch_status_t socket_logger(const switch_log_node_t *node, switch_log_level_t level)
 {
 	listener_t *l;
@@ -173,49 +88,6 @@
 }
 
 
-/* Stolen from code added to ei in R12B-5.
- * Since not everyone has this verison yet;
- * provide our own version. 
- * */
-
-#define put8(s,n) do { \
-	  (s)[0] = (char)((n) & 0xff); \
-	  (s) += 1; \
-} while (0)
-
-#define put32be(s,n) do {  \
-	  (s)[0] = ((n) >>  24) & 0xff; \
-	  (s)[1] = ((n) >>  16) & 0xff; \
-	  (s)[2] = ((n) >>  8) & 0xff;  \
-	  (s)[3] = (n) & 0xff; \
-	  (s) += 4; \
-} while (0)
-
-static void ei_link(listener_t *listener, erlang_pid *from, erlang_pid *to) {
-	char msgbuf[2048];
-	char *s;
-	int index = 0;
-	/*int n;*/
-
-	index = 5;                                     /* max sizes: */
-	ei_encode_version(msgbuf,&index);                     /*   1 */
-	ei_encode_tuple_header(msgbuf,&index,3);
-	ei_encode_long(msgbuf,&index,ERL_LINK);
-	ei_encode_pid(msgbuf,&index,from);                    /* 268 */
-	ei_encode_pid(msgbuf,&index,to);                      /* 268 */
-
-	/* 5 byte header missing */
-	s = msgbuf;
-	put32be(s, index - 4);                                /*   4 */
-	put8(s, ERL_PASS_THROUGH);                            /*   1 */
-	/* sum:  542 */
-
-	switch_mutex_lock(listener->sock_mutex);
-	write(listener->sockfd, msgbuf, index);
-	switch_mutex_unlock(listener->sock_mutex);
-}
-
-
 static void expire_listener(listener_t **listener)
 {
 	void *pop;
@@ -268,54 +140,33 @@
 }
 
 
-static void ei_encode_switch_event_headers(ei_x_buff *ebuf, switch_event_t *event)
+static void send_event_to_attached_sessions(listener_t* listener, switch_event_t *event)
 {
-	int i;
 	char *uuid = switch_event_get_header(event, "unique-id");
+	switch_event_t *clone = NULL;
+	session_elem_t* s;
 
-	switch_event_header_t *hp;
-
-	for (i = 0, hp = event->headers; hp; hp = hp->next, i++);
-
-	if (event->body)
-		i++;
-
-	ei_x_encode_list_header(ebuf, i+1);
-
-	if (uuid) {
-		ei_x_encode_string(ebuf, switch_event_get_header(event, "unique-id"));
-	} else {
-		ei_x_encode_atom(ebuf, "undefined");
-	}
-
-	for (hp = event->headers; hp; hp = hp->next) {
-		ei_x_encode_tuple_header(ebuf, 2);
-		ei_x_encode_string(ebuf, hp->name);
-		ei_x_encode_string(ebuf, hp->value);
-	}
-
-	if (event->body) {
-		ei_x_encode_tuple_header(ebuf, 2);
-		ei_x_encode_string(ebuf, "body");
-		ei_x_encode_string(ebuf, event->body);
+	if (!uuid)
+		return;
+	switch_mutex_lock(listener->session_mutex);
+	for (s = listener->session_list; s; s = s->next) {
+		/* check the event uuid against the uuid of each session */
+		if (!strcmp(uuid, switch_core_session_get_uuid(s->session))) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending event to attached session\n");
+			if (switch_event_dup(&clone, event) == SWITCH_STATUS_SUCCESS) {
+				/* add the event to the queue for this session */
+				if (switch_queue_trypush(s->event_queue, clone) != SWITCH_STATUS_SUCCESS) {
+					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Lost event!\n");
+					switch_event_destroy(&clone);
+				}
+			} else {
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error!\n");
+			}
+		}
 	}
-
-	ei_x_encode_empty_list(ebuf);
-}
-
-
-static void ei_encode_switch_event_tag(ei_x_buff *ebuf, switch_event_t *event, char *tag)
-{
-
-	ei_x_encode_tuple_header(ebuf, 2);
-	ei_x_encode_atom(ebuf, tag);
-	ei_encode_switch_event_headers(ebuf, event);
+	switch_mutex_unlock(listener->session_mutex);
 }
 
-
-#define ei_encode_switch_event(_b, _e) ei_encode_switch_event_tag(_b, _e, "event")
-
-
 static void event_handler(switch_event_t *event)
 {
 	switch_event_t *clone = NULL;
@@ -335,7 +186,12 @@
 		
 		l = lp;
 		lp = lp->next;
-		
+
+		/* test all of the sessions attached to this event in case
+		   one of them should receive it as well
+		 */
+		send_event_to_attached_sessions(l,event);
+
 		if (!switch_test_flag(l, LFLAG_EVENTS)) {
 			continue;
 		}
@@ -355,13 +211,6 @@
 			}
 		}
 		
-		if (send && switch_test_flag(l, LFLAG_MYEVENTS)) {
-			char *uuid = switch_event_get_header(event, "unique-id");
-			if (!uuid || strcmp(uuid, switch_core_session_get_uuid(l->session))) {
-				send = 0;
-			}
-		}
-
 		if (send) {
 			if (switch_event_dup(&clone, event) == SWITCH_STATUS_SUCCESS) {
 				if (switch_queue_trypush(l->event_queue, clone) == SWITCH_STATUS_SUCCESS) {
@@ -429,134 +278,27 @@
 	switch_mutex_unlock(globals.listener_mutex);
 }
 
+/* Search for a listener already talking to the specified node */
+static listener_t * find_listener(char* nodename)
+{
+	listener_t *l = NULL;
 
-struct api_command_struct {
-	char *api_cmd;
-	char *arg;
-	listener_t *listener;
-	char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
-	uint8_t bg;
-	erlang_pid pid;
-	switch_memory_pool_t *pool;
-};
-
-
-static void *SWITCH_THREAD_FUNC api_exec(switch_thread_t *thread, void *obj)
-{
-	switch_bool_t r = SWITCH_TRUE;
-	struct api_command_struct *acs = (struct api_command_struct *) obj;
-	switch_stream_handle_t stream = { 0 };
-	char *reply, *freply = NULL;
-	switch_status_t status;
-
-	if (!acs) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Internal error.\n");
-		return NULL;
-	}
-
-	if (!acs->listener || !acs->listener->rwlock || switch_thread_rwlock_tryrdlock(acs->listener->rwlock) != SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error! cannot get read lock.\n");
-		goto done;
-	}
-
-
-	SWITCH_STANDARD_STREAM(stream);
-
-	if ((status = switch_api_execute(acs->api_cmd, acs->arg, NULL, &stream)) == SWITCH_STATUS_SUCCESS) {
-		reply = stream.data;
-	} else {
-		freply = switch_mprintf("%s: Command not found!\n", acs->api_cmd);
-		reply = freply;
-		r = SWITCH_FALSE;
-	}
-
-	if (!reply) {
-		reply = "Command returned no output!";
-		r = SWITCH_FALSE;
-	}
-
-	if (*reply == '-')
-		r = SWITCH_FALSE;
-
-	if (acs->bg) {
-		switch_event_t *event;
-
-		if (switch_event_create(&event, SWITCH_EVENT_BACKGROUND_JOB) == SWITCH_STATUS_SUCCESS) {
-			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-UUID", acs->uuid_str);
-			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-Command", acs->api_cmd);
-
-			ei_x_buff ebuf;
-			ei_x_new_with_version(&ebuf);
-
-			if (acs->arg) {
-				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-Command-Arg", acs->arg);
-			}
-
-			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-Successful", r ? "true" : "false");
-			switch_event_add_body(event, "%s", reply);
-
-			switch_event_fire(&event);
-
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending bgapi reply to %s\n", acs->pid.node);
-
-			ei_x_encode_tuple_header(&ebuf, 3);
-
-			if (r)
-				ei_x_encode_atom(&ebuf, "bgok");
-			else
-				ei_x_encode_atom(&ebuf, "bgerror");
-
-			ei_x_encode_string(&ebuf, acs->uuid_str);
-			ei_x_encode_string(&ebuf, reply);
-
-			switch_mutex_lock(acs->listener->sock_mutex);
-			ei_send(acs->listener->sockfd, &acs->pid, ebuf.buff, ebuf.index);
-			switch_mutex_unlock(acs->listener->sock_mutex);
-
-			ei_x_free(&ebuf);
-		}
-	} else {
-		ei_x_buff rbuf;
-		ei_x_new_with_version(&rbuf);
-		ei_x_encode_tuple_header(&rbuf, 2);
-
-		if (!strlen(reply)) {
-			reply = "Command returned no output!";
-			r = SWITCH_FALSE;
-		}
-
-		if (r) {
-			ei_x_encode_atom(&rbuf, "ok");
-		} else {
-			ei_x_encode_atom(&rbuf, "error");
+	switch_mutex_lock(globals.listener_mutex);
+	for (l = listen_list.listeners; l; l = l->next) {
+		if (!strncmp(nodename, l->peer_nodename, MAXNODELEN)) {
+			break;
 		}
-		
-		ei_x_encode_string(&rbuf, reply);
-
-
-		switch_mutex_lock(acs->listener->sock_mutex);
-		ei_send(acs->listener->sockfd, &acs->pid, rbuf.buff, rbuf.index);
-		switch_mutex_unlock(acs->listener->sock_mutex);
-
-		ei_x_free(&rbuf);
 	}
+	switch_mutex_unlock(globals.listener_mutex);
+	return l;
+}
 
-	switch_safe_free(stream.data);
-	switch_safe_free(freply);
-
-	if (acs->listener->rwlock) {
-		switch_thread_rwlock_unlock(acs->listener->rwlock);
-	}
-
-  done:
-	if (acs->bg) {
-		switch_memory_pool_t *pool = acs->pool;
-		acs = NULL;
-		switch_core_destroy_memory_pool(&pool);
-		pool = NULL;
-	}
-	return NULL;
-
+static void add_session_elem_to_listener(listener_t *listener, session_elem_t *session_element)
+{
+	switch_mutex_lock(listener->session_mutex);
+	session_element->next = listener->session_list;
+	listener->session_list = session_element;
+	switch_mutex_unlock(listener->session_mutex);
 }
 
 static switch_xml_t erlang_fetch(const char *sectionstr, const char *tag_name, const char *key_name, const char *key_value,
@@ -650,571 +392,187 @@
 }
 
 
-static int handle_msg(listener_t *listener, erlang_msg *msg, ei_x_buff *buf, ei_x_buff *rbuf)
+static switch_status_t notify_new_session(listener_t *listener, switch_core_session_t *session, char* reg_name)
 {
-	int type, size, version, arity;
-	char tupletag[MAXATOMLEN];
-	char atom[MAXATOMLEN];
-
-	buf->index = 0;
-	ei_decode_version(buf->buff, &buf->index, &version);
-	ei_get_type(buf->buff, &buf->index, &type, &size);
-
-	switch(type) {
-	case ERL_SMALL_TUPLE_EXT :
-	case ERL_LARGE_TUPLE_EXT :
-		ei_decode_tuple_header(buf->buff, &buf->index, &arity);
-		if (ei_decode_atom(buf->buff, &buf->index, tupletag)) {
-			ei_x_encode_tuple_header(rbuf, 2);
-			ei_x_encode_atom(rbuf, "error");
-			ei_x_encode_atom(rbuf, "badarg");
-			break;
-		}
-
-		if (!strncmp(tupletag, "fetch_reply", MAXATOMLEN)) {
-			char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
-
-			if (ei_decode_string(buf->buff, &buf->index, uuid_str)) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			ei_x_buff *nbuf = switch_core_alloc(listener->pool, sizeof(nbuf));
-			/*char *wtf = "hello world";*/
-			nbuf->buff = switch_core_alloc(listener->pool, buf->buffsz);
-			memcpy(nbuf->buff, buf->buff, buf->buffsz);
-			/*memcpy(nbuf, wtf, 20);*/
-			nbuf->index = buf->index;
-			nbuf->buffsz = buf->buffsz;
-
-			/*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "stored %d %d %s\n", buf->index, buf->buffsz, nbuf);*/
-
-			switch_core_hash_insert(listener->fetch_reply_hash, uuid_str, nbuf);
-
-		} else if (!strncmp(tupletag, "set_log_level", MAXATOMLEN)) {
-			if (arity == 2) {
-				switch_log_level_t ltype = SWITCH_LOG_DEBUG;
-				char loglevelstr[MAXATOMLEN];
-				if (ei_decode_atom(buf->buff, &buf->index, loglevelstr)) {
-					ei_x_encode_tuple_header(rbuf, 2);
-					ei_x_encode_atom(rbuf, "error");
-					ei_x_encode_atom(rbuf, "badarg");
-					break;
-				}
-				ltype = switch_log_str2level(loglevelstr);
-
-				if (ltype && ltype != SWITCH_LOG_INVALID) {
-					listener->level = ltype;
-				} else {
-					ei_x_encode_tuple_header(rbuf, 2);
-					ei_x_encode_atom(rbuf, "error");
-					ei_x_encode_atom(rbuf, "badarg");
-					break;
-				}
-			} else {
-				/* tuple too long */
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-		} else if (!strncmp(tupletag, "event", MAXATOMLEN)) {
-			if (arity == 1) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			int custom = 0;
-			switch_event_types_t type;
-
-			if (!switch_test_flag(listener, LFLAG_EVENTS)) {
-				switch_set_flag_locked(listener, LFLAG_EVENTS);
-			}
-
-			for (int i = 1; i < arity; i++) {
-				if (!ei_decode_atom(buf->buff, &buf->index, atom)) {
-
-					if (custom) {
-						switch_core_hash_insert(listener->event_hash, atom, MARKER);
-					} else if (switch_name_event(atom, &type) == SWITCH_STATUS_SUCCESS) {
-						if (type == SWITCH_EVENT_ALL) {
-							switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "ALL events enabled\n");
-							uint32_t x = 0;
-							for (x = 0; x < SWITCH_EVENT_ALL; x++) {
-								listener->event_list[x] = 1;
-							}
-						}
-						if (type <= SWITCH_EVENT_ALL) {
-							listener->event_list[type] = 1;
-						}
-						if (type == SWITCH_EVENT_CUSTOM) {
-							custom++;
-						}
-
-					}
-					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "enable event %s\n", atom);
-				}
-			}
-		} else if (!strncmp(tupletag, "nixevent", MAXATOMLEN)) {
-			if (arity == 1) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			int custom = 0;
-			switch_event_types_t type;
+	switch_event_t *call_event=NULL;
+	switch_channel_t *channel=NULL;
 
-			for (int i = 1; i < arity; i++) {
-				if (!ei_decode_atom(buf->buff, &buf->index, atom)) {
-
-					if (custom) {
-						switch_core_hash_delete(listener->event_hash, atom);
-					} else if (switch_name_event(atom, &type) == SWITCH_STATUS_SUCCESS) {
-						uint32_t x = 0;
-
-						if (type == SWITCH_EVENT_CUSTOM) {
-							custom++;
-						} else if (type == SWITCH_EVENT_ALL) {
-							for (x = 0; x <= SWITCH_EVENT_ALL; x++) {
-								listener->event_list[x] = 0;
-							}
-						} else {
-							if (listener->event_list[SWITCH_EVENT_ALL]) {
-								listener->event_list[SWITCH_EVENT_ALL] = 0;
-								for (x = 0; x < SWITCH_EVENT_ALL; x++) {
-									listener->event_list[x] = 1;
-								}
-							}
-							listener->event_list[type] = 0;
-						}
-					}
-				}
-			}
-		} else if (!strncmp(tupletag, "api", MAXATOMLEN)) {
-			if (arity < 3) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			char api_cmd[MAXATOMLEN];
-			char arg[1024];
+	/* Send a message to the associated registered process to let it know there is a call.
+	   Message is a tuple of the form {call, }
+	*/
+	channel = switch_core_session_get_channel(session);
+	if (switch_event_create(&call_event, SWITCH_EVENT_CHANNEL_DATA) != SWITCH_STATUS_SUCCESS) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error!\n");
+		return SWITCH_STATUS_MEMERR;
+	}
+	switch_caller_profile_event_set_data(switch_channel_get_caller_profile(channel), "Channel", call_event);
+	switch_channel_event_set_data(channel, call_event);
+	switch_event_add_header_string(call_event, SWITCH_STACK_BOTTOM, "Content-Type", "command/reply");
+	switch_event_add_header_string(call_event, SWITCH_STACK_BOTTOM, "Reply-Text", "+OK\n");
 	
-			if (ei_decode_atom(buf->buff, &buf->index, api_cmd)) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			if (ei_decode_string(buf->buff, &buf->index, arg)) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-			struct api_command_struct acs = { 0 };
-			acs.listener = listener;
-			acs.api_cmd = api_cmd;
-			acs.arg = arg;
-			acs.bg = 0;
-			acs.pid = msg->from;
-			api_exec(NULL, (void *) &acs);
-			goto noreply;
-
-		} else if (!strncmp(tupletag, "bgapi", MAXATOMLEN)) {
-			if (arity < 3) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			char api_cmd[MAXATOMLEN];
-			char arg[1024];
-
-			if (ei_decode_atom(buf->buff, &buf->index, api_cmd)) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			if (ei_decode_string(buf->buff, &buf->index, arg)) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			struct api_command_struct *acs = NULL;
-			switch_memory_pool_t *pool;
-			switch_thread_t *thread;
-			switch_threadattr_t *thd_attr = NULL;
-			switch_uuid_t uuid;
-
-			switch_core_new_memory_pool(&pool);
-			acs = switch_core_alloc(pool, sizeof(*acs));
-			switch_assert(acs);
-			acs->pool = pool;
-			acs->listener = listener;
-			acs->api_cmd = switch_core_strdup(acs->pool, api_cmd);
-			acs->arg = switch_core_strdup(acs->pool, arg);
-			acs->bg = 1;
-			acs->pid = msg->from;
-
-			switch_threadattr_create(&thd_attr, acs->pool);
-			switch_threadattr_detach_set(thd_attr, 1);
-			switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
-
-			switch_uuid_get(&uuid);
-			switch_uuid_format(acs->uuid_str, &uuid);
-			switch_thread_create(&thread, thd_attr, api_exec, acs, acs->pool);
-
-			ei_x_encode_tuple_header(rbuf, 2);
-			ei_x_encode_atom(rbuf, "ok");
-			ei_x_encode_string(rbuf, acs->uuid_str);
-
-			break;
-		} else if (!strncmp(tupletag, "sendevent", MAXATOMLEN)) {
-			char ename[MAXATOMLEN];
-
-			if (ei_decode_atom(buf->buff, &buf->index, ename)) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			int headerlength;
-
-			if (ei_decode_list_header(buf->buff, &buf->index, &headerlength)) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			switch_event_types_t etype;
-			if (switch_name_event(ename, &etype) == SWITCH_STATUS_SUCCESS) {
-				switch_event_t *event;
-
-				if (switch_event_create(&event, etype) == SWITCH_STATUS_SUCCESS) {
-
-					char key[1024];
-					char value[1024];
-					int i = 0;
-					while(!ei_decode_tuple_header(buf->buff, &buf->index, &arity) && arity == 2) {
-						i++;
-						if (ei_decode_string(buf->buff, &buf->index, key))
-							goto sendevent_fail;
-						if (ei_decode_string(buf->buff, &buf->index, value))
-							goto sendevent_fail;
-
-						switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, key, value);
-					}
-
-					if (headerlength != i)
-						goto sendevent_fail;
-					
-
-					switch_event_fire(&event);
-					ei_x_encode_atom(rbuf, "ok");
-					break;
+	ei_x_buff lbuf;
+	ei_x_new_with_version(&lbuf);
+	ei_x_encode_tuple_header(&lbuf, 2);
+	ei_x_encode_atom(&lbuf, "call");
+	ei_encode_switch_event(&lbuf, call_event);
+	switch_mutex_lock(listener->sock_mutex);
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending initial call event\n");
+	if (ei_reg_send(listener->ec,listener->sockfd, reg_name, lbuf.buff, lbuf.index)==ERL_ERROR) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to send call event\n");
+	}
+	switch_mutex_unlock(listener->sock_mutex);
+	
+	ei_x_free(&lbuf);
+	return SWITCH_STATUS_SUCCESS;
+}
 
-sendevent_fail:
-					ei_x_encode_tuple_header(rbuf, 2);
-					ei_x_encode_atom(rbuf, "error");
-					ei_x_encode_atom(rbuf, "badarg");
-					break;
-				}
-			}
-		} else if (!strncmp(tupletag, "sendmsg", MAXATOMLEN)) {
-			char uuid[37];
+static switch_status_t check_attached_sessions(listener_t *listener)
+{
+	session_elem_t *last,*sp;
+	switch_status_t status = SWITCH_STATUS_SUCCESS;
+	void *pop;
+	/* check up on all the attached sessions -
+	   if they have not yet sent an initial call event to the associated erlang process then do so
+	   if they have pending events in their queues then send them
+	   if the session has finished then clean it up
+	*/
+	switch_mutex_lock(listener->session_mutex);
+	sp = listener->session_list;
+	last = NULL;
+	while(sp) {
+		if (!switch_test_flag(sp, LFLAG_OUTBOUND_INIT)) {
+			status = notify_new_session(listener, sp->session, sp->reg_name);
+			if (status != SWITCH_STATUS_SUCCESS)
+				break;
+			switch_set_flag(sp, LFLAG_OUTBOUND_INIT);
+		}
+		/* check event queue for this session */
+		if (switch_queue_trypop(sp->event_queue, &pop) == SWITCH_STATUS_SUCCESS) {			   
+			switch_event_t *pevent = (switch_event_t *) pop;
 			
-			if (ei_decode_string(buf->buff, &buf->index, uuid)) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			switch_core_session_t *session;
-			if (!switch_strlen_zero(uuid) && (session = switch_core_session_locate(uuid))) {
-			} else {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "nosession");
-				break;
-			}
-
-			int headerlength;
-
-			if (ei_decode_list_header(buf->buff, &buf->index, &headerlength)) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			switch_event_t *event;
-
-			if (switch_event_create(&event, SWITCH_EVENT_SEND_MESSAGE) == SWITCH_STATUS_SUCCESS) {
-
-				char key[1024];
-				char value[1024];
-				int i = 0;
-				while(!ei_decode_tuple_header(buf->buff, &buf->index, &arity) && arity == 2) {
-					i++;
-					if (ei_decode_string(buf->buff, &buf->index, key))
-						goto sendmsg_fail;
-					if (ei_decode_string(buf->buff, &buf->index, value))
-						goto sendmsg_fail;
-
-					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, key, value);
-				}
-
-				if (headerlength != i)
-					goto sendmsg_fail;
-
-				if (switch_core_session_queue_private_event(session, &event) == SWITCH_STATUS_SUCCESS) {
-					ei_x_encode_atom(rbuf, "ok");
-				} else {
-					ei_x_encode_tuple_header(rbuf, 2);
-					ei_x_encode_atom(rbuf, "error");
-					ei_x_encode_atom(rbuf, "badmem");
-				}
-
-				/* release the lock returned by switch_core_locate_session */
-				switch_core_session_rwunlock(session);
-				break;
-
-sendmsg_fail:
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-		} else if (!strncmp(tupletag, "bind", MAXATOMLEN)) {
-
-			/* format is (result|config|directory|dialplan|phrases)  */
-			char sectionstr[MAXATOMLEN];
-
-			if (ei_decode_atom(buf->buff, &buf->index, sectionstr)) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			switch_xml_section_t section;
-
-			if (!(section = switch_xml_parse_section_string(sectionstr))) {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badarg");
-				break;
-			}
-
-			struct erlang_binding *binding, *ptr;
-
-			if (!(binding = switch_core_alloc(listener->pool, sizeof(*binding)))) {
-				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error\n");
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "badmem");
-				break;
-			}
-
-			binding->section = section;
-			binding->pid = msg->from;
-			binding->listener = listener;
-
-			switch_core_hash_init(&listener->fetch_reply_hash, listener->pool);
-
-			switch_mutex_lock(globals.listener_mutex);
-
-			for (ptr = bindings.head; ptr && ptr->next; ptr = ptr->next);
-
-			if (ptr) {
-				ptr->next = binding;
-			} else {
-				bindings.head = binding;
-			}
+			/* events from attached sessions are wrapped in a {call_event,} tuple 
+			   to distinguish them from normal events (if they are sent to the same process)
+			 */
+			ei_x_buff ebuf;
+			ei_x_new_with_version(&ebuf);		 
+			ei_x_encode_tuple_header(&ebuf, 2);
+			ei_x_encode_atom(&ebuf, "call_event");
+			ei_encode_switch_event(&ebuf, pevent);
 			
-			switch_xml_set_binding_sections(bindings.search_binding, switch_xml_get_binding_sections(bindings.search_binding) | section);
-			switch_mutex_unlock(globals.listener_mutex);
-
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "sections %d\n", switch_xml_get_binding_sections(bindings.search_binding));
-
-			ei_link(listener, ei_self(listener->ec), &msg->from);
-
-		} else {
-			ei_x_encode_tuple_header(rbuf, 2);
-			ei_x_encode_atom(rbuf, "error");
-			ei_x_encode_atom(rbuf, "undef");
-			break;
-		}
-
-		ei_x_encode_atom(rbuf, "ok");
-		break;
-	case ERL_ATOM_EXT :
-		if (ei_decode_atom(buf->buff, &buf->index, atom)) {
-			ei_x_encode_tuple_header(rbuf, 2);
-			ei_x_encode_atom(rbuf, "error");
-			ei_x_encode_atom(rbuf, "badarg");
-			break;
-		}
+			switch_mutex_lock(listener->sock_mutex);
+			ei_reg_send(listener->ec, listener->sockfd, sp->reg_name, ebuf.buff, ebuf.index);
+			switch_mutex_unlock(listener->sock_mutex);
+
+			/* event is a hangup, so this session can be removed */
+			if (pevent->event_id == SWITCH_EVENT_CHANNEL_HANGUP) {
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Hangup event for attached session\n");
+
+				/* remove session from list */
+				if (last)
+					last->next = sp->next;
+				else
+					listener->session_list = sp->next;
+					
+				/* this allows the application threads to exit */
+				switch_clear_flag_locked(sp, LFLAG_SESSION_ALIVE);				
 
-		if (!strncmp(atom, "nolog", MAXATOMLEN)) {
-			if (switch_test_flag(listener, LFLAG_LOG)) {
-				switch_clear_flag_locked(listener, LFLAG_LOG);
-			}
-		} else if (!strncmp(atom, "register_log_handler", MAXATOMLEN)) {
-			ei_link(listener, ei_self(listener->ec), &msg->from);
-			listener->log_pid = msg->from;
-			listener->level = SWITCH_LOG_DEBUG;
-			switch_set_flag(listener, LFLAG_LOG);
-		} else if (!strncmp(atom, "register_event_handler", MAXATOMLEN)) {
-			ei_link(listener, ei_self(listener->ec), &msg->from);
-			listener->event_pid = msg->from;
-			if (!switch_test_flag(listener, LFLAG_EVENTS)) {
-				switch_set_flag_locked(listener, LFLAG_EVENTS);
+				/* TODO
+				   if this listener was created outbound, and the last session has been detached
+				   should the listener also exit? Does it matter?
+				 */
 			}
-		} else if (!strncmp(atom, "noevents", MAXATOMLEN)) {
-			void *pop;
-			/*purge the event queue */
-			while (switch_queue_trypop(listener->event_queue, &pop) == SWITCH_STATUS_SUCCESS);
-
-			if (switch_test_flag(listener, LFLAG_EVENTS)) {
-				uint8_t x = 0;
-				switch_clear_flag_locked(listener, LFLAG_EVENTS);
-				for (x = 0; x <= SWITCH_EVENT_ALL; x++) {
-					listener->event_list[x] = 0;
-				}
-				/* wipe the hash */
-				switch_core_hash_destroy(&listener->event_hash);
-				switch_core_hash_init(&listener->event_hash, listener->pool);
-			} else {
-				ei_x_encode_tuple_header(rbuf, 2);
-				ei_x_encode_atom(rbuf, "error");
-				ei_x_encode_atom(rbuf, "notlistening");
-				break;
-			}
-		} else if (!strncmp(atom, "exit", MAXATOMLEN)) {
-			switch_clear_flag_locked(listener, LFLAG_RUNNING);
-			ei_x_encode_atom(rbuf, "ok");
-			goto event_done;
-		} else if (!strncmp(atom, "getpid", MAXATOMLEN)) {
-			ei_x_encode_tuple_header(rbuf, 2);
-			ei_x_encode_atom(rbuf, "ok");
-			ei_x_encode_pid(rbuf, ei_self(listener->ec));
-		} else if (!strncmp(atom, "link", MAXATOMLEN)) {
-			/* debugging */
-			ei_link(listener, ei_self(listener->ec), &msg->from);
-			goto noreply;
-		} else {
-			ei_x_encode_tuple_header(rbuf, 2);
-			ei_x_encode_atom(rbuf, "error");
-			ei_x_encode_atom(rbuf, "undef");
-			break;
+			
+			ei_x_free(&ebuf);
+			switch_event_destroy(&pevent);
 		}
-
-		ei_x_encode_atom(rbuf, "ok");
-		break;
-	default :
-		/* some other kind of erlang term */
-		ei_x_encode_tuple_header(rbuf, 2);
-		ei_x_encode_atom(rbuf, "error");
-		ei_x_encode_atom(rbuf, "undef");
-		break;
+		last = sp;
+		sp = sp->next;
 	}
-
-	
-	switch_mutex_lock(listener->sock_mutex);
-	ei_send(listener->sockfd, &msg->from, rbuf->buff, rbuf->index);
-	switch_mutex_unlock(listener->sock_mutex);
-noreply:
-	return 0;
-
-event_done:
-	switch_mutex_lock(listener->sock_mutex);
-	ei_send(listener->sockfd, &msg->from, rbuf->buff, rbuf->index);
-	switch_mutex_unlock(listener->sock_mutex);
-	return 1;
+	switch_mutex_unlock(listener->session_mutex);
+	return status;
 }
 
-
-static void *SWITCH_THREAD_FUNC listener_run(switch_thread_t *thread, void *obj)
+static void check_log_queue(listener_t *listener)
 {
-	listener_t *listener = (listener_t *) obj;
-	switch_core_session_t *session = NULL;
-	switch_channel_t *channel = NULL;
-	int status = 1;
 	void *pop;
 
-	switch_mutex_lock(globals.listener_mutex);
-	prefs.threads++;
-	switch_mutex_unlock(globals.listener_mutex);
-
-	switch_assert(listener != NULL);
-	
-	if (prefs.acl_count && !switch_strlen_zero(listener->remote_ip)) {
-		uint32_t x = 0;
-		for (x = 0; x < prefs.acl_count; x++) {
-			if (!switch_check_network_list_ip(listener->remote_ip, prefs.acl[x])) {
-				erlang_msg msg;
-
-				ei_x_buff buf;
-				ei_x_new(&buf);
-
-				status = ei_xreceive_msg(listener->sockfd, &msg, &buf);
-				/* get data off the socket, just so we can get the pid on the other end */
-				if (status == ERL_MSG) {
-					/* if we got a message, return an ACL error. */
-					ei_x_buff rbuf;
-					ei_x_new_with_version(&rbuf);
-
-					ei_x_encode_tuple_header(&rbuf, 2);
-					ei_x_encode_atom(&rbuf, "error");
-					ei_x_encode_atom(&rbuf, "acldeny");
-
-					ei_send(listener->sockfd, &msg.from, rbuf.buff, rbuf.index);
-
-					ei_x_free(&rbuf);
-				}
-
-				ei_x_free(&buf);
-
-				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connection from %s denied by acl %s\n", listener->remote_ip, prefs.acl[x]);
-				goto done;
+	/* send out any pending crap in the log queue */
+	if (switch_test_flag(listener, LFLAG_LOG)) {
+		if (switch_queue_trypop(listener->log_queue, &pop) == SWITCH_STATUS_SUCCESS) {
+			switch_log_node_t *dnode = (switch_log_node_t *) pop;
+			
+			if (dnode->data) {
+				ei_x_buff lbuf;
+				ei_x_new_with_version(&lbuf);
+				ei_x_encode_tuple_header(&lbuf, 2);
+				ei_x_encode_atom(&lbuf, "log");
+				ei_x_encode_list_header(&lbuf, 6);
+				
+				ei_x_encode_tuple_header(&lbuf, 2);
+				ei_x_encode_atom(&lbuf, "level");
+				ei_x_encode_char(&lbuf, (unsigned char)dnode->level);
+				
+				ei_x_encode_tuple_header(&lbuf, 2);
+				ei_x_encode_atom(&lbuf, "text_channel");
+				ei_x_encode_char(&lbuf, (unsigned char)dnode->level);
+				
+				ei_x_encode_tuple_header(&lbuf, 2);
+				ei_x_encode_atom(&lbuf, "file");
+				ei_x_encode_string(&lbuf, dnode->file);
+				
+				ei_x_encode_tuple_header(&lbuf, 2);
+				ei_x_encode_atom(&lbuf, "func");
+				ei_x_encode_string(&lbuf, dnode->func);
+				
+				ei_x_encode_tuple_header(&lbuf, 2);
+				ei_x_encode_atom(&lbuf, "line");
+				ei_x_encode_ulong(&lbuf, (unsigned long)dnode->line);
+				
+				ei_x_encode_tuple_header(&lbuf, 2);
+				ei_x_encode_atom(&lbuf, "data");
+				ei_x_encode_string(&lbuf, dnode->data);
+				
+				ei_x_encode_empty_list(&lbuf);
+				
+				switch_mutex_lock(listener->sock_mutex);
+				ei_send(listener->sockfd, &listener->log_pid, lbuf.buff, lbuf.index);
+				switch_mutex_unlock(listener->sock_mutex);
+				
+				ei_x_free(&lbuf);
+				free(dnode->data);
+				free(dnode);
 			}
 		}
 	}
+}
 
-	if ((session = listener->session)) {
-		channel = switch_core_session_get_channel(session);
-		if (switch_core_session_read_lock(session) != SWITCH_STATUS_SUCCESS) {
-			goto done;
+static void check_event_queue(listener_t *listener)
+{
+	void* pop;
+	/* send out any pending crap in the event queue */
+	if (switch_test_flag(listener, LFLAG_EVENTS)) {
+		if (switch_queue_trypop(listener->event_queue, &pop) == SWITCH_STATUS_SUCCESS) {
+			
+			switch_event_t *pevent = (switch_event_t *) pop;
+			
+			ei_x_buff ebuf;
+			ei_x_new_with_version(&ebuf);
+			
+			ei_encode_switch_event(&ebuf, pevent);
+			
+			switch_mutex_lock(listener->sock_mutex);
+			ei_send(listener->sockfd, &listener->event_pid, ebuf.buff, ebuf.index);
+			switch_mutex_unlock(listener->sock_mutex);
+			
+			ei_x_free(&ebuf);
+			switch_event_destroy(&pevent);
 		}
 	}
+}
 
-	if (switch_strlen_zero(listener->remote_ip)) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connection Open\n");
-	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connection Open from %s\n", listener->remote_ip);/*, listener->remote_port);*/
-	}
-
-	switch_set_flag_locked(listener, LFLAG_RUNNING);
-	add_listener(listener);
+static void listener_main_loop(listener_t *listener) 
+{
+	int status = 1;
 
 	while ((status >= 0 || erl_errno == ETIMEDOUT || erl_errno == EAGAIN) && !prefs.done) {
 		erlang_msg msg;
@@ -1237,13 +595,13 @@
 					case ERL_SEND :
 						/*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_send\n");*/
 						if (handle_msg(listener, &msg, &buf, &rbuf)) {
-							goto done;
+							return;
 						}
 						break;
 					case ERL_REG_SEND :
 						/*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_reg_send\n");*/
 						if (handle_msg(listener, &msg, &buf, &rbuf)) {
-							goto done;
+						    return;
 						}
 						break;
 					case ERL_LINK :
@@ -1275,77 +633,76 @@
 		ei_x_free(&buf);
 		ei_x_free(&rbuf);
 
-		/* send out any pending crap in the log queue */
-		if (switch_test_flag(listener, LFLAG_LOG)) {
-			if (switch_queue_trypop(listener->log_queue, &pop) == SWITCH_STATUS_SUCCESS) {
-				switch_log_node_t *dnode = (switch_log_node_t *) pop;
-
-				if (dnode->data) {
-					ei_x_buff lbuf;
-					ei_x_new_with_version(&lbuf);
-					ei_x_encode_tuple_header(&lbuf, 2);
-					ei_x_encode_atom(&lbuf, "log");
-					ei_x_encode_list_header(&lbuf, 6);
-
-					ei_x_encode_tuple_header(&lbuf, 2);
-					ei_x_encode_atom(&lbuf, "level");
-					ei_x_encode_char(&lbuf, (unsigned char)dnode->level);
-
-					ei_x_encode_tuple_header(&lbuf, 2);
-					ei_x_encode_atom(&lbuf, "text_channel");
-					ei_x_encode_char(&lbuf, (unsigned char)dnode->level);
-
-					ei_x_encode_tuple_header(&lbuf, 2);
-					ei_x_encode_atom(&lbuf, "file");
-					ei_x_encode_string(&lbuf, dnode->file);
-	
-					ei_x_encode_tuple_header(&lbuf, 2);
-					ei_x_encode_atom(&lbuf, "func");
-					ei_x_encode_string(&lbuf, dnode->func);
-
-					ei_x_encode_tuple_header(&lbuf, 2);
-					ei_x_encode_atom(&lbuf, "line");
-					ei_x_encode_ulong(&lbuf, (unsigned long)dnode->line);
-
-					ei_x_encode_tuple_header(&lbuf, 2);
-					ei_x_encode_atom(&lbuf, "data");
-					ei_x_encode_string(&lbuf, dnode->data);
-
-					ei_x_encode_empty_list(&lbuf);
-
-					switch_mutex_lock(listener->sock_mutex);
-					ei_send(listener->sockfd, &listener->log_pid, lbuf.buff, lbuf.index);
-					switch_mutex_unlock(listener->sock_mutex);
-
-					ei_x_free(&lbuf);
-					free(dnode->data);
-					free(dnode);
-				}
-			}
+		check_log_queue(listener);
+		check_event_queue(listener);
+		if (SWITCH_STATUS_SUCCESS != check_attached_sessions(listener)) {
+			return;
 		}
+	}
+}
 
-		/* ditto with the event queue */
-		if (switch_test_flag(listener, LFLAG_EVENTS)) {
-			if (switch_queue_trypop(listener->event_queue, &pop) == SWITCH_STATUS_SUCCESS) {
+static switch_bool_t check_inbound_acl(listener_t* listener)
+{
+	/* check acl to see if inbound connection is allowed */
+	if (prefs.acl_count && !switch_strlen_zero(listener->remote_ip)) {
+		uint32_t x = 0;
+		for (x = 0; x < prefs.acl_count; x++) {
+			if (!switch_check_network_list_ip(listener->remote_ip, prefs.acl[x])) {
+				int status = 1;
+				erlang_msg msg;
 
-				switch_event_t *pevent = (switch_event_t *) pop;
+				ei_x_buff buf;
+				ei_x_new(&buf);
 
-				ei_x_buff ebuf;
-				ei_x_new_with_version(&ebuf);
+				status = ei_xreceive_msg(listener->sockfd, &msg, &buf);
+				/* get data off the socket, just so we can get the pid on the other end */
+				if (status == ERL_MSG) {
+					/* if we got a message, return an ACL error. */
+					ei_x_buff rbuf;
+					ei_x_new_with_version(&rbuf);
 
-				ei_encode_switch_event(&ebuf, pevent);
+					ei_x_encode_tuple_header(&rbuf, 2);
+					ei_x_encode_atom(&rbuf, "error");
+					ei_x_encode_atom(&rbuf, "acldeny");
 
-				switch_mutex_lock(listener->sock_mutex);
-				ei_send(listener->sockfd, &listener->event_pid, ebuf.buff, ebuf.index);
-				switch_mutex_unlock(listener->sock_mutex);
+					ei_send(listener->sockfd, &msg.from, rbuf.buff, rbuf.index);
+
+					ei_x_free(&rbuf);
+				}
+
+				ei_x_free(&buf);
 
-				ei_x_free(&ebuf);
-				switch_event_destroy(&pevent);
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connection from %s denied by acl %s\n", listener->remote_ip, prefs.acl[x]);
+				return SWITCH_FALSE;
 			}
 		}
 	}
+	return SWITCH_TRUE;
+}
 
-done:
+static void *SWITCH_THREAD_FUNC listener_run(switch_thread_t *thread, void *obj)
+{
+	listener_t *listener = (listener_t *) obj;
+	session_elem_t* s;
+
+	switch_mutex_lock(globals.listener_mutex);
+	prefs.threads++;
+	switch_mutex_unlock(globals.listener_mutex);
+
+	switch_assert(listener != NULL);
+
+	if (check_inbound_acl(listener)) {
+		if (switch_strlen_zero(listener->remote_ip)) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connection Open\n");
+		} else {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connection Open from %s\n", listener->remote_ip);/*, listener->remote_port);*/
+		}
+		
+		add_listener(listener);
+  		listener_main_loop(listener);
+	}
+
+	/* clean up */
 	remove_listener(listener);
 
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Session complete, waiting for children\n");
@@ -1364,16 +721,22 @@
 	/* remove any bindings for this connection */
 	remove_binding(listener, NULL);
 
-	if (listener->session) {
-		switch_channel_clear_flag(switch_core_session_get_channel(listener->session), CF_CONTROLLED);
-		switch_clear_flag_locked(listener, LFLAG_SESSION);
-		switch_core_session_rwunlock(listener->session);
-	} else if (listener->pool) {
+	/* clean up all the attached sessions */
+	switch_mutex_lock(listener->session_mutex);
+	for (s = listener->session_list; s; s = s->next) {
+		switch_channel_clear_flag(switch_core_session_get_channel(s->session), CF_CONTROLLED);
+		/* this allows the application threads to exit */
+		switch_clear_flag_locked(s, LFLAG_SESSION_ALIVE);
+		/* */
+		switch_core_session_rwunlock(s->session);
+	}
+	switch_mutex_unlock(listener->session_mutex);
+
+	if (listener->pool) {
 		switch_memory_pool_t *pool = listener->pool;
 		switch_core_destroy_memory_pool(&pool);
 	}
 
-
 	switch_mutex_lock(globals.listener_mutex);
 	prefs.threads--;
 	switch_mutex_unlock(globals.listener_mutex);
@@ -1454,12 +817,148 @@
 	return 0;
 }
 
+static listener_t* new_listener(struct ei_cnode_s *ec, int clientfd)
+{
+	switch_memory_pool_t *listener_pool = NULL;
+	listener_t* listener = NULL;
+
+	if (switch_core_new_memory_pool(&listener_pool) != SWITCH_STATUS_SUCCESS) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "OH OH no pool\n");
+		return NULL;
+	}
+
+	if (!(listener = switch_core_alloc(listener_pool, sizeof(*listener)))) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error\n");
+		return NULL;
+	}
+
+	switch_thread_rwlock_create(&listener->rwlock, listener_pool);
+	switch_queue_create(&listener->event_queue, SWITCH_CORE_QUEUE_LEN, listener_pool);
+	switch_queue_create(&listener->log_queue, SWITCH_CORE_QUEUE_LEN, listener_pool);
+		
+	listener->ec = ec;
+	listener->sockfd = clientfd;
+	listener->pool = listener_pool;
+	listener_pool = NULL;
+	listener->level = SWITCH_LOG_DEBUG;
+	switch_mutex_init(&listener->flag_mutex, SWITCH_MUTEX_NESTED, listener->pool);
+	switch_mutex_init(&listener->sock_mutex, SWITCH_MUTEX_NESTED, listener->pool);
+	switch_mutex_init(&listener->session_mutex, SWITCH_MUTEX_NESTED, listener->pool);
+	switch_core_hash_init(&listener->event_hash, listener->pool);
+
+	return listener;
+}
+
+static listener_t* new_outbound_listener(char* node)
+{
+	listener_t* listener = NULL;
+	struct ei_cnode_s ec;
+	int clientfd;
+
+	if (SWITCH_STATUS_SUCCESS==initialise_ei(&ec)) {
+		errno = 0;
+		if ((clientfd=ei_connect(&ec,node)) == ERL_ERROR) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error connecting to node %s (erl_errno=%d, errno=%d)!\n",node,erl_errno,errno);
+			return NULL;
+		}
+		listener = new_listener(&ec,clientfd);
+		listener->peer_nodename = switch_core_strdup(listener->pool,node);
+	}
+	return listener;
+}
+
+session_elem_t* attach_call_to_listener(listener_t* listener, char* reg_name, switch_core_session_t *session)
+{
+	/* create a session list element */
+	session_elem_t* session_element=NULL;
+	if (!(session_element = switch_core_alloc(switch_core_session_get_pool(session), sizeof(*session_element)))) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to allocate session element\n");
+	}
+	else {
+		if (SWITCH_STATUS_SUCCESS != switch_core_session_read_lock(session)) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to get session read lock\n");
+		}
+		else {
+			session_element->session = session;
+			session_element->reg_name = switch_core_strdup(switch_core_session_get_pool(session),reg_name);
+			switch_set_flag(session_element, LFLAG_SESSION_ALIVE);
+			switch_clear_flag(session_element, LFLAG_OUTBOUND_INIT);
+			switch_queue_create(&session_element->event_queue, SWITCH_CORE_QUEUE_LEN, switch_core_session_get_pool(session));
+			switch_mutex_init(&session_element->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session));
+			/* attach the session to the listener */
+			add_session_elem_to_listener(listener,session_element);
+		}
+	}
+	return session_element;
+}
 
 /* Module Hooks */
 
+/* Entry point for outbound mode */
+SWITCH_STANDARD_APP(erlang_outbound_function)
+{
+	char *reg_name, *node;
+	listener_t *listener;
+	int argc = 0;
+	char *argv[80] = { 0 };
+	char *mydata;
+	switch_bool_t new_session = SWITCH_FALSE;
+	session_elem_t* session_element=NULL;
+
+	/* process app arguments */
+	if (data && (mydata = switch_core_session_strdup(session, data))) {
+		argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+	}
+	if (argc < 2) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error - need registered name and node!\n");
+		return;
+	}
+	reg_name = argv[0];
+	if (switch_strlen_zero(reg_name)) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing registered name!\n");
+		return;
+	}
+	node = argv[1];
+	if (switch_strlen_zero(node)) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing node name!\n");
+		return;
+	}
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "enter erlang_outbound_function %s %s\n",reg_name, node);
+
+	/* first work out if there is a listener already talking to the node we want to talk to */
+	listener = find_listener(node);
+	/* if there is no listener, then create one */
+	if (!listener) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating new listener for session\n");
+		new_session = SWITCH_TRUE;
+		listener = new_outbound_listener(node);
+	}
+	else {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Using existing listener for session\n");
+	}
+	if (listener &&
+		(session_element=attach_call_to_listener(listener,reg_name,session)) != NULL) {
+		
+		if (new_session)
+			launch_listener_thread(listener);
+		switch_ivr_park(session, NULL);
+
+		/* keep app thread running for lifetime of session */
+		if (switch_channel_get_state(switch_core_session_get_channel(session)) >= CS_HANGUP) {
+			while (switch_test_flag(session_element, LFLAG_SESSION_ALIVE)) {
+				switch_yield(100000);
+			}
+		}
+	}
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "exit erlang_outbound_function\n");
+}
+
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_erlang_event_load)
 {
+	switch_application_interface_t *app_interface;
+
 	switch_mutex_init(&globals.listener_mutex, SWITCH_MUTEX_NESTED, pool);
 
 	if (switch_event_bind_removable(modname, SWITCH_EVENT_ALL, SWITCH_EVENT_SUBCLASS_ANY, event_handler, NULL, &globals.node) != SWITCH_STATUS_SUCCESS) {
@@ -1483,6 +982,8 @@
 	/* connect my internal structure to the blank pointer passed to me */
 	*module_interface = switch_loadable_module_create_module_interface(pool, modname);
 
+	SWITCH_ADD_APP(app_interface, "erlang", "Connect to an erlang node", "Connect to erlang", erlang_outbound_function, " ", SAF_SUPPORT_NOMEDIA);
+
 	/* indicate that the module should continue to be loaded */
 	return SWITCH_STATUS_SUCCESS;
 }
@@ -1557,25 +1058,7 @@
 		switch_yield(100000);
 	}
 
-	struct hostent *nodehost = gethostbyaddr(&server_addr.sin_addr.s_addr, sizeof(server_addr.sin_addr.s_addr), AF_INET);
-
-	char *thishostname = nodehost->h_name;
-	char thisnodename[MAXNODELEN+1];
-
-	if (!strcmp(thishostname, "localhost"))
-		gethostname(thishostname, EI_MAXHOSTNAMELEN);
-
-	if (prefs.shortname) {
-		char *off;
-		if ((off = strchr(thishostname, '.'))) {
-			*off = '\0';
-		}
-	}
-
-	snprintf(thisnodename, MAXNODELEN+1, "%s@%s", prefs.nodename, thishostname);
-
-	/* init the ei stuff */
-	if (ei_connect_xinit(&ec, thishostname, prefs.nodename, thisnodename, (Erl_IpAddr)(&server_addr.sin_addr.s_addr), prefs.cookie, 0) < 0) {
+	if (SWITCH_STATUS_SUCCESS!=initialise_ei(&ec)) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to init ei connection\n");
 		close_socket(&listen_list.sockfd);
 		return SWITCH_STATUS_GENERR;
@@ -1596,7 +1079,7 @@
 		}
 	}
 
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connected and published erlang cnode at %s port %u\n", thisnodename, prefs.port);
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connected and published erlang cnode\n");
 
 	listen_list.ready = 1;
 
@@ -1621,59 +1104,42 @@
 			break;
 		}
 
-		if (switch_core_new_memory_pool(&listener_pool) != SWITCH_STATUS_SUCCESS) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "OH OH no pool\n");
-			goto fail;
-		}
+		listener = new_listener(&ec,clientfd);
+		if (listener) {
+			/* store the IP and node name we are talking with */
+			inet_ntop(AF_INET, conn.ipadr, listener->remote_ip, sizeof(listener->remote_ip));
+			listener->peer_nodename = switch_core_strdup(listener->pool,conn.nodename);
 
-		if (!(listener = switch_core_alloc(listener_pool, sizeof(*listener)))) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error\n");
-			break;
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Launching listener, connection from node %s, ip %s\n", conn.nodename, listener->remote_ip);
+			launch_listener_thread(listener);
 		}
-
-		switch_thread_rwlock_create(&listener->rwlock, listener_pool);
-		switch_queue_create(&listener->event_queue, SWITCH_CORE_QUEUE_LEN, listener_pool);
-		switch_queue_create(&listener->log_queue, SWITCH_CORE_QUEUE_LEN, listener_pool);
-
-		inet_ntop(AF_INET, conn.ipadr, listener->remote_ip, sizeof(listener->remote_ip));
-
-		listener->ec = &ec;
-		listener->sockfd = clientfd;
-		listener->pool = listener_pool;
-		listener_pool = NULL;
-		listener->level = SWITCH_LOG_DEBUG;
-		switch_mutex_init(&listener->flag_mutex, SWITCH_MUTEX_NESTED, listener->pool);
-		switch_mutex_init(&listener->sock_mutex, SWITCH_MUTEX_NESTED, listener->pool);
-		switch_core_hash_init(&listener->event_hash, listener->pool);
-
-		launch_listener_thread(listener);
-
+		else
+			/* if we fail to create a listener (memory error), then the module will exit */
+			break;
 	}
 
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Exiting module mod_erlang_event\n");
+
 	/* cleanup epmd registration */
 	ei_unpublish(&ec);
 	close(epmdfd);
 
 	close_socket(&listen_list.sockfd);
-
 	if (pool) {
 		switch_core_destroy_memory_pool(&pool);
 	}
-
 	if (listener_pool) {
 		switch_core_destroy_memory_pool(&listener_pool);
 	}
-
-
 	for (x = 0; x < prefs.acl_count; x++) {
 		switch_safe_free(prefs.acl[x]);
 	}
 
-  fail:
 	prefs.done = 2;
 	return SWITCH_STATUS_TERM;
 }
 
+
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_erlang_event_shutdown)
 {
 	listener_t *l;

Added: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h	Thu Jan 22 13:34:53 2009
@@ -0,0 +1,190 @@
+/* 
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005/2006, Anthony Minessale II 
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Anthony Minessale II 
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * 
+ * Anthony Minessale II 
+ * Andrew Thompson 
+ * Rob Charlton 
+ *
+ *
+ * mod_erlang_event.h -- Erlang Event Handler derived from mod_event_socket
+ *
+ */
+
+
+typedef enum {
+	LFLAG_OUTBOUND_INIT = (1 << 0), /* Erlang peer has been notified of this session */
+	LFLAG_SESSION_ALIVE
+} session_flag_t;
+
+struct session_elem {
+	switch_core_session_t *session;
+	switch_mutex_t *flag_mutex;
+	uint32_t flags;
+	/* registered process name that will receive call notifications from this session */
+	char* reg_name;
+	switch_queue_t *event_queue;
+	struct session_elem *next;
+};
+
+typedef struct session_elem session_elem_t;
+
+typedef enum {
+	LFLAG_RUNNING = (1 << 0),
+	LFLAG_EVENTS = (1 << 1),
+	LFLAG_LOG = (1 << 2),
+	LFLAG_MYEVENTS = (1 << 3),
+	LFLAG_STATEFUL = (1 << 4)
+} event_flag_t;
+
+/* There is one listener for each Erlang node we are attached to - either
+   inbound or outbound. For example, if the erlang node node1 at server connects
+   to freeswitch then a listener is created and handles commands sent from
+   that node. If 5 calls are directed to the outbound erlang application
+   via the dialplan, and are also set to talk to node1 at server, then those
+   5 call sessions will be "attached" to the same listener.
+ */
+struct listener {
+	int sockfd;
+	struct ei_cnode_s *ec;
+	erlang_pid log_pid;
+	erlang_pid event_pid;
+	char *peer_nodename;
+	switch_queue_t *event_queue;
+	switch_queue_t *log_queue;
+	switch_memory_pool_t *pool;
+	switch_mutex_t *flag_mutex;
+	switch_mutex_t *sock_mutex;
+	char *ebuf;
+	uint32_t flags;
+	switch_log_level_t level;
+	uint8_t event_list[SWITCH_EVENT_ALL + 1];
+	switch_hash_t *event_hash;
+	switch_hash_t *fetch_reply_hash;
+	switch_thread_rwlock_t *rwlock;
+	switch_mutex_t *session_mutex;
+	session_elem_t *session_list;
+	int lost_events;
+	int lost_logs;
+	time_t last_flush;
+	uint32_t timeout;
+	uint32_t id;
+	char remote_ip[50];
+	/*switch_port_t remote_port;*/
+	struct listener *next;
+};
+
+typedef struct listener listener_t;
+
+struct erlang_binding {
+	switch_xml_section_t section;
+	erlang_pid pid;
+	char *registered_process; /* TODO */
+	listener_t *listener;
+	struct erlang_binding *next;
+};
+
+struct api_command_struct {
+	char *api_cmd;
+	char *arg;
+	listener_t *listener;
+	char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
+	uint8_t bg;
+	erlang_pid pid;
+	switch_memory_pool_t *pool;
+};
+
+struct globals_struct {
+	switch_mutex_t *listener_mutex;
+	switch_event_node_t *node;
+};
+typedef struct globals_struct globals_t;
+
+struct listen_list_struct {
+	int sockfd;
+	switch_mutex_t *sock_mutex;
+	listener_t *listeners;
+	uint8_t ready;
+};
+typedef struct listen_list_struct listen_list_t;
+
+struct bindings_struct {
+	struct erlang_binding *head;
+	switch_xml_binding_t *search_binding;
+};
+typedef struct bindings_struct bindings_t;
+
+#define MAX_ACL 100
+struct prefs_struct {
+	switch_mutex_t *mutex;
+	char *ip;
+	char *nodename;
+	switch_bool_t shortname;
+	uint16_t port;
+	char *cookie;
+	int done;
+	int threads;
+	char *acl[MAX_ACL];
+	uint32_t acl_count;
+	uint32_t id;
+};
+typedef struct prefs_struct prefs_t;
+
+/* shared globals */
+#ifdef DEFINE_GLOBALS
+globals_t globals;
+listen_list_t listen_list;
+bindings_t bindings;
+prefs_t prefs;
+#else
+extern globals_t globals;
+extern listen_list_t listen_list;
+extern bindings_t bindings;
+extern prefs_t prefs;
+#endif
+
+/* function prototypes */
+/* handle_msg.c */
+int handle_msg(listener_t *listener, erlang_msg *msg, ei_x_buff *buf, ei_x_buff *rbuf);
+
+/* ei_helpers.c */
+void ei_link(listener_t *listener, erlang_pid *from, erlang_pid *to);
+void ei_encode_switch_event_headers(ei_x_buff *ebuf, switch_event_t *event);
+void ei_encode_switch_event_tag(ei_x_buff *ebuf, switch_event_t *event, char *tag);
+switch_status_t initialise_ei(struct ei_cnode_s *ec);
+#define ei_encode_switch_event(_b, _e) ei_encode_switch_event_tag(_b, _e, "event")
+
+/* mod_erlang_event.c */
+session_elem_t* attach_call_to_listener(listener_t* listener, char* reg_name, switch_core_session_t *session);
+
+/* For Emacs:
+ * Local Variables:
+ * mode:c
+ * indent-tabs-mode:t
+ * tab-width:4
+ * c-basic-offset:4
+ * End:
+ * For VIM:
+ * vim:set softtabstop=4 shiftwidth=4 tabstop=4:
+ */


From mikej at freeswitch.org  Thu Jan 22 11:37:56 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 13:37:56 -0600
Subject: [Freeswitch-svn] [commit] r11378 -
	freeswitch/branches/1.0/src/mod/applications/mod_conference
Message-ID: 

Author: mikej
Date: Thu Jan 22 13:37:56 2009
New Revision: 11378

Log:
mod_conference: add 'conference xml_list' and 'conference [conf_name] xml_list' (r:11062-11063)

Modified:
   freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c

Modified: freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c	Thu Jan 22 13:37:56 2009
@@ -3038,6 +3038,140 @@
 	return ret_status;
 }
 
+
+static void add_x_tag(switch_xml_t x_member, const char *name, const char *value, int off)
+{
+	switch_size_t dlen = strlen(value) * 3;
+	char *data;
+	switch_xml_t x_tag;
+
+	x_tag = switch_xml_add_child_d(x_member, name, off);
+	switch_assert(x_tag);
+	
+	switch_zmalloc(data, dlen);
+
+	switch_url_encode(value, data, dlen);
+	switch_xml_set_txt_d(x_tag, data);
+	free(data);
+}
+
+static void conference_xlist(conference_obj_t *conference, switch_xml_t x_conference, int off)
+{
+	conference_member_t *member = NULL;
+	switch_xml_t x_member = NULL, x_members = NULL, x_flags;
+	int moff = 0;
+	char i[30] = "";
+	char *ival = i;
+	switch_assert(conference != NULL);
+	switch_assert(x_conference != NULL);
+	
+	switch_xml_set_attr_d(x_conference, "name", conference->name);
+	switch_snprintf(i, sizeof(i), "%d", conference->count);
+	switch_xml_set_attr_d(x_conference, "member-count", ival);
+
+	if (switch_test_flag(conference, CFLAG_LOCKED)) {
+		switch_xml_set_attr_d(x_conference, "locked", "true");
+	}
+
+	x_members = switch_xml_add_child_d(x_conference, "members", 0);
+	switch_assert(x_members);
+	
+	switch_mutex_lock(conference->member_mutex);
+
+	for (member = conference->members; member; member = member->next) {
+		switch_channel_t *channel;
+		switch_caller_profile_t *profile;
+		char *uuid;
+		char *name;
+		uint32_t count = 0;
+		switch_xml_t x_tag;
+		int toff = 0;
+		
+		if (switch_test_flag(member, MFLAG_NOCHANNEL)) {
+			continue;
+		}
+
+		uuid = switch_core_session_get_uuid(member->session);
+		channel = switch_core_session_get_channel(member->session);
+		profile = switch_channel_get_caller_profile(channel);
+		name = switch_channel_get_name(channel);
+
+		
+		x_member = switch_xml_add_child_d(x_members, "member", moff++);
+		switch_assert(x_member);
+
+		switch_snprintf(i, sizeof(i), "%d", member->id);
+
+		add_x_tag(x_member, "id", i, toff++);
+		add_x_tag(x_member, "uuid", uuid, toff++);
+		add_x_tag(x_member, "caller_id_name", profile->caller_id_name, toff++);
+		add_x_tag(x_member, "caller_id_number", profile->caller_id_number, toff++);
+		
+
+		x_flags = switch_xml_add_child_d(x_member, "flags", count++);
+		switch_assert(x_flags);
+
+		x_tag = switch_xml_add_child_d(x_flags, "can_hear", count++);
+		switch_xml_set_txt_d(x_tag, switch_test_flag(member, MFLAG_CAN_HEAR) ? "true" : "false");
+
+		x_tag = switch_xml_add_child_d(x_flags, "can_speak", count++);
+		switch_xml_set_txt_d(x_tag, switch_test_flag(member, MFLAG_CAN_SPEAK) ? "true" : "false");
+
+		x_tag = switch_xml_add_child_d(x_flags, "talking", count++);
+		switch_xml_set_txt_d(x_tag, switch_test_flag(member, MFLAG_TALKING) ? "true" : "false");
+
+		x_tag = switch_xml_add_child_d(x_flags, "has_video", count++);
+		switch_xml_set_txt_d(x_tag, switch_channel_test_flag(switch_core_session_get_channel(member->session), CF_VIDEO) ? "true" : "false");
+		
+		x_tag = switch_xml_add_child_d(x_flags, "has_floor", count++);
+		switch_xml_set_txt_d(x_tag, (member == member->conference->floor_holder) ? "true" : "false");
+		
+	}
+
+	switch_mutex_unlock(conference->member_mutex);
+}
+static switch_status_t conf_api_sub_xml_list(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv)
+{
+	int count = 0;
+	switch_hash_index_t *hi;
+	void *val;
+	switch_xml_t x_conference, x_conferences;
+	int off = 0;
+	char *ebuf;
+
+	x_conferences = switch_xml_new("conferences");
+	switch_assert(x_conferences);
+	
+	if (conference == NULL) {
+		for (hi = switch_hash_first(NULL, globals.conference_hash); hi; hi = switch_hash_next(hi)) {
+			switch_hash_this(hi, NULL, NULL, &val);
+			conference = (conference_obj_t *) val;
+			
+			x_conference = switch_xml_add_child_d(x_conferences, "conference", off++);
+			switch_assert(conference);
+
+			count++;
+			conference_xlist(conference, x_conference, off);
+
+		}
+	} else {
+		x_conference = switch_xml_add_child_d(x_conferences, "conference", off++);
+		switch_assert(conference);
+		count++;
+		conference_xlist(conference, x_conference, off);
+	}
+
+
+	ebuf = switch_xml_toxml(x_conferences, SWITCH_TRUE);
+
+	stream->write_function(stream, "%s", ebuf);
+
+	switch_xml_free(x_conferences);
+	free(ebuf);
+
+	return SWITCH_STATUS_SUCCESS;
+}
+
 static switch_status_t conf_api_sub_play(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv)
 {
 	int ret_status = SWITCH_STATUS_GENERR;
@@ -3578,6 +3712,7 @@
 /* Entries in this list should be kept in sync with the enum above */
 static api_command_t conf_api_sub_commands[] = {
 	{"list", (void_fn_t) &conf_api_sub_list, CONF_API_SUB_ARGS_SPLIT, " list [delim ]"},
+	{"xml_list", (void_fn_t) &conf_api_sub_xml_list, CONF_API_SUB_ARGS_SPLIT, " xml_list"},
 	{"energy", (void_fn_t) &conf_api_sub_energy, CONF_API_SUB_MEMBER_TARGET,
 	 " energy  []"},
 	{"volume_in", (void_fn_t) &conf_api_sub_volume_in, CONF_API_SUB_MEMBER_TARGET,
@@ -3778,6 +3913,8 @@
 			/* special case the list command, because it doesn't require a conference argument */
 			if (strcasecmp(argv[0], "list") == 0) {
 				conf_api_sub_list(NULL, stream, argc, argv);
+			} else if (strcasecmp(argv[0], "xml_list") == 0) {
+				conf_api_sub_xml_list(NULL, stream, argc, argv);
 			} else if (strcasecmp(argv[0], "help") == 0 || strcasecmp(argv[0], "commands") == 0) {
 				stream->write_function(stream, "%s\n", api_syntax);
 			} else if (argv[1] && strcasecmp(argv[1], "dial") == 0) {


From mikej at freeswitch.org  Thu Jan 22 11:41:34 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 13:41:34 -0600
Subject: [Freeswitch-svn] [commit] r11380 -
	freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc
Message-ID: 

Author: mikej
Date: Thu Jan 22 13:41:34 2009
New Revision: 11380

Log:
mod_xml_rpc: fixed authentication using @domain syntax (r:11064)

Modified:
   freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c

Modified: freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	(original)
+++ freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	Thu Jan 22 13:41:34 2009
@@ -178,6 +178,7 @@
 				if ((dp = strchr(user, '@'))) {
 					*dp++ = '\0';
 					domain_name = dp;
+					at++;
 				}
 				
 				if (!domain_name) {


From mcollins at freeswitch.org  Thu Jan 22 11:44:08 2009
From: mcollins at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 13:44:08 -0600
Subject: [Freeswitch-svn] [commit] r11381 - freeswitch/trunk/libs/esl
Message-ID: 

Author: mcollins
Date: Thu Jan 22 13:44:08 2009
New Revision: 11381

Log:
Add /debug to /help list for fs_cli

Modified:
   freeswitch/trunk/libs/esl/fs_cli.c

Modified: freeswitch/trunk/libs/esl/fs_cli.c
==============================================================================
--- freeswitch/trunk/libs/esl/fs_cli.c	(original)
+++ freeswitch/trunk/libs/esl/fs_cli.c	Thu Jan 22 13:44:08 2009
@@ -254,6 +254,7 @@
 				   "/event, /noevent, /nixevent\tEvent commands.\n"
 				   "/log, /nolog               \tLog commands.\n"
 				   "/filter                    \tFilter commands.\n"
+                                   "/debug [0-7]               \tSet debug level.\n"
 				   "\n"
 				   );
 


From mikej at freeswitch.org  Thu Jan 22 11:45:58 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 13:45:58 -0600
Subject: [Freeswitch-svn] [commit] r11382 -
	freeswitch/branches/1.0/src/mod/applications/mod_easyroute
Message-ID: 

Author: mikej
Date: Thu Jan 22 13:45:58 2009
New Revision: 11382

Log:


Modified:
   freeswitch/branches/1.0/src/mod/applications/mod_easyroute/mod_easyroute.c

Modified: freeswitch/branches/1.0/src/mod/applications/mod_easyroute/mod_easyroute.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/applications/mod_easyroute/mod_easyroute.c	(original)
+++ freeswitch/branches/1.0/src/mod/applications/mod_easyroute/mod_easyroute.c	Thu Jan 22 13:45:58 2009
@@ -32,7 +32,7 @@
  * Take Incoming DIDs and Lookup where to send them as well as retrieve
  * the number of channels they are allowed you use
  *
- * Big Thanks to CP,  for funding this work.
+ * Big Thanks to CP and Joseph Watson (Powercode Systems, LLC) for funding this work.
  *
  */
 


From mikej at freeswitch.org  Thu Jan 22 11:58:12 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 13:58:12 -0600
Subject: [Freeswitch-svn] [commit] r11387 - in
	freeswitch/branches/1.0/libs/esl/src: . include
Message-ID: 

Author: mikej
Date: Thu Jan 22 13:58:12 2009
New Revision: 11387

Log:
libesl: fix solaris build (r:11067,11068)

Modified:
   freeswitch/branches/1.0/libs/esl/src/esl_event.c
   freeswitch/branches/1.0/libs/esl/src/include/esl.h

Modified: freeswitch/branches/1.0/libs/esl/src/esl_event.c
==============================================================================
--- freeswitch/branches/1.0/libs/esl/src/esl_event.c	(original)
+++ freeswitch/branches/1.0/libs/esl/src/esl_event.c	Thu Jan 22 13:58:12 2009
@@ -315,7 +315,7 @@
 
 static int esl_vasprintf(char **ret, const char *fmt, va_list ap)
 {
-#ifndef WIN32
+#if !defined(WIN32) && !defined(__sun)
 	return vasprintf(ret, fmt, ap);
 #else
 	char *buf;

Modified: freeswitch/branches/1.0/libs/esl/src/include/esl.h
==============================================================================
--- freeswitch/branches/1.0/libs/esl/src/include/esl.h	(original)
+++ freeswitch/branches/1.0/libs/esl/src/include/esl.h	Thu Jan 22 13:58:12 2009
@@ -1,329 +1,329 @@
-/*
- * Copyright (c) 2007, Anthony Minessale II
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 
- * * Neither the name of the original author; nor the names of any contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _ESL_H_
-#define _ESL_H_
-
-#include 
-
-#define esl_copy_string(_x, _y, _z) strncpy(_x, _y, _z - 1)
-#define esl_set_string(_x, _y) esl_copy_string(_x, _y, sizeof(_x))
-
-typedef struct esl_event_header esl_event_header_t;
-typedef struct esl_event esl_event_t;
-
-#ifdef WIN32
-#define ESL_SEQ_FWHITE FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY
-#define ESL_SEQ_FRED FOREGROUND_RED | FOREGROUND_INTENSITY
-#define ESL_SEQ_FMAGEN FOREGROUND_BLUE | FOREGROUND_RED
-#define ESL_SEQ_FCYAN FOREGROUND_GREEN | FOREGROUND_BLUE
-#define ESL_SEQ_FGREEN FOREGROUND_GREEN
-#define ESL_SEQ_FYELLOW FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY
-#define ESL_SEQ_DEFAULT_COLOR ESL_SEQ_FWHITE
-#else
-#define ESL_SEQ_ESC "\033["
-/* Ansi Control character suffixes */
-#define ESL_SEQ_HOME_CHAR 'H'
-#define ESL_SEQ_HOME_CHAR_STR "H"
-#define ESL_SEQ_CLEARLINE_CHAR '1'
-#define ESL_SEQ_CLEARLINE_CHAR_STR "1"
-#define ESL_SEQ_CLEARLINEEND_CHAR "K"
-#define ESL_SEQ_CLEARSCR_CHAR0 '2'
-#define ESL_SEQ_CLEARSCR_CHAR1 'J'
-#define ESL_SEQ_CLEARSCR_CHAR "2J"
-#define ESL_SEQ_DEFAULT_COLOR ESL_SEQ_ESC ESL_SEQ_END_COLOR	/* Reset to Default fg/bg color */
-#define ESL_SEQ_AND_COLOR ";"	/* To add multiple color definitions */
-#define ESL_SEQ_END_COLOR "m"	/* To end color definitions */
-/* Foreground colors values */
-#define ESL_SEQ_F_BLACK "30"
-#define ESL_SEQ_F_RED "31"
-#define ESL_SEQ_F_GREEN "32"
-#define ESL_SEQ_F_YELLOW "33"
-#define ESL_SEQ_F_BLUE "34"
-#define ESL_SEQ_F_MAGEN "35"
-#define ESL_SEQ_F_CYAN "36"
-#define ESL_SEQ_F_WHITE "37"
-/* Background colors values */
-#define ESL_SEQ_B_BLACK "40"
-#define ESL_SEQ_B_RED "41"
-#define ESL_SEQ_B_GREEN "42"
-#define ESL_SEQ_B_YELLOW "43"
-#define ESL_SEQ_B_BLUE "44"
-#define ESL_SEQ_B_MAGEN "45"
-#define ESL_SEQ_B_CYAN "46"
-#define ESL_SEQ_B_WHITE "47"
-/* Preset escape sequences - Change foreground colors only */
-#define ESL_SEQ_FBLACK ESL_SEQ_ESC ESL_SEQ_F_BLACK ESL_SEQ_END_COLOR
-#define ESL_SEQ_FRED ESL_SEQ_ESC ESL_SEQ_F_RED ESL_SEQ_END_COLOR
-#define ESL_SEQ_FGREEN ESL_SEQ_ESC ESL_SEQ_F_GREEN ESL_SEQ_END_COLOR
-#define ESL_SEQ_FYELLOW ESL_SEQ_ESC ESL_SEQ_F_YELLOW ESL_SEQ_END_COLOR
-#define ESL_SEQ_FBLUE ESL_SEQ_ESC ESL_SEQ_F_BLUE ESL_SEQ_END_COLOR
-#define ESL_SEQ_FMAGEN ESL_SEQ_ESC ESL_SEQ_F_MAGEN ESL_SEQ_END_COLOR
-#define ESL_SEQ_FCYAN ESL_SEQ_ESC ESL_SEQ_F_CYAN ESL_SEQ_END_COLOR
-#define ESL_SEQ_FWHITE ESL_SEQ_ESC ESL_SEQ_F_WHITE ESL_SEQ_END_COLOR
-#define ESL_SEQ_BBLACK ESL_SEQ_ESC ESL_SEQ_B_BLACK ESL_SEQ_END_COLOR
-#define ESL_SEQ_BRED ESL_SEQ_ESC ESL_SEQ_B_RED ESL_SEQ_END_COLOR
-#define ESL_SEQ_BGREEN ESL_SEQ_ESC ESL_SEQ_B_GREEN ESL_SEQ_END_COLOR
-#define ESL_SEQ_BYELLOW ESL_SEQ_ESC ESL_SEQ_B_YELLOW ESL_SEQ_END_COLOR
-#define ESL_SEQ_BBLUE ESL_SEQ_ESC ESL_SEQ_B_BLUE ESL_SEQ_END_COLOR
-#define ESL_SEQ_BMAGEN ESL_SEQ_ESC ESL_SEQ_B_MAGEN ESL_SEQ_END_COLOR
-#define ESL_SEQ_BCYAN ESL_SEQ_ESC ESL_SEQ_B_CYAN ESL_SEQ_END_COLOR
-#define ESL_SEQ_BWHITE ESL_SEQ_ESC ESL_SEQ_B_WHITE ESL_SEQ_END_COLOR
-/* Preset escape sequences */
-#define ESL_SEQ_HOME ESL_SEQ_ESC ESL_SEQ_HOME_CHAR_STR
-#define ESL_SEQ_CLEARLINE ESL_SEQ_ESC ESL_SEQ_CLEARLINE_CHAR_STR
-#define ESL_SEQ_CLEARLINEEND ESL_SEQ_ESC ESL_SEQ_CLEARLINEEND_CHAR
-#define ESL_SEQ_CLEARSCR ESL_SEQ_ESC ESL_SEQ_CLEARSCR_CHAR ESL_SEQ_HOME
-#endif
-
-#if !defined(_XOPEN_SOURCE) && !defined(__FreeBSD__) && !defined(__NetBSD__)
-#define _XOPEN_SOURCE 600
-#endif
-
-#ifndef HAVE_STRINGS_H
-#define HAVE_STRINGS_H 1
-#endif
-#ifndef HAVE_SYS_SOCKET_H
-#define HAVE_SYS_SOCKET_H 1
-#endif
-
-#ifndef __WINDOWS__
-#if defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32)
-#define __WINDOWS__
-#endif
-#endif
-
-#ifdef _MSC_VER
-#ifndef __inline__
-#define __inline__ __inline
-#endif
-#if (_MSC_VER >= 1400)			/* VC8+ */
-#ifndef _CRT_SECURE_NO_DEPRECATE
-#define _CRT_SECURE_NO_DEPRECATE
-#endif
-#ifndef _CRT_NONSTDC_NO_DEPRECATE
-#define _CRT_NONSTDC_NO_DEPRECATE
-#endif
-#endif
-#ifndef strcasecmp
-#define strcasecmp(s1, s2) _stricmp(s1, s2)
-#endif
-#ifndef strncasecmp
-#define strncasecmp(s1, s2, n) _strnicmp(s1, s2, n)
-#endif
-#ifndef snprintf
-#define snprintf _snprintf
-#endif
-#ifndef S_IRUSR
-#define S_IRUSR _S_IREAD
-#endif
-#ifndef S_IWUSR
-#define S_IWUSR _S_IWRITE
-#endif
-#undef HAVE_STRINGS_H
-#undef HAVE_SYS_SOCKET_H
-#endif
-
-#include 
-#ifndef WIN32
-#include 
-#endif
-
-#include 
-#include 
-#include 
-#include 
-#ifndef WIN32
-#include 
-#include 
-#include 
-#endif
-
-#ifdef HAVE_STRINGS_H
-#include 
-#endif
-#include 
-
-#if (_MSC_VER >= 1400)			// VC8+
-#define esl_assert(expr) assert(expr);__analysis_assume( expr )
-#endif
-
-#ifndef esl_assert
-#define esl_assert(_x) assert(_x)
-#endif
-
-#define esl_safe_free(_x) if (_x) free(_x); _x = NULL
-#define esl_strlen_zero(s) (!s || *(s) == '\0')
-#define esl_strlen_zero_buf(s) (*(s) == '\0')
-
-#ifdef WIN32
-#include 
-#include 
-typedef SOCKET esl_socket_t;
-typedef unsigned __int64 uint64_t;
-typedef unsigned __int32 uint32_t;
-typedef unsigned __int16 uint16_t;
-typedef unsigned __int8 uint8_t;
-typedef __int64 int64_t;
-typedef __int32 int32_t;
-typedef __int16 int16_t;
-typedef __int8 int8_t;
-typedef intptr_t esl_ssize_t;
-typedef int esl_filehandle_t;
-#define ESL_SOCK_INVALID INVALID_SOCKET
-#define strerror_r(num, buf, size) strerror_s(buf, size, num)
-#if defined(ESL_DECLARE_STATIC)
-#define ESL_DECLARE(type)			type __stdcall
-#define ESL_DECLARE_NONSTD(type)		type __cdecl
-#define ESL_DECLARE_DATA
-#elif defined(ESL_EXPORTS)
-#define ESL_DECLARE(type)			__declspec(dllexport) type __stdcall
-#define ESL_DECLARE_NONSTD(type)		__declspec(dllexport) type __cdecl
-#define ESL_DECLARE_DATA				__declspec(dllexport)
-#else
-#define ESL_DECLARE(type)			__declspec(dllimport) type __stdcall
-#define ESL_DECLARE_NONSTD(type)		__declspec(dllimport) type __cdecl
-#define ESL_DECLARE_DATA				__declspec(dllimport)
-#endif
-#else
-#define ESL_DECLARE(type) type
-#define ESL_DECLARE_NONSTD(type) type
-#define ESL_DECLARE_DATA
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#define ESL_SOCK_INVALID -1
-typedef int esl_socket_t;
-typedef ssize_t esl_ssize_t;
-typedef int esl_filehandle_t;
-#endif
-
-typedef int16_t esl_port_t;
-
-typedef enum {
-	ESL_SUCCESS,
-	ESL_FAIL,
-	ESL_BREAK
-} esl_status_t;
-
-#include 
-
-typedef struct {
-	struct sockaddr_in sockaddr;
-	struct hostent hostent;
-	char hostbuf[256];
-	esl_socket_t sock;
-	char err[256];
-	int errnum;
-	char header_buf[4196];
-	char last_reply[1024];
-	char last_sr_reply[1024];
-	esl_event_t *last_event;
-	esl_event_t *last_sr_event;
-	esl_event_t *last_ievent;
-	esl_event_t *info_event;
-	int connected;
-	struct sockaddr_in addr;
-	esl_mutex_t *mutex;
-} esl_handle_t;
-
-typedef enum {
-	ESL_TRUE = 1,
-	ESL_FALSE = 0
-} esl_bool_t;
-
-#ifndef __FUNCTION__
-#define __FUNCTION__ (const char *)__func__
-#endif
-
-#define ESL_PRE __FILE__, __FUNCTION__, __LINE__
-#define ESL_LOG_LEVEL_DEBUG 7
-#define ESL_LOG_LEVEL_INFO 6
-#define ESL_LOG_LEVEL_NOTICE 5
-#define ESL_LOG_LEVEL_WARNING 4
-#define ESL_LOG_LEVEL_ERROR 3
-#define ESL_LOG_LEVEL_CRIT 2
-#define ESL_LOG_LEVEL_ALERT 1
-#define ESL_LOG_LEVEL_EMERG 0
-
-#define ESL_LOG_DEBUG ESL_PRE, ESL_LOG_LEVEL_DEBUG
-#define ESL_LOG_INFO ESL_PRE, ESL_LOG_LEVEL_INFO
-#define ESL_LOG_NOTICE ESL_PRE, ESL_LOG_LEVEL_NOTICE
-#define ESL_LOG_WARNING ESL_PRE, ESL_LOG_LEVEL_WARNING
-#define ESL_LOG_ERROR ESL_PRE, ESL_LOG_LEVEL_ERROR
-#define ESL_LOG_CRIT ESL_PRE, ESL_LOG_LEVEL_CRIT
-#define ESL_LOG_ALERT ESL_PRE, ESL_LOG_LEVEL_ALERT
-#define ESL_LOG_EMERG ESL_PRE, ESL_LOG_LEVEL_EMERG
-typedef void (*esl_logger_t)(const char *file, const char *func, int line, int level, const char *fmt, ...);
-
-ESL_DECLARE_DATA extern esl_logger_t esl_log;
-
-ESL_DECLARE(void) esl_global_set_logger(esl_logger_t logger);
-ESL_DECLARE(void) esl_global_set_default_logger(int level);
-
-#include "esl_event.h"
-#include "esl_threadmutex.h"
-#include "esl_config.h"
-
-ESL_DECLARE(size_t) esl_url_encode(const char *url, char *buf, size_t len);
-ESL_DECLARE(char *)esl_url_decode(char *s);
-ESL_DECLARE(const char *)esl_stristr(const char *instr, const char *str);
-ESL_DECLARE(int) esl_toupper(int c);
-ESL_DECLARE(int) esl_tolower(int c);
-ESL_DECLARE(int) esl_snprintf(char *buffer, size_t count, const char *fmt, ...);
-
-
-typedef void (*esl_listen_callback_t)(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in addr);
-
-ESL_DECLARE(esl_status_t) esl_attach_handle(esl_handle_t *handle, esl_socket_t socket, struct sockaddr_in addr);
-ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback);
-ESL_DECLARE(esl_status_t) esl_execute(esl_handle_t *handle, const char *app, const char *arg, const char *uuid);
-ESL_DECLARE(esl_status_t) esl_sendevent(esl_handle_t *handle, esl_event_t *event);
-
-ESL_DECLARE(esl_status_t) esl_connect(esl_handle_t *handle, const char *host, esl_port_t port, const char *password);
-ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle);
-ESL_DECLARE(esl_status_t) esl_send(esl_handle_t *handle, const char *cmd);
-ESL_DECLARE(esl_status_t) esl_recv_event(esl_handle_t *handle, esl_event_t **save_event);
-ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms, esl_event_t **save_event);
-ESL_DECLARE(esl_status_t) esl_send_recv(esl_handle_t *handle, const char *cmd);
-#define esl_recv(_h) esl_recv_event(_h, NULL)
-#define esl_recv_timed(_h, _ms) esl_recv_event_timed(_h, _ms, NULL)
-
-#endif
-
-
-
+/*
+ * Copyright (c) 2007, Anthony Minessale II
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 
+ * * Neither the name of the original author; nor the names of any contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ * 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ESL_H_
+#define _ESL_H_
+
+#include 
+
+#define esl_copy_string(_x, _y, _z) strncpy(_x, _y, _z - 1)
+#define esl_set_string(_x, _y) esl_copy_string(_x, _y, sizeof(_x))
+
+typedef struct esl_event_header esl_event_header_t;
+typedef struct esl_event esl_event_t;
+
+#ifdef WIN32
+#define ESL_SEQ_FWHITE FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY
+#define ESL_SEQ_FRED FOREGROUND_RED | FOREGROUND_INTENSITY
+#define ESL_SEQ_FMAGEN FOREGROUND_BLUE | FOREGROUND_RED
+#define ESL_SEQ_FCYAN FOREGROUND_GREEN | FOREGROUND_BLUE
+#define ESL_SEQ_FGREEN FOREGROUND_GREEN
+#define ESL_SEQ_FYELLOW FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY
+#define ESL_SEQ_DEFAULT_COLOR ESL_SEQ_FWHITE
+#else
+#define ESL_SEQ_ESC "\033["
+/* Ansi Control character suffixes */
+#define ESL_SEQ_HOME_CHAR 'H'
+#define ESL_SEQ_HOME_CHAR_STR "H"
+#define ESL_SEQ_CLEARLINE_CHAR '1'
+#define ESL_SEQ_CLEARLINE_CHAR_STR "1"
+#define ESL_SEQ_CLEARLINEEND_CHAR "K"
+#define ESL_SEQ_CLEARSCR_CHAR0 '2'
+#define ESL_SEQ_CLEARSCR_CHAR1 'J'
+#define ESL_SEQ_CLEARSCR_CHAR "2J"
+#define ESL_SEQ_DEFAULT_COLOR ESL_SEQ_ESC ESL_SEQ_END_COLOR	/* Reset to Default fg/bg color */
+#define ESL_SEQ_AND_COLOR ";"	/* To add multiple color definitions */
+#define ESL_SEQ_END_COLOR "m"	/* To end color definitions */
+/* Foreground colors values */
+#define ESL_SEQ_F_BLACK "30"
+#define ESL_SEQ_F_RED "31"
+#define ESL_SEQ_F_GREEN "32"
+#define ESL_SEQ_F_YELLOW "33"
+#define ESL_SEQ_F_BLUE "34"
+#define ESL_SEQ_F_MAGEN "35"
+#define ESL_SEQ_F_CYAN "36"
+#define ESL_SEQ_F_WHITE "37"
+/* Background colors values */
+#define ESL_SEQ_B_BLACK "40"
+#define ESL_SEQ_B_RED "41"
+#define ESL_SEQ_B_GREEN "42"
+#define ESL_SEQ_B_YELLOW "43"
+#define ESL_SEQ_B_BLUE "44"
+#define ESL_SEQ_B_MAGEN "45"
+#define ESL_SEQ_B_CYAN "46"
+#define ESL_SEQ_B_WHITE "47"
+/* Preset escape sequences - Change foreground colors only */
+#define ESL_SEQ_FBLACK ESL_SEQ_ESC ESL_SEQ_F_BLACK ESL_SEQ_END_COLOR
+#define ESL_SEQ_FRED ESL_SEQ_ESC ESL_SEQ_F_RED ESL_SEQ_END_COLOR
+#define ESL_SEQ_FGREEN ESL_SEQ_ESC ESL_SEQ_F_GREEN ESL_SEQ_END_COLOR
+#define ESL_SEQ_FYELLOW ESL_SEQ_ESC ESL_SEQ_F_YELLOW ESL_SEQ_END_COLOR
+#define ESL_SEQ_FBLUE ESL_SEQ_ESC ESL_SEQ_F_BLUE ESL_SEQ_END_COLOR
+#define ESL_SEQ_FMAGEN ESL_SEQ_ESC ESL_SEQ_F_MAGEN ESL_SEQ_END_COLOR
+#define ESL_SEQ_FCYAN ESL_SEQ_ESC ESL_SEQ_F_CYAN ESL_SEQ_END_COLOR
+#define ESL_SEQ_FWHITE ESL_SEQ_ESC ESL_SEQ_F_WHITE ESL_SEQ_END_COLOR
+#define ESL_SEQ_BBLACK ESL_SEQ_ESC ESL_SEQ_B_BLACK ESL_SEQ_END_COLOR
+#define ESL_SEQ_BRED ESL_SEQ_ESC ESL_SEQ_B_RED ESL_SEQ_END_COLOR
+#define ESL_SEQ_BGREEN ESL_SEQ_ESC ESL_SEQ_B_GREEN ESL_SEQ_END_COLOR
+#define ESL_SEQ_BYELLOW ESL_SEQ_ESC ESL_SEQ_B_YELLOW ESL_SEQ_END_COLOR
+#define ESL_SEQ_BBLUE ESL_SEQ_ESC ESL_SEQ_B_BLUE ESL_SEQ_END_COLOR
+#define ESL_SEQ_BMAGEN ESL_SEQ_ESC ESL_SEQ_B_MAGEN ESL_SEQ_END_COLOR
+#define ESL_SEQ_BCYAN ESL_SEQ_ESC ESL_SEQ_B_CYAN ESL_SEQ_END_COLOR
+#define ESL_SEQ_BWHITE ESL_SEQ_ESC ESL_SEQ_B_WHITE ESL_SEQ_END_COLOR
+/* Preset escape sequences */
+#define ESL_SEQ_HOME ESL_SEQ_ESC ESL_SEQ_HOME_CHAR_STR
+#define ESL_SEQ_CLEARLINE ESL_SEQ_ESC ESL_SEQ_CLEARLINE_CHAR_STR
+#define ESL_SEQ_CLEARLINEEND ESL_SEQ_ESC ESL_SEQ_CLEARLINEEND_CHAR
+#define ESL_SEQ_CLEARSCR ESL_SEQ_ESC ESL_SEQ_CLEARSCR_CHAR ESL_SEQ_HOME
+#endif
+
+#if !defined(_XOPEN_SOURCE) && !defined(__FreeBSD__) && !defined(__NetBSD__)
+#define _XOPEN_SOURCE 600
+#endif
+
+#ifndef HAVE_STRINGS_H
+#define HAVE_STRINGS_H 1
+#endif
+#ifndef HAVE_SYS_SOCKET_H
+#define HAVE_SYS_SOCKET_H 1
+#endif
+
+#ifndef __WINDOWS__
+#if defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32)
+#define __WINDOWS__
+#endif
+#endif
+
+#ifdef _MSC_VER
+#ifndef __inline__
+#define __inline__ __inline
+#endif
+#if (_MSC_VER >= 1400)			/* VC8+ */
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE
+#endif
+#ifndef _CRT_NONSTDC_NO_DEPRECATE
+#define _CRT_NONSTDC_NO_DEPRECATE
+#endif
+#endif
+#ifndef strcasecmp
+#define strcasecmp(s1, s2) _stricmp(s1, s2)
+#endif
+#ifndef strncasecmp
+#define strncasecmp(s1, s2, n) _strnicmp(s1, s2, n)
+#endif
+#ifndef snprintf
+#define snprintf _snprintf
+#endif
+#ifndef S_IRUSR
+#define S_IRUSR _S_IREAD
+#endif
+#ifndef S_IWUSR
+#define S_IWUSR _S_IWRITE
+#endif
+#undef HAVE_STRINGS_H
+#undef HAVE_SYS_SOCKET_H
+#endif
+
+#include 
+#ifndef WIN32
+#include 
+#endif
+
+#include 
+#include 
+#include 
+#include 
+#ifndef WIN32
+#include 
+#include 
+#include 
+#endif
+
+#ifdef HAVE_STRINGS_H
+#include 
+#endif
+#include 
+
+#if (_MSC_VER >= 1400)			// VC8+
+#define esl_assert(expr) assert(expr);__analysis_assume( expr )
+#endif
+
+#ifndef esl_assert
+#define esl_assert(_x) assert(_x)
+#endif
+
+#define esl_safe_free(_x) if (_x) free(_x); _x = NULL
+#define esl_strlen_zero(s) (!s || *(s) == '\0')
+#define esl_strlen_zero_buf(s) (*(s) == '\0')
+
+#ifdef WIN32
+#include 
+#include 
+typedef SOCKET esl_socket_t;
+typedef unsigned __int64 uint64_t;
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int16 uint16_t;
+typedef unsigned __int8 uint8_t;
+typedef __int64 int64_t;
+typedef __int32 int32_t;
+typedef __int16 int16_t;
+typedef __int8 int8_t;
+typedef intptr_t esl_ssize_t;
+typedef int esl_filehandle_t;
+#define ESL_SOCK_INVALID INVALID_SOCKET
+#define strerror_r(num, buf, size) strerror_s(buf, size, num)
+#if defined(ESL_DECLARE_STATIC)
+#define ESL_DECLARE(type)			type __stdcall
+#define ESL_DECLARE_NONSTD(type)		type __cdecl
+#define ESL_DECLARE_DATA
+#elif defined(ESL_EXPORTS)
+#define ESL_DECLARE(type)			__declspec(dllexport) type __stdcall
+#define ESL_DECLARE_NONSTD(type)		__declspec(dllexport) type __cdecl
+#define ESL_DECLARE_DATA				__declspec(dllexport)
+#else
+#define ESL_DECLARE(type)			__declspec(dllimport) type __stdcall
+#define ESL_DECLARE_NONSTD(type)		__declspec(dllimport) type __cdecl
+#define ESL_DECLARE_DATA				__declspec(dllimport)
+#endif
+#else
+#define ESL_DECLARE(type) type
+#define ESL_DECLARE_NONSTD(type) type
+#define ESL_DECLARE_DATA
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#define ESL_SOCK_INVALID -1
+typedef int esl_socket_t;
+typedef ssize_t esl_ssize_t;
+typedef int esl_filehandle_t;
+#endif
+
+typedef int16_t esl_port_t;
+
+typedef enum {
+	ESL_SUCCESS,
+	ESL_FAIL,
+	ESL_BREAK
+} esl_status_t;
+
+#include 
+
+typedef struct {
+	struct sockaddr_in sockaddr;
+	struct hostent hostent;
+	char hostbuf[256];
+	esl_socket_t sock;
+	char err[256];
+	int errnum;
+	char header_buf[4196];
+	char last_reply[1024];
+	char last_sr_reply[1024];
+	esl_event_t *last_event;
+	esl_event_t *last_sr_event;
+	esl_event_t *last_ievent;
+	esl_event_t *info_event;
+	int connected;
+	struct sockaddr_in addr;
+	esl_mutex_t *mutex;
+} esl_handle_t;
+
+typedef enum {
+	ESL_TRUE = 1,
+	ESL_FALSE = 0
+} esl_bool_t;
+
+#ifndef __FUNCTION__
+#define __FUNCTION__ (const char *)__func__
+#endif
+
+#define ESL_PRE __FILE__, __FUNCTION__, __LINE__
+#define ESL_LOG_LEVEL_DEBUG 7
+#define ESL_LOG_LEVEL_INFO 6
+#define ESL_LOG_LEVEL_NOTICE 5
+#define ESL_LOG_LEVEL_WARNING 4
+#define ESL_LOG_LEVEL_ERROR 3
+#define ESL_LOG_LEVEL_CRIT 2
+#define ESL_LOG_LEVEL_ALERT 1
+#define ESL_LOG_LEVEL_EMERG 0
+
+#define ESL_LOG_DEBUG ESL_PRE, ESL_LOG_LEVEL_DEBUG
+#define ESL_LOG_INFO ESL_PRE, ESL_LOG_LEVEL_INFO
+#define ESL_LOG_NOTICE ESL_PRE, ESL_LOG_LEVEL_NOTICE
+#define ESL_LOG_WARNING ESL_PRE, ESL_LOG_LEVEL_WARNING
+#define ESL_LOG_ERROR ESL_PRE, ESL_LOG_LEVEL_ERROR
+#define ESL_LOG_CRIT ESL_PRE, ESL_LOG_LEVEL_CRIT
+#define ESL_LOG_ALERT ESL_PRE, ESL_LOG_LEVEL_ALERT
+#define ESL_LOG_EMERG ESL_PRE, ESL_LOG_LEVEL_EMERG
+typedef void (*esl_logger_t)(const char *file, const char *func, int line, int level, const char *fmt, ...);
+
+ESL_DECLARE_DATA extern esl_logger_t esl_log;
+
+ESL_DECLARE(void) esl_global_set_logger(esl_logger_t logger);
+ESL_DECLARE(void) esl_global_set_default_logger(int level);
+
+#include "esl_event.h"
+#include "esl_threadmutex.h"
+#include "esl_config.h"
+
+ESL_DECLARE(size_t) esl_url_encode(const char *url, char *buf, size_t len);
+ESL_DECLARE(char *)esl_url_decode(char *s);
+ESL_DECLARE(const char *)esl_stristr(const char *instr, const char *str);
+ESL_DECLARE(int) esl_toupper(int c);
+ESL_DECLARE(int) esl_tolower(int c);
+ESL_DECLARE(int) esl_snprintf(char *buffer, size_t count, const char *fmt, ...);
+
+
+typedef void (*esl_listen_callback_t)(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in addr);
+
+ESL_DECLARE(esl_status_t) esl_attach_handle(esl_handle_t *handle, esl_socket_t socket, struct sockaddr_in addr);
+ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback);
+ESL_DECLARE(esl_status_t) esl_execute(esl_handle_t *handle, const char *app, const char *arg, const char *uuid);
+ESL_DECLARE(esl_status_t) esl_sendevent(esl_handle_t *handle, esl_event_t *event);
+
+ESL_DECLARE(esl_status_t) esl_connect(esl_handle_t *handle, const char *host, esl_port_t port, const char *password);
+ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle);
+ESL_DECLARE(esl_status_t) esl_send(esl_handle_t *handle, const char *cmd);
+ESL_DECLARE(esl_status_t) esl_recv_event(esl_handle_t *handle, esl_event_t **save_event);
+ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms, esl_event_t **save_event);
+ESL_DECLARE(esl_status_t) esl_send_recv(esl_handle_t *handle, const char *cmd);
+#define esl_recv(_h) esl_recv_event(_h, NULL)
+#define esl_recv_timed(_h, _ms) esl_recv_event_timed(_h, _ms, NULL)
+
+#endif
+
+
+


From mikej at freeswitch.org  Thu Jan 22 12:04:31 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 14:04:31 -0600
Subject: [Freeswitch-svn] [commit] r11389 -
	freeswitch/branches/1.0/src/mod/endpoints/mod_sofia
Message-ID: 

Author: mikej
Date: Thu Jan 22 14:04:30 2009
New Revision: 11389

Log:
mod_sofia: fix sip_auto_answer=true (r:11069)

Modified:
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.c

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.c	Thu Jan 22 14:04:30 2009
@@ -2528,7 +2528,13 @@
 
 	if (session) {
 		switch_channel_t *o_channel = switch_core_session_get_channel(session);
+		const char *vval = NULL;
 
+		if ((vval = switch_channel_get_variable(o_channel, "sip_auto_answer")) && switch_true(vval)) {
+			switch_channel_set_variable_printf(nchannel, "sip_h_Call-Info", ";answer-after=0", profile->sipip);
+			switch_channel_set_variable(nchannel, "sip_invite_params", "intercom=true");
+		}
+		
 		switch_ivr_transfer_variable(session, nsession, SOFIA_REPLACES_HEADER);
 		switch_ivr_transfer_variable(session, nsession, "sip_auto_answer");
 		switch_ivr_transfer_variable(session, nsession, SOFIA_SIP_HEADER_PREFIX_T);


From andrew at freeswitch.org  Thu Jan 22 13:20:36 2009
From: andrew at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 15:20:36 -0600
Subject: [Freeswitch-svn] [commit] r11395 -
	freeswitch/trunk/src/mod/event_handlers/mod_erlang_event
Message-ID: 

Author: andrew
Date: Thu Jan 22 15:20:36 2009
New Revision: 11395

Log:
Tweak some stuff, make the registered process name an atom, return baduuid if the requested uuid isn't found


Modified:
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c

Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c	Thu Jan 22 15:20:36 2009
@@ -167,7 +167,7 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ei initialized at %s\n", thisnodename);
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "ei initialized node at %s\n", thisnodename);
 	return SWITCH_STATUS_SUCCESS;
 }
 

Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c	Thu Jan 22 15:20:36 2009
@@ -523,28 +523,25 @@
 
 	if (arity != 3 ||
 		ei_decode_string(buf->buff, &buf->index, uuid_str) ||
-		ei_decode_string(buf->buff, &buf->index, reg_name)) {
+		ei_decode_atom(buf->buff, &buf->index, reg_name)) {
 		ei_x_encode_tuple_header(rbuf, 2);
 		ei_x_encode_atom(rbuf, "error");
 		ei_x_encode_atom(rbuf, "badarg");
-	}
-	else {
+	} else {
 		switch_core_session_t *session;
 		if (!switch_strlen_zero(uuid_str) && (session = switch_core_session_locate(uuid_str))) {
 			/* create a new sesion list element and attach it to this listener */
 			if (attach_call_to_listener(listener,reg_name,session)) {
 				ei_x_encode_atom(rbuf, "ok");
-			}
-			else {
+			} else {
 				ei_x_encode_tuple_header(rbuf, 2);
 				ei_x_encode_atom(rbuf, "error");
 				ei_x_encode_atom(rbuf, "badsession");
 			}
-		}
-		else {
+		} else {
 			ei_x_encode_tuple_header(rbuf, 2);
 			ei_x_encode_atom(rbuf, "error");
-			ei_x_encode_atom(rbuf, "badarg");
+			ei_x_encode_atom(rbuf, "baduuid");
 		}
 	}
 	return SWITCH_STATUS_SUCCESS;


From mikej at freeswitch.org  Thu Jan 22 13:40:38 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 15:40:38 -0600
Subject: [Freeswitch-svn] [commit] r11400 -
	freeswitch/branches/1.0/src/mod/applications/mod_limit
Message-ID: 

Author: mikej
Date: Thu Jan 22 15:40:38 2009
New Revision: 11400

Log:
mod_limit: fix memory corruption caused by race condition when using limit hash (r:11070-11071)

Modified:
   freeswitch/branches/1.0/src/mod/applications/mod_limit/mod_limit.c

Modified: freeswitch/branches/1.0/src/mod/applications/mod_limit/mod_limit.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/applications/mod_limit/mod_limit.c	(original)
+++ freeswitch/branches/1.0/src/mod/applications/mod_limit/mod_limit.c	Thu Jan 22 15:40:38 2009
@@ -300,7 +300,7 @@
 	/* The call is either hung up, or is going back into the dialplan, decrement appropriate couters */
 	if (state == CS_HANGUP || state == CS_ROUTING) {	
 		switch_hash_index_t *hi;
-		switch_mutex_lock(globals.mutex);
+		switch_mutex_lock(globals.limit_hash_mutex);
 
 		/* Loop through the channel's hashtable which contains mapping to all the limit_hash_item_t referenced by that channel */
 		for(hi = switch_hash_first(NULL, channel_hash); hi; hi = switch_hash_next(hi))
@@ -319,7 +319,7 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Usage for %s is now %d\n", (const char*)key, item->total_usage);	
 		}
 		switch_core_event_hook_remove_state_change(session, hash_state_handler);
-		switch_mutex_unlock(globals.mutex);
+		switch_mutex_unlock(globals.limit_hash_mutex);
 	}
 	
 	return SWITCH_STATUS_SUCCESS;


From mikej at freeswitch.org  Thu Jan 22 13:45:54 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 15:45:54 -0600
Subject: [Freeswitch-svn] [commit] r11401 - in freeswitch/branches/1.0/src:
	. include mod/applications/mod_conference
Message-ID: 

Author: mikej
Date: Thu Jan 22 15:45:53 2009
New Revision: 11401

Log:
mod_conference: make conference verbose-events param to control if events have all the channel data or not (r:11073-11077)

Modified:
   freeswitch/branches/1.0/src/include/switch_channel.h
   freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c
   freeswitch/branches/1.0/src/switch_channel.c

Modified: freeswitch/branches/1.0/src/include/switch_channel.h
==============================================================================
--- freeswitch/branches/1.0/src/include/switch_channel.h	(original)
+++ freeswitch/branches/1.0/src/include/switch_channel.h	Thu Jan 22 15:45:53 2009
@@ -472,6 +472,9 @@
 */
 SWITCH_DECLARE(void) switch_channel_event_set_data(_In_ switch_channel_t *channel, _In_ switch_event_t *event);
 
+SWITCH_DECLARE(void) switch_channel_event_set_basic_data(_In_ switch_channel_t *channel, _In_ switch_event_t *event);
+SWITCH_DECLARE(void) switch_channel_event_set_extended_data(_In_ switch_channel_t *channel, _In_ switch_event_t *event);
+
 /*!
   \brief Expand varaibles in a string based on the variables in a paticular channel
   \param channel channel to expand the variables from

Modified: freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c	Thu Jan 22 15:45:53 2009
@@ -264,6 +264,7 @@
 	int comfort_noise_level;
 	int video_running;
 	uint32_t eflags;
+	uint32_t verbose_events;
 } conference_obj_t;
 
 /* Relationship with another member */
@@ -308,6 +309,7 @@
 	switch_ivr_digit_stream_t *digit_stream;
 	switch_speech_handle_t lsh;
 	switch_speech_handle_t *sh;
+	uint32_t verbose_events;
 	struct conference_member *next;
 };
 
@@ -401,15 +403,21 @@
 	if (!member)
 		return status;
 
-	if (member->session) {
-		switch_channel_t *channel = switch_core_session_get_channel(member->session);
-		switch_channel_event_set_data(channel, event);
-	}
-
 	if (member->conference) {
 		status = conference_add_event_data(member->conference, event);
 	}
 
+	if (member->session) {
+		switch_channel_t *channel = switch_core_session_get_channel(member->session);
+		
+		if (member->verbose_events) {
+			switch_channel_event_set_data(channel, event);
+		} else {
+			switch_channel_event_set_basic_data(channel, event);
+		}
+		
+	}
+
 	switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
 
 	return status;
@@ -572,6 +580,7 @@
 	member->conference = conference;
 	member->next = conference->members;
 	member->energy_level = conference->energy_level;
+	member->verbose_events = conference->verbose_events;
 	conference->members = member;
 	switch_set_flag(member, MFLAG_INTREE);
 	switch_mutex_unlock(conference->member_mutex);
@@ -5018,6 +5027,7 @@
 	switch_status_t status;
 	int comfort_noise_level = 0;
 	char *suppress_events = NULL;
+	char *verbose_events = NULL;
 	char *auto_record = NULL;
 
 	/* Validate the conference name */
@@ -5137,6 +5147,8 @@
 			}
 		} else if (!strcasecmp(var, "suppress-events") && !switch_strlen_zero(val)) {
 			suppress_events = val;
+		} else if (!strcasecmp(var, "verbose-events") && !switch_strlen_zero(val)) {
+			verbose_events = val;
 		} else if (!strcasecmp(var, "auto-record") && !switch_strlen_zero(val)) {
 			auto_record = val;
 		}
@@ -5296,6 +5308,10 @@
 	if (!switch_strlen_zero(auto_record)) {
 		conference->auto_record = switch_core_strdup(conference->pool, auto_record);
 	}
+
+	if (!switch_strlen_zero(verbose_events) && switch_true(verbose_events)) {
+		conference->verbose_events = 1;
+	}
 	
 	/* caller control configuration chores */
 	if (switch_ivr_digit_stream_parser_new(conference->pool, &conference->dtmf_parser) == SWITCH_STATUS_SUCCESS) {

Modified: freeswitch/branches/1.0/src/switch_channel.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_channel.c	(original)
+++ freeswitch/branches/1.0/src/switch_channel.c	Thu Jan 22 15:45:53 2009
@@ -1140,13 +1140,12 @@
 	return channel->state;
 }
 
-SWITCH_DECLARE(void) switch_channel_event_set_data(switch_channel_t *channel, switch_event_t *event)
+SWITCH_DECLARE(void) switch_channel_event_set_basic_data(switch_channel_t *channel, switch_event_t *event)
 {
 	switch_caller_profile_t *caller_profile, *originator_caller_profile = NULL, *originatee_caller_profile = NULL;
-	switch_event_header_t *hi;
 	switch_codec_t *codec;
 	char state_num[25];
-	int x;
+
 	switch_mutex_lock(channel->profile_mutex);
 
 	if ((caller_profile = switch_channel_get_caller_profile(channel))) {
@@ -1178,7 +1177,7 @@
 		switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Write-Codec-Name", switch_str_nil(codec->implementation->iananame));
 		switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Channel-Write-Codec-Rate", "%u", codec->implementation->actual_samples_per_second);
 	}
-	
+
 	/* Index Caller's Profile */
 	if (caller_profile) {
 		switch_caller_profile_event_set_data(caller_profile, "Caller", event);
@@ -1199,7 +1198,16 @@
 		}
 	}
 
+	switch_mutex_unlock(channel->profile_mutex);
+}
+
+SWITCH_DECLARE(void) switch_channel_event_set_extended_data(switch_channel_t *channel, switch_event_t *event)
+{
+	switch_event_header_t *hi;
+	int x;
 
+	switch_mutex_lock(channel->profile_mutex);
+	
 	if (switch_channel_test_flag(channel, CF_VERBOSE_EVENTS) || 
 		event->event_id == SWITCH_EVENT_CHANNEL_ORIGINATE ||
 		event->event_id == SWITCH_EVENT_CHANNEL_UUID ||
@@ -1235,6 +1243,17 @@
 	switch_mutex_unlock(channel->profile_mutex);
 }
 
+
+SWITCH_DECLARE(void) switch_channel_event_set_data(switch_channel_t *channel, switch_event_t *event)
+{
+	switch_mutex_lock(channel->profile_mutex);
+	switch_channel_event_set_basic_data(channel, event);
+	switch_channel_event_set_extended_data(channel, event);
+	switch_mutex_unlock(channel->profile_mutex);
+}
+
+
+
 SWITCH_DECLARE(void) switch_channel_set_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile)
 {
 	char *uuid = NULL;


From mikej at freeswitch.org  Thu Jan 22 14:07:53 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 16:07:53 -0600
Subject: [Freeswitch-svn] [commit] r11404 - in
	freeswitch/branches/1.0/libs/esl: . src
Message-ID: 

Author: mikej
Date: Thu Jan 22 16:07:53 2009
New Revision: 11404

Log:
libesl: fix disconnect failure (r:11078,11083)

Modified:
   freeswitch/branches/1.0/libs/esl/fs_cli.c
   freeswitch/branches/1.0/libs/esl/src/esl.c

Modified: freeswitch/branches/1.0/libs/esl/fs_cli.c
==============================================================================
--- freeswitch/branches/1.0/libs/esl/fs_cli.c	(original)
+++ freeswitch/branches/1.0/libs/esl/fs_cli.c	Thu Jan 22 16:07:53 2009
@@ -618,6 +618,7 @@
 	}
 
 	if (esl_connect(&handle, profile->host, profile->port, profile->pass)) {
+		esl_global_set_default_logger(3);
 		esl_log(ESL_LOG_ERROR, "Error Connecting [%s]\n", handle.err);
 		return -1;
 	}

Modified: freeswitch/branches/1.0/libs/esl/src/esl.c
==============================================================================
--- freeswitch/branches/1.0/libs/esl/src/esl.c	(original)
+++ freeswitch/branches/1.0/libs/esl/src/esl.c	Thu Jan 22 16:07:53 2009
@@ -368,6 +368,10 @@
 {
 	char *txt;
 
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
 	esl_event_serialize(handle->last_ievent, &txt, ESL_TRUE);
 
 	esl_log(ESL_LOG_DEBUG, "SEND EVENT\n%s\n", txt);
@@ -388,6 +392,10 @@
 	char arg_buf[512] = "";
 	char send_buf[1292] = "";
 	
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
 	if (uuid) {
 		snprintf(cmd_buf, sizeof(cmd_buf), "sendmsg %s", uuid);
 	}
@@ -570,24 +578,33 @@
 
 ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle)
 {
+	esl_mutex_t *mutex = handle->mutex;
+	esl_status_t status = ESL_FAIL;
+	
+	if (mutex) {
+		esl_mutex_lock(mutex);
+	}
+
 	esl_event_safe_destroy(&handle->last_event);
 	esl_event_safe_destroy(&handle->last_sr_event);
 	esl_event_safe_destroy(&handle->last_ievent);
 	esl_event_safe_destroy(&handle->info_event);
 
-	if (handle->mutex) {
-		esl_mutex_destroy(&handle->mutex);
-	}
-
 	if (handle->sock != ESL_SOCK_INVALID) {
 		closesocket(handle->sock);
 		handle->sock = ESL_SOCK_INVALID;
-		return ESL_SUCCESS;
+		status = ESL_SUCCESS;
 	}
 	
 	handle->connected = 0;
 
-	return ESL_FAIL;
+	if (mutex) {
+		esl_mutex_unlock(mutex);
+		esl_mutex_destroy(&mutex);
+	}
+
+
+	return status;
 }
 
 ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms, esl_event_t **save_event)
@@ -597,6 +614,10 @@
 	int max, activity;
 	esl_status_t status = ESL_SUCCESS;
 
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
 	tv.tv_usec = ms * 1000;
 
 	esl_mutex_lock(handle->mutex);
@@ -652,6 +673,11 @@
 	esl_ssize_t len;
 	int zc = 0;
 	
+
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
 	esl_mutex_lock(handle->mutex);
 
 	esl_event_safe_destroy(&handle->last_event);
@@ -850,6 +876,10 @@
 {
 	const char *e = cmd + strlen(cmd) -1;
 	
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
 	esl_log(ESL_LOG_DEBUG, "SEND\n%s\n", cmd);
 	
 	if (send(handle->sock, cmd, strlen(cmd), 0) != (int)strlen(cmd)) {
@@ -874,6 +904,10 @@
 	const char *hval;
 	esl_status_t status;
 	
+	if (!handle->connected) {
+		return ESL_FAIL;
+	}
+
 	esl_mutex_lock(handle->mutex);
 
 	if ((status = esl_send(handle, cmd))) {


From mikej at freeswitch.org  Thu Jan 22 14:11:34 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 16:11:34 -0600
Subject: [Freeswitch-svn] [commit] r11407 - in freeswitch/branches/1.0/src:
	. mod/applications/mod_conference mod/endpoints/mod_sofia
Message-ID: 

Author: mikej
Date: Thu Jan 22 16:11:34 2009
New Revision: 11407

Log:
core: fix media handling issues (r:11079-11082)

Modified:
   freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia.c
   freeswitch/branches/1.0/src/switch_apr.c
   freeswitch/branches/1.0/src/switch_channel.c
   freeswitch/branches/1.0/src/switch_core_io.c
   freeswitch/branches/1.0/src/switch_ivr.c
   freeswitch/branches/1.0/src/switch_ivr_async.c
   freeswitch/branches/1.0/src/switch_ivr_originate.c

Modified: freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c	Thu Jan 22 16:11:34 2009
@@ -1552,6 +1552,13 @@
 	   and mux it with any audio from other channels. */
 
 	while (switch_test_flag(member, MFLAG_RUNNING) && switch_channel_ready(channel)) {
+
+		if (switch_channel_test_flag(channel, CF_SERVICE)) {
+			switch_yield(100000);
+			continue;
+		}
+
+
 		/* Read a frame. */
 		status = switch_core_session_read_frame(member->session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
 
@@ -2037,9 +2044,18 @@
 			}
 			switch_clear_flag_locked(member, MFLAG_FLUSH_BUFFER);
 		}
-
+		
 		switch_mutex_unlock(member->flag_mutex);
 
+
+		if (switch_core_session_private_event_count(member->session)) {
+			switch_channel_set_flag(channel, CF_SERVICE);
+			switch_ivr_parse_all_events(member->session);
+			switch_channel_clear_flag(channel, CF_SERVICE);
+			switch_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
+			switch_core_session_set_read_codec(member->session, &member->read_codec);
+		}
+		
 		if (use_timer) {
 			switch_core_timer_next(&timer);
 		} else {

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia.c	Thu Jan 22 16:11:34 2009
@@ -3562,6 +3562,22 @@
 
 				/* print debug info */
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "INFO DTMF(%c)\n", dtmf.digit);
+				
+				if (switch_channel_test_flag(channel, CF_PROXY_MODE)) {
+					const char *uuid;
+					switch_core_session_t *session_b;
+					
+					if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (session_b = switch_core_session_locate(uuid))) {
+						while (switch_channel_has_dtmf(channel)) {
+							switch_dtmf_t idtmf = { 0, 0 };
+							if (switch_channel_dequeue_dtmf(channel, &idtmf) == SWITCH_STATUS_SUCCESS) {
+								switch_core_session_send_dtmf(session_b, &idtmf);
+							}
+						}
+
+						switch_core_session_rwunlock(session_b);
+					}
+				}
 
 				/* Send 200 OK response */
 				nua_respond(nh, SIP_200_OK, NUTAG_WITH_THIS(nua), TAG_END());

Modified: freeswitch/branches/1.0/src/switch_apr.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_apr.c	(original)
+++ freeswitch/branches/1.0/src/switch_apr.c	Thu Jan 22 16:11:34 2009
@@ -761,9 +761,9 @@
 
 SWITCH_DECLARE(switch_status_t) switch_socket_recvfrom(switch_sockaddr_t *from, switch_socket_t *sock, int32_t flags, char *buf, size_t *len)
 {
-	apr_status_t r;
+	apr_status_t r = SWITCH_STATUS_GENERR;
 
-	if ((r = apr_socket_recvfrom(from, sock, flags, buf, len)) == APR_SUCCESS) {
+	if (from && sock && (r = apr_socket_recvfrom(from, sock, flags, buf, len)) == APR_SUCCESS) {
 		from->port = ntohs(from->sa.sin.sin_port);
 		/* from->ipaddr_ptr = &(from->sa.sin.sin_addr);
 		 * from->ipaddr_ptr = inet_ntoa(from->sa.sin.sin_addr);

Modified: freeswitch/branches/1.0/src/switch_channel.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_channel.c	(original)
+++ freeswitch/branches/1.0/src/switch_channel.c	Thu Jan 22 16:11:34 2009
@@ -1647,8 +1647,8 @@
 
 	msg.message_id = SWITCH_MESSAGE_INDICATE_PROGRESS;
 	msg.from = channel->name;
-	status = switch_core_session_receive_message(channel->session, &msg);
-
+	status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
+	
 	if (status == SWITCH_STATUS_SUCCESS) {
 		switch_channel_perform_mark_pre_answered(channel, file, func, line);
 	} else {
@@ -1679,7 +1679,7 @@
 
 	msg.message_id = SWITCH_MESSAGE_INDICATE_RINGING;
 	msg.from = channel->name;
-	status = switch_core_session_receive_message(channel->session, &msg);
+	status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
 
 	if (status == SWITCH_STATUS_SUCCESS) {
 		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_NOTICE, "Ring Ready %s!\n", channel->name);
@@ -1784,7 +1784,7 @@
 
 	msg.message_id = SWITCH_MESSAGE_INDICATE_ANSWER;
 	msg.from = channel->name;
-	status = switch_core_session_receive_message(channel->session, &msg);
+	status = switch_core_session_perform_receive_message(channel->session, &msg, file, func, line);
 
 	if (status == SWITCH_STATUS_SUCCESS) {
 		switch_channel_perform_mark_answered(channel, file, func, line);

Modified: freeswitch/branches/1.0/src/switch_core_io.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_core_io.c	(original)
+++ freeswitch/branches/1.0/src/switch_core_io.c	Thu Jan 22 16:11:34 2009
@@ -539,10 +539,6 @@
 	switch_mutex_unlock(session->read_codec->mutex);
 	switch_mutex_unlock(session->codec_read_mutex);
 
-	if (switch_core_session_private_event_count(session)) {
-		switch_ivr_parse_all_events(session);
-	}
-
 	return status;
 }
 

Modified: freeswitch/branches/1.0/src/switch_ivr.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_ivr.c	(original)
+++ freeswitch/branches/1.0/src/switch_ivr.c	Thu Jan 22 16:11:34 2009
@@ -41,6 +41,7 @@
 SWITCH_DECLARE(switch_status_t) switch_ivr_sleep(switch_core_session_t *session, uint32_t ms, switch_bool_t sync, switch_input_args_t *args)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
+	int media_ready = 0;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
 	switch_time_t start = switch_timestamp_now(), now, done = switch_timestamp_now() + (ms * 1000);
 	switch_frame_t *read_frame, cng_frame = { 0 };
@@ -53,10 +54,19 @@
 	switch_codec_t codec = { 0 };
 	int sval = 0;
 	const char *var;
+
+	if (!switch_channel_test_flag(channel, CF_PROXY_MODE) && !switch_channel_media_ready(channel) && !switch_channel_test_flag(channel, CF_SERVICE)) {
+		if ((status = switch_channel_pre_answer(channel)) != SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot establish media.\n");
+			return SWITCH_STATUS_FALSE;
+		}
+	}
+
+	media_ready = (switch_channel_media_ready(channel) && !switch_channel_test_flag(channel, CF_SERVICE));
 	
-	if ((var = switch_channel_get_variable(channel, SWITCH_SEND_SILENCE_WHEN_IDLE_VARIABLE)) && (sval = atoi(var))) {
+	if (ms > 100 && media_ready && (var = switch_channel_get_variable(channel, SWITCH_SEND_SILENCE_WHEN_IDLE_VARIABLE)) && (sval = atoi(var))) {
 		switch_core_session_get_read_impl(session, &imp);
-	
+		
 		if (switch_core_codec_init(&codec,
 								   "L16",
 								   NULL,
@@ -81,12 +91,10 @@
 		write_frame.datalen = imp.decoded_bytes_per_packet;
 		write_frame.samples = write_frame.datalen / sizeof(int16_t);
 
-		if (!switch_channel_media_ready(channel)) {
-			if ((status = switch_channel_pre_answer(channel)) != SWITCH_STATUS_SUCCESS) {
-				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot establish media.\n");
-				return SWITCH_STATUS_FALSE;
-			}
-		}
+	}
+
+	if (!write_frame.datalen) {
+		sval = 0;
 	}
 
 	cng_frame.data = data;
@@ -94,7 +102,7 @@
 	cng_frame.buflen = 2;
 	switch_set_flag((&cng_frame), SFF_CNG);
 
-	if (sync && !switch_channel_test_flag(channel, CF_PROXY_MODE)) {
+	if (sync && media_ready) {
 		switch_channel_audio_sync(channel);
 	}
 	
@@ -161,29 +169,25 @@
 			}
 		}
 
-		if (switch_channel_test_flag(channel, CF_PROXY_MODE)) {
+		if (!media_ready) {
 			switch_cond_next();
 			continue;
 		}
 
-		if (switch_channel_test_flag(channel, CF_SERVICE) ||
-			(!switch_channel_test_flag(channel, CF_ANSWERED) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA))) {
-			switch_cond_next();
-		} else {
-			status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
-			if (!SWITCH_READ_ACCEPTABLE(status)) {
-				break;
-			}
+		status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
+
+		if (!SWITCH_READ_ACCEPTABLE(status)) {
+			break;
 		}
 
-		if (sval) {
+		if (sval && write_frame.datalen) {
 			switch_generate_sln_silence((int16_t *) write_frame.data, write_frame.samples, sval);
 			switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0);
 		} else {
 			switch_core_session_write_frame(session, &cng_frame, SWITCH_IO_FLAG_NONE, 0);
 		}
 	}
-
+	
 	if (write_frame.codec) {
 		switch_core_codec_destroy(&codec);
 	}

Modified: freeswitch/branches/1.0/src/switch_ivr_async.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_ivr_async.c	(original)
+++ freeswitch/branches/1.0/src/switch_ivr_async.c	Thu Jan 22 16:11:34 2009
@@ -1445,6 +1445,44 @@
 
 #define SWITCH_META_VAR_KEY "__dtmf_meta"
 
+typedef struct {
+	switch_core_session_t *session;
+	const char *app;
+	int flags;
+} bch_t;
+
+static void *SWITCH_THREAD_FUNC bcast_thread(switch_thread_t *thread, void *obj)
+{
+	bch_t *bch = (bch_t *) obj;
+
+	switch_ivr_broadcast(switch_core_session_get_uuid(bch->session), bch->app, bch->flags);
+
+	return NULL;
+
+}
+static void broadcast_in_thread(switch_core_session_t *session, const char *app, int flags)
+{
+	switch_thread_t *thread;
+	switch_threadattr_t *thd_attr = NULL;
+	switch_memory_pool_t *pool;
+	bch_t *bch;
+	
+	switch_assert(session);
+
+	pool = switch_core_session_get_pool(session);
+	
+	bch = switch_core_session_alloc(session, sizeof(*bch));
+	bch->session = session;
+	bch->app = app;
+	bch->flags = flags;
+	
+	
+	switch_threadattr_create(&thd_attr, pool);
+	switch_threadattr_detach_set(thd_attr, 1);
+	switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
+	switch_thread_create(&thread, thd_attr, bcast_thread, bch, pool);
+}
+
 static switch_status_t meta_on_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf, switch_dtmf_direction_t direction)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
@@ -1497,7 +1535,7 @@
 
 			if (ok && md->sr[direction].map[dval].app) {
 				uint32_t flags = md->sr[direction].map[dval].flags;
-
+				
 				if ((md->sr[direction].map[dval].bind_flags & SBF_EXEC_OPPOSITE)) {
 					if (direction == SWITCH_DTMF_SEND) {
 						flags |= SMF_ECHO_ALEG;
@@ -1520,7 +1558,12 @@
 
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Processing meta digit '%c' [%s]\n",
 								  switch_channel_get_name(channel), dtmf->digit, md->sr[direction].map[dval].app);
-				switch_ivr_broadcast(switch_core_session_get_uuid(session), md->sr[direction].map[dval].app, flags);
+
+				if (switch_channel_test_flag(channel, CF_PROXY_MODE)) {
+					broadcast_in_thread(session, md->sr[direction].map[dval].app, flags | SMF_REBRIDGE);
+				} else {
+					switch_ivr_broadcast(switch_core_session_get_uuid(session), md->sr[direction].map[dval].app, flags);
+				}
 
 				if ((md->sr[direction].map[dval].bind_flags & SBF_ONCE)) {
 					memset(&md->sr[direction].map[dval], 0, sizeof(md->sr[direction].map[dval]));
@@ -1589,7 +1632,7 @@
 			md->sr[SWITCH_DTMF_RECV].map[key].app = switch_core_session_strdup(session, app);
 			md->sr[SWITCH_DTMF_RECV].map[key].flags |= SMF_HOLD_BLEG;
 			md->sr[SWITCH_DTMF_RECV].map[key].bind_flags = bind_flags;
-
+			
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Bound A-Leg: %d %s\n", key, app);
 		}
 		if ((bind_flags & SBF_DIAL_BLEG)) {
@@ -2157,6 +2200,10 @@
 		other_session = NULL;
 	}
 
+	if (switch_stristr("record", app)) {
+		nomedia = 0;
+	}
+
 	if ((flags & SMF_ECHO_ALEG)) {
 		if (switch_event_create(&event, SWITCH_EVENT_COMMAND) == SWITCH_STATUS_SUCCESS) {
 			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-command", "execute");

Modified: freeswitch/branches/1.0/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_ivr_originate.c	(original)
+++ freeswitch/branches/1.0/src/switch_ivr_originate.c	Thu Jan 22 16:11:34 2009
@@ -41,7 +41,11 @@
 
 	if (!switch_channel_test_flag(channel, CF_PROXY_MODE)) {
 		while (switch_channel_get_state(channel) == CS_CONSUME_MEDIA && !switch_channel_test_flag(channel, CF_TAGGED)) {
-			switch_ivr_sleep(session, 10, SWITCH_FALSE, NULL);
+			if (!switch_channel_media_ready(channel)) {
+				switch_yield(10000);
+			} else {
+				switch_ivr_sleep(session, 10, SWITCH_FALSE, NULL);
+			}
 		}
 	}
 


From anthm at freeswitch.org  Thu Jan 22 14:14:37 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 16:14:37 -0600
Subject: [Freeswitch-svn] [commit] r11409 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Thu Jan 22 16:14:37 2009
New Revision: 11409

Log:
tweak

Modified:
   freeswitch/trunk/src/switch_core_state_machine.c

Modified: freeswitch/trunk/src/switch_core_state_machine.c
==============================================================================
--- freeswitch/trunk/src/switch_core_state_machine.c	(original)
+++ freeswitch/trunk/src/switch_core_state_machine.c	Thu Jan 22 16:14:37 2009
@@ -422,17 +422,23 @@
 						char *arg = NULL;
 						char *expanded = NULL;
 						
-						if ((arg = strchr(cmd, ' '))) {
+						if ((arg = strchr(cmd, ':')) && *(arg+1) == ':') {
 							*arg++ = '\0';
+							*arg++ = '\0';
+						} else {
+							if ((arg = strchr(cmd, ' '))) {
+								*arg++ = '\0';
+							}
 						}
+
 						SWITCH_STANDARD_STREAM(stream);
 						switch_channel_get_variables(session->channel, &stream.param_event);
 						expanded = switch_channel_expand_variables(session->channel, arg);
 						
-
-						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Hangup Command %s(%s):\n%s\n", cmd, expanded,
-										  switch_str_nil((char *) stream.data));
 						switch_api_execute(cmd, expanded, use_session, &stream);
+						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Hangup Command %s(%s):\n%s\n", cmd, switch_str_nil(expanded),
+										  switch_str_nil((char *) stream.data));
+
 						if (expanded != arg) {
 							switch_safe_free(expanded);
 						}


From mikej at freeswitch.org  Thu Jan 22 14:14:52 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 16:14:52 -0600
Subject: [Freeswitch-svn] [commit] r11410 - in freeswitch/branches/1.0/src:
	. include mod/languages/mod_spidermonkey
Message-ID: 

Author: mikej
Date: Thu Jan 22 16:14:52 2009
New Revision: 11410

Log:
mod_spidermonkey: fix loading of spidermonkey modules (r:11084-11085)

Modified:
   freeswitch/branches/1.0/src/include/switch_dso.h
   freeswitch/branches/1.0/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
   freeswitch/branches/1.0/src/switch_dso.c

Modified: freeswitch/branches/1.0/src/include/switch_dso.h
==============================================================================
--- freeswitch/branches/1.0/src/include/switch_dso.h	(original)
+++ freeswitch/branches/1.0/src/include/switch_dso.h	Thu Jan 22 16:14:52 2009
@@ -30,10 +30,10 @@
 
 typedef void * switch_dso_data_t;
 
-void switch_dso_destroy(switch_dso_lib_t *lib);
-switch_dso_lib_t switch_dso_open(const char *path, int global, char **err);
-switch_dso_func_t switch_dso_func_sym(switch_dso_lib_t lib, const char *sym, char **err);
-void *switch_dso_data_sym(switch_dso_lib_t lib, const char *sym, char **err);
+SWITCH_DECLARE(void) switch_dso_destroy(switch_dso_lib_t *lib);
+SWITCH_DECLARE(switch_dso_lib_t) switch_dso_open(const char *path, int global, char **err);
+SWITCH_DECLARE(switch_dso_func_t) switch_dso_func_sym(switch_dso_lib_t lib, const char *sym, char **err);
+SWITCH_DECLARE(void *) switch_dso_data_sym(switch_dso_lib_t lib, const char *sym, char **err);
 
 
 #endif

Modified: freeswitch/branches/1.0/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c	(original)
+++ freeswitch/branches/1.0/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c	Thu Jan 22 16:14:52 2009
@@ -42,7 +42,7 @@
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_spidermonkey_load);
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_spidermonkey_shutdown);
-SWITCH_MODULE_DEFINITION(mod_spidermonkey, mod_spidermonkey_load, mod_spidermonkey_shutdown, NULL);
+SWITCH_MODULE_DEFINITION_EX(mod_spidermonkey, mod_spidermonkey_load, mod_spidermonkey_shutdown, NULL, SMODF_GLOBAL_SYMBOLS);
 
 #define METHOD_SANITY_CHECK()  if (!jss || !jss->session) {				\
 		eval_some_js("~throw new Error(\"You must call the session.originate method before calling this method!\");", cx, obj, rval); \
@@ -882,50 +882,54 @@
 static switch_status_t sm_load_file(char *filename)
 {
 	sm_loadable_module_t *module = NULL;
-	switch_dso_handle_t *dso = NULL;
+	switch_dso_lib_t dso = NULL;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
-	switch_dso_handle_sym_t function_handle = NULL;
+	switch_loadable_module_function_table_t *function_handle = NULL;
 	spidermonkey_init_t spidermonkey_init = NULL;
 	const sm_module_interface_t *module_interface = NULL, *mp;
-
-	int loading = 1;
+	char *derr = NULL;
 	const char *err = NULL;
-	char derr[512] = "";
 
 	switch_assert(filename != NULL);
 
-	status = switch_dso_load(&dso, filename, module_manager.pool);
+	if (!(dso = switch_dso_open(filename, 1, &derr))) {
+		status = SWITCH_STATUS_FALSE;
+	}
 
-	while (loading) {
-		if (status != SWITCH_STATUS_SUCCESS) {
-			switch_dso_error(dso, derr, sizeof(derr));
-			err = derr;
-			break;
-		}
+	if (derr || status != SWITCH_STATUS_SUCCESS) {
+		err = derr;
+		goto err;
+	}
 
-		status = switch_dso_sym(&function_handle, dso, "spidermonkey_init");
-		spidermonkey_init = (spidermonkey_init_t) (intptr_t) function_handle;
+	function_handle = switch_dso_data_sym(dso, "spidermonkey_init", &derr);
 
-		if (spidermonkey_init == NULL) {
-			err = "Cannot Load";
-			break;
-		}
+	if (!function_handle || derr) {
+		status = SWITCH_STATUS_FALSE;
+		err = derr;
+		goto err;
+	}
 
-		if (spidermonkey_init(&module_interface) != SWITCH_STATUS_SUCCESS) {
-			err = "Module load routine returned an error";
-			break;
-		}
+	spidermonkey_init = (spidermonkey_init_t) (intptr_t) function_handle;
 
-		if (!(module = (sm_loadable_module_t *) switch_core_permanent_alloc(sizeof(*module)))) {
-			err = "Could not allocate memory\n";
-			break;
-		}
+	if (spidermonkey_init == NULL) {
+		err = "Cannot Load";
+		goto err;
+	}
+
+	if (spidermonkey_init(&module_interface) != SWITCH_STATUS_SUCCESS) {
+		err = "Module load routine returned an error";
+		goto err;
+	}
 
-		loading = 0;
+	if (!(module = (sm_loadable_module_t *) switch_core_permanent_alloc(sizeof(*module)))) {
+		err = "Could not allocate memory\n";
 	}
 
-	if (err) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Loading module %s\n**%s**\n", filename, err);
+ err:
+
+	if (err || !module) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Loading module %s\n**%s**\n", filename, switch_str_nil(err));
+		switch_safe_free(derr);
 		return SWITCH_STATUS_GENERR;
 	}
 

Modified: freeswitch/branches/1.0/src/switch_dso.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_dso.c	(original)
+++ freeswitch/branches/1.0/src/switch_dso.c	Thu Jan 22 16:14:52 2009
@@ -24,14 +24,14 @@
 
 #ifdef WIN32
 
-void switch_dso_destroy(switch_dso_lib_t *lib) {
+SWITCH_DECLARE(void) switch_dso_destroy(switch_dso_lib_t *lib) {
 	if (lib && *lib) {
 		FreeLibrary(*lib);
 		*lib = NULL;
 	}
 }
 
-switch_dso_lib_t switch_dso_open(const char *path, int global, char **err) {
+SWITCH_DECLARE(switch_dso_lib_t) switch_dso_open(const char *path, int global, char **err) {
     HINSTANCE lib;
 	
 	lib = LoadLibraryEx(path, NULL, 0);
@@ -48,7 +48,7 @@
 	return lib;
 }
 
-switch_dso_func_t switch_dso_func_sym(switch_dso_lib_t lib, const char *sym, char **err) {
+SWITCH_DECLARE(switch_dso_func_t) switch_dso_func_sym(switch_dso_lib_t lib, const char *sym, char **err) {
 	FARPROC func = GetProcAddress(lib, sym);
 	if (!func) {
 		DWORD error = GetLastError();
@@ -57,7 +57,7 @@
 	return (switch_dso_func_t)func;
 }
 
-void *switch_dso_data_sym(switch_dso_lib_t lib, const char *sym, char **err) {
+SWITCH_DECLARE(void *) switch_dso_data_sym(switch_dso_lib_t lib, const char *sym, char **err) {
 	FARPROC addr = GetProcAddress(lib, sym);
 	if (!addr) {
 		DWORD error = GetLastError();


From mikej at freeswitch.org  Thu Jan 22 14:21:02 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 16:21:02 -0600
Subject: [Freeswitch-svn] [commit] r11414 -
	freeswitch/branches/1.0/src/mod/endpoints/mod_sofia
Message-ID: 

Author: mikej
Date: Thu Jan 22 16:21:02 2009
New Revision: 11414

Log:
mod_sofia: fix sending extra sdp in 200 OK when using 100rel in violation of sdp o/a protocol draft-ietf-sipping-sip-offeranswer-10 (r:11088)

Modified:
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia.c

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia.c	Thu Jan 22 16:21:02 2009
@@ -2754,7 +2754,8 @@
 									SIPTAG_CONTACT_STR(tech_pvt->profile->url),
 									SOATAG_USER_SDP_STR(tech_pvt->local_sdp_str),
 									SOATAG_REUSE_REJECTED(1),
-									SOATAG_ORDERED_USER(1), SOATAG_AUDIO_AUX("cn telephone-event"), NUTAG_INCLUDE_EXTRA_SDP(1), TAG_END());
+									SOATAG_ORDERED_USER(1), SOATAG_AUDIO_AUX("cn telephone-event"), 
+									TAG_IF((profile->pflags & PFLAG_DISABLE_100REL), NUTAG_INCLUDE_EXTRA_SDP(1)), TAG_END());
 					} else if(profile->pflags & PFLAG_3PCC_PROXY){
 						//3PCC proxy mode delays the 200 OK until the call is answered
 						switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "RECEIVED_NOSDP");
@@ -2839,7 +2840,8 @@
 										SIPTAG_CONTACT_STR(tech_pvt->reply_contact),
 										SOATAG_USER_SDP_STR(tech_pvt->local_sdp_str),
 										SOATAG_REUSE_REJECTED(1),
-										SOATAG_ORDERED_USER(1), SOATAG_AUDIO_AUX("cn telephone-event"), NUTAG_INCLUDE_EXTRA_SDP(1), TAG_END());
+										SOATAG_ORDERED_USER(1), SOATAG_AUDIO_AUX("cn telephone-event"), 
+										TAG_IF((profile->pflags & PFLAG_DISABLE_100REL), NUTAG_INCLUDE_EXTRA_SDP(1)), TAG_END());
 							launch_media_on_hold(session);
 
 							switch_core_session_rwunlock(other_session);
@@ -2905,7 +2907,8 @@
 								SIPTAG_CONTACT_STR(tech_pvt->reply_contact),
 								SOATAG_USER_SDP_STR(tech_pvt->local_sdp_str),
 								SOATAG_REUSE_REJECTED(1),
-								SOATAG_ORDERED_USER(1), SOATAG_AUDIO_AUX("cn telephone-event"), NUTAG_INCLUDE_EXTRA_SDP(1), TAG_END());
+								SOATAG_ORDERED_USER(1), SOATAG_AUDIO_AUX("cn telephone-event"), 
+								TAG_IF((profile->pflags & PFLAG_DISABLE_100REL), NUTAG_INCLUDE_EXTRA_SDP(1)), TAG_END());
 				} else {
 					nua_respond(tech_pvt->nh, SIP_488_NOT_ACCEPTABLE, TAG_END());
 				}


From mikej at freeswitch.org  Thu Jan 22 14:23:18 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 16:23:18 -0600
Subject: [Freeswitch-svn] [commit] r11416 - in freeswitch/branches/1.0/src:
	. mod/formats/mod_sndfile
Message-ID: 

Author: mikej
Date: Thu Jan 22 16:23:18 2009
New Revision: 11416

Log:
core: fix file resampling issue (r:11090)

Modified:
   freeswitch/branches/1.0/src/mod/formats/mod_sndfile/mod_sndfile.c
   freeswitch/branches/1.0/src/switch_core_file.c

Modified: freeswitch/branches/1.0/src/mod/formats/mod_sndfile/mod_sndfile.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/formats/mod_sndfile/mod_sndfile.c	(original)
+++ freeswitch/branches/1.0/src/mod/formats/mod_sndfile/mod_sndfile.c	Thu Jan 22 16:23:18 2009
@@ -237,7 +237,7 @@
 
 	handle->sample_count += *len;
 
-	return SWITCH_STATUS_SUCCESS;
+	return *len ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE;
 }
 
 static switch_status_t sndfile_file_write(switch_file_handle_t *handle, void *data, size_t *len)

Modified: freeswitch/branches/1.0/src/switch_core_file.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_core_file.c	(original)
+++ freeswitch/branches/1.0/src/switch_core_file.c	Thu Jan 22 16:23:18 2009
@@ -125,21 +125,27 @@
 SWITCH_DECLARE(switch_status_t) switch_core_file_read(switch_file_handle_t *fh, void *data, switch_size_t *len)
 {
 	switch_status_t status;
-	switch_size_t orig_len = *len;
+	switch_size_t want, got, orig_len = *len;
 
 	switch_assert(fh != NULL);
 	switch_assert(fh->file_interface != NULL);
 
-	if (fh->buffer && switch_buffer_inuse(fh->buffer)) {
+	if (fh->buffer && switch_buffer_inuse(fh->buffer) >= *len * 2) {
 		*len = switch_buffer_read(fh->buffer, data, orig_len * 2) / 2;
 		return SWITCH_STATUS_SUCCESS;
 	}
 
-	if ((status = fh->file_interface->file_read(fh, data, len)) != SWITCH_STATUS_SUCCESS) {
+	want = *len;
+
+ more:
+	
+	if ((status = fh->file_interface->file_read(fh, data, len)) != SWITCH_STATUS_SUCCESS || !*len) {
 		*len = 0;
 		goto done;
 	}
 
+	got = *len;
+	
 	if (!switch_test_flag(fh, SWITCH_FILE_NATIVE) && fh->native_rate != fh->samplerate) {
 		if (!fh->resampler) {
 			if (switch_resample_create(&fh->resampler,
@@ -153,9 +159,9 @@
 		fh->resampler->to_len =
 			switch_resample_process(fh->resampler, fh->resampler->from, fh->resampler->from_len, fh->resampler->to, fh->resampler->to_size, 0);
 
-		if (fh->resampler->to_len > orig_len) {
+		if (fh->resampler->to_len < want || fh->resampler->to_len > orig_len) {
 			if (!fh->buffer) {
-				switch_buffer_create_dynamic(&fh->buffer, fh->resampler->to_len * 2, fh->resampler->to_len * 4, fh->resampler->to_len * 8);
+				switch_buffer_create_dynamic(&fh->buffer, fh->resampler->to_len * 4, fh->resampler->to_len * 8, fh->resampler->to_len * 32);
 				switch_assert(fh->buffer);
 			}
 			if (!fh->dbuf) {
@@ -163,17 +169,23 @@
 				fh->dbuf = switch_core_alloc(fh->memory_pool, fh->dbuflen);
 			}
 			switch_assert(fh->resampler->to_len <= fh->dbuflen);
-
+			
 			switch_float_to_short(fh->resampler->to, (int16_t *) fh->dbuf, fh->resampler->to_len);
 			switch_buffer_write(fh->buffer, fh->dbuf, fh->resampler->to_len * 2);
+
+			if (switch_buffer_inuse(fh->buffer) < want * 2) {
+				*len = want - fh->resampler->to_len;
+				goto more;
+			}
 			*len = switch_buffer_read(fh->buffer, data, orig_len * 2) / 2;
 		} else {
 			switch_float_to_short(fh->resampler->to, data, fh->resampler->to_len);
 			*len = fh->resampler->to_len;
 		}
+		
 
 	}
-
+	
   done:
 
 	return status;


From mikej at freeswitch.org  Thu Jan 22 14:26:22 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 16:26:22 -0600
Subject: [Freeswitch-svn] [commit] r11418 - freeswitch/branches/1.0/src
Message-ID: 

Author: mikej
Date: Thu Jan 22 16:26:22 2009
New Revision: 11418

Log:
core: send more event types verbos bridge,unbridge,park,unpark (r:11097-11098)

Modified:
   freeswitch/branches/1.0/src/switch_channel.c

Modified: freeswitch/branches/1.0/src/switch_channel.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_channel.c	(original)
+++ freeswitch/branches/1.0/src/switch_channel.c	Thu Jan 22 16:26:22 2009
@@ -1212,6 +1212,10 @@
 		event->event_id == SWITCH_EVENT_CHANNEL_ORIGINATE ||
 		event->event_id == SWITCH_EVENT_CHANNEL_UUID ||
 		event->event_id == SWITCH_EVENT_CHANNEL_ANSWER ||
+		event->event_id == SWITCH_EVENT_CHANNEL_PARK ||
+		event->event_id == SWITCH_EVENT_CHANNEL_UNPARK ||
+		event->event_id == SWITCH_EVENT_CHANNEL_BRIDGE ||
+		event->event_id == SWITCH_EVENT_CHANNEL_UNBRIDGE ||
 		event->event_id == SWITCH_EVENT_CHANNEL_PROGRESS ||
 		event->event_id == SWITCH_EVENT_CHANNEL_PROGRESS_MEDIA ||
 		event->event_id == SWITCH_EVENT_CHANNEL_HANGUP ||


From mikej at freeswitch.org  Thu Jan 22 14:31:52 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 16:31:52 -0600
Subject: [Freeswitch-svn] [commit] r11419 - in
	freeswitch/branches/1.0/src/mod: applications/mod_conference
	xml_int/mod_xml_rpc
Message-ID: 

Author: mikej
Date: Thu Jan 22 16:31:52 2009
New Revision: 11419

Log:
mod_xml_rpc: fix http content types sent in responses (r:11099,11148,11150)

Modified:
   freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c
   freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c

Modified: freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c	Thu Jan 22 16:31:52 2009
@@ -3895,7 +3895,7 @@
 {
 	char *lbuf = NULL;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
-	char *http = NULL;
+	char *http = NULL, *type = NULL;
 	int argc;
 	char *argv[25] = { 0 };
 
@@ -3905,11 +3905,14 @@
 
 	if (stream->param_event) {
 		http = switch_event_get_header(stream->param_event, "http-host");
+		type = switch_event_get_header(stream->param_event, "content-type");
 	}
 
 	if (http) {
 		/* Output must be to a web browser */
-		stream->write_function(stream, "
\n");
+		if (type && !strcasecmp(type, "text/html")) {
+			stream->write_function(stream, "
\n");
+		}
 	}
 
 	if (!(lbuf = strdup(cmd))) {

Modified: freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	(original)
+++ freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	Thu Jan 22 16:31:52 2009
@@ -449,7 +449,7 @@
 	char *fs_user = NULL, *fs_domain = NULL;
 	char *path_info = NULL;
 	abyss_bool ret = TRUE;
-	int html = 0, text = 0;
+	int html = 0, text = 0, xml = 0;
 
 	stream.data = r;
 	stream.write_function = http_stream_write;
@@ -467,6 +467,9 @@
 	} else if ((command = strstr(r->requestInfo.uri, "/txtapi/"))) {
 		command += 8;
 		text++;
+	} else if ((command = strstr(r->requestInfo.uri, "/xmlapi/"))) {
+		command += 8;
+		xml++;
 	} else {
 		return FALSE;
 	}
@@ -529,13 +532,15 @@
 			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/html");
 		else if (text)
 			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/plain");
+		else if (xml)
+			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/xml");
 		if (fs_user)
 			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "FreeSWITCH-User", fs_user);
 		if (fs_domain)
 			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "FreeSWITCH-Domain", fs_domain);
 		if (path_info)
 			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-Path-Info", path_info);
-		switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-URI", r->requestInfo.uri);
+			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-URI", r->requestInfo.uri);
 		if (r->requestInfo.query)
 			switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-QUERY", r->requestInfo.query);
 		if (r->requestInfo.host)
@@ -654,6 +659,8 @@
 		ResponseAddField(r, "Content-Type", "text/html");
 	} else if (text) {
 		ResponseAddField(r, "Content-Type", "text/plain");
+	} else if (xml) {
+		ResponseAddField(r, "Content-Type", "text/xml");
 	}
 
 	for (i = 0; i < r->response_headers.size; i++) {
@@ -667,7 +674,7 @@
 	switch_snprintf(buf, sizeof(buf), "Connection: close\r\n");
 	ConnWrite(r->conn, buf, (uint32_t) strlen(buf));
 
-	if (html || text) {
+	if (html || text || xml) {
 		ConnWrite(r->conn, "\r\n", 2);
 	}
 


From mikej at freeswitch.org  Thu Jan 22 14:36:08 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 16:36:08 -0600
Subject: [Freeswitch-svn] [commit] r11420 -
	freeswitch/branches/1.0/src/mod/endpoints/mod_sofia
Message-ID: 

Author: mikej
Date: Thu Jan 22 16:36:07 2009
New Revision: 11420

Log:


Modified:
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c	Thu Jan 22 16:36:07 2009
@@ -2351,8 +2351,8 @@
 			switch_channel_set_variable(tech_pvt->channel, "has_t38", "true");
 			switch_channel_set_private(tech_pvt->channel, "t38_options", t38_options);
 
-			switch_channel_set_flag(tech_pvt->channel, CF_PROXY_MEDIA);
-			switch_rtp_set_flag(tech_pvt->rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA);
+			//switch_channel_set_flag(tech_pvt->channel, CF_PROXY_MEDIA);
+			//switch_rtp_set_flag(tech_pvt->rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA);
 
 		} else if (m->m_type == sdp_media_audio && m->m_port && !got_audio) {
 			sdp_rtpmap_t *map;


From mikej at freeswitch.org  Thu Jan 22 14:51:26 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 16:51:26 -0600
Subject: [Freeswitch-svn] [commit] r11422 - freeswitch/branches/1.0/src
Message-ID: 

Author: mikej
Date: Thu Jan 22 16:51:26 2009
New Revision: 11422

Log:
core: fix buffering issues (r:11101,11145)

Modified:
   freeswitch/branches/1.0/src/switch_core_file.c

Modified: freeswitch/branches/1.0/src/switch_core_file.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_core_file.c	(original)
+++ freeswitch/branches/1.0/src/switch_core_file.c	Thu Jan 22 16:51:26 2009
@@ -161,11 +161,12 @@
 
 		if (fh->resampler->to_len < want || fh->resampler->to_len > orig_len) {
 			if (!fh->buffer) {
-				switch_buffer_create_dynamic(&fh->buffer, fh->resampler->to_len * 4, fh->resampler->to_len * 8, fh->resampler->to_len * 32);
+				int factor = fh->resampler->to_len * fh->samplerate / 1000;
+				switch_buffer_create_dynamic(&fh->buffer, factor, factor, 0);
 				switch_assert(fh->buffer);
 			}
 			if (!fh->dbuf) {
-				fh->dbuflen = fh->resampler->to_len * 8;
+				fh->dbuflen = want * 2;
 				fh->dbuf = switch_core_alloc(fh->memory_pool, fh->dbuflen);
 			}
 			switch_assert(fh->resampler->to_len <= fh->dbuflen);
@@ -174,7 +175,7 @@
 			switch_buffer_write(fh->buffer, fh->dbuf, fh->resampler->to_len * 2);
 
 			if (switch_buffer_inuse(fh->buffer) < want * 2) {
-				*len = want - fh->resampler->to_len;
+				*len = want;
 				goto more;
 			}
 			*len = switch_buffer_read(fh->buffer, data, orig_len * 2) / 2;


From mikej at freeswitch.org  Thu Jan 22 14:53:11 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 16:53:11 -0600
Subject: [Freeswitch-svn] [commit] r11423 -
	freeswitch/branches/1.0/conf/dialplan
Message-ID: 

Author: mikej
Date: Thu Jan 22 16:53:11 2009
New Revision: 11423

Log:


Modified:
   freeswitch/branches/1.0/conf/dialplan/public.xml

Modified: freeswitch/branches/1.0/conf/dialplan/public.xml
==============================================================================
--- freeswitch/branches/1.0/conf/dialplan/public.xml	(original)
+++ freeswitch/branches/1.0/conf/dialplan/public.xml	Thu Jan 22 16:53:11 2009
@@ -31,7 +31,7 @@
     
 
     
-      
+      
 	
       
     


From mikej at freeswitch.org  Thu Jan 22 14:58:28 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 16:58:28 -0600
Subject: [Freeswitch-svn] [commit] r11424 -
	freeswitch/branches/1.0/src/mod/endpoints/mod_sofia
Message-ID: 

Author: mikej
Date: Thu Jan 22 16:58:28 2009
New Revision: 11424

Log:
mod_sofia: add support in sdp for a=maxptime (r:11103)

Modified:
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c	Thu Jan 22 16:58:28 2009
@@ -2252,7 +2252,7 @@
 	sdp_media_t *m;
 	sdp_attribute_t *attr;
 	int first = 0, last = 0;
-	int ptime = 0, dptime = 0;
+	int ptime = 0, dptime = 0, maxptime = 0, dmaxptime = 0;
 	int sendonly = 0;
 	int greedy = 0, x = 0, skip = 0, mine = 0;
 	switch_channel_t *channel = switch_core_session_get_channel(session);
@@ -2302,6 +2302,8 @@
 			sendonly = 0;
 		} else if (!strcasecmp(attr->a_name, "ptime")) {
 			dptime = atoi(attr->a_value);
+		} else if (!strcasecmp(attr->a_name, "maxptime")) {
+			dmaxptime = atoi(attr->a_value);
 		}
 	}
 
@@ -2314,6 +2316,7 @@
 		sdp_connection_t *connection;
 
 		ptime = dptime;
+		maxptime = dmaxptime;
 
 		if (m->m_proto == sdp_proto_srtp) {
 			got_savp++;
@@ -2360,6 +2363,8 @@
 			for (attr = m->m_attributes; attr; attr = attr->a_next) {
 				if (!strcasecmp(attr->a_name, "ptime") && attr->a_value) {
 					ptime = atoi(attr->a_value);
+				} else if (!strcasecmp(attr->a_name, "maxptime") && attr->a_value) {
+					maxptime = atoi(attr->a_value);
 				} else if (!got_crypto && !strcasecmp(attr->a_name, "crypto") && !switch_strlen_zero(attr->a_value)) {
 					int crypto_tag;
 
@@ -2498,6 +2503,10 @@
 					first = 0;
 					last = tech_pvt->num_codecs;
 				}
+				
+				if (maxptime && (!ptime || ptime > maxptime)) {
+					ptime = maxptime;
+				}
 
 				for (i = first; i < last && i < tech_pvt->num_codecs; i++) {
 					const switch_codec_implementation_t *imp = tech_pvt->codecs[i];
@@ -2515,7 +2524,8 @@
 					}
 
 					if (match) {
-						if ((ptime && ptime * 1000 != imp->microseconds_per_packet) || map->rm_rate != codec_rate) {
+						if ((ptime && ptime * 1000 != imp->microseconds_per_packet) || 
+							map->rm_rate != codec_rate) {
 							near_rate = map->rm_rate;
 							near_match = imp;
 							match = 0;
@@ -2545,9 +2555,14 @@
 						mimp = near_match;
 					}
 
-					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Substituting codec %s@%ui@%uh\n",
-									  mimp->iananame, mimp->microseconds_per_packet / 1000, mimp->samples_per_second);
-					match = 1;
+					if (!maxptime || mimp->microseconds_per_packet / 1000 <= maxptime) {
+						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Substituting codec %s@%ui@%uh\n",
+										  mimp->iananame, mimp->microseconds_per_packet / 1000, mimp->samples_per_second);
+						match = 1;
+					} else {
+						mimp = NULL;
+						match = 0;
+					}
 				}
 
 				if (!match && greedy) {


From mikej at freeswitch.org  Thu Jan 22 15:01:57 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:01:57 -0600
Subject: [Freeswitch-svn] [commit] r11426 - in freeswitch/branches/1.0/src:
	. include mod/applications/mod_conference
	mod/applications/mod_rss mod/endpoints/mod_loopback
	mod/endpoints/mod_sofia mod/event_handlers/mod_erlang_event
	mod/event_handlers/mod_event_socket mod/formats/mod_local_stream
Message-ID: 

Author: mikej
Date: Thu Jan 22 17:01:56 2009
New Revision: 11426

Log:
core: fix codec and media handling issues (r:11104) 

Modified:
   freeswitch/branches/1.0/src/include/switch_core.h
   freeswitch/branches/1.0/src/include/switch_module_interfaces.h
   freeswitch/branches/1.0/src/include/switch_types.h
   freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c
   freeswitch/branches/1.0/src/mod/applications/mod_rss/mod_rss.c
   freeswitch/branches/1.0/src/mod/endpoints/mod_loopback/mod_loopback.c
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c
   freeswitch/branches/1.0/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
   freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
   freeswitch/branches/1.0/src/mod/formats/mod_local_stream/mod_local_stream.c
   freeswitch/branches/1.0/src/switch_core.c
   freeswitch/branches/1.0/src/switch_core_file.c
   freeswitch/branches/1.0/src/switch_core_io.c
   freeswitch/branches/1.0/src/switch_core_session.c
   freeswitch/branches/1.0/src/switch_core_state_machine.c
   freeswitch/branches/1.0/src/switch_ivr.c
   freeswitch/branches/1.0/src/switch_ivr_async.c
   freeswitch/branches/1.0/src/switch_ivr_bridge.c
   freeswitch/branches/1.0/src/switch_ivr_originate.c
   freeswitch/branches/1.0/src/switch_ivr_play_say.c

Modified: freeswitch/branches/1.0/src/include/switch_core.h
==============================================================================
--- freeswitch/branches/1.0/src/include/switch_core.h	(original)
+++ freeswitch/branches/1.0/src/include/switch_core.h	Thu Jan 22 17:01:56 2009
@@ -330,7 +330,7 @@
   \return success if it is safe to read from the session
 */
 #ifdef SWITCH_DEBUG_RWLOCKS
-#define switch_core_session_read_lock(session) switch_core_session_perform_read_lock_hangup(session, __FILE__, __SWITCH_FUNC__, __LINE__)
+#define switch_core_session_read_lock_hangup(session) switch_core_session_perform_read_lock_hangup(session, __FILE__, __SWITCH_FUNC__, __LINE__)
 #else
 SWITCH_DECLARE(switch_status_t) switch_core_session_read_lock_hangup(_In_ switch_core_session_t *session);
 #endif
@@ -901,7 +901,7 @@
   \param session the session to reset
   \param flush_dtmf flush all queued dtmf events too
 */
-SWITCH_DECLARE(void) switch_core_session_reset(_In_ switch_core_session_t *session, switch_bool_t flush_dtmf);
+SWITCH_DECLARE(void) switch_core_session_reset(_In_ switch_core_session_t *session, switch_bool_t flush_dtmf, switch_bool_t reset_read_codec);
 
 /*! 
   \brief Write a frame to a session

Modified: freeswitch/branches/1.0/src/include/switch_module_interfaces.h
==============================================================================
--- freeswitch/branches/1.0/src/include/switch_module_interfaces.h	(original)
+++ freeswitch/branches/1.0/src/include/switch_module_interfaces.h	Thu Jan 22 17:01:56 2009
@@ -320,6 +320,9 @@
 	switch_buffer_t *buffer;
 	switch_byte_t *dbuf;
 	switch_size_t dbuflen;
+	switch_buffer_t *pre_buffer;
+	unsigned char *pre_buffer_data;
+	switch_size_t pre_buffer_datalen;
 	const char *file;
 	const char *func;
 	int line;

Modified: freeswitch/branches/1.0/src/include/switch_types.h
==============================================================================
--- freeswitch/branches/1.0/src/include/switch_types.h	(original)
+++ freeswitch/branches/1.0/src/include/switch_types.h	Thu Jan 22 17:01:56 2009
@@ -166,7 +166,9 @@
 #define SWITCH_SPEECH_KEY "speech"
 #define SWITCH_UUID_BRIDGE "uuid_bridge"
 #define SWITCH_BITS_PER_BYTE 8
-	typedef uint8_t switch_byte_t;
+#define SWITCH_DEFAULT_FILE_BUFFER_LEN 65536
+
+typedef uint8_t switch_byte_t;
 
 typedef struct {
 	char digit;
@@ -1061,7 +1063,9 @@
 	SWITCH_FILE_NATIVE = (1 << 9),
 	SWITCH_FILE_SEEK = (1 << 10),
 	SWITCH_FILE_OPEN = (1 << 11),
-	SWITCH_FILE_CALLBACK = (1 << 12)
+	SWITCH_FILE_CALLBACK = (1 << 12),
+	SWITCH_FILE_DONE = (1 << 13),
+	SWITCH_FILE_BUFFER_DONE = (1 << 14)
 } switch_file_flag_enum_t;
 typedef uint32_t switch_file_flag_t;
 

Modified: freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c	Thu Jan 22 17:01:56 2009
@@ -1,4 +1,4 @@
-/* 
+/*
  * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
  * Copyright (C) 2005/2006, Anthony Minessale II 
  *
@@ -139,7 +139,8 @@
 	MFLAG_FLUSH_BUFFER = (1 << 8),
 	MFLAG_ENDCONF = (1 << 9),
 	MFLAG_HAS_AUDIO = (1 << 10),
-	MFLAG_TALKING = (1 << 11)
+	MFLAG_TALKING = (1 << 11),
+	MFLAG_RESTART = (1 << 12)
 } member_flag_t;
 
 typedef enum {
@@ -337,6 +338,7 @@
 } api_command_t;
 
 /* Function Prototypes */
+static int setup_media(conference_member_t *member, conference_obj_t *conference);
 static uint32_t next_member_id(void);
 static conference_relationship_t *member_get_relationship(conference_member_t *member, conference_member_t *other_member);
 static conference_member_t *conference_member_get(conference_obj_t *conference, uint32_t id);
@@ -1758,18 +1760,43 @@
 /* NB. this starts the input thread after some initial setup for the call leg */
 static void conference_loop_output(conference_member_t *member)
 {
-	switch_channel_t *channel = switch_core_session_get_channel(member->session);
+	switch_channel_t *channel;
 	switch_frame_t write_frame = { 0 };
-	uint8_t *data;
+	uint8_t *data = NULL;
 	switch_timer_t timer = { 0 };
-	switch_codec_t *read_codec = switch_core_session_get_read_codec(member->session);
-	uint32_t interval = read_codec->implementation->microseconds_per_packet / 1000;
-	uint32_t samples = switch_samples_per_packet(member->conference->rate, interval);
-	uint32_t csamples = samples;
-	uint32_t tsamples = member->orig_read_codec->implementation->samples_per_packet;
-	uint32_t flush_len = 0;
-	uint32_t low_count = 0, bytes = samples * 2;
-	call_list_t *call_list = NULL, *cp = NULL;
+	switch_codec_t *read_codec;
+	uint32_t interval;
+	uint32_t samples;
+	uint32_t csamples;
+	uint32_t tsamples;
+	uint32_t flush_len;
+	uint32_t low_count, bytes;
+	call_list_t *call_list, *cp;
+	int restarting = -1;
+
+ top:
+
+	restarting++;
+	
+	if (switch_test_flag(member, MFLAG_RESTART)) {
+		switch_clear_flag(member, MFLAG_RESTART);
+		switch_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
+		switch_core_timer_destroy(&timer);
+	}
+
+	channel = switch_core_session_get_channel(member->session);
+	read_codec = switch_core_session_get_read_codec(member->session);
+	interval = read_codec->implementation->microseconds_per_packet / 1000;
+	samples = switch_samples_per_packet(member->conference->rate, interval);
+	csamples = samples;
+	tsamples = member->orig_read_codec->implementation->samples_per_packet;
+	flush_len = 0;
+	low_count = 0;
+	bytes = samples * 2;
+	call_list = NULL;
+	cp = NULL;
+
+
 
 	switch_assert(member->conference != NULL);
 
@@ -1783,62 +1810,72 @@
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Setup timer %s success interval: %u  samples: %u\n",
 					  member->conference->timer_name, interval, tsamples);
 
-	write_frame.data = data = switch_core_session_alloc(member->session, SWITCH_RECOMMENDED_BUFFER_SIZE);
-	write_frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE;
+	if (!restarting) {
+		write_frame.data = data = switch_core_session_alloc(member->session, SWITCH_RECOMMENDED_BUFFER_SIZE);
+		write_frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE;
+	}
+
 	write_frame.codec = &member->write_codec;
 
 	if (!switch_test_flag(member->conference, CFLAG_ANSWERED)) {
 		switch_channel_answer(channel);
 	}
 
-	/* Start the input thread */
-	launch_conference_loop_input(member, switch_core_session_get_pool(member->session));
-
-	/* build a digit stream object */
-	if (member->conference->dtmf_parser != NULL
-		&& switch_ivr_digit_stream_new(member->conference->dtmf_parser, &member->digit_stream) != SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Danger Will Robinson, there is no digit parser stream object\n");
-	}
-
-	if ((call_list = switch_channel_get_private(channel, "_conference_autocall_list_"))) {
-		const char *cid_name = switch_channel_get_variable(channel, "conference_auto_outcall_caller_id_name");
-		const char *cid_num = switch_channel_get_variable(channel, "conference_auto_outcall_caller_id_number");
-		const char *toval = switch_channel_get_variable(channel, "conference_auto_outcall_timeout");
-		const char *flags = switch_channel_get_variable(channel, "conference_auto_outcall_flags");
-		const char *ann = switch_channel_get_variable(channel, "conference_auto_outcall_announce");
-		const char *prefix = switch_channel_get_variable(channel, "conference_auto_outcall_prefix");
-		int to = 60;
+	if (!restarting) {
+		/* Start the input thread */
+		launch_conference_loop_input(member, switch_core_session_get_pool(member->session));
 		
-		if (ann) {
-			member->conference->special_announce = switch_core_strdup(member->conference->pool, ann);
+		/* build a digit stream object */
+		if (member->conference->dtmf_parser != NULL
+			&& switch_ivr_digit_stream_new(member->conference->dtmf_parser, &member->digit_stream) != SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Danger Will Robinson, there is no digit parser stream object\n");
 		}
 
-		switch_channel_set_private(channel, "_conference_autocall_list_", NULL);
+		if ((call_list = switch_channel_get_private(channel, "_conference_autocall_list_"))) {
+			const char *cid_name = switch_channel_get_variable(channel, "conference_auto_outcall_caller_id_name");
+			const char *cid_num = switch_channel_get_variable(channel, "conference_auto_outcall_caller_id_number");
+			const char *toval = switch_channel_get_variable(channel, "conference_auto_outcall_timeout");
+			const char *flags = switch_channel_get_variable(channel, "conference_auto_outcall_flags");
+			const char *ann = switch_channel_get_variable(channel, "conference_auto_outcall_announce");
+			const char *prefix = switch_channel_get_variable(channel, "conference_auto_outcall_prefix");
+			int to = 60;
+		
+			if (ann) {
+				member->conference->special_announce = switch_core_strdup(member->conference->pool, ann);
+			}
+
+			switch_channel_set_private(channel, "_conference_autocall_list_", NULL);
 
-		if (toval) {
-			to = atoi(toval);
-			if (to < 10 || to > 500) {
-				to = 60;
+			if (toval) {
+				to = atoi(toval);
+				if (to < 10 || to > 500) {
+					to = 60;
+				}
 			}
-		}
 
-		for (cp = call_list; cp; cp = cp->next) {
-			int argc;
-			char *argv[512] = { 0 };
-			char *cpstr = strdup(cp->string);
-			int x = 0;
+			for (cp = call_list; cp; cp = cp->next) {
+				int argc;
+				char *argv[512] = { 0 };
+				char *cpstr = strdup(cp->string);
+				int x = 0;
 
-			switch_assert(cpstr);
-			argc = switch_separate_string(cpstr, ',', argv, (sizeof(argv) / sizeof(argv[0])));
-			for (x = 0; x < argc; x++) {
-				char *dial_str = switch_mprintf("%s%s", switch_str_nil(prefix), argv[x]);
-				switch_assert(dial_str);
-				conference_outcall_bg(member->conference, NULL, NULL, dial_str, to, switch_str_nil(flags), cid_name, cid_num);
-				switch_safe_free(dial_str);
+				switch_assert(cpstr);
+				argc = switch_separate_string(cpstr, ',', argv, (sizeof(argv) / sizeof(argv[0])));
+				for (x = 0; x < argc; x++) {
+					char *dial_str = switch_mprintf("%s%s", switch_str_nil(prefix), argv[x]);
+					switch_assert(dial_str);
+					conference_outcall_bg(member->conference, NULL, NULL, dial_str, to, switch_str_nil(flags), cid_name, cid_num);
+					switch_safe_free(dial_str);
+				}
+				switch_safe_free(cpstr);
 			}
-			switch_safe_free(cpstr);
 		}
 	}
+
+	if (restarting) {
+		switch_channel_clear_flag(channel, CF_SERVICE);
+	}
+
 	/* Fair WARNING, If you expect the caller to hear anything or for digit handling to be processed,      */
 	/* you better not block this thread loop for more than the duration of member->conference->timer_name!  */
 	while (switch_test_flag(member, MFLAG_RUNNING) && switch_test_flag(member, MFLAG_ITHREAD)
@@ -1852,6 +1889,10 @@
 		switch_size_t file_sample_len = csamples;
 		switch_size_t file_data_len = file_sample_len * 2;
 
+		if (switch_test_flag(member, MFLAG_RESTART)) {
+			goto top;
+		}
+
 		switch_mutex_lock(member->flag_mutex);
 
 		if (switch_core_session_dequeue_event(member->session, &event) == SWITCH_STATUS_SUCCESS) {
@@ -2145,6 +2186,8 @@
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Joining Conference\n");
 		goto end;
 	}
+	
+	fh.pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
 
 	if (switch_core_file_open(&fh,
 							  rec->path, (uint8_t) 1, conference->rate, SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT,
@@ -2371,6 +2414,7 @@
 	fnode->leadin = leadin;
 
 	/* Open the file */
+	fnode->fh.pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
 	if (switch_core_file_open(&fnode->fh, file, (uint8_t) 1, conference->rate, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, pool) !=
 		SWITCH_STATUS_SUCCESS) {
 		switch_core_destroy_memory_pool(&pool);
@@ -2465,6 +2509,7 @@
 	fnode->type = NODE_TYPE_FILE;
 	fnode->leadin = leadin;
 	/* Open the file */
+	fnode->fh.pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
 	if (switch_core_file_open(&fnode->fh,
 							  file, (uint8_t) 1, member->conference->rate, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT,
 							  pool) != SWITCH_STATUS_SUCCESS) {
@@ -3631,9 +3676,21 @@
 			switch_mutex_lock(member->flag_mutex);
 			conference_del_member(conference, member);
 			conference_add_member(new_conference, member);
+
+			if (conference->rate != new_conference->rate) {
+				if(setup_media(member, new_conference)) {
+					switch_clear_flag_locked(member, MFLAG_RUNNING);
+				} else {
+					switch_channel_set_flag(channel, CF_SERVICE);
+					switch_set_flag(member, MFLAG_RESTART);
+				}
+			}
+
 			switch_mutex_unlock(new_conference->mutex);
 			switch_mutex_unlock(member->flag_mutex);
-			stream->write_function(stream, "OK Members sent to conference %s.\n", argv[2]);
+
+			
+			stream->write_function(stream, "OK Member '%d' sent to conference %s.\n", member->id, argv[2]);
 
 			/* tell them what happened */
 			if (test_eflag(conference, EFLAG_TRANSFER) &&
@@ -4349,6 +4406,111 @@
 	switch_channel_set_private(channel, "_conference_autocall_list_", call_list);
 }
 
+
+static int setup_media(conference_member_t *member, conference_obj_t *conference)
+{
+	switch_codec_t *read_codec;
+
+	
+	switch_core_session_reset(member->session, SWITCH_TRUE, SWITCH_FALSE);
+
+	if (member->read_codec.implementation) {
+		switch_core_codec_destroy(&member->read_codec);
+	}
+
+	if (member->read_resampler) {
+		switch_resample_destroy(&member->read_resampler);
+	}
+
+	read_codec = switch_core_session_get_read_codec(member->session);
+	member->orig_read_codec = read_codec;
+	member->native_rate = read_codec->implementation->samples_per_second;
+
+	/* Setup a Signed Linear codec for reading audio. */
+	if (switch_core_codec_init(&member->read_codec,
+							   "L16",
+							   NULL, read_codec->implementation->actual_samples_per_second, read_codec->implementation->microseconds_per_packet / 1000,
+							   1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, member->pool) == SWITCH_STATUS_SUCCESS) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
+						  "Raw Codec Activation Success L16@%uhz 1 channel %dms\n",
+						  read_codec->implementation->actual_samples_per_second, read_codec->implementation->microseconds_per_packet / 1000);
+
+	} else {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed L16@%uhz 1 channel %dms\n",
+						  read_codec->implementation->actual_samples_per_second, read_codec->implementation->microseconds_per_packet / 1000);
+
+		goto done;
+	}
+
+	if (!member->frame_size) {
+		member->frame_size = SWITCH_RECOMMENDED_BUFFER_SIZE;
+		member->frame = switch_core_alloc(member->pool, member->frame_size);
+		member->mux_frame = switch_core_alloc(member->pool, member->frame_size);
+	}
+
+	if (read_codec->implementation->actual_samples_per_second != conference->rate) {
+		if (switch_resample_create(&member->read_resampler,
+								   read_codec->implementation->actual_samples_per_second,
+								   member->frame_size, conference->rate, member->frame_size, member->pool) != SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Unable to create resampler!\n");
+			goto done;
+		}
+
+
+		member->resample_out = switch_core_alloc(member->pool, member->frame_size);
+		member->resample_out_len = member->frame_size;
+
+		/* Setup an audio buffer for the resampled audio */
+		if (switch_buffer_create_dynamic(&member->resample_buffer, CONF_DBLOCK_SIZE, CONF_DBUFFER_SIZE, CONF_DBUFFER_MAX)
+			!= SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error Creating Audio Buffer!\n");
+			goto done;
+		}
+	}
+
+
+	/* Setup a Signed Linear codec for writing audio. */
+	if (switch_core_codec_init(&member->write_codec,
+							   "L16",
+							   NULL,
+							   conference->rate,
+							   read_codec->implementation->microseconds_per_packet / 1000,
+							   1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, member->pool) == SWITCH_STATUS_SUCCESS) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
+						  "Raw Codec Activation Success L16@%uhz 1 channel %dms\n",
+						  conference->rate, read_codec->implementation->microseconds_per_packet / 1000);
+	} else {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed L16@%uhz 1 channel %dms\n",
+						  conference->rate, read_codec->implementation->microseconds_per_packet / 1000);
+		goto codec_done2;
+	}
+
+	/* Setup an audio buffer for the incoming audio */
+	if (switch_buffer_create_dynamic(&member->audio_buffer, CONF_DBLOCK_SIZE, CONF_DBUFFER_SIZE, CONF_DBUFFER_MAX) != SWITCH_STATUS_SUCCESS) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error Creating Audio Buffer!\n");
+		goto codec_done1;
+	}
+
+	/* Setup an audio buffer for the outgoing audio */
+	if (switch_buffer_create_dynamic(&member->mux_buffer, CONF_DBLOCK_SIZE, CONF_DBUFFER_SIZE, CONF_DBUFFER_MAX) != SWITCH_STATUS_SUCCESS) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error Creating Audio Buffer!\n");
+		goto codec_done1;
+	}
+
+	return 0;
+
+ codec_done1:
+	switch_core_codec_destroy(&member->read_codec);
+ codec_done2:
+	switch_core_codec_destroy(&member->write_codec);
+ done:
+
+	return -1;
+	
+
+}
+
+
 /* Application interface function that is called from the dialplan to join the channel to a conference */
 SWITCH_STANDARD_APP(conference_function)
 {
@@ -4632,84 +4794,16 @@
 			switch_set_flag(conference, CFLAG_ANSWERED);
 	}
 
-	member.orig_read_codec = read_codec;
-	member.native_rate = read_codec->implementation->samples_per_second;
+	member.session = session;
 	member.pool = switch_core_session_get_pool(session);
 
-	/* Setup a Signed Linear codec for reading audio. */
-	if (switch_core_codec_init(&member.read_codec,
-							   "L16",
-							   NULL, read_codec->implementation->actual_samples_per_second, read_codec->implementation->microseconds_per_packet / 1000,
-							   1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, member.pool) == SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
-						  "Raw Codec Activation Success L16@%uhz 1 channel %dms\n",
-						  read_codec->implementation->actual_samples_per_second, read_codec->implementation->microseconds_per_packet / 1000);
-
-	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed L16@%uhz 1 channel %dms\n",
-						  read_codec->implementation->actual_samples_per_second, read_codec->implementation->microseconds_per_packet / 1000);
-
+	if (setup_media(&member, conference)) {
 		flags = 0;
 		goto done;
 	}
 
-	member.frame_size = SWITCH_RECOMMENDED_BUFFER_SIZE;
-	member.frame = switch_core_alloc(member.pool, member.frame_size);
-	member.mux_frame = switch_core_alloc(member.pool, member.frame_size);
-
-	if (read_codec->implementation->actual_samples_per_second != conference->rate) {
-		if (switch_resample_create(&member.read_resampler,
-								   read_codec->implementation->actual_samples_per_second,
-								   member.frame_size, conference->rate, member.frame_size, member.pool) != SWITCH_STATUS_SUCCESS) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Unable to create resampler!\n");
-			goto done;
-		}
-
-
-		member.resample_out = switch_core_alloc(member.pool, member.frame_size);
-		member.resample_out_len = member.frame_size;
-
-		/* Setup an audio buffer for the resampled audio */
-		if (switch_buffer_create_dynamic(&member.resample_buffer, CONF_DBLOCK_SIZE, CONF_DBUFFER_SIZE, CONF_DBUFFER_MAX)
-			!= SWITCH_STATUS_SUCCESS) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error Creating Audio Buffer!\n");
-			goto done;
-		}
-	}
-
-
-	/* Setup a Signed Linear codec for writing audio. */
-	if (switch_core_codec_init(&member.write_codec,
-							   "L16",
-							   NULL,
-							   conference->rate,
-							   read_codec->implementation->microseconds_per_packet / 1000,
-							   1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, member.pool) == SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
-						  "Raw Codec Activation Success L16@%uhz 1 channel %dms\n",
-						  conference->rate, read_codec->implementation->microseconds_per_packet / 1000);
-	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed L16@%uhz 1 channel %dms\n",
-						  conference->rate, read_codec->implementation->microseconds_per_packet / 1000);
-		flags = 0;
-		goto codec_done2;
-	}
-
-	/* Setup an audio buffer for the incoming audio */
-	if (switch_buffer_create_dynamic(&member.audio_buffer, CONF_DBLOCK_SIZE, CONF_DBUFFER_SIZE, CONF_DBUFFER_MAX) != SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error Creating Audio Buffer!\n");
-		goto codec_done1;
-	}
-
-	/* Setup an audio buffer for the outgoing audio */
-	if (switch_buffer_create_dynamic(&member.mux_buffer, CONF_DBLOCK_SIZE, CONF_DBUFFER_SIZE, CONF_DBUFFER_MAX) != SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error Creating Audio Buffer!\n");
-		goto codec_done1;
-	}
-
 	/* Prepare MUTEXS */
 	member.id = next_member_id();
-	member.session = session;
 	switch_mutex_init(&member.flag_mutex, SWITCH_MUTEX_NESTED, member.pool);
 	switch_mutex_init(&member.audio_in_mutex, SWITCH_MUTEX_NESTED, member.pool);
 	switch_mutex_init(&member.audio_out_mutex, SWITCH_MUTEX_NESTED, member.pool);
@@ -4724,7 +4818,8 @@
 
 	/* Add the caller to the conference */
 	if (conference_add_member(conference, &member) != SWITCH_STATUS_SUCCESS) {
-		goto codec_done1;
+		switch_core_codec_destroy(&member.read_codec);
+		goto done;
 	}
 
 	msg.from = __FILE__;
@@ -4747,12 +4842,14 @@
 	/* Put the original codec back */
 	switch_core_session_set_read_codec(member.session, NULL);
 
-	/* Clean Up.  codec_done(X): is for error situations after the codecs were setup and done: is for situations before */
-  codec_done1:
-	switch_core_codec_destroy(&member.read_codec);
-  codec_done2:
-	switch_core_codec_destroy(&member.write_codec);
+	/* Clean Up. */
+
   done:
+
+	if (member.read_resampler) {
+		switch_resample_destroy(&member.read_resampler);
+	}
+
 	switch_event_destroy(¶ms);
 	switch_buffer_destroy(&member.resample_buffer);
 	switch_buffer_destroy(&member.audio_buffer);
@@ -4796,7 +4893,7 @@
 		}
 	}
 
-	switch_core_session_reset(session, SWITCH_TRUE);
+	switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 
 	/* release the readlock */
 	if (rl) {

Modified: freeswitch/branches/1.0/src/mod/applications/mod_rss/mod_rss.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/applications/mod_rss/mod_rss.c	(original)
+++ freeswitch/branches/1.0/src/mod/applications/mod_rss/mod_rss.c	Thu Jan 22 17:01:56 2009
@@ -619,7 +619,7 @@
 	}
 
 	switch_xml_free(xml);
-	switch_core_session_reset(session, SWITCH_TRUE);
+	switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 }
 
 

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_loopback/mod_loopback.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_loopback/mod_loopback.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_loopback/mod_loopback.c	Thu Jan 22 17:01:56 2009
@@ -264,7 +264,10 @@
 	}
 	
 	if (tech_pvt->other_session) {
-		switch_core_session_read_lock(tech_pvt->other_session);
+		if (switch_core_session_read_lock(tech_pvt->other_session) != SWITCH_STATUS_SUCCESS) {
+			switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+			goto end;
+		}
 	} else {
 		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
 		goto end;

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c	Thu Jan 22 17:01:56 2009
@@ -1623,7 +1623,7 @@
 			resetting = 1;
 			switch_core_codec_destroy(&tech_pvt->read_codec);
 			switch_core_codec_destroy(&tech_pvt->write_codec);
-			switch_core_session_reset(tech_pvt->session, SWITCH_TRUE);
+			switch_core_session_reset(tech_pvt->session, SWITCH_TRUE, SWITCH_TRUE);
 		} else {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Already using %s\n", tech_pvt->read_codec.implementation->iananame);
 			switch_goto_status(SWITCH_STATUS_SUCCESS, end);

Modified: freeswitch/branches/1.0/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c	(original)
+++ freeswitch/branches/1.0/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c	Thu Jan 22 17:01:56 2009
@@ -1202,7 +1202,9 @@
 
 	if ((session = listener->session)) {
 		channel = switch_core_session_get_channel(session);
-		switch_core_session_read_lock(session);
+		if (switch_core_session_read_lock(session) != SWITCH_STATUS_SUCCESS) {
+			goto done;
+		}
 	}
 
 	if (switch_strlen_zero(listener->remote_ip)) {

Modified: freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	(original)
+++ freeswitch/branches/1.0/src/mod/event_handlers/mod_event_socket/mod_event_socket.c	Thu Jan 22 17:01:56 2009
@@ -1770,7 +1770,9 @@
 	
 	if ((session = listener->session)) {
 		channel = switch_core_session_get_channel(session);
-		switch_core_session_read_lock(session);
+		if (switch_core_session_read_lock(session) != SWITCH_STATUS_SUCCESS) {
+			goto done;
+		}
 	}
 
 	if (prefs.acl_count && listener->sa && !switch_strlen_zero(listener->remote_ip)) {

Modified: freeswitch/branches/1.0/src/mod/formats/mod_local_stream/mod_local_stream.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/formats/mod_local_stream/mod_local_stream.c	(original)
+++ freeswitch/branches/1.0/src/mod/formats/mod_local_stream/mod_local_stream.c	Thu Jan 22 17:01:56 2009
@@ -183,6 +183,7 @@
 
 			fname = path_buf;
 			fh.prebuf = source->prebuf;
+			fh.pre_buffer_datalen = 65536;
 
 			if (switch_core_file_open(&fh,
 									  (char *) fname,

Modified: freeswitch/branches/1.0/src/switch_core.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_core.c	(original)
+++ freeswitch/branches/1.0/src/switch_core.c	Thu Jan 22 17:01:56 2009
@@ -277,7 +277,10 @@
 	switch_assert(thread != NULL);
 	switch_assert(session != NULL);
 
-	switch_core_session_read_lock(session);
+	if (switch_core_session_read_lock(session) != SWITCH_STATUS_SUCCESS) {
+		return NULL;
+	}
+
 	channel = switch_core_session_get_channel(session);
 
 	switch_channel_set_flag(channel, CF_SERVICE);

Modified: freeswitch/branches/1.0/src/switch_core_file.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_core_file.c	(original)
+++ freeswitch/branches/1.0/src/switch_core_file.c	Thu Jan 22 17:01:56 2009
@@ -117,6 +117,12 @@
 		}
 	}
 
+	if (fh->pre_buffer_datalen) {
+		//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Prebuffering %d bytes\n", (int)fh->pre_buffer_datalen);
+		switch_buffer_create_dynamic(&fh->pre_buffer, fh->pre_buffer_datalen, fh->pre_buffer_datalen / 2, 0);
+		fh->pre_buffer_data = switch_core_alloc(fh->memory_pool, fh->pre_buffer_datalen);
+	}
+
 	switch_set_flag(fh, SWITCH_FILE_OPEN);
 
 	return status;
@@ -124,26 +130,61 @@
 
 SWITCH_DECLARE(switch_status_t) switch_core_file_read(switch_file_handle_t *fh, void *data, switch_size_t *len)
 {
-	switch_status_t status;
+	switch_status_t status = SWITCH_STATUS_FALSE;
 	switch_size_t want, got, orig_len = *len;
 
 	switch_assert(fh != NULL);
 	switch_assert(fh->file_interface != NULL);
 
+ top:
+
 	if (fh->buffer && switch_buffer_inuse(fh->buffer) >= *len * 2) {
 		*len = switch_buffer_read(fh->buffer, data, orig_len * 2) / 2;
 		return SWITCH_STATUS_SUCCESS;
 	}
-
+	
+	if (switch_test_flag(fh, SWITCH_FILE_DONE)) {
+		switch_clear_flag(fh, SWITCH_FILE_DONE);
+		*len = 0;
+		return SWITCH_STATUS_FALSE;
+	}
+	
 	want = *len;
 
  more:
 	
-	if ((status = fh->file_interface->file_read(fh, data, len)) != SWITCH_STATUS_SUCCESS || !*len) {
-		*len = 0;
-		goto done;
+	if (fh->pre_buffer) {
+		switch_size_t rlen;
+		if (!switch_test_flag(fh, SWITCH_FILE_BUFFER_DONE)) {
+			if (!switch_buffer_inuse(fh->pre_buffer)) {
+				rlen = fh->pre_buffer_datalen / 2;
+				if ((status = fh->file_interface->file_read(fh, fh->pre_buffer_data, &rlen)) != SWITCH_STATUS_SUCCESS || !rlen) {
+					switch_set_flag(fh, SWITCH_FILE_BUFFER_DONE);
+				} else {
+					switch_buffer_write(fh->pre_buffer, fh->pre_buffer_data, rlen * 2);
+				}
+			}
+		}
+
+		rlen = switch_buffer_read(fh->pre_buffer, data, *len * 2);
+		*len = rlen / 2;
+		
+		if (*len == 0) {
+			switch_set_flag(fh, SWITCH_FILE_DONE);
+            goto top;
+		} else {
+			status = SWITCH_STATUS_SUCCESS;
+		}
+
+	} else {
+
+		if ((status = fh->file_interface->file_read(fh, data, len)) != SWITCH_STATUS_SUCCESS || !*len) {
+			switch_set_flag(fh, SWITCH_FILE_DONE);
+			goto top;
+		}
 	}
 
+
 	got = *len;
 	
 	if (!switch_test_flag(fh, SWITCH_FILE_NATIVE) && fh->native_rate != fh->samplerate) {
@@ -187,8 +228,6 @@
 
 	}
 	
-  done:
-
 	return status;
 }
 
@@ -235,7 +274,26 @@
 		return SWITCH_STATUS_SUCCESS;
 	}
 
-	return fh->file_interface->file_write(fh, data, len);
+
+	if (fh->pre_buffer) {
+		switch_size_t rlen, blen;
+		switch_status_t status = SWITCH_STATUS_SUCCESS;
+
+		switch_buffer_write(fh->pre_buffer, data, *len * 2);
+
+		rlen = switch_buffer_inuse(fh->pre_buffer);
+		if (rlen >= fh->pre_buffer_datalen) {
+			blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen);
+			blen /= 2;
+			if ((status = fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen)) != SWITCH_STATUS_SUCCESS) {
+				*len = 0;
+			}
+		}
+		
+		return status;
+	} else {
+		return fh->file_interface->file_write(fh, data, len);
+	}
 }
 
 SWITCH_DECLARE(switch_status_t) switch_core_file_seek(switch_file_handle_t *fh, unsigned int *cur_pos, int64_t samples, int whence)
@@ -295,6 +353,21 @@
 		switch_buffer_destroy(&fh->buffer);
 	}
 
+	if (fh->pre_buffer) {
+		if (switch_test_flag(fh, SWITCH_FILE_FLAG_WRITE)) {
+			switch_size_t rlen, blen;
+			while((rlen = switch_buffer_inuse(fh->pre_buffer))) {
+				blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen);
+				blen /= 2;
+				if (fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen) != SWITCH_STATUS_SUCCESS) {
+					break;
+				}
+			}
+		}
+
+		switch_buffer_destroy(&fh->pre_buffer);
+	}
+
 	switch_resample_destroy(&fh->resampler);
 
 	UNPROTECT_INTERFACE(fh->file_interface);

Modified: freeswitch/branches/1.0/src/switch_core_io.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_core_io.c	(original)
+++ freeswitch/branches/1.0/src/switch_core_io.c	Thu Jan 22 17:01:56 2009
@@ -805,7 +805,7 @@
 	}
 
 	if (session->write_codec) {
-		if (write_frame->datalen == session->write_codec->implementation->decoded_bytes_per_packet) {
+		if (write_frame->codec->implementation->decoded_bytes_per_packet == session->write_codec->implementation->decoded_bytes_per_packet) {
 			perfect = TRUE;
 		} else {
 			if (!session->raw_write_buffer) {
@@ -828,6 +828,12 @@
 		}
 
 		if (perfect) {
+
+			if (write_frame->datalen < session->write_codec->implementation->decoded_bytes_per_packet) {
+				memset(write_frame->data, 255, session->write_codec->implementation->decoded_bytes_per_packet - write_frame->datalen);
+				write_frame->datalen = session->write_codec->implementation->decoded_bytes_per_packet;
+			}
+
 			enc_frame = write_frame;
 			session->enc_write_frame.datalen = session->enc_write_frame.buflen;
 

Modified: freeswitch/branches/1.0/src/switch_core_session.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_core_session.c	(original)
+++ freeswitch/branches/1.0/src/switch_core_session.c	Thu Jan 22 17:01:56 2009
@@ -110,11 +110,12 @@
 		switch_hash_this(hi, NULL, NULL, &val);
 		if (val) {
 			session = (switch_core_session_t *) val;
-			switch_core_session_read_lock(session);
-			if (session->endpoint_interface == endpoint_interface) {
-				switch_channel_hangup(switch_core_session_get_channel(session), cause);
+			if (switch_core_session_read_lock(session) == SWITCH_STATUS_SUCCESS) {
+				if (session->endpoint_interface == endpoint_interface) {
+					switch_channel_hangup(switch_core_session_get_channel(session), cause);
+				}
+				switch_core_session_rwunlock(session);
 			}
-			switch_core_session_rwunlock(session);
 		}
 	}
 	switch_mutex_unlock(runtime.throttle_mutex);
@@ -132,9 +133,10 @@
 		switch_hash_this(hi, NULL, NULL, &val);
 		if (val) {
 			session = (switch_core_session_t *) val;
-			switch_core_session_read_lock(session);
-			switch_channel_hangup(switch_core_session_get_channel(session), cause);
-			switch_core_session_rwunlock(session);
+			if (switch_core_session_read_lock(session) == SWITCH_STATUS_SUCCESS) {
+				switch_channel_hangup(switch_core_session_get_channel(session), cause);
+				switch_core_session_rwunlock(session);
+			}
 		}
 	}
 	switch_mutex_unlock(runtime.throttle_mutex);
@@ -744,13 +746,14 @@
 	return x;
 }
 
-SWITCH_DECLARE(void) switch_core_session_reset(switch_core_session_t *session, switch_bool_t flush_dtmf)
+SWITCH_DECLARE(void) switch_core_session_reset(switch_core_session_t *session, switch_bool_t flush_dtmf, switch_bool_t reset_read_codec)
 {
 	switch_channel_t *channel = switch_core_session_get_channel(session);
 	switch_size_t has;
 
-
-	switch_core_session_set_read_codec(session, NULL);
+	if (reset_read_codec) {
+		switch_core_session_set_read_codec(session, NULL);
+	}
 
 	/* clear resamplers */
 	switch_mutex_lock(session->resample_mutex);
@@ -824,7 +827,7 @@
 					  switch_channel_get_name((*session)->channel), switch_channel_state_name(switch_channel_get_state((*session)->channel)));
 
 
-	switch_core_session_reset(*session, TRUE);
+	switch_core_session_reset(*session, TRUE, SWITCH_TRUE);
 	
 	switch_core_media_bug_remove_all(*session);
 	switch_ivr_deactivate_unicast(*session);

Modified: freeswitch/branches/1.0/src/switch_core_state_machine.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_core_state_machine.c	(original)
+++ freeswitch/branches/1.0/src/switch_core_state_machine.c	Thu Jan 22 17:01:56 2009
@@ -185,7 +185,7 @@
 {
 	switch_assert(session != NULL);
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Standard PARK\n", switch_channel_get_name(session->channel));
-	switch_core_session_reset(session, SWITCH_TRUE);
+	switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 	switch_ivr_park(session, NULL);
 }
 

Modified: freeswitch/branches/1.0/src/switch_ivr.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_ivr.c	(original)
+++ freeswitch/branches/1.0/src/switch_ivr.c	Thu Jan 22 17:01:56 2009
@@ -1163,7 +1163,7 @@
 	max_forwards = switch_core_session_sprintf(session, "%d", forwardval);
 	switch_channel_set_variable(channel, SWITCH_MAX_FORWARDS_VARIABLE, max_forwards);
 
-	switch_core_session_reset(session, SWITCH_TRUE);
+	switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 	switch_channel_clear_flag(channel, CF_ORIGINATING);
 
 	/* clear all state handlers */

Modified: freeswitch/branches/1.0/src/switch_ivr_async.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_ivr_async.c	(original)
+++ freeswitch/branches/1.0/src/switch_ivr_async.c	Thu Jan 22 17:01:56 2009
@@ -371,7 +371,7 @@
 							  read_codec->implementation->actual_samples_per_second,
 							  SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) {
 		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 		return SWITCH_STATUS_GENERR;
 	}
 
@@ -794,7 +794,7 @@
 		switch_core_session_rwunlock(tsession);
 		status = SWITCH_STATUS_SUCCESS;
 
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 	}
 
 	return status;
@@ -842,6 +842,7 @@
 
 	fh->channels = channels;
 	fh->samplerate = read_codec->implementation->actual_samples_per_second;
+	fh->pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
 
 	if (switch_core_file_open(fh,
 							  file,
@@ -850,7 +851,7 @@
 							  SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error opening %s\n", file);
 		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 		return SWITCH_STATUS_GENERR;
 	}
 
@@ -1678,7 +1679,11 @@
 	switch_thread_cond_create(&sth->cond, sth->pool);
 	switch_mutex_init(&sth->mutex, SWITCH_MUTEX_NESTED, sth->pool);
 
-	switch_core_session_read_lock(sth->session);
+	if (switch_core_session_read_lock(sth->session) != SWITCH_STATUS_SUCCESS) {
+		sth->ready = 0;
+		return NULL;
+	}
+
 	switch_mutex_lock(sth->mutex);
 
 	sth->ready = 1;

Modified: freeswitch/branches/1.0/src/switch_ivr_bridge.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_ivr_bridge.c	(original)
+++ freeswitch/branches/1.0/src/switch_ivr_bridge.c	Thu Jan 22 17:01:56 2009
@@ -430,7 +430,7 @@
 
   end:
 
-	switch_core_session_reset(session_a, SWITCH_TRUE);
+	switch_core_session_reset(session_a, SWITCH_TRUE, SWITCH_TRUE);
 	switch_channel_set_variable(chan_a, SWITCH_BRIDGE_VARIABLE, NULL);
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "BRIDGE THREAD DONE [%s]\n", switch_channel_get_name(chan_a));
 	if (!inner_bridge) {
@@ -451,7 +451,7 @@
 		switch_channel_set_private(channel, "_bridge_", NULL);
 		if (bd->session == session && *bd->b_uuid) {
 			audio_bridge_thread(NULL, (void *) bd);
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 		} else {
 			switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
 		}
@@ -581,7 +581,7 @@
 
 		switch_channel_wait_for_state(channel, other_channel, CS_SOFT_EXECUTE);
 
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 
 
 		ready_a = switch_channel_ready(channel);

Modified: freeswitch/branches/1.0/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_ivr_originate.c	(original)
+++ freeswitch/branches/1.0/src/switch_ivr_originate.c	Thu Jan 22 17:01:56 2009
@@ -501,9 +501,9 @@
 				}
 
 				olen = mlen;
-				if (ringback.fh->resampler && ringback.fh->resampler->rfactor > 1) {
-					olen = (switch_size_t) (olen * ringback.fh->resampler->rfactor);
-				}
+				//if (ringback.fh->resampler && ringback.fh->resampler->rfactor > 1) {
+				//olen = (switch_size_t) (olen * ringback.fh->resampler->rfactor);
+				//}
 				switch_core_file_read(ringback.fh, write_frame.data, &olen);
 
 				if (olen == 0) {
@@ -547,7 +547,7 @@
 		switch_buffer_destroy(&ringback.audio_buffer);
 	}
 
-	switch_core_session_reset(session, SWITCH_TRUE);
+	switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 
 	if (write_codec.implementation) {
 		switch_core_codec_destroy(&write_codec);
@@ -1128,7 +1128,10 @@
 					continue;
 				}
 
-				switch_core_session_read_lock(new_session);
+				if (switch_core_session_read_lock(new_session) != SWITCH_STATUS_SUCCESS) {
+					status = SWITCH_STATUS_FALSE;
+					goto done;
+				}
 				pool = NULL;
 
 				caller_profiles[i] = new_profile;
@@ -1473,9 +1476,10 @@
 							}
 
 							olen = mlen;
-							if (ringback.fh->resampler && ringback.fh->resampler->rfactor > 1) {
-								olen = (switch_size_t) (olen * ringback.fh->resampler->rfactor);
-							}
+							
+							//if (ringback.fh->resampler && ringback.fh->resampler->rfactor > 1) {
+							//olen = (switch_size_t) (olen * ringback.fh->resampler->rfactor);
+							//}
 							
 							switch_core_file_read(ringback.fh, write_frame.data, &olen);
 
@@ -1527,7 +1531,7 @@
 
 			if (session && (ringback_data || !(switch_channel_test_flag(caller_channel, CF_PROXY_MODE) &&
 											   switch_channel_test_flag(caller_channel, CF_PROXY_MEDIA)))) {
-				switch_core_session_reset(session, SWITCH_FALSE);
+				switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
 			}
 
 			for (i = 0; i < and_argc; i++) {
@@ -1716,7 +1720,7 @@
 			}
 
 			if (session) {
-				switch_core_session_reset(session, SWITCH_FALSE);
+				switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
 			}
 
 			if (write_codec.implementation) {

Modified: freeswitch/branches/1.0/src/switch_ivr_play_say.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_ivr_play_say.c	(original)
+++ freeswitch/branches/1.0/src/switch_ivr_play_say.c	Thu Jan 22 17:01:56 2009
@@ -402,7 +402,7 @@
 							  read_codec->implementation->actual_samples_per_second,
 							  SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) {
 		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 		return SWITCH_STATUS_GENERR;
 	}
 
@@ -460,7 +460,7 @@
 						  "Raw Codec Activation Failed %s@%uhz %u channels %dms\n", codec_name, fh->samplerate,
 						  fh->channels, read_codec->implementation->microseconds_per_packet / 1000);
 		switch_core_file_close(fh);
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 		return SWITCH_STATUS_GENERR;
 	}
 
@@ -580,7 +580,7 @@
 	}
 
 	switch_core_file_close(fh);
-	switch_core_session_reset(session, SWITCH_TRUE);
+	switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 	return status;
 }
 
@@ -853,7 +853,7 @@
 							  read_codec->implementation->number_of_channels,
 							  read_codec->implementation->actual_samples_per_second,
 							  SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) {
-		switch_core_session_reset(session, SWITCH_TRUE);
+		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 		status = SWITCH_STATUS_NOTFOUND;
 		goto end;
 	}
@@ -910,7 +910,7 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Setup buffer failed\n");
 
 			switch_core_file_close(fh);
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 
 			status = SWITCH_STATUS_GENERR;
 			goto end;
@@ -937,7 +937,7 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
 							  "Raw Codec Activation Failed %s@%uhz %u channels %dms\n", codec_name, fh->samplerate, fh->channels, interval);
 			switch_core_file_close(fh);
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 			status = SWITCH_STATUS_GENERR;
 			goto end;
 		}
@@ -953,7 +953,7 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Setup timer failed!\n");
 			switch_core_codec_destroy(&codec);
 			switch_core_file_close(fh);
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 			status = SWITCH_STATUS_GENERR;
 			goto end;
 		}
@@ -1238,7 +1238,7 @@
   end:
 	switch_safe_free(abuf);
 
-	switch_core_session_reset(session, SWITCH_FALSE);
+	switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
 	return status;
 }
 
@@ -1275,7 +1275,7 @@
 								  read_codec->implementation->number_of_channels,
 								  read_codec->implementation->actual_samples_per_second,
 								  SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) {
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 			return SWITCH_STATUS_NOTFOUND;
 		}
 		switch_zmalloc(abuf, SWITCH_RECOMMENDED_BUFFER_SIZE);
@@ -1362,7 +1362,7 @@
 		}
 	}
 
-	switch_core_session_reset(session, SWITCH_FALSE);
+	switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
 	switch_core_codec_destroy(&raw_codec);
 
  end:
@@ -1835,7 +1835,7 @@
 
 	timer_name = switch_channel_get_variable(channel, "timer_name");
 
-	switch_core_session_reset(session, SWITCH_FALSE);
+	switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
 	read_codec = switch_core_session_get_read_codec(session);
 
 	rate = read_codec->implementation->actual_samples_per_second;
@@ -1846,7 +1846,7 @@
 		if (switch_core_speech_open(sh, tts_name, voice_name, (uint32_t) rate, interval,
 									&flags, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid TTS module!\n");
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 			if (cache_obj) {
 				switch_channel_set_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME, NULL);
 			}
@@ -1872,7 +1872,7 @@
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed %s@%uhz 1 channel %dms\n", codec_name, rate, interval);
 			flags = 0;
 			switch_core_speech_close(sh, &flags);
-			switch_core_session_reset(session, SWITCH_TRUE);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 			if (cache_obj) {
 				switch_channel_set_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME, NULL);
 			}
@@ -1889,7 +1889,7 @@
 				switch_core_codec_destroy(write_frame.codec);
 				flags = 0;
 				switch_core_speech_close(sh, &flags);
-				switch_core_session_reset(session, SWITCH_TRUE);
+				switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
 				if (cache_obj) {
 					switch_channel_set_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME, NULL);
 				}
@@ -1918,7 +1918,7 @@
 		}
 	}
 
-	switch_core_session_reset(session, SWITCH_FALSE);
+	switch_core_session_reset(session, SWITCH_FALSE, SWITCH_TRUE);
 	return status;
 }
 


From mikej at freeswitch.org  Thu Jan 22 15:06:17 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:06:17 -0600
Subject: [Freeswitch-svn] [commit] r11427 -
	freeswitch/branches/1.0/src/mod/endpoints/mod_sofia
Message-ID: 

Author: mikej
Date: Thu Jan 22 17:06:17 2009
New Revision: 11427

Log:
mod_sofia: fix notify event wasn't allowing content-length 0 (r:11106/MODENDP-167)

Modified:
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.c

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.c	Thu Jan 22 17:06:17 2009
@@ -2675,12 +2675,12 @@
 
 				if (call_id) {
 					sql = switch_mprintf("select sip_user,sip_host,contact,profile_name,'%q','%q','%q' "
-										 "from sip_registrations where call_id='%q'", ct, es, body, call_id
+										 "from sip_registrations where call_id='%q'", ct, es, switch_str_nil(body), call_id
 										 );
 				} else {
 					sql = switch_mprintf("select sip_user,sip_host,contact,profile_name,'%q','%q','%q' "
 										 "from sip_registrations where sip_user='%s' and sip_host='%q'",
-										 ct, es, body, user, host
+										 ct, es, switch_str_nil(body), switch_str_nil(user), switch_str_nil(host)
 										 );
 				}
 				


From anthm at freeswitch.org  Thu Jan 22 15:07:31 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:07:31 -0600
Subject: [Freeswitch-svn] [commit] r11428 - in freeswitch/trunk/src: .
	mod/endpoints/mod_sofia
Message-ID: 

Author: anthm
Date: Thu Jan 22 17:07:31 2009
New Revision: 11428

Log:
only auto-restart if the binded ip changes

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
   freeswitch/trunk/src/switch_core.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	Thu Jan 22 17:07:31 2009
@@ -2756,6 +2756,48 @@
 			const char *cond = switch_event_get_header(event, "condition");
 
 			if (cond && !strcmp(cond, "network-address-change") && mod_sofia_globals.auto_restart) {
+				const char *old_ip4 = switch_event_get_header_nil(event, "network-address-previous-v4");
+				const char *new_ip4 = switch_event_get_header_nil(event, "network-address-change-v4");
+				const char *old_ip6 = switch_event_get_header_nil(event, "network-address-previous-v6");
+				const char *new_ip6 = switch_event_get_header_nil(event, "network-address-change-v6");
+				switch_hash_index_t *hi;
+				const void *var;
+				void *val;
+				sofia_profile_t *profile;
+
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "IP change detected [%s]->[%s] [%s]->[%s]\n", old_ip4, new_ip4, old_ip6, new_ip6);
+
+				switch_mutex_lock(mod_sofia_globals.hash_mutex);
+				if (mod_sofia_globals.profile_hash) {
+					for (hi = switch_hash_first(NULL, mod_sofia_globals.profile_hash); hi; hi = switch_hash_next(hi)) {
+						int rb = 0;
+						switch_hash_this(hi, &var, NULL, &val);
+						if ((profile = (sofia_profile_t *) val) && profile->auto_restart) {
+							if (!strcmp(profile->sipip, old_ip4)) {
+								profile->sipip = switch_core_strdup(profile->pool, new_ip4);
+								rb++;
+							}
+							if (!strcmp(profile->rtpip, old_ip4)) {
+								profile->rtpip = switch_core_strdup(profile->pool, new_ip4);
+								rb++;
+							}
+							if (!strcmp(profile->sipip, old_ip6)) {
+								profile->sipip = switch_core_strdup(profile->pool, new_ip6);
+								rb++;
+							}
+							if (!strcmp(profile->rtpip, old_ip6)) {
+								profile->rtpip = switch_core_strdup(profile->pool, new_ip6);
+								rb++;
+							}
+
+							if (rb) {
+								sofia_set_pflag_locked(profile, PFLAG_RESPAWN);
+								sofia_clear_pflag_locked(profile, PFLAG_RUNNING);
+							}
+						}
+					}
+				}
+
 				sofia_glue_restart_all_profiles();
 			}
 			

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	Thu Jan 22 17:07:31 2009
@@ -384,6 +384,7 @@
 	char *presence_hosts;
 	char *challenge_realm;
 	sofia_dtmf_t dtmf_type;
+	int auto_restart;
 	int sip_port;
 	int tls_sip_port;
 	int tls_version;

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	Thu Jan 22 17:07:31 2009
@@ -1279,6 +1279,8 @@
 						parse_rtp_bugs(profile, val);
 					} else if (!strcasecmp(var, "user-agent-string")) { 
 						profile->user_agent = switch_core_strdup(profile->pool, val);
+					} else if (!strcasecmp(var, "auto-restart")) {
+						profile->auto_restart = switch_true(val);
 					} else if (!strcasecmp(var, "dtmf-type")) {
 						if (!strcasecmp(val, "rfc2833")) {
 							profile->dtmf_type = DTMF_2833;
@@ -1688,7 +1690,8 @@
 				profile->rport_level = 1;
 				profile->pflags |= PFLAG_STUN_ENABLED;
 				profile->pflags |= PFLAG_DISABLE_100REL;
-				
+				profile->auto_restart = 1;
+
 				for (param = switch_xml_child(settings, "param"); param; param = param->next) {
 					char *var = (char *) switch_xml_attr_soft(param, "name");
 					char *val = (char *) switch_xml_attr_soft(param, "value");
@@ -1711,6 +1714,8 @@
 #endif
 					} else if (!strcasecmp(var, "user-agent-string")) {
 						profile->user_agent = switch_core_strdup(profile->pool, val);
+					} else if (!strcasecmp(var, "auto-restart")) {
+						profile->auto_restart = switch_true(val);
 					} else if (!strcasecmp(var, "dtmf-type")) {
 						if (!strcasecmp(val, "rfc2833")) {
 							profile->dtmf_type = DTMF_2833;

Modified: freeswitch/trunk/src/switch_core.c
==============================================================================
--- freeswitch/trunk/src/switch_core.c	(original)
+++ freeswitch/trunk/src/switch_core.c	Thu Jan 22 17:07:31 2009
@@ -85,6 +85,8 @@
 static void check_ip(void) {
 	char guess_ip4[256] = "";
 	char guess_ip6[256] = "";
+	char old_ip4[256] = "";
+	char old_ip6[256] = "";
 	int ok4 = 1, ok6 = 1;
 	
 	switch_find_local_ip(guess_ip4, sizeof(guess_ip4), AF_INET);
@@ -94,6 +96,7 @@
 		switch_set_string(main_ip4, guess_ip4);
 	} else {
 		if (!(ok4 = !strcmp(main_ip4, guess_ip4))) {
+			switch_set_string(old_ip4, main_ip4);
 			switch_set_string(main_ip4, guess_ip4);
 			switch_core_set_variable("local_ip_v4", guess_ip4);
 		}
@@ -103,6 +106,7 @@
 		switch_set_string(main_ip6, guess_ip6);
 	} else {
 		if (!(ok6 = !strcmp(main_ip6, guess_ip6))) {
+			switch_set_string(old_ip6, main_ip6);
 			switch_set_string(main_ip6, guess_ip6);
 			switch_core_set_variable("local_ip_v6", guess_ip6);
 		}
@@ -114,9 +118,11 @@
 		if (switch_event_create(&event, SWITCH_EVENT_TRAP) == SWITCH_STATUS_SUCCESS) {
 			switch_event_add_header(event, SWITCH_STACK_BOTTOM, "condition", "network-address-change");
 			if (!ok4) {
+				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "network-address-previous-v4", old_ip4);
 				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "network-address-change-v4", main_ip4);
 			}
 			if (!ok6) {
+				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "network-address-previous-v6", old_ip6);
 				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "network-address-change-v6", main_ip6);
 			}
 			switch_event_fire(&event);


From andrew at freeswitch.org  Thu Jan 22 15:07:37 2009
From: andrew at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:07:37 -0600
Subject: [Freeswitch-svn] [commit] r11429 -
	freeswitch/trunk/src/mod/event_handlers/mod_erlang_event
Message-ID: 

Author: andrew
Date: Thu Jan 22 17:07:37 2009
New Revision: 11429

Log:
Some inital work on abstracting registered processes and pids


Modified:
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h

Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c	Thu Jan 22 17:07:37 2009
@@ -488,7 +488,8 @@
 		}
 		else {
 			binding->section = section;
-			binding->pid = msg->from;
+			binding->process.type = ERLANG_PID;
+			binding->process.pid = msg->from;
 			binding->listener = listener;
 
 			switch_core_hash_init(&listener->fetch_reply_hash, listener->pool);
@@ -530,7 +531,7 @@
 	} else {
 		switch_core_session_t *session;
 		if (!switch_strlen_zero(uuid_str) && (session = switch_core_session_locate(uuid_str))) {
-			/* create a new sesion list element and attach it to this listener */
+			/* create a new session list element and attach it to this listener */
 			if (attach_call_to_listener(listener,reg_name,session)) {
 				ei_x_encode_atom(rbuf, "ok");
 			} else {
@@ -606,13 +607,15 @@
 		ei_x_encode_atom(rbuf, "ok");
 	} else if (!strncmp(atom, "register_log_handler", MAXATOMLEN)) {
 		ei_link(listener, ei_self(listener->ec), &msg->from);
-		listener->log_pid = msg->from;
+		listener->log_process.type = ERLANG_PID;
+		listener->log_process.pid = msg->from;
 		listener->level = SWITCH_LOG_DEBUG;
 		switch_set_flag(listener, LFLAG_LOG);
 		ei_x_encode_atom(rbuf, "ok");
 	} else if (!strncmp(atom, "register_event_handler", MAXATOMLEN)) {
 		ei_link(listener, ei_self(listener->ec), &msg->from);
-		listener->event_pid = msg->from;
+		listener->event_process.type = ERLANG_PID;
+		listener->event_process.pid = msg->from;
 		if (!switch_test_flag(listener, LFLAG_EVENTS)) {
 			switch_set_flag_locked(listener, LFLAG_EVENTS);
 		}

Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c	Thu Jan 22 17:07:37 2009
@@ -114,7 +114,7 @@
 
 	for (ptr = bindings.head; ptr; lst = ptr, ptr = ptr->next) {
 		if ((listener && ptr->listener == listener) ||
-			(pid && (&ptr->pid) && (!strcmp(pid->node, ptr->pid.node)) && pid->creation == ptr->pid.creation && pid->num == ptr->pid.num && pid->serial == ptr->pid.serial))  {
+			(pid && (&ptr->process.type == ERLANG_PID) && (!strcmp(pid->node, ptr->process.pid.node)) && pid->creation == ptr->process.pid.creation && pid->num == ptr->process.pid.num && pid->serial == ptr->process.pid.serial))  {
 			if (bindings.head == ptr) {
 				if (ptr->next) {
 					bindings.head = ptr->next;
@@ -327,7 +327,7 @@
 		return NULL; /* our pointer is trash */
 	}
 
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "binding for %s in section %s with key %s and value %s requested from node %s\n", tag_name, sectionstr, key_name, key_value, ptr->pid.node);
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "binding for %s in section %s with key %s and value %s requested from node %s\n", tag_name, sectionstr, key_name, key_value, ptr->process.pid.node);
 
 	switch_uuid_get(&uuid);
 	switch_uuid_format(uuid_str, &uuid);
@@ -346,7 +346,7 @@
 	/*switch_core_hash_insert(ptr->reply_hash, uuid_str, );*/
 
 	switch_mutex_lock(ptr->listener->sock_mutex);
-	ei_send(ptr->listener->sockfd, &ptr->pid, buf.buff, buf.index);
+	ei_send(ptr->listener->sockfd, &ptr->process.pid, buf.buff, buf.index);
 	switch_mutex_unlock(ptr->listener->sock_mutex);
 
 	int i = 0;
@@ -392,8 +392,9 @@
 }
 
 
-static switch_status_t notify_new_session(listener_t *listener, switch_core_session_t *session, char* reg_name)
+static switch_status_t notify_new_session(listener_t *listener, switch_core_session_t *session, struct erlang_process process)
 {
+	int result;
 	switch_event_t *call_event=NULL;
 	switch_channel_t *channel=NULL;
 
@@ -417,7 +418,13 @@
 	ei_encode_switch_event(&lbuf, call_event);
 	switch_mutex_lock(listener->sock_mutex);
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending initial call event\n");
-	if (ei_reg_send(listener->ec,listener->sockfd, reg_name, lbuf.buff, lbuf.index)==ERL_ERROR) {
+	if (process.type == ERLANG_PID) {
+		result = ei_send(listener->sockfd, &process.pid, lbuf.buff, lbuf.index);
+	} else {
+		result = ei_reg_send(listener->ec, listener->sockfd, process.reg_name, lbuf.buff, lbuf.index);
+	}
+
+	if (result) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to send call event\n");
 	}
 	switch_mutex_unlock(listener->sock_mutex);
@@ -441,7 +448,7 @@
 	last = NULL;
 	while(sp) {
 		if (!switch_test_flag(sp, LFLAG_OUTBOUND_INIT)) {
-			status = notify_new_session(listener, sp->session, sp->reg_name);
+			status = notify_new_session(listener, sp->session, sp->process);
 			if (status != SWITCH_STATUS_SUCCESS)
 				break;
 			switch_set_flag(sp, LFLAG_OUTBOUND_INIT);
@@ -460,7 +467,11 @@
 			ei_encode_switch_event(&ebuf, pevent);
 			
 			switch_mutex_lock(listener->sock_mutex);
-			ei_reg_send(listener->ec, listener->sockfd, sp->reg_name, ebuf.buff, ebuf.index);
+			if (sp->process.type == ERLANG_PID) {
+				ei_send(listener->sockfd, &sp->process.pid, ebuf.buff, ebuf.index);
+			} else {
+				ei_reg_send(listener->ec, listener->sockfd, sp->process.reg_name, ebuf.buff, ebuf.index);
+			}
 			switch_mutex_unlock(listener->sock_mutex);
 
 			/* event is a hangup, so this session can be removed */
@@ -535,7 +546,11 @@
 				ei_x_encode_empty_list(&lbuf);
 				
 				switch_mutex_lock(listener->sock_mutex);
-				ei_send(listener->sockfd, &listener->log_pid, lbuf.buff, lbuf.index);
+				if (listener->log_process.type == ERLANG_PID) {
+					ei_send(listener->sockfd, &listener->log_process.pid, lbuf.buff, lbuf.index);
+				} else {
+					ei_reg_send(listener->ec, listener->sockfd, listener->log_process.reg_name, lbuf.buff, lbuf.index);
+				}
 				switch_mutex_unlock(listener->sock_mutex);
 				
 				ei_x_free(&lbuf);
@@ -561,9 +576,13 @@
 			ei_encode_switch_event(&ebuf, pevent);
 			
 			switch_mutex_lock(listener->sock_mutex);
-			ei_send(listener->sockfd, &listener->event_pid, ebuf.buff, ebuf.index);
+			if (listener->log_process.type == ERLANG_PID) {
+				ei_send(listener->sockfd, &listener->log_process.pid, ebuf.buff, ebuf.index);
+			} else {
+				ei_reg_send(listener->ec, listener->sockfd, listener->log_process.reg_name, ebuf.buff, ebuf.index);
+			}
 			switch_mutex_unlock(listener->sock_mutex);
-			
+
 			ei_x_free(&ebuf);
 			switch_event_destroy(&pevent);
 		}
@@ -880,7 +899,8 @@
 		}
 		else {
 			session_element->session = session;
-			session_element->reg_name = switch_core_strdup(switch_core_session_get_pool(session),reg_name);
+			session_element->process.type = ERLANG_REG_PROCESS;
+			session_element->process.reg_name = switch_core_strdup(switch_core_session_get_pool(session),reg_name);
 			switch_set_flag(session_element, LFLAG_SESSION_ALIVE);
 			switch_clear_flag(session_element, LFLAG_OUTBOUND_INIT);
 			switch_queue_create(&session_element->event_queue, SWITCH_CORE_QUEUE_LEN, switch_core_session_get_pool(session));

Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h	Thu Jan 22 17:07:37 2009
@@ -38,12 +38,23 @@
 	LFLAG_SESSION_ALIVE
 } session_flag_t;
 
+typedef enum {
+	ERLANG_PID = 0,
+	ERLANG_REG_PROCESS
+} process_type;
+
+struct erlang_process {
+	process_type type;
+	char *reg_name;
+	erlang_pid pid;
+};
+
 struct session_elem {
 	switch_core_session_t *session;
 	switch_mutex_t *flag_mutex;
 	uint32_t flags;
 	/* registered process name that will receive call notifications from this session */
-	char* reg_name;
+	struct erlang_process process;
 	switch_queue_t *event_queue;
 	struct session_elem *next;
 };
@@ -68,8 +79,8 @@
 struct listener {
 	int sockfd;
 	struct ei_cnode_s *ec;
-	erlang_pid log_pid;
-	erlang_pid event_pid;
+	struct erlang_process log_process;
+	struct erlang_process event_process;
 	char *peer_nodename;
 	switch_queue_t *event_queue;
 	switch_queue_t *log_queue;
@@ -99,8 +110,7 @@
 
 struct erlang_binding {
 	switch_xml_section_t section;
-	erlang_pid pid;
-	char *registered_process; /* TODO */
+	struct erlang_process process;
 	listener_t *listener;
 	struct erlang_binding *next;
 };


From mikej at freeswitch.org  Thu Jan 22 15:14:07 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:14:07 -0600
Subject: [Freeswitch-svn] [commit] r11430 - in freeswitch/branches/1.0/src:
	. mod/formats/mod_local_stream mod/languages/mod_managed
	mod/languages/mod_managed/managed
Message-ID: 

Author: mikej
Date: Thu Jan 22 17:14:07 2009
New Revision: 11430

Log:
core: fix double close of file handles and add recording of native files (r:11108-11113)

Modified:
   freeswitch/branches/1.0/src/mod/formats/mod_local_stream/mod_local_stream.c
   freeswitch/branches/1.0/src/mod/languages/mod_managed/freeswitch_wrap.cxx
   freeswitch/branches/1.0/src/mod/languages/mod_managed/managed/swig.cs
   freeswitch/branches/1.0/src/switch_core_file.c
   freeswitch/branches/1.0/src/switch_ivr_play_say.c

Modified: freeswitch/branches/1.0/src/mod/formats/mod_local_stream/mod_local_stream.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/formats/mod_local_stream/mod_local_stream.c	(original)
+++ freeswitch/branches/1.0/src/mod/formats/mod_local_stream/mod_local_stream.c	Thu Jan 22 17:14:07 2009
@@ -251,7 +251,7 @@
 
  done:
 
-	if (fh.file_interface) {
+	if (switch_test_flag((&fh), SWITCH_FILE_OPEN)) {
 		switch_core_file_close(&fh);
 	}
 

Modified: freeswitch/branches/1.0/src/mod/languages/mod_managed/freeswitch_wrap.cxx
==============================================================================
--- freeswitch/branches/1.0/src/mod/languages/mod_managed/freeswitch_wrap.cxx	(original)
+++ freeswitch/branches/1.0/src/mod/languages/mod_managed/freeswitch_wrap.cxx	Thu Jan 22 17:14:07 2009
@@ -1510,6 +1510,17 @@
 }
 
 
+SWIGEXPORT int SWIGSTDCALL CSharp_SWITCH_DEFAULT_FILE_BUFFER_LEN_get() {
+  int jresult ;
+  int result;
+  
+  result = (int) 65536;
+  
+  jresult = result; 
+  return jresult;
+}
+
+
 SWIGEXPORT void SWIGSTDCALL CSharp_switch_dtmf_t_digit_set(void * jarg1, char jarg2) {
   switch_dtmf_t *arg1 = (switch_dtmf_t *) 0 ;
   char arg2 ;
@@ -6143,13 +6154,15 @@
 }
 
 
-SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_session_reset(void * jarg1, int jarg2) {
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_session_reset(void * jarg1, int jarg2, int jarg3) {
   switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
   switch_bool_t arg2 ;
+  switch_bool_t arg3 ;
   
   arg1 = (switch_core_session_t *)jarg1; 
   arg2 = (switch_bool_t)jarg2; 
-  switch_core_session_reset(arg1,arg2);
+  arg3 = (switch_bool_t)jarg3; 
+  switch_core_session_reset(arg1,arg2,arg3);
 }
 
 
@@ -13093,6 +13106,81 @@
 }
 
 
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_file_handle_pre_buffer_set(void * jarg1, void * jarg2) {
+  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+  switch_buffer_t *arg2 = (switch_buffer_t *) 0 ;
+  
+  arg1 = (switch_file_handle *)jarg1; 
+  arg2 = (switch_buffer_t *)jarg2; 
+  if (arg1) (arg1)->pre_buffer = arg2;
+  
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_switch_file_handle_pre_buffer_get(void * jarg1) {
+  void * jresult ;
+  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+  switch_buffer_t *result = 0 ;
+  
+  arg1 = (switch_file_handle *)jarg1; 
+  result = (switch_buffer_t *) ((arg1)->pre_buffer);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_file_handle_pre_buffer_data_set(void * jarg1, void * jarg2) {
+  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+  unsigned char *arg2 = (unsigned char *) 0 ;
+  
+  arg1 = (switch_file_handle *)jarg1; 
+  arg2 = (unsigned char *)jarg2; 
+  if (arg1) (arg1)->pre_buffer_data = arg2;
+  
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_switch_file_handle_pre_buffer_data_get(void * jarg1) {
+  void * jresult ;
+  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+  unsigned char *result = 0 ;
+  
+  arg1 = (switch_file_handle *)jarg1; 
+  result = (unsigned char *) ((arg1)->pre_buffer_data);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_file_handle_pre_buffer_datalen_set(void * jarg1, void * jarg2) {
+  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+  switch_size_t arg2 ;
+  switch_size_t *argp2 ;
+  
+  arg1 = (switch_file_handle *)jarg1; 
+  argp2 = (switch_size_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null switch_size_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  if (arg1) (arg1)->pre_buffer_datalen = arg2;
+  
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_switch_file_handle_pre_buffer_datalen_get(void * jarg1) {
+  void * jresult ;
+  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
+  switch_size_t result;
+  
+  arg1 = (switch_file_handle *)jarg1; 
+  result =  ((arg1)->pre_buffer_datalen);
+  jresult = new switch_size_t((switch_size_t &)result); 
+  return jresult;
+}
+
+
 SWIGEXPORT void SWIGSTDCALL CSharp_switch_file_handle_file_set(void * jarg1, char * jarg2) {
   switch_file_handle *arg1 = (switch_file_handle *) 0 ;
   char *arg2 = (char *) 0 ;
@@ -18377,6 +18465,26 @@
 }
 
 
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_event_set_basic_data(void * jarg1, void * jarg2) {
+  switch_channel_t *arg1 = (switch_channel_t *) 0 ;
+  switch_event_t *arg2 = (switch_event_t *) 0 ;
+  
+  arg1 = (switch_channel_t *)jarg1; 
+  arg2 = (switch_event_t *)jarg2; 
+  switch_channel_event_set_basic_data(arg1,arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_event_set_extended_data(void * jarg1, void * jarg2) {
+  switch_channel_t *arg1 = (switch_channel_t *) 0 ;
+  switch_event_t *arg2 = (switch_event_t *) 0 ;
+  
+  arg1 = (switch_channel_t *)jarg1; 
+  arg2 = (switch_event_t *)jarg2; 
+  switch_channel_event_set_extended_data(arg1,arg2);
+}
+
+
 SWIGEXPORT char * SWIGSTDCALL CSharp_switch_channel_expand_variables(void * jarg1, char * jarg2) {
   char * jresult ;
   switch_channel_t *arg1 = (switch_channel_t *) 0 ;

Modified: freeswitch/branches/1.0/src/mod/languages/mod_managed/managed/swig.cs
==============================================================================
--- freeswitch/branches/1.0/src/mod/languages/mod_managed/managed/swig.cs	(original)
+++ freeswitch/branches/1.0/src/mod/languages/mod_managed/managed/swig.cs	Thu Jan 22 17:14:07 2009
@@ -1344,8 +1344,8 @@
     return ret;
   }
 
-  public static void switch_core_session_reset(SWIGTYPE_p_switch_core_session session, switch_bool_t flush_dtmf) {
-    freeswitchPINVOKE.switch_core_session_reset(SWIGTYPE_p_switch_core_session.getCPtr(session), (int)flush_dtmf);
+  public static void switch_core_session_reset(SWIGTYPE_p_switch_core_session session, switch_bool_t flush_dtmf, switch_bool_t reset_read_codec) {
+    freeswitchPINVOKE.switch_core_session_reset(SWIGTYPE_p_switch_core_session.getCPtr(session), (int)flush_dtmf, (int)reset_read_codec);
   }
 
   public static switch_status_t switch_core_session_write_frame(SWIGTYPE_p_switch_core_session session, switch_frame frame, uint flags, int stream_id) {
@@ -2581,6 +2581,14 @@
     freeswitchPINVOKE.switch_channel_event_set_data(SWIGTYPE_p_switch_channel.getCPtr(channel), switch_event.getCPtr(arg1));
   }
 
+  public static void switch_channel_event_set_basic_data(SWIGTYPE_p_switch_channel channel, switch_event arg1) {
+    freeswitchPINVOKE.switch_channel_event_set_basic_data(SWIGTYPE_p_switch_channel.getCPtr(channel), switch_event.getCPtr(arg1));
+  }
+
+  public static void switch_channel_event_set_extended_data(SWIGTYPE_p_switch_channel channel, switch_event arg1) {
+    freeswitchPINVOKE.switch_channel_event_set_extended_data(SWIGTYPE_p_switch_channel.getCPtr(channel), switch_event.getCPtr(arg1));
+  }
+
   public static string switch_channel_expand_variables(SWIGTYPE_p_switch_channel channel, string arg1) {
     string ret = freeswitchPINVOKE.switch_channel_expand_variables(SWIGTYPE_p_switch_channel.getCPtr(channel), arg1);
     return ret;
@@ -4109,6 +4117,7 @@
   public static readonly string SWITCH_SPEECH_KEY = freeswitchPINVOKE.SWITCH_SPEECH_KEY_get();
   public static readonly string SWITCH_UUID_BRIDGE = freeswitchPINVOKE.SWITCH_UUID_BRIDGE_get();
   public static readonly int SWITCH_BITS_PER_BYTE = freeswitchPINVOKE.SWITCH_BITS_PER_BYTE_get();
+  public static readonly int SWITCH_DEFAULT_FILE_BUFFER_LEN = freeswitchPINVOKE.SWITCH_DEFAULT_FILE_BUFFER_LEN_get();
   public static readonly int SWITCH_MAX_STACKS = freeswitchPINVOKE.SWITCH_MAX_STACKS_get();
   public static readonly int SWITCH_THREAD_STACKSIZE = freeswitchPINVOKE.SWITCH_THREAD_STACKSIZE_get();
   public static readonly int SWITCH_SYSTEM_THREAD_STACKSIZE = freeswitchPINVOKE.SWITCH_SYSTEM_THREAD_STACKSIZE_get();
@@ -4690,6 +4699,9 @@
   [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_BITS_PER_BYTE_get")]
   public static extern int SWITCH_BITS_PER_BYTE_get();
 
+  [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_DEFAULT_FILE_BUFFER_LEN_get")]
+  public static extern int SWITCH_DEFAULT_FILE_BUFFER_LEN_get();
+
   [DllImport("mod_managed", EntryPoint="CSharp_switch_dtmf_t_digit_set")]
   public static extern void switch_dtmf_t_digit_set(HandleRef jarg1, char jarg2);
 
@@ -5798,7 +5810,7 @@
   public static extern int switch_core_session_write_video_frame(HandleRef jarg1, HandleRef jarg2, uint jarg3, int jarg4);
 
   [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_reset")]
-  public static extern void switch_core_session_reset(HandleRef jarg1, int jarg2);
+  public static extern void switch_core_session_reset(HandleRef jarg1, int jarg2, int jarg3);
 
   [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_write_frame")]
   public static extern int switch_core_session_write_frame(HandleRef jarg1, HandleRef jarg2, uint jarg3, int jarg4);
@@ -7438,6 +7450,24 @@
   [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_dbuflen_get")]
   public static extern IntPtr switch_file_handle_dbuflen_get(HandleRef jarg1);
 
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_pre_buffer_set")]
+  public static extern void switch_file_handle_pre_buffer_set(HandleRef jarg1, HandleRef jarg2);
+
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_pre_buffer_get")]
+  public static extern IntPtr switch_file_handle_pre_buffer_get(HandleRef jarg1);
+
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_pre_buffer_data_set")]
+  public static extern void switch_file_handle_pre_buffer_data_set(HandleRef jarg1, HandleRef jarg2);
+
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_pre_buffer_data_get")]
+  public static extern IntPtr switch_file_handle_pre_buffer_data_get(HandleRef jarg1);
+
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_pre_buffer_datalen_set")]
+  public static extern void switch_file_handle_pre_buffer_datalen_set(HandleRef jarg1, HandleRef jarg2);
+
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_pre_buffer_datalen_get")]
+  public static extern IntPtr switch_file_handle_pre_buffer_datalen_get(HandleRef jarg1);
+
   [DllImport("mod_managed", EntryPoint="CSharp_switch_file_handle_file_set")]
   public static extern void switch_file_handle_file_set(HandleRef jarg1, string jarg2);
 
@@ -8743,6 +8773,12 @@
   [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_event_set_data")]
   public static extern void switch_channel_event_set_data(HandleRef jarg1, HandleRef jarg2);
 
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_event_set_basic_data")]
+  public static extern void switch_channel_event_set_basic_data(HandleRef jarg1, HandleRef jarg2);
+
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_event_set_extended_data")]
+  public static extern void switch_channel_event_set_extended_data(HandleRef jarg1, HandleRef jarg2);
+
   [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_expand_variables")]
   public static extern string switch_channel_expand_variables(HandleRef jarg1, string jarg2);
 
@@ -19956,7 +19992,9 @@
   SWITCH_FILE_NATIVE = (1 << 9),
   SWITCH_FILE_SEEK = (1 << 10),
   SWITCH_FILE_OPEN = (1 << 11),
-  SWITCH_FILE_CALLBACK = (1 << 12)
+  SWITCH_FILE_CALLBACK = (1 << 12),
+  SWITCH_FILE_DONE = (1 << 13),
+  SWITCH_FILE_BUFFER_DONE = (1 << 14)
 }
 
 }
@@ -20304,6 +20342,40 @@
     } 
   }
 
+  public SWIGTYPE_p_switch_buffer pre_buffer {
+    set {
+      freeswitchPINVOKE.switch_file_handle_pre_buffer_set(swigCPtr, SWIGTYPE_p_switch_buffer.getCPtr(value));
+    } 
+    get {
+      IntPtr cPtr = freeswitchPINVOKE.switch_file_handle_pre_buffer_get(swigCPtr);
+      SWIGTYPE_p_switch_buffer ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_switch_buffer(cPtr, false);
+      return ret;
+    } 
+  }
+
+  public SWIGTYPE_p_unsigned_char pre_buffer_data {
+    set {
+      freeswitchPINVOKE.switch_file_handle_pre_buffer_data_set(swigCPtr, SWIGTYPE_p_unsigned_char.getCPtr(value));
+    } 
+    get {
+      IntPtr cPtr = freeswitchPINVOKE.switch_file_handle_pre_buffer_data_get(swigCPtr);
+      SWIGTYPE_p_unsigned_char ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_unsigned_char(cPtr, false);
+      return ret;
+    } 
+  }
+
+  public SWIGTYPE_p_switch_size_t pre_buffer_datalen {
+    set {
+      freeswitchPINVOKE.switch_file_handle_pre_buffer_datalen_set(swigCPtr, SWIGTYPE_p_switch_size_t.getCPtr(value));
+      if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve();
+    } 
+    get {
+      SWIGTYPE_p_switch_size_t ret = new SWIGTYPE_p_switch_size_t(freeswitchPINVOKE.switch_file_handle_pre_buffer_datalen_get(swigCPtr), true);
+      if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve();
+      return ret;
+    } 
+  }
+
   public string file {
     set {
       freeswitchPINVOKE.switch_file_handle_file_set(swigCPtr, value);

Modified: freeswitch/branches/1.0/src/switch_core_file.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_core_file.c	(original)
+++ freeswitch/branches/1.0/src/switch_core_file.c	Thu Jan 22 17:14:07 2009
@@ -132,7 +132,7 @@
 {
 	switch_status_t status = SWITCH_STATUS_FALSE;
 	switch_size_t want, got, orig_len = *len;
-
+	
 	switch_assert(fh != NULL);
 	switch_assert(fh->file_interface != NULL);
 
@@ -155,19 +155,21 @@
 	
 	if (fh->pre_buffer) {
 		switch_size_t rlen;
+		int asis = switch_test_flag(fh, SWITCH_FILE_NATIVE);
+
 		if (!switch_test_flag(fh, SWITCH_FILE_BUFFER_DONE)) {
 			if (!switch_buffer_inuse(fh->pre_buffer)) {
-				rlen = fh->pre_buffer_datalen / 2;
+				rlen = asis ? fh->pre_buffer_datalen : fh->pre_buffer_datalen / 2;
 				if ((status = fh->file_interface->file_read(fh, fh->pre_buffer_data, &rlen)) != SWITCH_STATUS_SUCCESS || !rlen) {
 					switch_set_flag(fh, SWITCH_FILE_BUFFER_DONE);
 				} else {
-					switch_buffer_write(fh->pre_buffer, fh->pre_buffer_data, rlen * 2);
+					switch_buffer_write(fh->pre_buffer, fh->pre_buffer_data, asis ? rlen : rlen * 2);
 				}
 			}
 		}
 
-		rlen = switch_buffer_read(fh->pre_buffer, data, *len * 2);
-		*len = rlen / 2;
+		rlen = switch_buffer_read(fh->pre_buffer, data, asis ? *len : *len * 2);
+		*len = asis ? rlen : rlen / 2;
 		
 		if (*len == 0) {
 			switch_set_flag(fh, SWITCH_FILE_DONE);
@@ -278,13 +280,14 @@
 	if (fh->pre_buffer) {
 		switch_size_t rlen, blen;
 		switch_status_t status = SWITCH_STATUS_SUCCESS;
+		int asis = switch_test_flag(fh, SWITCH_FILE_NATIVE);
 
-		switch_buffer_write(fh->pre_buffer, data, *len * 2);
+		switch_buffer_write(fh->pre_buffer, data, asis ? *len : *len * 2);
 
 		rlen = switch_buffer_inuse(fh->pre_buffer);
 		if (rlen >= fh->pre_buffer_datalen) {
 			blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen);
-			blen /= 2;
+			if (!asis) blen /= 2;
 			if ((status = fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen)) != SWITCH_STATUS_SUCCESS) {
 				*len = 0;
 			}
@@ -346,6 +349,10 @@
 	switch_assert(fh != NULL);
 	switch_assert(fh->file_interface != NULL);
 
+	if (!switch_test_flag(fh, SWITCH_FILE_OPEN)) {
+		return SWITCH_STATUS_FALSE;
+	}
+
 	switch_clear_flag(fh, SWITCH_FILE_OPEN);
 	status = fh->file_interface->file_close(fh);
 
@@ -356,9 +363,11 @@
 	if (fh->pre_buffer) {
 		if (switch_test_flag(fh, SWITCH_FILE_FLAG_WRITE)) {
 			switch_size_t rlen, blen;
+			int asis = switch_test_flag(fh, SWITCH_FILE_NATIVE);
+
 			while((rlen = switch_buffer_inuse(fh->pre_buffer))) {
 				blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen);
-				blen /= 2;
+				if (asis) blen /= 2;
 				if (fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen) != SWITCH_STATUS_SUCCESS) {
 					break;
 				}

Modified: freeswitch/branches/1.0/src/switch_ivr_play_say.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_ivr_play_say.c	(original)
+++ freeswitch/branches/1.0/src/switch_ivr_play_say.c	Thu Jan 22 17:14:07 2009
@@ -384,6 +384,7 @@
 	const char *vval;
 	time_t start = 0;
 	uint32_t org_silence_hits = 0;
+	int asis = 0;
 
 	switch_assert(read_codec != NULL);
 
@@ -396,6 +397,30 @@
 	fh->channels = read_codec->implementation->number_of_channels;
 	fh->native_rate = read_codec->implementation->actual_samples_per_second;
 
+
+
+	if (!strstr(file, SWITCH_URL_SEPARATOR)) {
+		char *ext;
+		const char *prefix;
+
+		prefix = switch_channel_get_variable(channel, "sound_prefix");
+		if (!prefix) {
+			prefix = SWITCH_GLOBAL_dirs.base_dir;
+		}
+		
+		if (!switch_is_file_path(file)) {
+			file = switch_core_session_sprintf(session, "%s%s%s", prefix, SWITCH_PATH_SEPARATOR, file);
+		}
+		if ((ext = strrchr(file, '.'))) {
+			ext++;
+		} else {
+			ext = read_codec->implementation->iananame;
+			file = switch_core_session_sprintf(session, "%s.%s", file, ext);
+			asis = 1;
+		}
+	}
+
+
 	if (switch_core_file_open(fh,
 							  file,
 							  fh->channels,
@@ -406,6 +431,10 @@
 		return SWITCH_STATUS_GENERR;
 	}
 
+	if (switch_test_flag(fh, SWITCH_FILE_NATIVE)) {
+		asis = 1;
+	}
+
 	switch_channel_pre_answer(channel);
 
 	if ((p = switch_channel_get_variable(channel, "RECORD_TITLE"))) {
@@ -444,37 +473,43 @@
 		switch_channel_set_variable(channel, "RECORD_DATE", NULL);
 	}
 
-	codec_name = "L16";
-	if (switch_core_codec_init(&codec,
-							   codec_name,
-							   NULL,
-							   read_codec->implementation->actual_samples_per_second,
-							   read_codec->implementation->microseconds_per_packet / 1000,
-							   read_codec->implementation->number_of_channels,
-							   SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
-							   switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activated\n");
-		switch_core_session_set_read_codec(session, &codec);
-	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
-						  "Raw Codec Activation Failed %s@%uhz %u channels %dms\n", codec_name, fh->samplerate,
-						  fh->channels, read_codec->implementation->microseconds_per_packet / 1000);
-		switch_core_file_close(fh);
-		switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
-		return SWITCH_STATUS_GENERR;
+	if (!asis) {
+		codec_name = "L16";
+		if (switch_core_codec_init(&codec,
+								   codec_name,
+								   NULL,
+								   read_codec->implementation->actual_samples_per_second,
+								   read_codec->implementation->microseconds_per_packet / 1000,
+								   read_codec->implementation->number_of_channels,
+								   SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL,
+								   switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activated\n");
+			switch_core_session_set_read_codec(session, &codec);
+		} else {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
+							  "Raw Codec Activation Failed %s@%uhz %u channels %dms\n", codec_name, fh->samplerate,
+							  fh->channels, read_codec->implementation->microseconds_per_packet / 1000);
+			switch_core_file_close(fh);
+			switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
+			return SWITCH_STATUS_GENERR;
+		}
 	}
 
 	if (limit) {
 		start = switch_timestamp(NULL);
 	}
-
+	
 	if (fh->thresh) {
-		if (fh->silence_hits) {
-			fh->silence_hits = fh->samplerate * fh->silence_hits / read_codec->implementation->samples_per_packet;
+		if (asis) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Can't detect silence on a native recording.\n");
 		} else {
-			fh->silence_hits = fh->samplerate * 3 / read_codec->implementation->samples_per_packet;
+			if (fh->silence_hits) {
+				fh->silence_hits = fh->samplerate * fh->silence_hits / read_codec->implementation->samples_per_packet;
+			} else {
+				fh->silence_hits = fh->samplerate * 3 / read_codec->implementation->samples_per_packet;
+			}
+			org_silence_hits = fh->silence_hits;
 		}
-		org_silence_hits = fh->silence_hits;
 	}
 
 	for (;;) {
@@ -543,7 +578,7 @@
 			}
 		}
 
-		if (fh->thresh) {
+		if (!asis && fh->thresh) {
 			int16_t *fdata = (int16_t *) read_frame->data;
 			uint32_t samples = read_frame->datalen / sizeof(*fdata);
 			uint32_t score, count = 0, j = 0;
@@ -571,8 +606,8 @@
 
 		if (!switch_test_flag(fh, SWITCH_FILE_PAUSE) && !switch_test_flag(read_frame, SFF_CNG)) {
 			int16_t *data = read_frame->data;
-			len = (switch_size_t) read_frame->datalen / 2;
-
+			len = (switch_size_t) asis ? read_frame->datalen : read_frame->datalen / 2;
+			
 			if (switch_core_file_write(fh, data, &len) != SWITCH_STATUS_SUCCESS) {
 				break;
 			}


From mikej at freeswitch.org  Thu Jan 22 15:15:46 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:15:46 -0600
Subject: [Freeswitch-svn] [commit] r11431 -
	freeswitch/branches/1.0/scripts/contrib/mrene/mod_limit
Message-ID: 

Author: mikej
Date: Thu Jan 22 17:15:46 2009
New Revision: 11431

Log:


Removed:
   freeswitch/branches/1.0/scripts/contrib/mrene/mod_limit/


From mikej at freeswitch.org  Thu Jan 22 15:17:39 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:17:39 -0600
Subject: [Freeswitch-svn] [commit] r11432 - freeswitch/branches/1.0/src
Message-ID: 

Author: mikej
Date: Thu Jan 22 17:17:38 2009
New Revision: 11432

Log:


Modified:
   freeswitch/branches/1.0/src/switch_core_io.c

Modified: freeswitch/branches/1.0/src/switch_core_io.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_core_io.c	(original)
+++ freeswitch/branches/1.0/src/switch_core_io.c	Thu Jan 22 17:17:38 2009
@@ -805,7 +805,8 @@
 	}
 
 	if (session->write_codec) {
-		if (write_frame->codec->implementation->decoded_bytes_per_packet == session->write_codec->implementation->decoded_bytes_per_packet) {
+		if (!ptime_mismatch && 
+			write_frame->codec->implementation->decoded_bytes_per_packet == session->write_codec->implementation->decoded_bytes_per_packet) {
 			perfect = TRUE;
 		} else {
 			if (!session->raw_write_buffer) {


From mikej at freeswitch.org  Thu Jan 22 15:19:52 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:19:52 -0600
Subject: [Freeswitch-svn] [commit] r11433 -
	freeswitch/branches/1.0/src/mod/endpoints/mod_sofia
Message-ID: 

Author: mikej
Date: Thu Jan 22 17:19:52 2009
New Revision: 11433

Log:
mod_sofia: fix codec change race condition (r:11143)

Modified:
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.c
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.h
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.c	Thu Jan 22 17:19:52 2009
@@ -709,14 +709,14 @@
 					}
 					
 					if (tech_pvt->check_frames++ < MAX_CODEC_CHECK_FRAMES) {
-						if (!tech_pvt->read_codec.implementation->encoded_bytes_per_packet) {
+						if (!tech_pvt->read_impl.encoded_bytes_per_packet) {
 							tech_pvt->check_frames = MAX_CODEC_CHECK_FRAMES;
 							goto skip;
 						}
 
-						if (tech_pvt->last_ts && tech_pvt->read_frame.datalen != tech_pvt->read_codec.implementation->encoded_bytes_per_packet) {
+						if (tech_pvt->last_ts && tech_pvt->read_frame.datalen != tech_pvt->read_impl.encoded_bytes_per_packet) {
 							switch_size_t codec_ms = (int)(tech_pvt->read_frame.timestamp - 
-														   tech_pvt->last_ts) / (tech_pvt->read_codec.implementation->samples_per_second / 1000);
+														   tech_pvt->last_ts) / (tech_pvt->read_impl.samples_per_second / 1000);
 
 							if ((codec_ms % 10) != 0) {
 								tech_pvt->check_frames = MAX_CODEC_CHECK_FRAMES;
@@ -768,8 +768,8 @@
 									}
 									
 									if (rtp_timeout_sec) {
-										tech_pvt->max_missed_packets = (tech_pvt->read_codec.implementation->samples_per_second * rtp_timeout_sec) /
-											tech_pvt->read_codec.implementation->samples_per_packet;
+										tech_pvt->max_missed_packets = (tech_pvt->read_impl.samples_per_second * rtp_timeout_sec) /
+											tech_pvt->read_impl.samples_per_packet;
 										
 										switch_rtp_set_max_missed_packets(tech_pvt->rtp_session, tech_pvt->max_missed_packets);
 										if (!rtp_hold_timeout_sec) {
@@ -778,13 +778,13 @@
 									}
 									
 									if (rtp_hold_timeout_sec) {
-										tech_pvt->max_missed_hold_packets = (tech_pvt->read_codec.implementation->samples_per_second * rtp_hold_timeout_sec) /
-											tech_pvt->read_codec.implementation->samples_per_packet;
+										tech_pvt->max_missed_hold_packets = (tech_pvt->read_impl.samples_per_second * rtp_hold_timeout_sec) /
+											tech_pvt->read_impl.samples_per_packet;
 									}
 									
 									if (switch_rtp_change_interval(tech_pvt->rtp_session, 
 																   tech_pvt->codec_ms * 1000,
-																   tech_pvt->read_codec.implementation->samples_per_packet
+																   tech_pvt->read_impl.samples_per_packet
 																   ) != SWITCH_STATUS_SUCCESS) {
 										switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
 										
@@ -806,10 +806,10 @@
 					}
 				skip:
 					
-					if ((bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_packet)) {
+					if ((bytes = tech_pvt->read_impl.encoded_bytes_per_packet)) {
 						frames = (tech_pvt->read_frame.datalen / bytes);
 					}
-					tech_pvt->read_frame.samples = (int) (frames * tech_pvt->read_codec.implementation->samples_per_packet);
+					tech_pvt->read_frame.samples = (int) (frames * tech_pvt->read_impl.samples_per_packet);
 
 					if (tech_pvt->read_frame.datalen == 0) {
 						continue;
@@ -872,13 +872,13 @@
 	switch_set_flag_locked(tech_pvt, TFLAG_WRITING);
 
 	if (!switch_test_flag(frame, SFF_CNG) && !switch_test_flag(frame, SFF_PROXY_PACKET)) {
-		if (tech_pvt->read_codec.implementation->encoded_bytes_per_packet) {
-			bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_packet;
+		if (tech_pvt->read_impl.encoded_bytes_per_packet) {
+			bytes = tech_pvt->read_impl.encoded_bytes_per_packet;
 			frames = ((int) frame->datalen / bytes);
 		} else
 			frames = 1;
 
-		samples = frames * tech_pvt->read_codec.implementation->samples_per_packet;
+		samples = frames * tech_pvt->read_impl.samples_per_packet;
 	}
 
 	tech_pvt->timestamp_send += samples;

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.h
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.h	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.h	Thu Jan 22 17:19:52 2009
@@ -553,6 +553,8 @@
 	uint32_t last_codec_ms;
 	nua_event_t want_event;
 	switch_rtp_bug_flag_t rtp_bugs;
+	switch_codec_implementation_t read_impl;
+	switch_codec_implementation_t write_impl;
 };
 
 struct callback_t {

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c	Thu Jan 22 17:19:52 2009
@@ -1654,9 +1654,13 @@
 		switch_goto_status(SWITCH_STATUS_FALSE, end);
 	}
 
+	tech_pvt->read_impl = *tech_pvt->read_codec.implementation;
+	tech_pvt->write_impl = *tech_pvt->write_codec.implementation;
+
+
 	if (switch_rtp_ready(tech_pvt->rtp_session)) {
 		switch_assert(tech_pvt->read_codec.implementation);
-		switch_rtp_set_default_samples_per_interval(tech_pvt->rtp_session, tech_pvt->read_codec.implementation->samples_per_packet);
+		switch_rtp_set_default_samples_per_interval(tech_pvt->rtp_session, tech_pvt->read_impl.samples_per_packet);
 	}
 
 	tech_pvt->read_frame.rate = tech_pvt->rm_rate;
@@ -1669,7 +1673,7 @@
 
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Set Codec %s %s/%ld %d ms %d samples\n",
 					  switch_channel_get_name(tech_pvt->channel), tech_pvt->iananame, tech_pvt->rm_rate, tech_pvt->codec_ms,
-					  tech_pvt->read_codec.implementation->samples_per_packet);
+					  tech_pvt->read_impl.samples_per_packet);
 	tech_pvt->read_frame.codec = &tech_pvt->read_codec;
 
 	tech_pvt->write_codec.agreed_pt = tech_pvt->agreed_pt;
@@ -1832,8 +1836,8 @@
 		goto end;
 	}
 
-	bw = tech_pvt->read_codec.implementation->bits_per_second;
-	ms = tech_pvt->read_codec.implementation->microseconds_per_packet;
+	bw = tech_pvt->read_impl.bits_per_second;
+	ms = tech_pvt->read_impl.microseconds_per_packet;
 
 	if (myflags) {
 		flags = myflags;
@@ -1892,7 +1896,7 @@
 						  tech_pvt->local_sdp_audio_ip,
 						  tech_pvt->local_sdp_audio_port,
 						  tech_pvt->remote_sdp_audio_ip,
-						  tech_pvt->remote_sdp_audio_port, tech_pvt->agreed_pt, tech_pvt->read_codec.implementation->microseconds_per_packet / 1000);
+						  tech_pvt->remote_sdp_audio_port, tech_pvt->agreed_pt, tech_pvt->read_impl.microseconds_per_packet / 1000);
 	}
 
 	switch_snprintf(tmp, sizeof(tmp), "%d", tech_pvt->local_sdp_audio_port);
@@ -1934,7 +1938,7 @@
 						  tech_pvt->local_sdp_audio_ip,
 						  tech_pvt->local_sdp_audio_port,
 						  tech_pvt->remote_sdp_audio_ip,
-						  tech_pvt->remote_sdp_audio_port, tech_pvt->agreed_pt, tech_pvt->read_codec.implementation->microseconds_per_packet / 1000);
+						  tech_pvt->remote_sdp_audio_port, tech_pvt->agreed_pt, tech_pvt->read_impl.microseconds_per_packet / 1000);
 
 	} else {
 		timer_name = tech_pvt->profile->timer_name;
@@ -1949,7 +1953,7 @@
 										   tech_pvt->remote_sdp_audio_ip,
 										   tech_pvt->remote_sdp_audio_port,
 										   tech_pvt->agreed_pt,
-										   tech_pvt->read_codec.implementation->samples_per_packet,
+										   tech_pvt->read_impl.samples_per_packet,
 										   tech_pvt->codec_ms * 1000,
 										   (switch_rtp_flag_t) flags, timer_name, &err, switch_core_session_get_pool(tech_pvt->session));
 
@@ -1982,7 +1986,7 @@
 				}
 			}
 
-			stun_ping = (ival * tech_pvt->read_codec.implementation->samples_per_second) / tech_pvt->read_codec.implementation->samples_per_packet;
+			stun_ping = (ival * tech_pvt->read_impl.samples_per_second) / tech_pvt->read_impl.samples_per_packet;
 		}
 
 		tech_pvt->ssrc = switch_rtp_get_ssrc(tech_pvt->rtp_session);
@@ -2012,7 +2016,7 @@
 			} else {
 				int qlen;
 
-				qlen = len / (tech_pvt->read_codec.implementation->microseconds_per_packet / 1000);
+				qlen = len / (tech_pvt->read_impl.microseconds_per_packet / 1000);
 
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Setting Jitterbuffer to %dms (%d frames)\n", len, qlen);
 				switch_rtp_activate_jitter_buffer(tech_pvt->rtp_session, qlen);
@@ -2034,8 +2038,8 @@
 		}
 
 		if (rtp_timeout_sec) {
-			tech_pvt->max_missed_packets = (tech_pvt->read_codec.implementation->samples_per_second * rtp_timeout_sec) /
-				tech_pvt->read_codec.implementation->samples_per_packet;
+			tech_pvt->max_missed_packets = (tech_pvt->read_impl.samples_per_second * rtp_timeout_sec) /
+				tech_pvt->read_impl.samples_per_packet;
 
 			switch_rtp_set_max_missed_packets(tech_pvt->rtp_session, tech_pvt->max_missed_packets);
 			if (!rtp_hold_timeout_sec) {
@@ -2044,8 +2048,8 @@
 		}
 
 		if (rtp_hold_timeout_sec) {
-			tech_pvt->max_missed_hold_packets = (tech_pvt->read_codec.implementation->samples_per_second * rtp_hold_timeout_sec) /
-				tech_pvt->read_codec.implementation->samples_per_packet;
+			tech_pvt->max_missed_hold_packets = (tech_pvt->read_impl.samples_per_second * rtp_hold_timeout_sec) /
+				tech_pvt->read_impl.samples_per_packet;
 		}
 
 		if (tech_pvt->te) {


From mikej at freeswitch.org  Thu Jan 22 15:23:46 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:23:46 -0600
Subject: [Freeswitch-svn] [commit] r11434 - in freeswitch/branches/1.0:
	conf/sip_profiles src/mod/endpoints/mod_sofia
Message-ID: 

Author: mikej
Date: Thu Jan 22 17:23:46 2009
New Revision: 11434

Log:
mod_sofia: add auto-rtp-bugs profile option to make rtp bug compensation configurable  (r :11146-11147)

Modified:
   freeswitch/branches/1.0/conf/sip_profiles/internal.xml
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.h
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia.c
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c

Modified: freeswitch/branches/1.0/conf/sip_profiles/internal.xml
==============================================================================
--- freeswitch/branches/1.0/conf/sip_profiles/internal.xml	(original)
+++ freeswitch/branches/1.0/conf/sip_profiles/internal.xml	Thu Jan 22 17:23:46 2009
@@ -180,6 +180,17 @@
     
     
     
+
+    
+    
+    
   
 
 

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.h
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.h	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/mod_sofia.h	Thu Jan 22 17:23:46 2009
@@ -433,6 +433,7 @@
 	sofia_presence_type_t pres_type;
 	sofia_media_options_t media_options;
 	uint32_t force_subscription_expires;
+	switch_rtp_bug_flag_t auto_rtp_bugs;
 };
 
 struct private_object {

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia.c	Thu Jan 22 17:23:46 2009
@@ -1208,6 +1208,31 @@
 	}
 }
 
+static void parse_rtp_bugs(sofia_profile_t *profile, const char *str)
+{
+	if (switch_stristr("clear", str)) {
+		profile->auto_rtp_bugs = 0;
+	}
+
+	if (switch_stristr("CISCO_SKIP_MARK_BIT_2833", str)) {
+		profile->auto_rtp_bugs |= RTP_BUG_CISCO_SKIP_MARK_BIT_2833;
+	}
+
+	if (switch_stristr("~CISCO_SKIP_MARK_BIT_2833", str)) {
+		profile->auto_rtp_bugs &= ~RTP_BUG_CISCO_SKIP_MARK_BIT_2833;
+	}
+	
+	if (switch_stristr("SONUS_SEND_INVALID_TIMESTAMP_2833", str)) {
+		profile->auto_rtp_bugs |= RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833;
+	}
+
+	if (switch_stristr("~SONUS_SEND_INVALID_TIMESTAMP_2833", str)) {
+		profile->auto_rtp_bugs &= ~RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833;
+	}
+
+
+}
+
 switch_status_t reconfig_sofia(sofia_profile_t *profile)
 {
 	switch_xml_t cfg, xml = NULL, xprofile, profiles, gateways_tag, domain_tag, domains_tag, aliases_tag, alias_tag, settings, param;
@@ -1250,6 +1275,8 @@
 					char *val = (char *) switch_xml_attr_soft(param, "value");
 					if (!strcasecmp(var, "debug")) {
 						profile->debug = atoi(val);
+					} else if (!strcasecmp(var, "auto-rtp-bugs")) {
+						parse_rtp_bugs(profile, val);
 					} else if (!strcasecmp(var, "user-agent-string")) { 
 						profile->user_agent = switch_core_strdup(profile->pool, val);
 					} else if (!strcasecmp(var, "dtmf-type")) {
@@ -1639,6 +1666,8 @@
 					goto done;
 				}
 
+				profile->auto_rtp_bugs = RTP_BUG_CISCO_SKIP_MARK_BIT_2833 | RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833;
+
 				profile->pool = pool;
 				profile->user_agent = SOFIA_USER_AGENT;
 
@@ -1694,6 +1723,8 @@
 						if (switch_true(val)) {
 							profile->rport_level = 2;
 						}
+					} else if (!strcasecmp(var, "auto-rtp-bugs")) {
+						parse_rtp_bugs(profile, val);
 					} else if (!strcasecmp(var, "dbname")) {
 						profile->dbname = switch_core_strdup(profile->pool, val);
 					} else if (!strcasecmp(var, "presence-hosts")) {

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c	Thu Jan 22 17:23:46 2009
@@ -2275,19 +2275,25 @@
 	}
 
 	if ((tech_pvt->origin = switch_core_session_strdup(session, (char *) sdp->sdp_origin->o_username))) {
-		if (strstr(tech_pvt->origin, "CiscoSystemsSIP-GW-UserAgent")) {
-			tech_pvt->rtp_bugs |= RTP_BUG_CISCO_SKIP_MARK_BIT_2833;
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Activate Buggy RFC2833 Mode!\n");
-		}
 
-		if (strstr(tech_pvt->origin, "Sonus_UAC")) {
-			tech_pvt->rtp_bugs |= RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833;
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, 
-							  "Hello,\nI see you have a Sonus!\n"
-							  "FYI, Sonus cannot follow the RFC on the proper way to send DTMF.\n"
-							  "Sadly, my creator had to spend several hours figuring this out so I thought you'd like to know that!\n"
-							  "Don't worry, DTMF will work but you may want to ask them to fix it......\n"
-							  );
+		if (tech_pvt->profile->auto_rtp_bugs & RTP_BUG_CISCO_SKIP_MARK_BIT_2833) {
+
+			if (strstr(tech_pvt->origin, "CiscoSystemsSIP-GW-UserAgent")) {
+				tech_pvt->rtp_bugs |= RTP_BUG_CISCO_SKIP_MARK_BIT_2833;
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Activate Buggy RFC2833 Mode!\n");
+			}
+		}
+		
+		if (tech_pvt->profile->auto_rtp_bugs & RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833) {
+			if (strstr(tech_pvt->origin, "Sonus_UAC")) {
+				tech_pvt->rtp_bugs |= RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833;
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, 
+								  "Hello,\nI see you have a Sonus!\n"
+								  "FYI, Sonus cannot follow the RFC on the proper way to send DTMF.\n"
+								  "Sadly, my creator had to spend several hours figuring this out so I thought you'd like to know that!\n"
+								  "Don't worry, DTMF will work but you may want to ask them to fix it......\n"
+								  );
+			}
 		}
 	}
 


From mikej at freeswitch.org  Thu Jan 22 15:44:08 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:44:08 -0600
Subject: [Freeswitch-svn] [commit] r11435 - freeswitch/branches/1.0/src
Message-ID: 

Author: mikej
Date: Thu Jan 22 17:44:08 2009
New Revision: 11435

Log:
core: fix multiple 2833 dtmf handling issues (r:11149,11261,11262,11266,11293,11294,11338/FSCORE-266,FSCORE-273)

Modified:
   freeswitch/branches/1.0/src/switch_rtp.c

Modified: freeswitch/branches/1.0/src/switch_rtp.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_rtp.c	(original)
+++ freeswitch/branches/1.0/src/switch_rtp.c	Thu Jan 22 17:44:08 2009
@@ -30,7 +30,7 @@
  * switch_rtp.c -- RTP
  *
  */
-
+//#define DEBUG_2833
 #include 
 #include 
 #undef PACKAGE_NAME
@@ -111,6 +111,7 @@
 	unsigned int out_digit_dur;
 	uint16_t in_digit_seq;
 	uint32_t in_digit_ts;
+	uint32_t in_digit_sanity;
 	uint32_t timestamp_dtmf;
 	uint16_t last_duration;
 	uint32_t flip;
@@ -1014,6 +1015,7 @@
 
 	switch_mutex_lock(rtp_session->flag_mutex);
 	switch_set_flag(rtp_session, SWITCH_RTP_FLAG_BREAK);
+	switch_set_flag(rtp_session, SWITCH_RTP_FLAG_FLUSH);
 	
 	if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_NOBLOCK)) {
 		switch_mutex_unlock(rtp_session->flag_mutex);
@@ -1351,6 +1353,8 @@
 			switch_core_timer_next(&rtp_session->timer);
 		}
 
+	recvfrom:
+
 		bytes = sizeof(rtp_msg_t);
 		status = switch_socket_recvfrom(rtp_session->from_addr, rtp_session->sock_input, 0, (void *) &rtp_session->recv_msg, &bytes);
 
@@ -1358,12 +1362,6 @@
 			ret = (int) bytes;
 			goto end;
 		}
-		
-		if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_FLUSH)) {
-			do_flush(rtp_session);
-			switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_FLUSH);
-			bytes = 0;
-		}
 
 		if (rtp_session->max_missed_packets) {
 			if (bytes) {
@@ -1379,11 +1377,16 @@
 		if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_BREAK) || (bytes && bytes == 4 && *((int *)&rtp_session->recv_msg) == UINT_MAX)) {
 			switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_BREAK);
 			do_2833(rtp_session);
-			rtp_flush_read_buffer(rtp_session);
 			bytes = 0;
 			return_cng_frame();
 		}
 
+		if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_FLUSH)) {
+			do_flush(rtp_session);
+			switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_FLUSH);
+			bytes = 0;
+		}
+		
 		if (bytes && bytes < 5) {
 			continue;
 		}
@@ -1541,31 +1544,56 @@
 		}
 
 
+#ifdef DEBUG_2833
+		if (rtp_session->dtmf_data.in_digit_sanity && !(rtp_session->dtmf_data.in_digit_sanity % 100)) {
+			printf("sanity %d\n", rtp_session->dtmf_data.in_digit_sanity);
+		}
+#endif
+
+		if (rtp_session->dtmf_data.in_digit_sanity && !--rtp_session->dtmf_data.in_digit_sanity) {
+			rtp_session->dtmf_data.last_digit = 0;
+			rtp_session->dtmf_data.in_digit_ts = 0;
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed DTMF sanity check.\n");
+		}
 
 		/* RFC2833 ... like all RFC RE: VoIP, guaranteed to drive you to insanity! 
 		   We know the real rules here, but if we enforce them, it's an interop nightmare so,
 		   we put up with as much as we can so we don't have to deal with being punished for
 		   doing it right. Nice guys finish last!
 		 */
-		if (bytes && !switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PASS_RFC2833) && rtp_session->recv_msg.header.pt == rtp_session->te) {
+		if (bytes && !switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA) && 
+			!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PASS_RFC2833) && rtp_session->recv_msg.header.pt == rtp_session->te) {
 			unsigned char *packet = (unsigned char *) rtp_session->recv_msg.body;
 			int end = packet[1] & 0x80 ? 1 : 0;
 			uint16_t duration = (packet[2] << 8) + packet[3];
 			char key = switch_rfc2833_to_char(packet[0]);
 			uint16_t in_digit_seq = ntohs((uint16_t) rtp_session->recv_msg.header.seq);
+			uint32_t ts = htonl(rtp_session->recv_msg.header.ts);
+
+			if (in_digit_seq < rtp_session->dtmf_data.in_digit_seq) {
+				if (rtp_session->dtmf_data.in_digit_seq - in_digit_seq > 100) {
+					rtp_session->dtmf_data.in_digit_seq = 0;
+				}
+			}
 
 			if (in_digit_seq > rtp_session->dtmf_data.in_digit_seq) {
-				uint32_t ts = htonl(rtp_session->recv_msg.header.ts);
-				//int m = rtp_session->recv_msg.header.m;
 
 				rtp_session->dtmf_data.in_digit_seq = in_digit_seq;
-
-				//printf("%c %u %u %u\n", key, in_digit_seq, ts, duration);
+#ifdef DEBUG_2833
+				
+				printf("read: %c %u %u %u %u %d %d %s\n", 
+					   key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, 
+					   ts, duration, rtp_session->recv_msg.header.m, end, end && !rtp_session->dtmf_data.in_digit_ts ? "ignored" : "");
+#endif
+				/* only set sanity if we do NOT ignore the packet */
+				if (rtp_session->dtmf_data.in_digit_ts) {
+					rtp_session->dtmf_data.in_digit_sanity = 2000;
+				}
 
 				if (rtp_session->dtmf_data.last_duration > duration && ts == rtp_session->dtmf_data.in_digit_ts) {
 					rtp_session->dtmf_data.flip++;
 				}
-
+				
 				if (end) {
 					if (rtp_session->dtmf_data.in_digit_ts) {
 						switch_dtmf_t dtmf = { key, duration };
@@ -1576,28 +1604,53 @@
 						if (rtp_session->dtmf_data.flip) {
 							dtmf.duration += rtp_session->dtmf_data.flip * 0xFFFF;
 							rtp_session->dtmf_data.flip = 0;
-							//printf("you're welcome!\n");
+#ifdef DEBUG_2833
+							printf("you're welcome!\n");
+#endif
 						}
-						//printf("done digit=%c ts=%u start_ts=%u dur=%u ddur=%u\n", 
-						//dtmf.digit, ts, rtp_session->dtmf_data.in_digit_ts, duration, dtmf.duration);
+
+#ifdef DEBUG_2833
+						printf("done digit=%c ts=%u start_ts=%u dur=%u ddur=%u\n", 
+							   dtmf.digit, ts, rtp_session->dtmf_data.in_digit_ts, duration, dtmf.duration);
+#endif
 						switch_rtp_queue_rfc2833_in(rtp_session, &dtmf);
-						switch_set_flag_locked(rtp_session, SWITCH_RTP_FLAG_BREAK);
 						rtp_session->dtmf_data.last_digit = rtp_session->dtmf_data.first_digit;
+
+						rtp_session->dtmf_data.in_digit_ts = 0;
+						rtp_session->dtmf_data.in_digit_sanity = 0;
+						do_cng = 1;
+					} else {
+						if (!switch_rtp_ready(rtp_session)) {
+							goto end;
+						}
+						switch_cond_next();
+						goto recvfrom;
 					}
-					rtp_session->dtmf_data.in_digit_ts = 0;
+
 				} else if (!rtp_session->dtmf_data.in_digit_ts) {
 					rtp_session->dtmf_data.in_digit_ts = ts;
 					rtp_session->dtmf_data.first_digit = key;
+					rtp_session->dtmf_data.in_digit_sanity = 2000;
 				}
 
 				rtp_session->dtmf_data.last_duration = duration;
-
+#ifdef DEBUG_2833
+			} else {
+				printf("drop: %c %u %u %u %u %d %d\n", 
+					   key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, ts, duration, rtp_session->recv_msg.header.m, end);
+#endif
 			}
-
-			do_cng = 1;
+		}
+		
+		if (rtp_session->dtmf_data.in_digit_ts) {
+			if (!switch_rtp_ready(rtp_session)) {
+				goto end;
+			}
+			switch_cond_next();
+			goto recvfrom;
 		}
 
-	  timer_check:
+	timer_check:
 
 		if (do_cng) {
 			uint8_t *data = (uint8_t *) rtp_session->recv_msg.body;
@@ -1703,10 +1756,6 @@
 	}
 	switch_mutex_unlock(rtp_session->dtmf_data.dtmf_mutex);
 
-	if (bytes) {
-		rtp_flush_read_buffer(rtp_session);
-	}
-
 	return bytes;
 }
 


From mikej at freeswitch.org  Thu Jan 22 15:48:01 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:48:01 -0600
Subject: [Freeswitch-svn] [commit] r11436 - freeswitch/branches/1.0
Message-ID: 

Author: mikej
Date: Thu Jan 22 17:48:01 2009
New Revision: 11436

Log:
build: add targets cd-sounds[-install] and cd-moh[-install] for 48k sounds (r:11151)

Modified:
   freeswitch/branches/1.0/Makefile.am

Modified: freeswitch/branches/1.0/Makefile.am
==============================================================================
--- freeswitch/branches/1.0/Makefile.am	(original)
+++ freeswitch/branches/1.0/Makefile.am	Thu Jan 22 17:48:01 2009
@@ -32,15 +32,20 @@
 moh: sounds-music-8000
 moh-install: sounds-music-8000-install
 
-hd-sounds: sounds-en-us-callie-8000 sounds-en-us-callie-16000
-hd-sounds-install: sounds-en-us-callie-8000-install sounds-en-us-callie-16000-install
-hd-moh: sounds-music-8000 sounds-music-16000
-hd-moh-install: sounds-music-8000-install sounds-music-16000-install
-
-uhd-sounds: sounds-en-us-callie-8000 sounds-en-us-callie-16000 sounds-en-us-callie-32000
-uhd-sounds-install: sounds-en-us-callie-8000-install sounds-en-us-callie-16000-install sounds-en-us-callie-32000-install
-uhd-moh: sounds-music-8000 sounds-music-16000 sounds-music-32000
-uhd-moh-install: sounds-music-8000-install sounds-music-16000-install sounds-music-32000-install
+hd-sounds: sounds sounds-en-us-callie-16000
+hd-sounds-install: sounds-install sounds-en-us-callie-16000-install
+hd-moh: moh sounds-music-16000
+hd-moh-install: moh-install sounds-music-16000-install
+
+uhd-sounds: hd-sounds sounds-en-us-callie-32000
+uhd-sounds-install: hd-sounds-install sounds-en-us-callie-32000-install
+uhd-moh: hd-moh sounds-music-32000
+uhd-moh-install: hd-moh-install sounds-music-32000-install
+
+cd-sounds: uhd-sounds sounds-en-us-callie-48000
+cd-sounds-install: uhd-sounds-install sounds-en-us-callie-48000-install
+cd-moh: uhd-moh sounds-music-48000
+cd-moh-install: uhd-moh-install sounds-music-48000-install
 
 libdir = @libdir@
 bindir = @bindir@


From anthm at freeswitch.org  Thu Jan 22 15:50:01 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:50:01 -0600
Subject: [Freeswitch-svn] [commit] r11437 - freeswitch/trunk/src
Message-ID: 

Author: anthm
Date: Thu Jan 22 17:50:01 2009
New Revision: 11437

Log:
add disposition to monitor_early_media

Modified:
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Thu Jan 22 17:50:01 2009
@@ -248,11 +248,22 @@
 	if (app) {
 		switch_channel_t *channel = switch_core_session_get_channel(session);
 		if (!strcmp(app, "fail")) {
+			const char *bd = switch_channel_get_variable(channel, "monitor_fail_dispo");
+			if (!bd) {
+				bd = "monitor_early_media_fail";
+			}
+			switch_channel_set_variable(channel, "originate_disposition", bd);
 			switch_channel_hangup(channel, data ? switch_channel_str2cause(data) : SWITCH_CAUSE_USER_BUSY);
 		} else if (!strcmp(app, "ring")) {
 			originate_global_t *oglobals = (originate_global_t *) switch_channel_get_private(channel, "_oglobals_");
+			const char *bd = switch_channel_get_variable(channel, "monitor_ring_dispo");
+			if (!bd) {
+				bd = "monitor_early_media_ring";
+			}
+			switch_channel_set_variable(channel, "originate_disposition", bd);
 
 			if (oglobals) {
+
 				switch_channel_set_private(channel, "_oglobals_", NULL);
 				
 				if (!oglobals->progress) {


From mikej at freeswitch.org  Thu Jan 22 15:50:35 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:50:35 -0600
Subject: [Freeswitch-svn] [commit] r11438 - in freeswitch/branches/1.0: src
	src/mod/formats/mod_local_stream support-d
Message-ID: 

Author: mikej
Date: Thu Jan 22 17:50:35 2009
New Revision: 11438

Log:
core: fix buffering issues (r:11152-11157,11162,11191)

Modified:
   freeswitch/branches/1.0/src/mod/formats/mod_local_stream/mod_local_stream.c
   freeswitch/branches/1.0/src/switch_core_file.c
   freeswitch/branches/1.0/support-d/.emacs

Modified: freeswitch/branches/1.0/src/mod/formats/mod_local_stream/mod_local_stream.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/formats/mod_local_stream/mod_local_stream.c	(original)
+++ freeswitch/branches/1.0/src/mod/formats/mod_local_stream/mod_local_stream.c	Thu Jan 22 17:50:35 2009
@@ -32,7 +32,7 @@
  */
 #include 
 /* for apr_pstrcat */
-#define DEFAULT_PREBUFFER_SIZE 1024 * 32
+#define DEFAULT_PREBUFFER_SIZE 1024 * 64
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_local_stream_load);
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_local_stream_shutdown);
@@ -183,7 +183,7 @@
 
 			fname = path_buf;
 			fh.prebuf = source->prebuf;
-			fh.pre_buffer_datalen = 65536;
+			fh.pre_buffer_datalen = source->prebuf;
 
 			if (switch_core_file_open(&fh,
 									  (char *) fname,
@@ -204,18 +204,26 @@
 			}
 
 			while (RUNNING) {
+				int is_open;
 				switch_core_timer_next(&timer);
 				olen = source->samples;
+				is_open = switch_test_flag((&fh), SWITCH_FILE_OPEN);
 
-				if (switch_core_file_read(&fh, abuf, &olen) != SWITCH_STATUS_SUCCESS || !olen) {
-					switch_core_file_close(&fh);
-					break;
+				if (is_open) {
+					if (switch_core_file_read(&fh, abuf, &olen) != SWITCH_STATUS_SUCCESS || !olen) {
+						switch_core_file_close(&fh);
+					}
+
+					switch_buffer_write(audio_buffer, abuf, olen * 2);
 				}
 
-				switch_buffer_write(audio_buffer, abuf, olen * 2);
 				used = switch_buffer_inuse(audio_buffer);
 
-				if (used >= source->prebuf || (source->total && used > source->samples * 2)) {
+				if (!used && !is_open) {
+					break;
+				}
+
+				if (!is_open || used >= source->prebuf || (source->total && used > source->samples * 2)) {
 					used = switch_buffer_read(audio_buffer, dist_buf, source->samples * 2);
 					if (source->total) {
 
@@ -285,6 +293,9 @@
 	char *alt_path = NULL;
 	switch_status_t status = SWITCH_STATUS_SUCCESS;
 
+	/* already buffering a step back, so always disable it */
+	handle->pre_buffer_datalen = 0;
+
 	if (switch_test_flag(handle, SWITCH_FILE_FLAG_WRITE)) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "This format does not support writing!\n");
 		return SWITCH_STATUS_FALSE;

Modified: freeswitch/branches/1.0/src/switch_core_file.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_core_file.c	(original)
+++ freeswitch/branches/1.0/src/switch_core_file.c	Thu Jan 22 17:50:35 2009
@@ -158,8 +158,9 @@
 		int asis = switch_test_flag(fh, SWITCH_FILE_NATIVE);
 
 		if (!switch_test_flag(fh, SWITCH_FILE_BUFFER_DONE)) {
-			if (!switch_buffer_inuse(fh->pre_buffer)) {
-				rlen = asis ? fh->pre_buffer_datalen : fh->pre_buffer_datalen / 2;
+			rlen = asis ? fh->pre_buffer_datalen : fh->pre_buffer_datalen / 2;
+
+			if (switch_buffer_inuse(fh->pre_buffer) < rlen * 2) {
 				if ((status = fh->file_interface->file_read(fh, fh->pre_buffer_data, &rlen)) != SWITCH_STATUS_SUCCESS || !rlen) {
 					switch_set_flag(fh, SWITCH_FILE_BUFFER_DONE);
 				} else {
@@ -209,7 +210,7 @@
 				switch_assert(fh->buffer);
 			}
 			if (!fh->dbuf) {
-				fh->dbuflen = want * 2;
+				fh->dbuflen = want * 8;
 				fh->dbuf = switch_core_alloc(fh->memory_pool, fh->dbuflen);
 			}
 			switch_assert(fh->resampler->to_len <= fh->dbuflen);

Modified: freeswitch/branches/1.0/support-d/.emacs
==============================================================================
--- freeswitch/branches/1.0/support-d/.emacs	(original)
+++ freeswitch/branches/1.0/support-d/.emacs	Thu Jan 22 17:50:35 2009
@@ -7,7 +7,7 @@
 ;(setq cperl-hairy t)
 (global-unset-key "\C-h")
 (global-set-key "\C-h" 'delete-backward-char)
-(load "/usr/share/emacs/site-lisp/rng-auto.el")
+;(load "/usr/share/emacs/site-lisp/rng-auto.el")
 
 (require 'cc-mode)
 (defun my-build-tab-stop-list (width)


From mikej at freeswitch.org  Thu Jan 22 15:52:32 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:52:32 -0600
Subject: [Freeswitch-svn] [commit] r11439 - in freeswitch/branches/1.0/src:
	. mod/endpoints/mod_portaudio
Message-ID: 

Author: mikej
Date: Thu Jan 22 17:52:32 2009
New Revision: 11439

Log:
mod_portaudio: fix stuck channels on outbound calls (r:11160)

Modified:
   freeswitch/branches/1.0/src/mod/endpoints/mod_portaudio/mod_portaudio.c
   freeswitch/branches/1.0/src/switch_rtp.c

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Thu Jan 22 17:52:32 2009
@@ -801,6 +801,7 @@
 	}
 
 	globals.indev = globals.outdev = globals.ringdev = -1;
+	globals.sample_rate = 8000;
 
 	if ((settings = switch_xml_child(cfg, "settings"))) {
 		for (param = switch_xml_child(settings, "param"); param; param = param->next) {
@@ -821,7 +822,7 @@
 				globals.sample_rate = atoi(val);
 			} else if (!strcmp(var, "codec-ms")) {
 				int tmp = atoi(val);
-				if (SWITCH_ACCEPTABLE_INTERVAL(tmp)) {
+				if (switch_check_interval(globals.sample_rate, tmp)) {
 					globals.codec_ms = tmp;
 				} else {
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,

Modified: freeswitch/branches/1.0/src/switch_rtp.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_rtp.c	(original)
+++ freeswitch/branches/1.0/src/switch_rtp.c	Thu Jan 22 17:52:32 2009
@@ -1007,6 +1007,13 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
+static void ping_socket(switch_rtp_t *rtp_session)
+{
+	uint32_t o = UINT_MAX;
+	switch_size_t len = sizeof(o);
+	switch_socket_sendto(rtp_session->sock_input, rtp_session->local_addr, 0, (void *) &o, &len);
+}
+
 SWITCH_DECLARE(void) switch_rtp_break(switch_rtp_t *rtp_session)
 {
 	if (!switch_rtp_ready(rtp_session)) {
@@ -1023,9 +1030,7 @@
 	}
 
 	if (rtp_session->sock_input) {
-		uint32_t o = UINT_MAX;
-		switch_size_t len = sizeof(o);
-		switch_socket_sendto(rtp_session->sock_input, rtp_session->local_addr, 0, (void *) &o, &len);
+		ping_socket(rtp_session);
 	}
 	switch_mutex_unlock(rtp_session->flag_mutex);
 }
@@ -1037,6 +1042,7 @@
 	if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO)) {
 		switch_clear_flag(rtp_session, SWITCH_RTP_FLAG_IO);
 		if (rtp_session->sock_input) {
+			ping_socket(rtp_session);
 			switch_socket_shutdown(rtp_session->sock_input, SWITCH_SHUTDOWN_READWRITE);
 		}
 		if (rtp_session->sock_output && rtp_session->sock_output != rtp_session->sock_input) {


From brian at freeswitch.org  Thu Jan 22 15:53:59 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:53:59 -0600
Subject: [Freeswitch-svn] [commit] r11440 -
	freeswitch/trunk/src/mod/endpoints/mod_sofia
Message-ID: 

Author: brian
Date: Thu Jan 22 17:53:59 2009
New Revision: 11440

Log:
do not print this debug info unless the profile is in debug mode

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	Thu Jan 22 17:53:59 2009
@@ -192,7 +192,9 @@
 	}
 	
 	if (!sofia_private || !sofia_private->gateway) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Gateway information missing Subscription Event: %s\n", sip->sip_event->o_type);
+		if (profile->debug) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Gateway information missing Subscription Event: %s\n", sip->sip_event->o_type);
+		}
 		goto error;	
 	}
 				


From mikej at freeswitch.org  Thu Jan 22 15:54:43 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 17:54:43 -0600
Subject: [Freeswitch-svn] [commit] r11441 - in freeswitch/branches/1.0/src:
	. include mod/endpoints/mod_sofia
Message-ID: 

Author: mikej
Date: Thu Jan 22 17:54:43 2009
New Revision: 11441

Log:
mod_sofia: reset media timeout on re-invite (r:11161)

Modified:
   freeswitch/branches/1.0/src/include/switch_rtp.h
   freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c
   freeswitch/branches/1.0/src/switch_rtp.c

Modified: freeswitch/branches/1.0/src/include/switch_rtp.h
==============================================================================
--- freeswitch/branches/1.0/src/include/switch_rtp.h	(original)
+++ freeswitch/branches/1.0/src/include/switch_rtp.h	Thu Jan 22 17:54:43 2009
@@ -168,7 +168,7 @@
 
 SWITCH_DECLARE(char *) switch_rtp_get_remote_host(switch_rtp_t *rtp_session);
 SWITCH_DECLARE(switch_port_t) switch_rtp_get_remote_port(switch_rtp_t *rtp_session);
-
+SWITCH_DECLARE(void) switch_rtp_reset_media_timer(switch_rtp_t *rtp_session);
 SWITCH_DECLARE(void) switch_rtp_set_max_missed_packets(switch_rtp_t *rtp_session, uint32_t max);
 
 /*! 

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_sofia/sofia_glue.c	Thu Jan 22 17:54:43 2009
@@ -1817,6 +1817,10 @@
 	switch_assert(tech_pvt != NULL);
 	switch_mutex_lock(tech_pvt->sofia_mutex);
 
+	if (switch_rtp_ready(tech_pvt->rtp_session)) {
+		switch_rtp_reset_media_timer(tech_pvt->rtp_session);
+	}
+
 	if ((var = switch_channel_get_variable(tech_pvt->channel, SOFIA_SECURE_MEDIA_VARIABLE)) && switch_true(var)) {
 		switch_set_flag_locked(tech_pvt, TFLAG_SECURE);
 	}

Modified: freeswitch/branches/1.0/src/switch_rtp.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_rtp.c	(original)
+++ freeswitch/branches/1.0/src/switch_rtp.c	Thu Jan 22 17:54:43 2009
@@ -608,6 +608,11 @@
 	rtp_session->max_missed_packets = max;
 }
 
+SWITCH_DECLARE(void) switch_rtp_reset_media_timer(switch_rtp_t *rtp_session)
+{
+	rtp_session->missed_count = 0;
+}
+
 SWITCH_DECLARE(char *) switch_rtp_get_remote_host(switch_rtp_t *rtp_session)
 {
 	return switch_strlen_zero(rtp_session->remote_host_str) ? "0.0.0.0" : rtp_session->remote_host_str;


From mikej at freeswitch.org  Thu Jan 22 16:05:16 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 18:05:16 -0600
Subject: [Freeswitch-svn] [commit] r11442 - in freeswitch/branches/1.0:
	build conf src/mod/applications/mod_dptools
	src/mod/applications/mod_fax src/mod/applications/mod_fifo
	src/mod/applications/mod_limit src/mod/applications/mod_soundtouch
	src/mod/applications/mod_voicemail
	src/mod/asr_tts/mod_pocketsphinx src/mod/formats/mod_shout
Message-ID: 

Author: mikej
Date: Thu Jan 22 18:05:15 2009
New Revision: 11442

Log:


Modified:
   freeswitch/branches/1.0/build/Makefile
   freeswitch/branches/1.0/conf/vars.xml
   freeswitch/branches/1.0/src/mod/applications/mod_dptools/mod_dptools.c
   freeswitch/branches/1.0/src/mod/applications/mod_fax/mod_fax.c
   freeswitch/branches/1.0/src/mod/applications/mod_fifo/mod_fifo.c
   freeswitch/branches/1.0/src/mod/applications/mod_limit/mod_limit.c
   freeswitch/branches/1.0/src/mod/applications/mod_soundtouch/mod_soundtouch.cpp
   freeswitch/branches/1.0/src/mod/applications/mod_voicemail/mod_voicemail.c
   freeswitch/branches/1.0/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c
   freeswitch/branches/1.0/src/mod/formats/mod_shout/mod_shout.c

Modified: freeswitch/branches/1.0/build/Makefile
==============================================================================
--- freeswitch/branches/1.0/build/Makefile	(original)
+++ freeswitch/branches/1.0/build/Makefile	Thu Jan 22 18:05:15 2009
@@ -14,6 +14,9 @@
 	@echo " +       (uhd-sounds includes hd-sounds, sounds) +"
 	@echo " +       (hd-sounds includes sounds)             +"
 	@echo " +       ------------------------------------    +"
+	@echo " +               $(MAKE) cd-sounds-install          +"  
+	@echo " +               $(MAKE) cd-moh-install             +"  
+	@echo " +                                               +"
 	@echo " +               $(MAKE) uhd-sounds-install         +"  
 	@echo " +               $(MAKE) uhd-moh-install            +"  
 	@echo " +                                               +"

Modified: freeswitch/branches/1.0/conf/vars.xml
==============================================================================
--- freeswitch/branches/1.0/conf/vars.xml	(original)
+++ freeswitch/branches/1.0/conf/vars.xml	Thu Jan 22 18:05:15 2009
@@ -11,11 +11,12 @@
   -->
   
   
-   
   
     
     
     

Modified: freeswitch/branches/1.0/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs
==============================================================================
--- freeswitch/branches/1.0/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs	(original)
+++ freeswitch/branches/1.0/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs	Thu Jan 22 19:19:36 2009
@@ -145,14 +145,14 @@
                     int pos = plainEvent.Body.IndexOf("\n\n");
                     if (pos < plainEvent.Body.Length - 2)
                     {
-                        Console.WriteLine("Fucked up event");
+                        Console.WriteLine("Invalid event");
                         Console.WriteLine("Header");
                         Console.WriteLine(headers);
                         Console.WriteLine("Body");
                         Console.WriteLine(plainEvent.Body);
                         Console.WriteLine("=========================== EVERYTHING in _text ==============================");
                         Console.WriteLine(_text);
-                        throw new InvalidDataException("Fucked up event: " + _text);
+                        throw new InvalidDataException("Invalid event: " + _text);
                     }
 
                     if (plainEvent.Body.Length < plainEvent.ContentLength)
@@ -178,4 +178,4 @@
                 _piecesToAppend.Enqueue(text);
         }
     }
-}
\ No newline at end of file
+}

Modified: freeswitch/branches/1.0/src/mod/applications/mod_limit/mod_limit.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/applications/mod_limit/mod_limit.c	(original)
+++ freeswitch/branches/1.0/src/mod/applications/mod_limit/mod_limit.c	Thu Jan 22 19:19:36 2009
@@ -64,7 +64,7 @@
 };
 typedef struct limit_hash_item limit_hash_item_t;
 
-
+ 
 static char limit_sql[] =
 	"CREATE TABLE limit_data (\n"
 	"   hostname   VARCHAR(255),\n" "   realm      VARCHAR(255),\n" "   id         VARCHAR(255),\n" "   uuid       VARCHAR(255)\n" ");\n";

Modified: freeswitch/branches/1.0/src/mod/languages/mod_managed/freeswitch_wrap.cxx
==============================================================================
--- freeswitch/branches/1.0/src/mod/languages/mod_managed/freeswitch_wrap.cxx	(original)
+++ freeswitch/branches/1.0/src/mod/languages/mod_managed/freeswitch_wrap.cxx	Thu Jan 22 19:19:36 2009
@@ -22358,6 +22358,14 @@
 }
 
 
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtp_reset_media_timer(void * jarg1) {
+  switch_rtp_t *arg1 = (switch_rtp_t *) 0 ;
+  
+  arg1 = (switch_rtp_t *)jarg1; 
+  switch_rtp_reset_media_timer(arg1);
+}
+
+
 SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtp_set_max_missed_packets(void * jarg1, unsigned long jarg2) {
   switch_rtp_t *arg1 = (switch_rtp_t *) 0 ;
   uint32_t arg2 ;

Modified: freeswitch/branches/1.0/src/mod/languages/mod_managed/managed/swig.cs
==============================================================================
--- freeswitch/branches/1.0/src/mod/languages/mod_managed/managed/swig.cs	(original)
+++ freeswitch/branches/1.0/src/mod/languages/mod_managed/managed/swig.cs	Thu Jan 22 19:19:36 2009
@@ -3384,6 +3384,10 @@
     return ret;
   }
 
+  public static void switch_rtp_reset_media_timer(SWIGTYPE_p_switch_rtp rtp_session) {
+    freeswitchPINVOKE.switch_rtp_reset_media_timer(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session));
+  }
+
   public static void switch_rtp_set_max_missed_packets(SWIGTYPE_p_switch_rtp rtp_session, uint max) {
     freeswitchPINVOKE.switch_rtp_set_max_missed_packets(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), max);
   }
@@ -9586,6 +9590,9 @@
   [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_get_remote_port")]
   public static extern ushort switch_rtp_get_remote_port(HandleRef jarg1);
 
+  [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_reset_media_timer")]
+  public static extern void switch_rtp_reset_media_timer(HandleRef jarg1);
+
   [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_set_max_missed_packets")]
   public static extern void switch_rtp_set_max_missed_packets(HandleRef jarg1, uint jarg2);
 

Modified: freeswitch/branches/1.0/w32/Setup/Setup.vdproj
==============================================================================
--- freeswitch/branches/1.0/w32/Setup/Setup.vdproj	(original)
+++ freeswitch/branches/1.0/w32/Setup/Setup.vdproj	Thu Jan 22 19:19:36 2009
@@ -34,12 +34,6 @@
         "Entry"
         {
         "MsmKey" = "8:_1273F63008CF585CA0E063E436B4646F"
-        "OwnerKey" = "8:_B5542B260CD5493395871EFDE833E438"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_1273F63008CF585CA0E063E436B4646F"
         "OwnerKey" = "8:_FBB0E565B1DE49CE9C827ACAC337AC5B"
         "MsmSig" = "8:_UNDEFINED"
         }
@@ -81,18 +75,6 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_22F4FC6A582C42A0817BA85C8FEBAA18"
-        "OwnerKey" = "8:_28FBC5A60B44423B8A2CC378347483CE"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_22F4FC6A582C42A0817BA85C8FEBAA18"
-        "OwnerKey" = "8:_A0D5F714A0F94250A1C39603B699AB82"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
         "MsmKey" = "8:_27E8189E01B6420CB898CC51360C83A3"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
@@ -327,6 +309,12 @@
         }
         "Entry"
         {
+        "MsmKey" = "8:_6A4CAD73F43678BF7C05E8FB41042F74"
+        "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
         "MsmKey" = "8:_6AA8D6AF639F4E6B92D28A7E0D13FD5E"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
@@ -417,36 +405,12 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_7A08061CFF2F14AC1D5A1B4592BEDB6D"
-        "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_7A08061CFF2F14AC1D5A1B4592BEDB6D"
-        "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_7A08061CFF2F14AC1D5A1B4592BEDB6D"
-        "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
         "MsmKey" = "8:_7B1050643E1E48A3B67B281B4AD43904"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
-        "MsmKey" = "8:_7BBFE2768ACD3A62F3874EF99D16C0B8"
-        "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
         "MsmKey" = "8:_7CFCCDD9C6694A0498D7CD6CDD285042"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
@@ -513,6 +477,24 @@
         }
         "Entry"
         {
+        "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825"
+        "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825"
+        "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825"
+        "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
         "MsmKey" = "8:_8B53F026686B44189676CBC200E641C1"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
@@ -615,6 +597,12 @@
         }
         "Entry"
         {
+        "MsmKey" = "8:_A164EF86C4B57E41C8CE77B48F39DAC7"
+        "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
         "MsmKey" = "8:_A3936A2727E73289F5804D5DA006FD0A"
         "OwnerKey" = "8:_28FBC5A60B44423B8A2CC378347483CE"
         "MsmSig" = "8:_UNDEFINED"
@@ -670,36 +658,30 @@
         "Entry"
         {
         "MsmKey" = "8:_ADA22D44BCDEBA509E09A5D4C155AA41"
-        "OwnerKey" = "8:_1CFB1AB04E024FC993E0EB4859DF8408"
+        "OwnerKey" = "8:_3DB5A5EF1E624F999BCEA20250508EEA"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
-        "MsmKey" = "8:_B0A2E9B4C45D4098AFD734D0C4E3EAFB"
-        "OwnerKey" = "8:_UNDEFINED"
+        "MsmKey" = "8:_ADA22D44BCDEBA509E09A5D4C155AA41"
+        "OwnerKey" = "8:_1CFB1AB04E024FC993E0EB4859DF8408"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
-        "MsmKey" = "8:_B33F513CD3524D3BB7BD11E035C3B562"
+        "MsmKey" = "8:_B0A2E9B4C45D4098AFD734D0C4E3EAFB"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
-        "MsmKey" = "8:_B34D0605157A4FE2A81F4639019E31BD"
+        "MsmKey" = "8:_B33F513CD3524D3BB7BD11E035C3B562"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
-        "MsmKey" = "8:_B540FA32E4F6382CF1426D13A0A4E6B7"
-        "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_B5542B260CD5493395871EFDE833E438"
+        "MsmKey" = "8:_B34D0605157A4FE2A81F4639019E31BD"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
         }
@@ -759,12 +741,6 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_BFD1EC957C5DBC08B54E6594C7CC5F91"
-        "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
         "MsmKey" = "8:_C1036825E1364537B537E542E71F9C0E"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
@@ -843,14 +819,14 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_D7EC5795A9C645AC8E129C2EE6D461ED"
-        "OwnerKey" = "8:_UNDEFINED"
+        "MsmKey" = "8:_D7E82DD20D5B47395F635480C8E3A1D3"
+        "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
-        "MsmKey" = "8:_DC30A9FB71F9449BAF1F5981E3538D1E"
-        "OwnerKey" = "8:_22F4FC6A582C42A0817BA85C8FEBAA18"
+        "MsmKey" = "8:_D7EC5795A9C645AC8E129C2EE6D461ED"
+        "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
@@ -963,12 +939,6 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_FB1B9FBDC3294F1C96DAC4246C013C22"
-        "OwnerKey" = "8:_UNDEFINED"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
         "MsmKey" = "8:_FBB0E565B1DE49CE9C827ACAC337AC5B"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
@@ -1802,6 +1772,26 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
+            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6A4CAD73F43678BF7C05E8FB41042F74"
+            {
+            "SourcePath" = "8:libteletone.dll"
+            "TargetName" = "8:libteletone.dll"
+            "Tag" = "8:"
+            "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:FALSE"
+            "IsDependency" = "11:TRUE"
+            "IsolateTo" = "8:"
+            }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6AA8D6AF639F4E6B92D28A7E0D13FD5E"
             {
             "SourcePath" = "8:..\\..\\conf\\dialplan\\extensions\\sipphone.com.noload"
@@ -2022,46 +2012,6 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7A08061CFF2F14AC1D5A1B4592BEDB6D"
-            {
-            "SourcePath" = "8:libapr.dll"
-            "TargetName" = "8:libapr.dll"
-            "Tag" = "8:"
-            "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7BBFE2768ACD3A62F3874EF99D16C0B8"
-            {
-            "SourcePath" = "8:FreeSwitch.dll"
-            "TargetName" = "8:FreeSwitch.dll"
-            "Tag" = "8:"
-            "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:TRUE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7CFCCDD9C6694A0498D7CD6CDD285042"
             {
             "SourcePath" = "8:..\\..\\conf\\lang\\de\\de.xml"
@@ -2282,6 +2232,26 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
+            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_879085EF680EFDF6242DCB77439EC825"
+            {
+            "SourcePath" = "8:libapr.dll"
+            "TargetName" = "8:libapr.dll"
+            "Tag" = "8:"
+            "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:FALSE"
+            "IsDependency" = "11:TRUE"
+            "IsolateTo" = "8:"
+            }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_8FB175B8685A47F7BE75E1A025F65693"
             {
             "SourcePath" = "8:..\\..\\conf\\autoload_configs\\limit.conf.xml"
@@ -2482,6 +2452,26 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
+            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A164EF86C4B57E41C8CE77B48F39DAC7"
+            {
+            "SourcePath" = "8:libaprutil.dll"
+            "TargetName" = "8:libaprutil.dll"
+            "Tag" = "8:"
+            "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:FALSE"
+            "IsDependency" = "11:TRUE"
+            "IsolateTo" = "8:"
+            }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A3936A2727E73289F5804D5DA006FD0A"
             {
             "SourcePath" = "8:RPCRT4.dll"
@@ -2582,26 +2572,6 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B540FA32E4F6382CF1426D13A0A4E6B7"
-            {
-            "SourcePath" = "8:libteletone.dll"
-            "TargetName" = "8:libteletone.dll"
-            "Tag" = "8:"
-            "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B5ADB663C7CE49A1A11E895E4EBB4933"
             {
             "SourcePath" = "8:..\\..\\conf\\autoload_configs\\zeroconf.conf.xml"
@@ -2722,26 +2692,6 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BFD1EC957C5DBC08B54E6594C7CC5F91"
-            {
-            "SourcePath" = "8:libaprutil.dll"
-            "TargetName" = "8:libaprutil.dll"
-            "Tag" = "8:"
-            "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C7E9135AE3874E19809A03F02CCC15C9"
             {
             "SourcePath" = "8:..\\..\\conf\\jingle_profiles\\server.noload"
@@ -2862,6 +2812,26 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
+            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D7E82DD20D5B47395F635480C8E3A1D3"
+            {
+            "SourcePath" = "8:FreeSwitch.dll"
+            "TargetName" = "8:FreeSwitch.dll"
+            "Tag" = "8:"
+            "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:TRUE"
+            "IsDependency" = "11:TRUE"
+            "IsolateTo" = "8:"
+            }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DD54C8F25D0546E199ADB3C4B40EA20B"
             {
             "SourcePath" = "8:..\\..\\conf\\autoload_configs\\conference.conf.xml"
@@ -4011,40 +3981,12 @@
         }
         "MergeModule"
         {
-            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_22F4FC6A582C42A0817BA85C8FEBAA18"
-            {
-            "UseDynamicProperties" = "11:TRUE"
-            "IsDependency" = "11:TRUE"
-            "SourcePath" = "8:Microsoft_VC80_CRT_x86.msm"
-                "Properties"
-                {
-                }
-            "LanguageId" = "3:0"
-            "Exclude" = "11:FALSE"
-            "Folder" = "8:"
-            "Feature" = "8:"
-            "IsolateTo" = "8:"
-            }
-            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_DC30A9FB71F9449BAF1F5981E3538D1E"
-            {
-            "UseDynamicProperties" = "11:TRUE"
-            "IsDependency" = "11:TRUE"
-            "SourcePath" = "8:policy_8_0_microsoft_vc80_crt_x86.msm"
-                "Properties"
-                {
-                }
-            "LanguageId" = "3:0"
-            "Exclude" = "11:FALSE"
-            "Folder" = "8:"
-            "Feature" = "8:"
-            "IsolateTo" = "8:"
-            }
         }
         "ProjectOutput"
         {
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_0772289C2CC6435396616D7A2C407EA2"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_voicemail.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_voicemail.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4072,7 +4014,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_166BDBE308F54EE4881DA68F2A8189F5"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_enum.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_enum.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4100,7 +4042,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_1777CB4B737E4B8481E25A10950B2B5A"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_native_file.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_native_file.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4128,7 +4070,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_1CFB1AB04E024FC993E0EB4859DF8408"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_dingaling.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_dingaling.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4156,7 +4098,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_1DCA6B2BA0F842FDB5CBA54CF52228F7"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_h26x.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_h26x.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4184,7 +4126,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_2814E641538B42EFA83525986A9D5AC1"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_ilbc.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_ilbc.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4212,7 +4154,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_28FBC5A60B44423B8A2CC378347483CE"
             {
-            "SourcePath" = "8:..\\..\\Release\\libapr.dll"
+            "SourcePath" = "8:..\\..\\Debug\\libapr.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
@@ -4240,7 +4182,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_297D0BADB993435092DDB8CDF9F2A3C6"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_xml_cdr.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_xml_cdr.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4268,7 +4210,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_2B80DCCD934745B1BB4F0B31099094D9"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_say_en.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_say_en.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4296,7 +4238,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_2D9E612823084E3F9E10376A7AC0C476"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_g723_1.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_g723_1.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4324,7 +4266,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_2F2FEC549F02436EB87961BD1B9E5783"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_iax.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_iax.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4352,7 +4294,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_318FCC99E8D143D6B4F9F534E63009B3"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_sndfile.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_sndfile.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4380,7 +4322,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_3DB5A5EF1E624F999BCEA20250508EEA"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_fifo.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_fifo.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4408,7 +4350,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_3E37631016BC45B2B672FE23257D542B"
             {
-            "SourcePath" = "8:..\\..\\Release\\pthreadVC2.dll"
+            "SourcePath" = "8:..\\..\\Debug\\pthreadVC2.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
@@ -4436,7 +4378,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_4A285D260C3748A4BEFA6E5A9004D128"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_spidermonkey.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4464,7 +4406,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_59CFED0C4EC0492C945E4EBC04FE965F"
             {
-            "SourcePath" = "8:..\\..\\Release\\libaprutil.dll"
+            "SourcePath" = "8:..\\..\\Debug\\libaprutil.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
@@ -4492,7 +4434,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_5EDFD5418DD243D1A03D882B83BBBCF1"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_esf.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_esf.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4520,7 +4462,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_6DF726E4018A4136BC27E2C6F4B67B9E"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_logfile.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_logfile.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4548,7 +4490,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_6E5C001E7A314DCEA0A4BF52BF74BCAD"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_speex.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_speex.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4576,7 +4518,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_77550ABD8CC84D66A3B6C3C3C48665A4"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_dialplan_asterisk.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_dialplan_asterisk.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4604,7 +4546,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_78F060A241D0428998B42093C467AD36"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_voipcodecs.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_voipcodecs.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4632,7 +4574,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_7B1050643E1E48A3B67B281B4AD43904"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_g729.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_g729.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4660,7 +4602,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_8B53F026686B44189676CBC200E641C1"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_amr.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_amr.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4688,7 +4630,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_8E023477B9DC4126921A556B285B29E5"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_spidermonkey_socket.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey_socket.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4716,7 +4658,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_9527B92C45BB45629BDB19ED3C8DC194"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_fsv.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_fsv.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4744,7 +4686,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_95D01083472B4853AC3F06514558F347"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_spidermonkey_teletone.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey_teletone.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4772,7 +4714,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_96F8F7DE89C74DC399E8AE55C22B4F15"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_xml_curl.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_xml_curl.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4800,7 +4742,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_9B19C40442134D69B533E16D0851D99B"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_spidermonkey_odbc.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey_odbc.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4828,7 +4770,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_A0D5F714A0F94250A1C39603B699AB82"
             {
-            "SourcePath" = "8:..\\..\\Release\\libteletone.dll"
+            "SourcePath" = "8:..\\..\\Debug\\libteletone.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
@@ -4856,7 +4798,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_A8D70CB0D12C4B3FB2E2E896E9A7C843"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_tone_stream.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_tone_stream.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4884,7 +4826,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_A944ADCEDF884574A23F7BA5420A6BA1"
             {
-            "SourcePath" = "8:..\\..\\libs\\win32\\sqlite\\Release\\sqlite.lib"
+            "SourcePath" = "8:..\\..\\libs\\win32\\sqlite\\Debug\\libsqlite.lib"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
@@ -4912,7 +4854,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_B0A2E9B4C45D4098AFD734D0C4E3EAFB"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_conference.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_conference.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4938,37 +4880,9 @@
                 {
                 }
             }
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_B5542B260CD5493395871EFDE833E438"
-            {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_openmrcp.dll"
-            "TargetName" = "8:"
-            "Tag" = "8:"
-            "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
-            "IsolateTo" = "8:"
-            "ProjectOutputGroupRegister" = "3:1"
-            "OutputConfiguration" = "8:"
-            "OutputGroupCanonicalName" = "8:Built"
-            "OutputProjectGuid" = "8:{E7116F50-2B10-472F-92BD-C8667AA9C1AE}"
-            "ShowKeyOutput" = "11:TRUE"
-                "ExcludeFilters"
-                {
-                }
-            }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_BA769056DBAF4259B38F5C3FF7377055"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_spidermonkey_curl.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey_curl.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -4996,7 +4910,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_BB649A2C1ABE4895859025B09A240323"
             {
-            "SourcePath" = "8:..\\..\\libs\\win32\\pcre\\Release\\libpcre.lib"
+            "SourcePath" = "8:..\\..\\libs\\win32\\pcre\\Debug\\libpcre.lib"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
@@ -5024,7 +4938,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_BB99CEDF341D40F3976B6D5486D9366D"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_limit.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_limit.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5052,7 +4966,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_C1036825E1364537B537E542E71F9C0E"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_event_socket.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_event_socket.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5080,7 +4994,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_C105055EE271471A999CE7022E617EB7"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_commands.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_commands.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5108,7 +5022,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_C81AC700C1BC4A55B98DF12C0CBAFD6F"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_dialplan_xml.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_dialplan_xml.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5136,7 +5050,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D0BB09AFB8D94B76918F0EE85BCCAD0A"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_dptools.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_dptools.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5164,7 +5078,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D1269F1E49D442CF8EAC96C23E60325D"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_xml_rpc.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_xml_rpc.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5192,7 +5106,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D2EF447106B24E67907DAED3D39CFBB1"
             {
-            "SourcePath" = "8:..\\..\\Release\\FreeSwitch.dll"
+            "SourcePath" = "8:..\\..\\Debug\\FreeSwitch.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
@@ -5220,7 +5134,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D6F0F5845FAD4707975CE012A33CD607"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_rss.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_rss.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5248,7 +5162,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D7EC5795A9C645AC8E129C2EE6D461ED"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_event_multicast.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_event_multicast.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5276,7 +5190,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_E1AA7C5B96DA4A26859D2C7A21E00AB6"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_spidermonkey_core_db.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey_core_db.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5304,7 +5218,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_E763C699DF0948B6984DDEB96A2DFD06"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_PortAudio.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_PortAudio.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5332,7 +5246,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EAF4B051F44745ABA9B58038FB93994C"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_expr.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_expr.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5360,7 +5274,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EC4922AEC1064C90B96EBBDD3104D761"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_local_stream.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_local_stream.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5388,7 +5302,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EF14CB99F3414BB689D0CB0E6D6B8AB8"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_console.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_console.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5416,7 +5330,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_F0B800E719294692A02518CFD8CBAEFF"
             {
-            "SourcePath" = "8:..\\..\\Release\\FreeSwitch.exe"
+            "SourcePath" = "8:..\\..\\Debug\\FreeSwitch.exe"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF"
@@ -5442,37 +5356,9 @@
                 {
                 }
             }
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_FB1B9FBDC3294F1C96DAC4246C013C22"
-            {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_woomera.dll"
-            "TargetName" = "8:"
-            "Tag" = "8:"
-            "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
-            "IsolateTo" = "8:"
-            "ProjectOutputGroupRegister" = "3:1"
-            "OutputConfiguration" = "8:"
-            "OutputGroupCanonicalName" = "8:Built"
-            "OutputProjectGuid" = "8:{FE3540C5-3303-46E0-A69E-D92F775687F1}"
-            "ShowKeyOutput" = "11:TRUE"
-                "ExcludeFilters"
-                {
-                }
-            }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_FBB0E565B1DE49CE9C827ACAC337AC5B"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_sofia.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_sofia.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"
@@ -5500,7 +5386,7 @@
             }
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_FBD45C36E901435399634CACA5339597"
             {
-            "SourcePath" = "8:..\\..\\Release\\mod\\mod_cdr_csv.dll"
+            "SourcePath" = "8:..\\..\\Debug\\mod\\mod_cdr_csv.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521"


From mikej at freeswitch.org  Thu Jan 22 17:24:53 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 19:24:53 -0600
Subject: [Freeswitch-svn] [commit] r11457 - in freeswitch/branches/1.0/src:
	. mod/formats/mod_shout
Message-ID: 

Author: mikej
Date: Thu Jan 22 19:24:53 2009
New Revision: 11457

Log:
core: fix buffering issues (r:11200)

Modified:
   freeswitch/branches/1.0/src/mod/formats/mod_shout/mod_shout.c
   freeswitch/branches/1.0/src/switch_core_file.c
   freeswitch/branches/1.0/src/switch_ivr_play_say.c

Modified: freeswitch/branches/1.0/src/mod/formats/mod_shout/mod_shout.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/formats/mod_shout/mod_shout.c	(original)
+++ freeswitch/branches/1.0/src/mod/formats/mod_shout/mod_shout.c	Thu Jan 22 19:24:53 2009
@@ -116,6 +116,12 @@
 	int lame_ready;
 	int eof;
 	int channels;
+	int16_t *l;
+	switch_size_t llen;
+	int16_t *r;
+	switch_size_t rlen;
+	unsigned char *mp3buf;
+	switch_size_t mp3buflen;
 };
 
 typedef struct shout_context shout_context_t;
@@ -903,8 +909,7 @@
 static switch_status_t shout_file_write(switch_file_handle_t *handle, void *data, size_t *len)
 {
 	shout_context_t *context;
-	unsigned char mp3buf[8192] = "";
-	int rlen;
+	int rlen = 0;
 	int16_t *audio = data;
 	int nsamples = *len;
 
@@ -954,23 +959,32 @@
 		context->lame_ready = 1;
 	}
 
+	if (context->mp3buflen < nsamples * 4) {
+		context->mp3buflen = nsamples * 4;
+		context->mp3buf = switch_core_alloc(context->memory_pool, context->mp3buflen);
+	}
+
 	if (handle->channels == 2) {
-		int16_t l[4096] = { 0 };
-		int16_t r[4096] = { 0 };
 		int i, j = 0;
-
+		
+		if (context->llen < nsamples) {
+			context->l = switch_core_alloc(context->memory_pool, nsamples * 2);
+			context->r = switch_core_alloc(context->memory_pool, nsamples * 2);
+			context->llen = context->rlen = nsamples;
+		}
+		
 		for (i = 0; i < nsamples; i++) {
-			l[i] = audio[j++];
-			r[i] = audio[j++];
+			context->l[i] = audio[j++];
+			context->r[i] = audio[j++];
 		}
-
-		if ((rlen = lame_encode_buffer(context->gfp, l, r, nsamples, mp3buf, sizeof(mp3buf))) < 0) {
+		
+		if ((rlen = lame_encode_buffer(context->gfp, context->l, context->r, nsamples, context->mp3buf, context->mp3buflen)) < 0) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "MP3 encode error %d!\n", rlen);
 			return SWITCH_STATUS_FALSE;
 		}
 
 	} else if (handle->channels == 1) {
-		if ((rlen = lame_encode_buffer(context->gfp, audio, NULL, nsamples, mp3buf, sizeof(mp3buf))) < 0) {
+		if ((rlen = lame_encode_buffer(context->gfp, audio, NULL, nsamples, context->mp3buf, context->mp3buflen)) < 0) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "MP3 encode error %d!\n", rlen);
 			return SWITCH_STATUS_FALSE;
 		}
@@ -979,7 +993,7 @@
 	}
 
 	if (rlen) {
-		int ret = fwrite(mp3buf, 1, rlen, context->fp);
+		int ret = fwrite(context->mp3buf, 1, rlen, context->fp);
 		if (ret < 0) {
 			return SWITCH_STATUS_FALSE;
 		}
@@ -1445,7 +1459,7 @@
 		for (param = switch_xml_child(settings, "param"); param; param = param->next) {
 			char *var = (char *) switch_xml_attr_soft(param, "name");
 			char *val = (char *) switch_xml_attr_soft(param, "value");
-
+			
 			if (!strcmp(var, "decoder")) {
 				switch_set_string(globals.decoder, val);
 			} else if (!strcmp(var, "volume")) {

Modified: freeswitch/branches/1.0/src/switch_core_file.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_core_file.c	(original)
+++ freeswitch/branches/1.0/src/switch_core_file.c	Thu Jan 22 19:24:53 2009
@@ -119,7 +119,7 @@
 
 	if (fh->pre_buffer_datalen) {
 		//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Prebuffering %d bytes\n", (int)fh->pre_buffer_datalen);
-		switch_buffer_create_dynamic(&fh->pre_buffer, fh->pre_buffer_datalen, fh->pre_buffer_datalen / 2, 0);
+		switch_buffer_create_dynamic(&fh->pre_buffer, fh->pre_buffer_datalen * fh->channels, fh->pre_buffer_datalen * fh->channels / 2, 0);
 		fh->pre_buffer_data = switch_core_alloc(fh->memory_pool, fh->pre_buffer_datalen);
 	}
 
@@ -248,16 +248,20 @@
 	if (!switch_test_flag(fh, SWITCH_FILE_NATIVE) && fh->native_rate != fh->samplerate) {
 		if (!fh->resampler) {
 			if (switch_resample_create(&fh->resampler,
-									   fh->native_rate, orig_len, fh->samplerate, (uint32_t) orig_len, fh->memory_pool) != SWITCH_STATUS_SUCCESS) {
+									   fh->native_rate, 
+									   orig_len * fh->channels, 
+									   fh->samplerate, 
+									   (uint32_t) orig_len *fh->channels, 
+									   fh->memory_pool) != SWITCH_STATUS_SUCCESS) {
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Unable to create resampler!\n");
 				return SWITCH_STATUS_GENERR;
 			}
 		}
 
-		fh->resampler->from_len = switch_short_to_float(data, fh->resampler->from, (int) *len);
+		fh->resampler->from_len = switch_short_to_float(data, fh->resampler->from, (int) *len * fh->channels);
 		fh->resampler->to_len =
 			switch_resample_process(fh->resampler, fh->resampler->from, fh->resampler->from_len, fh->resampler->to, fh->resampler->to_size, 0);
-		if (fh->resampler->to_len > orig_len) {
+		if (fh->resampler->to_len > orig_len * fh->channels) {
 			if (!fh->dbuf) {
 				fh->dbuflen = fh->resampler->to_len * 2;
 				fh->dbuf = switch_core_alloc(fh->memory_pool, fh->dbuflen);
@@ -269,7 +273,7 @@
 			switch_float_to_short(fh->resampler->to, data, fh->resampler->to_len);
 		}
 
-		*len = fh->resampler->to_len;
+		*len = fh->resampler->to_len / fh->channels;
 
 	}
 
@@ -282,13 +286,14 @@
 		switch_size_t rlen, blen;
 		switch_status_t status = SWITCH_STATUS_SUCCESS;
 		int asis = switch_test_flag(fh, SWITCH_FILE_NATIVE);
-
-		switch_buffer_write(fh->pre_buffer, data, asis ? *len : *len * 2);
+		
+		switch_buffer_write(fh->pre_buffer, data, (asis ? *len : *len * 2) * fh->channels);
 
 		rlen = switch_buffer_inuse(fh->pre_buffer);
 		if (rlen >= fh->pre_buffer_datalen) {
 			blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen);
 			if (!asis) blen /= 2;
+			if (fh->channels) blen /= fh->channels;
 			if ((status = fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen)) != SWITCH_STATUS_SUCCESS) {
 				*len = 0;
 			}
@@ -354,9 +359,6 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
-	switch_clear_flag(fh, SWITCH_FILE_OPEN);
-	status = fh->file_interface->file_close(fh);
-
 	if (fh->buffer) {
 		switch_buffer_destroy(&fh->buffer);
 	}
@@ -369,6 +371,7 @@
 			while((rlen = switch_buffer_inuse(fh->pre_buffer))) {
 				blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen);
 				if (asis) blen /= 2;
+				if (fh->channels) blen /= fh->channels;
 				if (fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen) != SWITCH_STATUS_SUCCESS) {
 					break;
 				}
@@ -378,6 +381,9 @@
 		switch_buffer_destroy(&fh->pre_buffer);
 	}
 
+	switch_clear_flag(fh, SWITCH_FILE_OPEN);
+	status = fh->file_interface->file_close(fh);
+
 	switch_resample_destroy(&fh->resampler);
 
 	UNPROTECT_INTERFACE(fh->file_interface);

Modified: freeswitch/branches/1.0/src/switch_ivr_play_say.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_ivr_play_say.c	(original)
+++ freeswitch/branches/1.0/src/switch_ivr_play_say.c	Thu Jan 22 19:24:53 2009
@@ -420,6 +420,7 @@
 		}
 	}
 
+	fh->pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
 
 	if (switch_core_file_open(fh,
 							  file,


From seven at freeswitch.org  Thu Jan 22 17:31:42 2009
From: seven at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 19:31:42 -0600
Subject: [Freeswitch-svn] [commit] r11458 - freeswitch/branches/seven
Message-ID: 

Author: seven
Date: Thu Jan 22 19:31:42 2009
New Revision: 11458

Log:
tet my new branch

Added:
   freeswitch/branches/seven/README

Added: freeswitch/branches/seven/README
==============================================================================
--- (empty file)
+++ freeswitch/branches/seven/README	Thu Jan 22 19:31:42 2009
@@ -0,0 +1 @@
+Currently blank


From seven at freeswitch.org  Thu Jan 22 18:20:00 2009
From: seven at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 20:20:00 -0600
Subject: [Freeswitch-svn] [commit] r11459 - freeswitch/branches/seven
Message-ID: 

Author: seven
Date: Thu Jan 22 20:20:00 2009
New Revision: 11459

Log:
delete README in my branch

Removed:
   freeswitch/branches/seven/README


From andrew at freeswitch.org  Thu Jan 22 19:40:20 2009
From: andrew at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 21:40:20 -0600
Subject: [Freeswitch-svn] [commit] r11460 -
	freeswitch/trunk/src/mod/event_handlers/mod_erlang_event
Message-ID: 

Author: andrew
Date: Thu Jan 22 21:40:20 2009
New Revision: 11460

Log:
Added some initial work to allow mod_erlang_event to spawn processes on other nodes


Modified:
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
   freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h

Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c	Thu Jan 22 21:40:20 2009
@@ -122,6 +122,80 @@
 }
 
 
+/* function to spawn a process on a remote node */
+int ei_spawn(struct ei_cnode_s *ec, int sockfd, char *module, char *function, int argc, char **argv)
+{
+	ei_x_buff buf;
+	ei_x_new_with_version(&buf);
+	erlang_ref ref;
+	int i;
+
+	ei_x_encode_tuple_header(&buf, 3);
+	ei_x_encode_atom(&buf, "$gen_call");
+	ei_x_encode_tuple_header(&buf, 2);
+	ei_x_encode_pid(&buf, ei_self(ec)); 
+	/* TODO - use this reference to determine the response */
+	ei_init_ref(ec, &ref);
+	ei_x_encode_ref(&buf, &ref);
+	ei_x_encode_tuple_header(&buf, 5);
+	ei_x_encode_atom(&buf, "spawn");
+	ei_x_encode_atom(&buf, module);
+	ei_x_encode_atom(&buf, function);
+
+	/* argument list */
+	ei_x_encode_list_header(&buf, argc);
+	for(i = 0; i < argc && argv[i]; i++) {
+		ei_x_encode_atom(&buf, argv[i]);
+	}
+
+	ei_x_encode_empty_list(&buf);
+
+	/*if (i != argc - 1) {*/
+		/* horked argument list */
+	/*}*/
+
+	ei_x_encode_pid(&buf, ei_self(ec)); /* should really be a valid group leader */
+
+	char *pbuf = 0;
+	i = 1;
+	ei_s_print_term(&pbuf, buf.buff, &i);
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "spawn returning %s\n", pbuf);
+
+	return ei_reg_send(ec, sockfd, "net_kernel", buf.buff, buf.index);
+}
+
+
+/* stolen from erts/emulator/beam/erl_term.h */
+#define _REF_NUM_SIZE    18
+#define MAX_REFERENCE    (1 << _REF_NUM_SIZE)
+
+/* function to fill in an erlang reference struct */
+void ei_init_ref(ei_cnode *ec, erlang_ref *ref)
+{
+	memset(ref, 0, sizeof(*ref)); /* zero out the struct */
+	snprintf(ref->node, MAXATOMLEN, ec->thisnodename);
+	
+	switch_mutex_lock(globals.ref_mutex);
+	globals.reference0++;
+	if (globals.reference0 >= MAX_REFERENCE) {
+		globals.reference0 = 0;
+		globals.reference1++;
+		if (globals.reference1 == 0) {
+			globals.reference2++;
+		}
+	}
+
+	ref->n[0] = globals.reference0;
+	ref->n[1] = globals.reference1;
+	ref->n[2] = globals.reference2;
+
+	switch_mutex_unlock(globals.ref_mutex);
+
+	ref->creation = 1; /* why is this 1 */
+	ref->len = 3; /* why is this 3 */
+}
+
+
 switch_status_t initialise_ei(struct ei_cnode_s *ec)
 {
 	switch_status_t rv;
@@ -167,7 +241,6 @@
 		return SWITCH_STATUS_FALSE;
 	}
 
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "ei initialized node at %s\n", thisnodename);
 	return SWITCH_STATUS_SUCCESS;
 }
 

Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c	Thu Jan 22 21:40:20 2009
@@ -592,6 +592,8 @@
 static void listener_main_loop(listener_t *listener) 
 {
 	int status = 1;
+	/*int i = 1;*/
+	/*char *pbuf = 0;*/
 
 	while ((status >= 0 || erl_errno == ETIMEDOUT || erl_errno == EAGAIN) && !prefs.done) {
 		erlang_msg msg;
@@ -613,12 +615,20 @@
 				switch(msg.msgtype) {
 					case ERL_SEND :
 						/*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_send\n");*/
+						/*i = 1;*/
+						/*ei_s_print_term(&pbuf, buf.buff, &i);*/
+						/*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_send was message %s\n", pbuf);*/
+
 						if (handle_msg(listener, &msg, &buf, &rbuf)) {
 							return;
 						}
 						break;
 					case ERL_REG_SEND :
-						/*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_reg_send\n");*/
+						/*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_reg_send to %s\n", msg.toname);*/
+						/*i = 1;*/
+						/*ei_s_print_term(&pbuf, buf.buff, &i);*/
+						/*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_reg_send was message %s\n", pbuf);*/
+
 						if (handle_msg(listener, &msg, &buf, &rbuf)) {
 						    return;
 						}
@@ -980,6 +990,12 @@
 	switch_application_interface_t *app_interface;
 
 	switch_mutex_init(&globals.listener_mutex, SWITCH_MUTEX_NESTED, pool);
+	
+	/* intialize the unique reference stuff */
+	switch_mutex_init(&globals.ref_mutex, SWITCH_MUTEX_NESTED, pool);
+	globals.reference0 = 0;
+	globals.reference1 = 0;
+	globals.reference2 = 0;
 
 	if (switch_event_bind_removable(modname, SWITCH_EVENT_ALL, 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");
@@ -1099,7 +1115,7 @@
 		}
 	}
 
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connected and published erlang cnode\n");
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connected and published erlang cnode at %s\n", ec.thisnodename);
 
 	listen_list.ready = 1;
 

Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h	Thu Jan 22 21:40:20 2009
@@ -128,6 +128,10 @@
 struct globals_struct {
 	switch_mutex_t *listener_mutex;
 	switch_event_node_t *node;
+	unsigned int reference0;
+	unsigned int reference1;
+	unsigned int reference2;
+	switch_mutex_t *ref_mutex;
 };
 typedef struct globals_struct globals_t;
 
@@ -182,6 +186,8 @@
 void ei_link(listener_t *listener, erlang_pid *from, erlang_pid *to);
 void ei_encode_switch_event_headers(ei_x_buff *ebuf, switch_event_t *event);
 void ei_encode_switch_event_tag(ei_x_buff *ebuf, switch_event_t *event, char *tag);
+int ei_spawn(struct ei_cnode_s *ec, int sockfd, char *module, char *function, int argc, char **argv);
+void ei_init_ref(struct ei_cnode_s *ec, erlang_ref *ref);
 switch_status_t initialise_ei(struct ei_cnode_s *ec);
 #define ei_encode_switch_event(_b, _e) ei_encode_switch_event_tag(_b, _e, "event")
 


From seven at freeswitch.org  Thu Jan 22 21:45:08 2009
From: seven at freeswitch.org (FreeSWITCH SVN)
Date: Thu, 22 Jan 2009 23:45:08 -0600
Subject: [Freeswitch-svn] [commit] r11461 - in freeswitch/branches/seven: .
	build build/config build/freeswitch.build
	build/freeswitch.build/freeswitch.pbxindex
	build/freeswitch.build/freeswitch.pbxindex/strings.pbxstrings
	conf conf/autoload_configs conf/dialplan
	conf/dialplan/default conf/dialplan/public conf/directory
	conf/directory/default conf/jingle_profiles conf/lang
	conf/lang/de conf/lang/de/demo conf/lang/de/vm conf/lang/en
	conf/lang/en/demo conf/lang/en/vm conf/lang/fr
	conf/lang/fr/demo conf/lang/fr/vm conf/sip_profiles
	conf/sip_profiles/external conf/sip_profiles/internal
	conf/yaml debian debian/man debian/man/man1 debian/monit docs
	docs/phrase dtd freeswitch.xcodeproj htdocs libs libs/apr
	libs/apr-util libs/apr-util/buckets libs/apr-util/build
	libs/apr-util/build/pkg libs/apr-util/build/rpm
	libs/apr-util/crypto libs/apr-util/dbd libs/apr-util/dbm
	libs/apr-util/dbm/sdbm libs/apr-util/docs
	libs/apr-util/encoding libs/apr-util/hooks
	libs/apr-util/include libs/apr-util/include/private
	libs/apr-util/ldap libs/apr-util/misc libs/apr-util/strmatch
	libs/apr-util/test libs/apr-util/test/data libs/apr-util/uri
	libs/apr-util/xlate libs/apr-util/xml libs/apr-util/xml/expat
	libs/apr-util/xml/expat/conftools libs/apr-util/xml/expat/lib
	libs/apr/atomic libs/apr/atomic/netware libs/apr/atomic/os390
	libs/apr/atomic/unix libs/apr/atomic/win32 libs/apr/build
	libs/apr/build/pkg libs/apr/build/rpm libs/apr/docs
	libs/apr/dso libs/apr/dso/aix libs/apr/dso/beos
	libs/apr/dso/netware libs/apr/dso/os2 libs/apr/dso/os390
	libs/apr/dso/unix libs/apr/dso/win32 libs/apr/file_io
	libs/apr/file_io/netware libs/apr/file_io/os2
	libs/apr/file_io/unix libs/apr/file_io/win32 libs/apr/helpers
	libs/apr/images libs/apr/include libs/apr/include/arch
	libs/apr/include/arch/aix libs/apr/include/arch/beos
	libs/apr/include/arch/netware libs/apr/include/arch/os2
	libs/apr/include/arch/os390 libs/apr/include/arch/unix
	libs/apr/include/arch/win32 libs/apr/locks
	libs/apr/locks/beos libs/apr/locks/netware libs/apr/locks/os2
	libs/apr/locks/unix libs/apr/locks/win32 libs/apr/memory
	libs/apr/memory/unix libs/apr/misc libs/apr/misc/netware
	libs/apr/misc/unix libs/apr/misc/win32 libs/apr/mmap
	libs/apr/mmap/unix libs/apr/mmap/win32 libs/apr/network_io
	libs/apr/network_io/beos libs/apr/network_io/os2
	libs/apr/network_io/unix libs/apr/network_io/win32
	libs/apr/passwd libs/apr/poll libs/apr/poll/os2
	libs/apr/poll/unix libs/apr/random libs/apr/random/unix
	libs/apr/shmem libs/apr/shmem/beos libs/apr/shmem/os2
	libs/apr/shmem/unix libs/apr/shmem/win32 libs/apr/strings
	libs/apr/support libs/apr/support/unix libs/apr/tables
	libs/apr/test libs/apr/test/data libs/apr/test/internal
	libs/apr/threadproc libs/apr/threadproc/beos
	libs/apr/threadproc/netware libs/apr/threadproc/os2
	libs/apr/threadproc/unix libs/apr/threadproc/win32
	libs/apr/time libs/apr/time/unix libs/apr/time/win32
	libs/apr/user libs/apr/user/netware libs/apr/user/unix
	libs/apr/user/win32 libs/codec libs/codec/ilbc
	libs/codec/ilbc/build libs/codec/ilbc/build/config
	libs/codec/ilbc/src libs/curl libs/curl/include
	libs/curl/include/curl libs/curl/lib libs/curl/packages
	libs/curl/packages/AIX libs/curl/packages/AIX/RPM
	libs/curl/packages/DOS libs/curl/packages/EPM
	libs/curl/packages/Linux libs/curl/packages/Linux/RPM
	libs/curl/packages/NetWare libs/curl/packages/Solaris
	libs/curl/packages/Win32 libs/curl/packages/Win32/cygwin
	libs/curl/packages/vms libs/curl/packages/vms/axp
	libs/curl/packages/vms/ia64 libs/curl/packages/vms/vax
	libs/curl/src libs/curl/src/macos libs/curl/src/macos/src
	libs/esl libs/esl/getopt libs/esl/src libs/esl/src/include
	libs/iksemel libs/iksemel/build libs/iksemel/doc
	libs/iksemel/include libs/iksemel/src libs/iksemel/test
	libs/iksemel/tools libs/js libs/js/nsprpub
	libs/js/nsprpub/admin libs/js/nsprpub/build
	libs/js/nsprpub/build/autoconf libs/js/nsprpub/config
	libs/js/nsprpub/include libs/js/nsprpub/lib
	libs/js/nsprpub/lib/ds libs/js/nsprpub/lib/libc
	libs/js/nsprpub/lib/libc/include libs/js/nsprpub/lib/libc/src
	libs/js/nsprpub/lib/msgc libs/js/nsprpub/lib/msgc/include
	libs/js/nsprpub/lib/msgc/src libs/js/nsprpub/lib/msgc/tests
	libs/js/nsprpub/lib/prstreams libs/js/nsprpub/lib/prstreams/tests
	libs/js/nsprpub/lib/prstreams/tests/testprstrm
	libs/js/nsprpub/lib/tests libs/js/nsprpub/lib/tests/windows
	libs/js/nsprpub/macbuild libs/js/nsprpub/pkg
	libs/js/nsprpub/pkg/linux libs/js/nsprpub/pkg/solaris
	libs/js/nsprpub/pkg/solaris/SUNWnspr
	libs/js/nsprpub/pkg/solaris/SUNWnsprx
	libs/js/nsprpub/pkg/solaris/SUNWpr
	libs/js/nsprpub/pkg/solaris/SUNWpr-devl
	libs/js/nsprpub/pkg/solaris/SUNWprd
	libs/js/nsprpub/pkg/solaris/SUNWprdx
	libs/js/nsprpub/pkg/solaris/SUNWprx
	libs/js/nsprpub/pkg/solaris/SUNWprx-devl
	libs/js/nsprpub/pkg/solaris/common_files libs/js/nsprpub/pr
	libs/js/nsprpub/pr/include libs/js/nsprpub/pr/include/md
	libs/js/nsprpub/pr/include/obsolete
	libs/js/nsprpub/pr/include/private libs/js/nsprpub/pr/src
	libs/js/nsprpub/pr/src/bthreads libs/js/nsprpub/pr/src/cplus
	libs/js/nsprpub/pr/src/cplus/tests
	libs/js/nsprpub/pr/src/cthreads libs/js/nsprpub/pr/src/io
	libs/js/nsprpub/pr/src/linking libs/js/nsprpub/pr/src/malloc
	libs/js/nsprpub/pr/src/md libs/js/nsprpub/pr/src/md/beos
	libs/js/nsprpub/pr/src/md/mac libs/js/nsprpub/pr/src/md/os2
	libs/js/nsprpub/pr/src/md/unix libs/js/nsprpub/pr/src/md/windows
	libs/js/nsprpub/pr/src/memory libs/js/nsprpub/pr/src/misc
	libs/js/nsprpub/pr/src/pthreads libs/js/nsprpub/pr/src/threads
	libs/js/nsprpub/pr/src/threads/combined
	libs/js/nsprpub/pr/tests libs/js/nsprpub/pr/tests/dll
	libs/js/nsprpub/pr/tests/macbuild
	libs/js/nsprpub/pr/tests/w16gui libs/js/nsprpub/tools
	libs/js/src libs/js/src/fdlibm libs/js/src/perlconnect
	libs/libdingaling libs/libdingaling/build
	libs/libdingaling/build/config libs/libdingaling/docs
	libs/libdingaling/src libs/libedit libs/libedit/doc
	libs/libedit/examples libs/libedit/patches libs/libedit/src
	libs/libedit/src/editline libs/libg722_1
	libs/libg722_1/config libs/libg722_1/debian
	libs/libg722_1/doc libs/libg722_1/src
	libs/libg722_1/src/g722_1 libs/libg722_1/src/msvc
	libs/libg722_1/src/msvc/sys libs/libg722_1/test-data
	libs/libg722_1/test-data/itu libs/libg722_1/test-data/local
	libs/libg722_1/tests libs/libresample libs/libresample/build
	libs/libresample/build/config libs/libresample/include
	libs/libresample/src libs/libresample/tests
	libs/libresample/win libs/libsndfile libs/libsndfile/Octave
	libs/libsndfile/Win32 libs/libsndfile/doc
	libs/libsndfile/examples libs/libsndfile/man
	libs/libsndfile/regtest libs/libsndfile/src
	libs/libsndfile/src/G72x libs/libsndfile/src/GSM610
	libs/libsndfile/tests libs/libteletone libs/libteletone/build
	libs/libteletone/build/config libs/libteletone/src libs/pcre
	libs/pcre/doc libs/pcre/doc/html libs/pcre/testdata
	libs/portaudio libs/portaudio/bindings
	libs/portaudio/bindings/cpp libs/portaudio/bindings/cpp/bin
	libs/portaudio/bindings/cpp/build
	libs/portaudio/bindings/cpp/build/gnu
	libs/portaudio/bindings/cpp/build/vc6
	libs/portaudio/bindings/cpp/build/vc7
	libs/portaudio/bindings/cpp/build/vc7_1
	libs/portaudio/bindings/cpp/doc libs/portaudio/bindings/cpp/example
	libs/portaudio/bindings/cpp/include
	libs/portaudio/bindings/cpp/include/portaudiocpp
	libs/portaudio/bindings/cpp/lib libs/portaudio/bindings/cpp/source
	libs/portaudio/bindings/cpp/source/portaudiocpp
	libs/portaudio/build libs/portaudio/build/dev-cpp
	libs/portaudio/build/msvc libs/portaudio/build/scons
	libs/portaudio/doc libs/portaudio/doc/html
	libs/portaudio/doc/src libs/portaudio/doc/utils
	libs/portaudio/include libs/portaudio/pablio
	libs/portaudio/src libs/portaudio/src/common
	libs/portaudio/src/hostapi libs/portaudio/src/hostapi/alsa
	libs/portaudio/src/hostapi/asihpi libs/portaudio/src/hostapi/asio
	libs/portaudio/src/hostapi/coreaudio
	libs/portaudio/src/hostapi/dsound libs/portaudio/src/hostapi/jack
	libs/portaudio/src/hostapi/oss libs/portaudio/src/hostapi/wasapi
	libs/portaudio/src/hostapi/wdmks
	libs/portaudio/src/hostapi/wmme libs/portaudio/src/os
	libs/portaudio/src/os/mac_osx libs/portaudio/src/os/unix
	libs/portaudio/src/os/win libs/portaudio/test
	libs/portaudio/testcvs libs/sofia-sip libs/sofia-sip/docs
	libs/sofia-sip/libsofia-sip-ua libs/sofia-sip/libsofia-sip-ua-glib
	libs/sofia-sip/libsofia-sip-ua-glib/docs
	libs/sofia-sip/libsofia-sip-ua-glib/su-glib
	libs/sofia-sip/libsofia-sip-ua-glib/su-glib/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/bnf
	libs/sofia-sip/libsofia-sip-ua/bnf/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/docs
	libs/sofia-sip/libsofia-sip-ua/docs/pictures
	libs/sofia-sip/libsofia-sip-ua/features
	libs/sofia-sip/libsofia-sip-ua/features/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/http
	libs/sofia-sip/libsofia-sip-ua/http/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/ipt
	libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/iptsec
	libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/msg
	libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/nea
	libs/sofia-sip/libsofia-sip-ua/nea/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/nta
	libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/nth
	libs/sofia-sip/libsofia-sip-ua/nth/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/nua
	libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/sdp
	libs/sofia-sip/libsofia-sip-ua/sdp/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/sdp/tests
	libs/sofia-sip/libsofia-sip-ua/sip
	libs/sofia-sip/libsofia-sip-ua/sip/images
	libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/sip/tests
	libs/sofia-sip/libsofia-sip-ua/soa
	libs/sofia-sip/libsofia-sip-ua/soa/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/sresolv
	libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv
	libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/stun
	libs/sofia-sip/libsofia-sip-ua/stun/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/su
	libs/sofia-sip/libsofia-sip-ua/su/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/tport
	libs/sofia-sip/libsofia-sip-ua/tport/sofia-sip
	libs/sofia-sip/libsofia-sip-ua/url
	libs/sofia-sip/libsofia-sip-ua/url/sofia-sip
	libs/sofia-sip/m4 libs/sofia-sip/open_c
	libs/sofia-sip/open_c/group libs/sofia-sip/open_c/sis
	libs/sofia-sip/open_c/sofia-sip libs/sofia-sip/packages
	libs/sofia-sip/rules libs/sofia-sip/scripts
	libs/sofia-sip/tests libs/sofia-sip/utils
	libs/sofia-sip/win32 libs/sofia-sip/win32/libsofia-sip-ua
	libs/sofia-sip/win32/libsofia-sip-ua-static
	libs/sofia-sip/win32/sofia-sip libs/sofia-sip/win32/tests
	libs/sofia-sip/win32/tests/test_htable
	libs/sofia-sip/win32/tests/test_memmem
	libs/sofia-sip/win32/tests/test_nta
	libs/sofia-sip/win32/tests/test_nua
	libs/sofia-sip/win32/tests/test_su
	libs/sofia-sip/win32/tests/test_tport
	libs/sofia-sip/win32/tests/torture_rbtree
	libs/sofia-sip/win32/tests/torture_su
	libs/sofia-sip/win32/tests/torture_su_alloc
	libs/sofia-sip/win32/tests/torture_su_bm
	libs/sofia-sip/win32/tests/torture_su_port
	libs/sofia-sip/win32/tests/torture_su_root
	libs/sofia-sip/win32/tests/torture_su_tag
	libs/sofia-sip/win32/tests/torture_su_time
	libs/sofia-sip/win32/tests/torture_su_timer
	libs/sofia-sip/win32/utils libs/sofia-sip/win32/utils/localinfo
	libs/sofia-sip/win32/utils/sip_dig
	libs/sofia-sip/win32/utils/sip_options
	libs/sofia-sip/win32/utils/sip_options_static
	libs/sofia-sip/win32/utils/stunc libs/spandsp
	libs/spandsp/config libs/spandsp/debian libs/spandsp/doc
	libs/spandsp/doc/t38_manual libs/spandsp/spandsp
	libs/spandsp/spandsp-sim libs/spandsp/spandsp-sim/spandsp
	libs/spandsp/src libs/spandsp/src/msvc
	libs/spandsp/src/msvc/sys libs/spandsp/src/spandsp
	libs/spandsp/test-data libs/spandsp/test-data/etsi
	libs/spandsp/test-data/etsi/fax libs/spandsp/test-data/itu
	libs/spandsp/test-data/itu/fax libs/spandsp/test-data/local
	libs/spandsp/tests libs/speex libs/speex/doc
	libs/speex/include libs/speex/include/speex
	libs/speex/libspeex libs/speex/src libs/speex/symbian
	libs/speex/ti libs/speex/ti/speex_C54_test
	libs/speex/ti/speex_C55_test libs/speex/ti/speex_C64_test
	libs/speex/win32 libs/speex/win32/VS2003
	libs/speex/win32/VS2003/libspeex libs/speex/win32/VS2003/speexdec
	libs/speex/win32/VS2003/speexenc libs/speex/win32/VS2005
	libs/speex/win32/VS2005/libspeex libs/speex/win32/VS2005/speexdec
	libs/speex/win32/VS2005/speexenc libs/speex/win32/libspeex
	libs/speex/win32/speexdec libs/speex/win32/speexenc
	libs/sqlite libs/sqlite/art libs/sqlite/art/tmp
	libs/sqlite/contrib libs/sqlite/ext libs/sqlite/ext/fts1
	libs/sqlite/ext/fts2 libs/sqlite/notes libs/sqlite/src
	libs/sqlite/src/ex libs/sqlite/test libs/sqlite/tool
	libs/sqlite/www libs/srtp libs/srtp/build
	libs/srtp/build/config libs/srtp/crypto
	libs/srtp/crypto/ae_xfm libs/srtp/crypto/cipher
	libs/srtp/crypto/hash libs/srtp/crypto/include
	libs/srtp/crypto/kernel libs/srtp/crypto/math
	libs/srtp/crypto/replay libs/srtp/crypto/rng
	libs/srtp/crypto/test libs/srtp/doc libs/srtp/include
	libs/srtp/srtp libs/srtp/tables libs/srtp/test libs/stfu
	libs/udns libs/udns/debian libs/voipcodecs
	libs/voipcodecs/config libs/voipcodecs/debian
	libs/voipcodecs/doc libs/voipcodecs/etsitests
	libs/voipcodecs/itutests libs/voipcodecs/localtests
	libs/voipcodecs/src libs/voipcodecs/src/msvc
	libs/voipcodecs/src/msvc/sys libs/voipcodecs/src/voipcodecs
	libs/voipcodecs/tests libs/win32 libs/win32/Sound_Files
	libs/win32/apr libs/win32/apr-util libs/win32/curl
	libs/win32/flite libs/win32/howl libs/win32/iksemel
	libs/win32/js libs/win32/libg722_1 libs/win32/libmp3lame
	libs/win32/libogg libs/win32/libresample libs/win32/libshout
	libs/win32/libshout/shout libs/win32/libsndfile
	libs/win32/mpg123 libs/win32/mpg123/libmpg123 libs/win32/pcre
	libs/win32/pocketsphinx libs/win32/portaudio
	libs/win32/pthread libs/win32/sofia libs/win32/speex
	libs/win32/sphinxbase libs/win32/sqlite libs/win32/udns
	libs/win32/xmlrpc libs/xmlrpc-c libs/xmlrpc-c/Windows
	libs/xmlrpc-c/Windows/xmlrpc-c libs/xmlrpc-c/conf
	libs/xmlrpc-c/conf/abyss_root libs/xmlrpc-c/conf/abyss_root/conf
	libs/xmlrpc-c/conf/abyss_root/htdocs libs/xmlrpc-c/debian
	libs/xmlrpc-c/doc libs/xmlrpc-c/examples
	libs/xmlrpc-c/examples/cpp libs/xmlrpc-c/include
	libs/xmlrpc-c/include/xmlrpc-c libs/xmlrpc-c/lib
	libs/xmlrpc-c/lib/abyss libs/xmlrpc-c/lib/abyss/conf
	libs/xmlrpc-c/lib/abyss/example libs/xmlrpc-c/lib/abyss/example/conf
	libs/xmlrpc-c/lib/abyss/example/htdocs
	libs/xmlrpc-c/lib/abyss/htdocs libs/xmlrpc-c/lib/abyss/src
	libs/xmlrpc-c/lib/curl_transport libs/xmlrpc-c/lib/expat
	libs/xmlrpc-c/lib/expat/gennmtab libs/xmlrpc-c/lib/expat/sample
	libs/xmlrpc-c/lib/expat/xmlparse
	libs/xmlrpc-c/lib/expat/xmltok libs/xmlrpc-c/lib/expat/xmlwf
	libs/xmlrpc-c/lib/libutil libs/xmlrpc-c/lib/libwww_transport
	libs/xmlrpc-c/lib/util libs/xmlrpc-c/lib/util/include
	libs/xmlrpc-c/lib/wininet_transport libs/xmlrpc-c/src
	libs/xmlrpc-c/src/cpp libs/xmlrpc-c/src/cpp/test
	libs/xmlrpc-c/src/test libs/xmlrpc-c/src/test/data
	libs/xmlrpc-c/tools libs/xmlrpc-c/tools/binmode-rpc-kit
	libs/xmlrpc-c/tools/binmode-rpc-kit/examples
	libs/xmlrpc-c/tools/interop-server libs/xmlrpc-c/tools/lib
	libs/xmlrpc-c/tools/lib/include
	libs/xmlrpc-c/tools/perl_packetsocket
	libs/xmlrpc-c/tools/turbocharger libs/xmlrpc-c/tools/xml-rpc-api2cpp
	libs/xmlrpc-c/tools/xmlrpc libs/xmlrpc-c/tools/xmlrpc_cpp_proxy
	libs/xmlrpc-c/tools/xmlrpc_pstream
	libs/xmlrpc-c/tools/xmlrpc_transport libs/yaml
	libs/yaml/config libs/yaml/doc libs/yaml/doc/html
	libs/yaml/include libs/yaml/src libs/yaml/tests patches
	scripts scripts/POE-Filter-FSSocket
	scripts/POE-Filter-FSSocket/examples scripts/POE-Filter-FSSocket/lib
	scripts/POE-Filter-FSSocket/lib/POE
	scripts/POE-Filter-FSSocket/lib/POE/Filter
	scripts/POE-Filter-FSSocket/t scripts/aadir scripts/contrib
	scripts/contrib/Phil scripts/contrib/Phil/pylons
	scripts/contrib/dschreiber scripts/contrib/dschreiber/mod_nibblebill
	scripts/contrib/evildeshi scripts/contrib/intralanman
	scripts/contrib/intralanman/C scripts/contrib/intralanman/C/lcr
	scripts/contrib/intralanman/C/lcr/sql
	scripts/contrib/intralanman/PHP
	scripts/contrib/intralanman/PHP/fs_curl
	scripts/contrib/intralanman/PHP/fs_curl/configuration
	scripts/contrib/intralanman/PHP/fs_curl/dialplans
	scripts/contrib/intralanman/PHP/fs_curl/sql
	scripts/contrib/intralanman/PHP/fs_sock
	scripts/contrib/intralanman/javascript
	scripts/contrib/intralanman/perl scripts/contrib/jpalley
	scripts/contrib/jpalley/telegraph
	scripts/contrib/jpalley/telegraph/trunk
	scripts/contrib/jpalley/telegraph/trunk/generators
	scripts/contrib/jpalley/telegraph/trunk/generators/voice_events_controller
	scripts/contrib/jpalley/telegraph/trunk/generators/voice_events_controller/templates
	scripts/contrib/jpalley/telegraph/trunk/generators/voice_model
	scripts/contrib/jpalley/telegraph/trunk/generators/voice_model/templates
	scripts/contrib/jpalley/telegraph/trunk/lib
	scripts/contrib/jpalley/telegraph/trunk/lib/core
	scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_events
	scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view
	scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch
	scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_model
	scripts/contrib/jpalley/telegraph/trunk/test
	scripts/contrib/mcollins scripts/contrib/mrene
	scripts/contrib/seven scripts/contrib/trixter
	scripts/contrib/trixter/dialplan scripts/contrib/trixter/xml-cdr
	scripts/contrib/trixter/xml-curl
	scripts/contrib/trixter/xml-curl/modules
	scripts/contrib/trixter/xml-curl/templates
	scripts/contrib/trixter/xml-curl/templates/switch1
	scripts/contrib/trixter/xml-curl/templates/switch1/configuration
	scripts/contrib/trixter/xml-curl/templates/switch1/dialplan
	scripts/contrib/trixter/xml-curl/templates/switch1/directory
	scripts/contrib/trixter/xml-curl/templates/switch1/phrases
	scripts/contrib/trixter/xml-rpc
	scripts/contrib/trixter/xml-rpc/templates_c
	scripts/contrib/trixter/xml-rpc/themes
	scripts/contrib/trixter/xml-rpc/themes/default
	scripts/contrib/trixter/xml-rpc/themes/default/images
	scripts/contrib/trixter/xml-rpc/themes/es
	scripts/contrib/trixter/xml-rpc/themes/es/images
	scripts/contrib/verifier scripts/contrib/verifier/EventSocket
	scripts/contrib/verifier/EventSocket/trunk
	scripts/contrib/verifier/EventSocket/trunk/EventWatcher
	scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties
	scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test
	scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/Properties
	scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket
	scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents
	scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands
	scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events
	scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/General
	scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr
	scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Properties
	scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents
	scripts/contrib/verifier/EventSocket/trunk/IvrSocket
	scripts/contrib/verifier/EventSocket/trunk/IvrSocket/Properties
	scripts/contrib/vile scripts/contrib/wasim scripts/js_modules
	scripts/lua scripts/multicast scripts/perl scripts/py_modules
	scripts/rss scripts/s25vmail scripts/scenario scripts/socket
	scripts/socket/FreeSWITCH scripts/socket/FreeSWITCH/debian
	scripts/socket/freepy scripts/socket/socket2me
	scripts/tonegen scripts/trace src src/include
	src/include/private src/mod src/mod/applications
	src/mod/applications/mod_commands
	src/mod/applications/mod_conference src/mod/applications/mod_dptools
	src/mod/applications/mod_easyroute
	src/mod/applications/mod_enum src/mod/applications/mod_esf
	src/mod/applications/mod_expr src/mod/applications/mod_fax
	src/mod/applications/mod_fifo src/mod/applications/mod_fsv
	src/mod/applications/mod_http src/mod/applications/mod_lcr
	src/mod/applications/mod_limit src/mod/applications/mod_rss
	src/mod/applications/mod_skel src/mod/applications/mod_snom
	src/mod/applications/mod_soundtouch
	src/mod/applications/mod_stress src/mod/applications/mod_vmd
	src/mod/applications/mod_voicemail src/mod/asr_tts
	src/mod/asr_tts/mod_cepstral src/mod/asr_tts/mod_flite
	src/mod/asr_tts/mod_pocketsphinx src/mod/codecs
	src/mod/codecs/mod_amr src/mod/codecs/mod_celt
	src/mod/codecs/mod_g723_1 src/mod/codecs/mod_g729
	src/mod/codecs/mod_h26x src/mod/codecs/mod_ilbc
	src/mod/codecs/mod_siren src/mod/codecs/mod_speex
	src/mod/codecs/mod_voipcodecs src/mod/dialplans
	src/mod/dialplans/mod_dialplan_asterisk
	src/mod/dialplans/mod_dialplan_directory
	src/mod/dialplans/mod_dialplan_xml src/mod/directories
	src/mod/directories/mod_ldap src/mod/endpoints
	src/mod/endpoints/mod_alsa src/mod/endpoints/mod_dingaling
	src/mod/endpoints/mod_iax src/mod/endpoints/mod_loopback
	src/mod/endpoints/mod_opal src/mod/endpoints/mod_portaudio
	src/mod/endpoints/mod_reference src/mod/endpoints/mod_sofia
	src/mod/endpoints/mod_unicall src/mod/event_handlers
	src/mod/event_handlers/mod_cdr_csv
	src/mod/event_handlers/mod_erlang_event
	src/mod/event_handlers/mod_event_multicast
	src/mod/event_handlers/mod_event_socket
	src/mod/event_handlers/mod_event_test
	src/mod/event_handlers/mod_radius_cdr
	src/mod/event_handlers/mod_radius_cdr/radius
	src/mod/event_handlers/mod_zeroconf src/mod/formats
	src/mod/formats/mod_local_stream
	src/mod/formats/mod_native_file src/mod/formats/mod_shout
	src/mod/formats/mod_sndfile src/mod/formats/mod_tone_stream
	src/mod/languages src/mod/languages/mod_java
	src/mod/languages/mod_java/src src/mod/languages/mod_java/src/org
	src/mod/languages/mod_java/src/org/freeswitch
	src/mod/languages/mod_java/src/org/freeswitch/swig
	src/mod/languages/mod_lua src/mod/languages/mod_lua/lua
	src/mod/languages/mod_managed src/mod/languages/mod_managed/managed
	src/mod/languages/mod_mono src/mod/languages/mod_mono_managed
	src/mod/languages/mod_mono_managed/Properties
	src/mod/languages/mod_mono_managed/swig
	src/mod/languages/mod_perl src/mod/languages/mod_python
	src/mod/languages/mod_spidermonkey
	src/mod/languages/mod_spidermonkey_core_db
	src/mod/languages/mod_spidermonkey_curl
	src/mod/languages/mod_spidermonkey_odbc
	src/mod/languages/mod_spidermonkey_skel
	src/mod/languages/mod_spidermonkey_socket
	src/mod/languages/mod_spidermonkey_teletone
	src/mod/languages/mod_yaml src/mod/loggers
	src/mod/loggers/mod_console src/mod/loggers/mod_logfile
	src/mod/loggers/mod_syslog src/mod/say src/mod/say/mod_say_de
	src/mod/say/mod_say_en src/mod/say/mod_say_es
	src/mod/say/mod_say_fr src/mod/say/mod_say_it
	src/mod/say/mod_say_nl src/mod/say/mod_say_zh src/mod/timers
	src/mod/xml_int src/mod/xml_int/mod_xml_cdr
	src/mod/xml_int/mod_xml_curl src/mod/xml_int/mod_xml_ldap
	src/mod/xml_int/mod_xml_rpc support-d w32 w32/Console
	w32/Library w32/Setup
Message-ID: 

Author: seven
Date: Thu Jan 22 23:45:03 2009
New Revision: 11461

Log:
Initial commit of mybranch from trunk revision: 11459

Added:
   freeswitch/branches/seven/Freeswitch.2005.unsupported.sln
      - copied unchanged from r11459, /freeswitch/trunk/Freeswitch.2005.unsupported.sln
   freeswitch/branches/seven/Freeswitch.2008.express.sln
      - copied unchanged from r11459, /freeswitch/trunk/Freeswitch.2008.express.sln
   freeswitch/branches/seven/Freeswitch.2008.sln
      - copied unchanged from r11459, /freeswitch/trunk/Freeswitch.2008.sln
   freeswitch/branches/seven/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/INSTALL
   freeswitch/branches/seven/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/Makefile.am
   freeswitch/branches/seven/acinclude.m4
      - copied unchanged from r11459, /freeswitch/trunk/acinclude.m4
   freeswitch/branches/seven/bootstrap.sh
      - copied unchanged from r11459, /freeswitch/trunk/bootstrap.sh
   freeswitch/branches/seven/build/   (props changed)
      - copied from r11459, /freeswitch/trunk/build/
   freeswitch/branches/seven/build/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/build/Makefile
   freeswitch/branches/seven/build/buildlib.sh
      - copied unchanged from r11459, /freeswitch/trunk/build/buildlib.sh
   freeswitch/branches/seven/build/buildopal.sh
      - copied unchanged from r11459, /freeswitch/trunk/build/buildopal.sh
   freeswitch/branches/seven/build/config/   (props changed)
      - copied from r11459, /freeswitch/trunk/build/config/
   freeswitch/branches/seven/build/config/ODBC.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ODBC.m4
   freeswitch/branches/seven/build/config/ac_cflags_gcc_option.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ac_cflags_gcc_option.m4
   freeswitch/branches/seven/build/config/ac_cflags_sun_option.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ac_cflags_sun_option.m4
   freeswitch/branches/seven/build/config/ac_gcc_archflag.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ac_gcc_archflag.m4
   freeswitch/branches/seven/build/config/ac_gcc_x86_cpuid.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ac_gcc_x86_cpuid.m4
   freeswitch/branches/seven/build/config/ac_prog_gzip.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ac_prog_gzip.m4
   freeswitch/branches/seven/build/config/ac_prog_wget.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ac_prog_wget.m4
   freeswitch/branches/seven/build/config/ax_cc_maxopt.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ax_cc_maxopt.m4
   freeswitch/branches/seven/build/config/ax_cflags_warn_all_ansi.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ax_cflags_warn_all_ansi.m4
   freeswitch/branches/seven/build/config/ax_check_compiler_flags.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ax_check_compiler_flags.m4
   freeswitch/branches/seven/build/config/ax_check_java.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ax_check_java.m4
   freeswitch/branches/seven/build/config/ax_compiler_vendor.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ax_compiler_vendor.m4
   freeswitch/branches/seven/build/config/ax_lib_mysql.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/ax_lib_mysql.m4
   freeswitch/branches/seven/build/config/config.sub
      - copied unchanged from r11459, /freeswitch/trunk/build/config/config.sub
   freeswitch/branches/seven/build/config/libcurl.m4
      - copied unchanged from r11459, /freeswitch/trunk/build/config/libcurl.m4
   freeswitch/branches/seven/build/curses.patch
      - copied unchanged from r11459, /freeswitch/trunk/build/curses.patch
   freeswitch/branches/seven/build/fixautoconf.sh
      - copied unchanged from r11459, /freeswitch/trunk/build/fixautoconf.sh
   freeswitch/branches/seven/build/fixautomake.sh
      - copied unchanged from r11459, /freeswitch/trunk/build/fixautomake.sh
   freeswitch/branches/seven/build/fixlibtool.sh
      - copied unchanged from r11459, /freeswitch/trunk/build/fixlibtool.sh
   freeswitch/branches/seven/build/freeswitch.build/
      - copied from r11459, /freeswitch/trunk/build/freeswitch.build/
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/
      - copied from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/categories.pbxbtree
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/categories.pbxbtree
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/cdecls.pbxbtree
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/cdecls.pbxbtree
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/decls.pbxbtree
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/decls.pbxbtree
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/files.pbxbtree
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/files.pbxbtree
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/imports.pbxbtree
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/imports.pbxbtree
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/pbxindex.header
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/pbxindex.header
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/protocols.pbxbtree
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/protocols.pbxbtree
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/refs.pbxbtree
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/refs.pbxbtree
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/strings.pbxstrings/
      - copied from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/strings.pbxstrings/
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/strings.pbxstrings/control
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/strings.pbxstrings/control
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/strings.pbxstrings/strings
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/strings.pbxstrings/strings
   freeswitch/branches/seven/build/freeswitch.build/freeswitch.pbxindex/subclasses.pbxbtree
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.build/freeswitch.pbxindex/subclasses.pbxbtree
   freeswitch/branches/seven/build/freeswitch.init.archlinux
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.init.archlinux
   freeswitch/branches/seven/build/freeswitch.init.redhat
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.init.redhat
   freeswitch/branches/seven/build/freeswitch.init.suse
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.init.suse
   freeswitch/branches/seven/build/freeswitch.ld.so.conf
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.ld.so.conf
   freeswitch/branches/seven/build/freeswitch.monitrc
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.monitrc
   freeswitch/branches/seven/build/freeswitch.sysconfig
      - copied unchanged from r11459, /freeswitch/trunk/build/freeswitch.sysconfig
   freeswitch/branches/seven/build/gen_indent.pl
      - copied unchanged from r11459, /freeswitch/trunk/build/gen_indent.pl
   freeswitch/branches/seven/build/getlib.sh.in
      - copied unchanged from r11459, /freeswitch/trunk/build/getlib.sh.in
   freeswitch/branches/seven/build/getsounds.sh.in
      - copied unchanged from r11459, /freeswitch/trunk/build/getsounds.sh.in
   freeswitch/branches/seven/build/ignore_helper.pl
      - copied unchanged from r11459, /freeswitch/trunk/build/ignore_helper.pl
   freeswitch/branches/seven/build/indent_options.sh
      - copied unchanged from r11459, /freeswitch/trunk/build/indent_options.sh
   freeswitch/branches/seven/build/modmake.rules.in
      - copied unchanged from r11459, /freeswitch/trunk/build/modmake.rules.in
   freeswitch/branches/seven/build/modules.conf.in
      - copied unchanged from r11459, /freeswitch/trunk/build/modules.conf.in
   freeswitch/branches/seven/build/sounds_version.txt
      - copied unchanged from r11459, /freeswitch/trunk/build/sounds_version.txt
   freeswitch/branches/seven/build/swigall.sh
      - copied unchanged from r11459, /freeswitch/trunk/build/swigall.sh
   freeswitch/branches/seven/build/turbo_build.sh
      - copied unchanged from r11459, /freeswitch/trunk/build/turbo_build.sh
   freeswitch/branches/seven/conf/   (props changed)
      - copied from r11459, /freeswitch/trunk/conf/
   freeswitch/branches/seven/conf/autoload_configs/
      - copied from r11459, /freeswitch/trunk/conf/autoload_configs/
   freeswitch/branches/seven/conf/autoload_configs/acl.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/acl.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/alsa.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/alsa.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/cdr_csv.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/cdr_csv.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/conference.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/conference.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/console.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/console.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/dialplan_directory.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/dialplan_directory.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/dingaling.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/dingaling.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/easyroute.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/easyroute.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/enum.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/enum.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/event_multicast.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/event_multicast.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/event_socket.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/event_socket.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/fax.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/fax.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/fifo.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/fifo.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/iax.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/iax.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/ivr.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/ivr.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/java.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/java.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/lcr.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/lcr.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/limit.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/limit.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/local_stream.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/local_stream.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/logfile.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/logfile.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/lua.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/lua.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/modules.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/modules.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/opal.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/opal.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/perl.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/perl.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/pocketsphinx.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/pocketsphinx.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/portaudio.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/portaudio.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/post_load_modules.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/post_load_modules.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/python.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/python.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/rss.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/rss.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/shout.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/shout.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/sofia.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/sofia.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/spidermonkey.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/spidermonkey.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/switch.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/switch.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/syslog.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/syslog.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/timezones.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/timezones.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/unicall.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/unicall.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/voicemail.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/voicemail.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/xml_cdr.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/xml_cdr.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/xml_curl.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/xml_curl.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/xml_rpc.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/xml_rpc.conf.xml
   freeswitch/branches/seven/conf/autoload_configs/zeroconf.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/autoload_configs/zeroconf.conf.xml
   freeswitch/branches/seven/conf/dialplan/
      - copied from r11459, /freeswitch/trunk/conf/dialplan/
   freeswitch/branches/seven/conf/dialplan/default/
      - copied from r11459, /freeswitch/trunk/conf/dialplan/default/
   freeswitch/branches/seven/conf/dialplan/default.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/dialplan/default.xml
   freeswitch/branches/seven/conf/dialplan/default/00_pizza_demo.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/dialplan/default/00_pizza_demo.xml
   freeswitch/branches/seven/conf/dialplan/default/01_example.com.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/dialplan/default/01_example.com.xml
   freeswitch/branches/seven/conf/dialplan/default/99999_enum.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/dialplan/default/99999_enum.xml
   freeswitch/branches/seven/conf/dialplan/default/ideasip.com.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/dialplan/default/ideasip.com.noload
   freeswitch/branches/seven/conf/dialplan/default/pulver.com.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/dialplan/default/pulver.com.noload
   freeswitch/branches/seven/conf/dialplan/default/sipbroker.com.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/dialplan/default/sipbroker.com.noload
   freeswitch/branches/seven/conf/dialplan/default/sipphone.com.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/dialplan/default/sipphone.com.noload
   freeswitch/branches/seven/conf/dialplan/default/tollfreegateway.com.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/dialplan/default/tollfreegateway.com.noload
   freeswitch/branches/seven/conf/dialplan/features.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/dialplan/features.xml
   freeswitch/branches/seven/conf/dialplan/public/
      - copied from r11459, /freeswitch/trunk/conf/dialplan/public/
   freeswitch/branches/seven/conf/dialplan/public.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/dialplan/public.xml
   freeswitch/branches/seven/conf/dialplan/public/00_inbound_did.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/dialplan/public/00_inbound_did.xml
   freeswitch/branches/seven/conf/directory/
      - copied from r11459, /freeswitch/trunk/conf/directory/
   freeswitch/branches/seven/conf/directory/default/
      - copied from r11459, /freeswitch/trunk/conf/directory/default/
   freeswitch/branches/seven/conf/directory/default.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default.xml
   freeswitch/branches/seven/conf/directory/default/1000.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1000.xml
   freeswitch/branches/seven/conf/directory/default/1001.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1001.xml
   freeswitch/branches/seven/conf/directory/default/1002.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1002.xml
   freeswitch/branches/seven/conf/directory/default/1003.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1003.xml
   freeswitch/branches/seven/conf/directory/default/1004.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1004.xml
   freeswitch/branches/seven/conf/directory/default/1005.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1005.xml
   freeswitch/branches/seven/conf/directory/default/1006.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1006.xml
   freeswitch/branches/seven/conf/directory/default/1007.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1007.xml
   freeswitch/branches/seven/conf/directory/default/1008.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1008.xml
   freeswitch/branches/seven/conf/directory/default/1009.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1009.xml
   freeswitch/branches/seven/conf/directory/default/1010.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1010.xml
   freeswitch/branches/seven/conf/directory/default/1011.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1011.xml
   freeswitch/branches/seven/conf/directory/default/1012.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1012.xml
   freeswitch/branches/seven/conf/directory/default/1013.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1013.xml
   freeswitch/branches/seven/conf/directory/default/1014.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1014.xml
   freeswitch/branches/seven/conf/directory/default/1015.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1015.xml
   freeswitch/branches/seven/conf/directory/default/1016.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1016.xml
   freeswitch/branches/seven/conf/directory/default/1017.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1017.xml
   freeswitch/branches/seven/conf/directory/default/1018.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1018.xml
   freeswitch/branches/seven/conf/directory/default/1019.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/1019.xml
   freeswitch/branches/seven/conf/directory/default/asterlink.com.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/asterlink.com.noload
   freeswitch/branches/seven/conf/directory/default/brian.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/brian.xml
   freeswitch/branches/seven/conf/directory/default/default.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/default.xml
   freeswitch/branches/seven/conf/directory/default/example.com.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/example.com.xml
   freeswitch/branches/seven/conf/directory/default/ideasip.com.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/ideasip.com.noload
   freeswitch/branches/seven/conf/directory/default/intelefone.net.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/intelefone.net.noload
   freeswitch/branches/seven/conf/directory/default/pulver.com.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/pulver.com.noload
   freeswitch/branches/seven/conf/directory/default/sip.broadvoice.com.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/sip.broadvoice.com.noload
   freeswitch/branches/seven/conf/directory/default/sipphone.com.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/sipphone.com.noload
   freeswitch/branches/seven/conf/directory/default/voipuser.org.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/directory/default/voipuser.org.noload
   freeswitch/branches/seven/conf/extensions.conf
      - copied unchanged from r11459, /freeswitch/trunk/conf/extensions.conf
   freeswitch/branches/seven/conf/freeswitch.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/freeswitch.xml
   freeswitch/branches/seven/conf/fur_elise.ttml
      - copied unchanged from r11459, /freeswitch/trunk/conf/fur_elise.ttml
   freeswitch/branches/seven/conf/jingle_profiles/
      - copied from r11459, /freeswitch/trunk/conf/jingle_profiles/
   freeswitch/branches/seven/conf/jingle_profiles/client.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/jingle_profiles/client.noload
   freeswitch/branches/seven/conf/jingle_profiles/client.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/jingle_profiles/client.xml
   freeswitch/branches/seven/conf/jingle_profiles/server.noload
      - copied unchanged from r11459, /freeswitch/trunk/conf/jingle_profiles/server.noload
   freeswitch/branches/seven/conf/jingle_profiles/server.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/jingle_profiles/server.xml
   freeswitch/branches/seven/conf/lang/
      - copied from r11459, /freeswitch/trunk/conf/lang/
   freeswitch/branches/seven/conf/lang/de/
      - copied from r11459, /freeswitch/trunk/conf/lang/de/
   freeswitch/branches/seven/conf/lang/de/de.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/lang/de/de.xml
   freeswitch/branches/seven/conf/lang/de/demo/
      - copied from r11459, /freeswitch/trunk/conf/lang/de/demo/
   freeswitch/branches/seven/conf/lang/de/demo/demo.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/lang/de/demo/demo.xml
   freeswitch/branches/seven/conf/lang/de/vm/
      - copied from r11459, /freeswitch/trunk/conf/lang/de/vm/
   freeswitch/branches/seven/conf/lang/de/vm/tts.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/lang/de/vm/tts.xml
   freeswitch/branches/seven/conf/lang/en/
      - copied from r11459, /freeswitch/trunk/conf/lang/en/
   freeswitch/branches/seven/conf/lang/en/demo/
      - copied from r11459, /freeswitch/trunk/conf/lang/en/demo/
   freeswitch/branches/seven/conf/lang/en/demo/demo-ivr.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/lang/en/demo/demo-ivr.xml
   freeswitch/branches/seven/conf/lang/en/demo/demo.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/lang/en/demo/demo.xml
   freeswitch/branches/seven/conf/lang/en/en.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/lang/en/en.xml
   freeswitch/branches/seven/conf/lang/en/vm/
      - copied from r11459, /freeswitch/trunk/conf/lang/en/vm/
   freeswitch/branches/seven/conf/lang/en/vm/sounds.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/lang/en/vm/sounds.xml
   freeswitch/branches/seven/conf/lang/en/vm/tts.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/lang/en/vm/tts.xml
   freeswitch/branches/seven/conf/lang/fr/
      - copied from r11459, /freeswitch/trunk/conf/lang/fr/
   freeswitch/branches/seven/conf/lang/fr/demo/
      - copied from r11459, /freeswitch/trunk/conf/lang/fr/demo/
   freeswitch/branches/seven/conf/lang/fr/demo/demo.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/lang/fr/demo/demo.xml
   freeswitch/branches/seven/conf/lang/fr/fr.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/lang/fr/fr.xml
   freeswitch/branches/seven/conf/lang/fr/vm/
      - copied from r11459, /freeswitch/trunk/conf/lang/fr/vm/
   freeswitch/branches/seven/conf/lang/fr/vm/sounds.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/lang/fr/vm/sounds.xml
   freeswitch/branches/seven/conf/mime.types
      - copied unchanged from r11459, /freeswitch/trunk/conf/mime.types
   freeswitch/branches/seven/conf/notify-voicemail.tpl
      - copied unchanged from r11459, /freeswitch/trunk/conf/notify-voicemail.tpl
   freeswitch/branches/seven/conf/sip_profiles/
      - copied from r11459, /freeswitch/trunk/conf/sip_profiles/
   freeswitch/branches/seven/conf/sip_profiles/external/
      - copied from r11459, /freeswitch/trunk/conf/sip_profiles/external/
   freeswitch/branches/seven/conf/sip_profiles/external.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/sip_profiles/external.xml
   freeswitch/branches/seven/conf/sip_profiles/external/example.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/sip_profiles/external/example.xml
   freeswitch/branches/seven/conf/sip_profiles/internal/
      - copied from r11459, /freeswitch/trunk/conf/sip_profiles/internal/
   freeswitch/branches/seven/conf/sip_profiles/internal-ipv6.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/sip_profiles/internal-ipv6.xml
   freeswitch/branches/seven/conf/sip_profiles/internal.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/sip_profiles/internal.xml
   freeswitch/branches/seven/conf/sip_profiles/internal/example.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/sip_profiles/internal/example.xml
   freeswitch/branches/seven/conf/tetris.ttml
      - copied unchanged from r11459, /freeswitch/trunk/conf/tetris.ttml
   freeswitch/branches/seven/conf/vars.xml
      - copied unchanged from r11459, /freeswitch/trunk/conf/vars.xml
   freeswitch/branches/seven/conf/voicemail.tpl
      - copied unchanged from r11459, /freeswitch/trunk/conf/voicemail.tpl
   freeswitch/branches/seven/conf/web-vm.tpl
      - copied unchanged from r11459, /freeswitch/trunk/conf/web-vm.tpl
   freeswitch/branches/seven/conf/yaml/
      - copied from r11459, /freeswitch/trunk/conf/yaml/
   freeswitch/branches/seven/conf/yaml/extensions.yaml
      - copied unchanged from r11459, /freeswitch/trunk/conf/yaml/extensions.yaml
   freeswitch/branches/seven/conf/yaml/mod_yaml.yaml
      - copied unchanged from r11459, /freeswitch/trunk/conf/yaml/mod_yaml.yaml
   freeswitch/branches/seven/configure.in
      - copied unchanged from r11459, /freeswitch/trunk/configure.in
   freeswitch/branches/seven/debian/
      - copied from r11459, /freeswitch/trunk/debian/
   freeswitch/branches/seven/debian/changelog
      - copied unchanged from r11459, /freeswitch/trunk/debian/changelog
   freeswitch/branches/seven/debian/compat
      - copied unchanged from r11459, /freeswitch/trunk/debian/compat
   freeswitch/branches/seven/debian/control
      - copied unchanged from r11459, /freeswitch/trunk/debian/control
   freeswitch/branches/seven/debian/copyright
      - copied unchanged from r11459, /freeswitch/trunk/debian/copyright
   freeswitch/branches/seven/debian/dirs
      - copied unchanged from r11459, /freeswitch/trunk/debian/dirs
   freeswitch/branches/seven/debian/freeswitch-codec-passthru-amr.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-codec-passthru-amr.install
   freeswitch/branches/seven/debian/freeswitch-codec-passthru-g7231.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-codec-passthru-g7231.install
   freeswitch/branches/seven/debian/freeswitch-codec-passthru-g729.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-codec-passthru-g729.install
   freeswitch/branches/seven/debian/freeswitch-dev.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-dev.install
   freeswitch/branches/seven/debian/freeswitch-lang-de.conffiles
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-lang-de.conffiles
   freeswitch/branches/seven/debian/freeswitch-lang-de.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-lang-de.install
   freeswitch/branches/seven/debian/freeswitch-lang-en.conffiles
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-lang-en.conffiles
   freeswitch/branches/seven/debian/freeswitch-lang-en.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-lang-en.install
   freeswitch/branches/seven/debian/freeswitch-lang-es.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-lang-es.install
   freeswitch/branches/seven/debian/freeswitch-lang-fr.conffiles
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-lang-fr.conffiles
   freeswitch/branches/seven/debian/freeswitch-lang-fr.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-lang-fr.install
   freeswitch/branches/seven/debian/freeswitch-lang-it.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-lang-it.install
   freeswitch/branches/seven/debian/freeswitch-lang-nl.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-lang-nl.install
   freeswitch/branches/seven/debian/freeswitch-lua.conffiles
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-lua.conffiles
   freeswitch/branches/seven/debian/freeswitch-lua.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-lua.install
   freeswitch/branches/seven/debian/freeswitch-perl.conffiles
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-perl.conffiles
   freeswitch/branches/seven/debian/freeswitch-perl.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-perl.install
   freeswitch/branches/seven/debian/freeswitch-sounds-en-us-callie-16000.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-sounds-en-us-callie-16000.install
   freeswitch/branches/seven/debian/freeswitch-sounds-en-us-callie-32000.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-sounds-en-us-callie-32000.install
   freeswitch/branches/seven/debian/freeswitch-sounds-en-us-callie-8000.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-sounds-en-us-callie-8000.install
   freeswitch/branches/seven/debian/freeswitch-sounds-music-8000.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-sounds-music-8000.install
   freeswitch/branches/seven/debian/freeswitch-spidermonkey.conffiles
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-spidermonkey.conffiles
   freeswitch/branches/seven/debian/freeswitch-spidermonkey.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch-spidermonkey.install
   freeswitch/branches/seven/debian/freeswitch.conffiles
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch.conffiles
   freeswitch/branches/seven/debian/freeswitch.default
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch.default
   freeswitch/branches/seven/debian/freeswitch.init
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch.init
   freeswitch/branches/seven/debian/freeswitch.install
      - copied unchanged from r11459, /freeswitch/trunk/debian/freeswitch.install
   freeswitch/branches/seven/debian/man/
      - copied from r11459, /freeswitch/trunk/debian/man/
   freeswitch/branches/seven/debian/man/man1/
      - copied from r11459, /freeswitch/trunk/debian/man/man1/
   freeswitch/branches/seven/debian/man/man1/freeswitch.1
      - copied unchanged from r11459, /freeswitch/trunk/debian/man/man1/freeswitch.1
   freeswitch/branches/seven/debian/monit/
      - copied from r11459, /freeswitch/trunk/debian/monit/
   freeswitch/branches/seven/debian/monit/freeswitch.monitrc
      - copied unchanged from r11459, /freeswitch/trunk/debian/monit/freeswitch.monitrc
   freeswitch/branches/seven/debian/postinst
      - copied unchanged from r11459, /freeswitch/trunk/debian/postinst
   freeswitch/branches/seven/debian/postrm
      - copied unchanged from r11459, /freeswitch/trunk/debian/postrm
   freeswitch/branches/seven/debian/rules
      - copied unchanged from r11459, /freeswitch/trunk/debian/rules
   freeswitch/branches/seven/debian/substvars
      - copied unchanged from r11459, /freeswitch/trunk/debian/substvars
   freeswitch/branches/seven/docs/   (props changed)
      - copied from r11459, /freeswitch/trunk/docs/
   freeswitch/branches/seven/docs/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/docs/AUTHORS
   freeswitch/branches/seven/docs/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/docs/COPYING
   freeswitch/branches/seven/docs/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/docs/ChangeLog
   freeswitch/branches/seven/docs/Doxygen.conf
      - copied unchanged from r11459, /freeswitch/trunk/docs/Doxygen.conf
   freeswitch/branches/seven/docs/JavaScript.txt
      - copied unchanged from r11459, /freeswitch/trunk/docs/JavaScript.txt
   freeswitch/branches/seven/docs/docs.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/docs/docs.2008.vcproj
   freeswitch/branches/seven/docs/docs.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/docs/docs.vcproj
   freeswitch/branches/seven/docs/phrase/
      - copied from r11459, /freeswitch/trunk/docs/phrase/
   freeswitch/branches/seven/docs/phrase/README.TXT
      - copied unchanged from r11459, /freeswitch/trunk/docs/phrase/README.TXT
   freeswitch/branches/seven/docs/phrase/phrase.pl
      - copied unchanged from r11459, /freeswitch/trunk/docs/phrase/phrase.pl
   freeswitch/branches/seven/docs/phrase/phrase_de.xml
      - copied unchanged from r11459, /freeswitch/trunk/docs/phrase/phrase_de.xml
   freeswitch/branches/seven/docs/phrase/phrase_en.xml
      - copied unchanged from r11459, /freeswitch/trunk/docs/phrase/phrase_en.xml
   freeswitch/branches/seven/docs/phrase/phrase_fr.xml
      - copied unchanged from r11459, /freeswitch/trunk/docs/phrase/phrase_fr.xml
   freeswitch/branches/seven/docs/phrase/phrase_nl.xml
      - copied unchanged from r11459, /freeswitch/trunk/docs/phrase/phrase_nl.xml
   freeswitch/branches/seven/docs/phrase/phrase_zh_HK.xml
      - copied unchanged from r11459, /freeswitch/trunk/docs/phrase/phrase_zh_HK.xml
   freeswitch/branches/seven/dtd/
      - copied from r11459, /freeswitch/trunk/dtd/
   freeswitch/branches/seven/dtd/freeswitch_dialplan.dtd
      - copied unchanged from r11459, /freeswitch/trunk/dtd/freeswitch_dialplan.dtd
   freeswitch/branches/seven/freeswitch.spec
      - copied unchanged from r11459, /freeswitch/trunk/freeswitch.spec
   freeswitch/branches/seven/freeswitch.xcodeproj/
      - copied from r11459, /freeswitch/trunk/freeswitch.xcodeproj/
   freeswitch/branches/seven/freeswitch.xcodeproj/mike.mode1v3
      - copied unchanged from r11459, /freeswitch/trunk/freeswitch.xcodeproj/mike.mode1v3
   freeswitch/branches/seven/freeswitch.xcodeproj/mike.pbxuser
      - copied unchanged from r11459, /freeswitch/trunk/freeswitch.xcodeproj/mike.pbxuser
   freeswitch/branches/seven/freeswitch.xcodeproj/project.pbxproj
      - copied unchanged from r11459, /freeswitch/trunk/freeswitch.xcodeproj/project.pbxproj
   freeswitch/branches/seven/htdocs/
      - copied from r11459, /freeswitch/trunk/htdocs/
   freeswitch/branches/seven/htdocs/license.txt
      - copied unchanged from r11459, /freeswitch/trunk/htdocs/license.txt
   freeswitch/branches/seven/htdocs/slim.swf
      - copied unchanged from r11459, /freeswitch/trunk/htdocs/slim.swf
   freeswitch/branches/seven/htdocs/slimtest.htm
      - copied unchanged from r11459, /freeswitch/trunk/htdocs/slimtest.htm
   freeswitch/branches/seven/libs/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/
   freeswitch/branches/seven/libs/apr/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/
   freeswitch/branches/seven/libs/apr-util/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/
   freeswitch/branches/seven/libs/apr-util/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/.update
   freeswitch/branches/seven/libs/apr-util/CHANGES
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/CHANGES
   freeswitch/branches/seven/libs/apr-util/INSTALL.MySQL
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/INSTALL.MySQL
   freeswitch/branches/seven/libs/apr-util/LICENSE
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/LICENSE
   freeswitch/branches/seven/libs/apr-util/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/Makefile.in
   freeswitch/branches/seven/libs/apr-util/NOTICE
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/NOTICE
   freeswitch/branches/seven/libs/apr-util/NWGNUmakefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/NWGNUmakefile
   freeswitch/branches/seven/libs/apr-util/apr-util.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/apr-util.pc.in
   freeswitch/branches/seven/libs/apr-util/apr-util.spec
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/apr-util.spec
   freeswitch/branches/seven/libs/apr-util/aprutil.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/aprutil.dsp
   freeswitch/branches/seven/libs/apr-util/aprutil.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/aprutil.dsw
   freeswitch/branches/seven/libs/apr-util/apu-config.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/apu-config.in
   freeswitch/branches/seven/libs/apr-util/buckets/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/buckets/
   freeswitch/branches/seven/libs/apr-util/buckets/apr_brigade.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_brigade.c
   freeswitch/branches/seven/libs/apr-util/buckets/apr_buckets.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_buckets.c
   freeswitch/branches/seven/libs/apr-util/buckets/apr_buckets_alloc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_buckets_alloc.c
   freeswitch/branches/seven/libs/apr-util/buckets/apr_buckets_eos.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_buckets_eos.c
   freeswitch/branches/seven/libs/apr-util/buckets/apr_buckets_file.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_buckets_file.c
   freeswitch/branches/seven/libs/apr-util/buckets/apr_buckets_flush.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_buckets_flush.c
   freeswitch/branches/seven/libs/apr-util/buckets/apr_buckets_heap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_buckets_heap.c
   freeswitch/branches/seven/libs/apr-util/buckets/apr_buckets_mmap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_buckets_mmap.c
   freeswitch/branches/seven/libs/apr-util/buckets/apr_buckets_pipe.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_buckets_pipe.c
   freeswitch/branches/seven/libs/apr-util/buckets/apr_buckets_pool.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_buckets_pool.c
   freeswitch/branches/seven/libs/apr-util/buckets/apr_buckets_refcount.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_buckets_refcount.c
   freeswitch/branches/seven/libs/apr-util/buckets/apr_buckets_simple.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_buckets_simple.c
   freeswitch/branches/seven/libs/apr-util/buckets/apr_buckets_socket.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buckets/apr_buckets_socket.c
   freeswitch/branches/seven/libs/apr-util/build/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/build/
   freeswitch/branches/seven/libs/apr-util/build-outputs.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build-outputs.mk
   freeswitch/branches/seven/libs/apr-util/build.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build.conf
   freeswitch/branches/seven/libs/apr-util/build/apu-conf.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build/apu-conf.m4
   freeswitch/branches/seven/libs/apr-util/build/apu-hints.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build/apu-hints.m4
   freeswitch/branches/seven/libs/apr-util/build/apu-iconv.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build/apu-iconv.m4
   freeswitch/branches/seven/libs/apr-util/build/dbd.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build/dbd.m4
   freeswitch/branches/seven/libs/apr-util/build/dbm.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build/dbm.m4
   freeswitch/branches/seven/libs/apr-util/build/find_apu.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build/find_apu.m4
   freeswitch/branches/seven/libs/apr-util/build/mkdir.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build/mkdir.sh
   freeswitch/branches/seven/libs/apr-util/build/pkg/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/build/pkg/
   freeswitch/branches/seven/libs/apr-util/build/pkg/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build/pkg/README
   freeswitch/branches/seven/libs/apr-util/build/pkg/buildpkg.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build/pkg/buildpkg.sh
   freeswitch/branches/seven/libs/apr-util/build/pkg/pkginfo.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build/pkg/pkginfo.in
   freeswitch/branches/seven/libs/apr-util/build/rpm/
      - copied from r11459, /freeswitch/trunk/libs/apr-util/build/rpm/
   freeswitch/branches/seven/libs/apr-util/build/rpm/apr-util.spec.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build/rpm/apr-util.spec.in
   freeswitch/branches/seven/libs/apr-util/build/w32locatedb.pl
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/build/w32locatedb.pl
   freeswitch/branches/seven/libs/apr-util/buildconf
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/buildconf
   freeswitch/branches/seven/libs/apr-util/config.layout
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/config.layout
   freeswitch/branches/seven/libs/apr-util/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/configure.gnu
   freeswitch/branches/seven/libs/apr-util/configure.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/configure.in
   freeswitch/branches/seven/libs/apr-util/crypto/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/crypto/
   freeswitch/branches/seven/libs/apr-util/crypto/apr_md4.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/crypto/apr_md4.c
   freeswitch/branches/seven/libs/apr-util/crypto/apr_md5.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/crypto/apr_md5.c
   freeswitch/branches/seven/libs/apr-util/crypto/apr_sha1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/crypto/apr_sha1.c
   freeswitch/branches/seven/libs/apr-util/crypto/getuuid.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/crypto/getuuid.c
   freeswitch/branches/seven/libs/apr-util/crypto/uuid.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/crypto/uuid.c
   freeswitch/branches/seven/libs/apr-util/dbd/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/dbd/
   freeswitch/branches/seven/libs/apr-util/dbd/apr_dbd.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbd/apr_dbd.c
   freeswitch/branches/seven/libs/apr-util/dbd/apr_dbd_pgsql.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbd/apr_dbd_pgsql.c
   freeswitch/branches/seven/libs/apr-util/dbd/apr_dbd_sqlite2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbd/apr_dbd_sqlite2.c
   freeswitch/branches/seven/libs/apr-util/dbd/apr_dbd_sqlite3.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbd/apr_dbd_sqlite3.c
   freeswitch/branches/seven/libs/apr-util/dbm/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/dbm/
   freeswitch/branches/seven/libs/apr-util/dbm/apr_dbm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbm/apr_dbm.c
   freeswitch/branches/seven/libs/apr-util/dbm/apr_dbm_berkeleydb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbm/apr_dbm_berkeleydb.c
   freeswitch/branches/seven/libs/apr-util/dbm/apr_dbm_gdbm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbm/apr_dbm_gdbm.c
   freeswitch/branches/seven/libs/apr-util/dbm/apr_dbm_ndbm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbm/apr_dbm_ndbm.c
   freeswitch/branches/seven/libs/apr-util/dbm/apr_dbm_sdbm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbm/apr_dbm_sdbm.c
   freeswitch/branches/seven/libs/apr-util/dbm/sdbm/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/dbm/sdbm/
   freeswitch/branches/seven/libs/apr-util/dbm/sdbm/sdbm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbm/sdbm/sdbm.c
   freeswitch/branches/seven/libs/apr-util/dbm/sdbm/sdbm_hash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbm/sdbm/sdbm_hash.c
   freeswitch/branches/seven/libs/apr-util/dbm/sdbm/sdbm_lock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbm/sdbm/sdbm_lock.c
   freeswitch/branches/seven/libs/apr-util/dbm/sdbm/sdbm_pair.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbm/sdbm/sdbm_pair.c
   freeswitch/branches/seven/libs/apr-util/dbm/sdbm/sdbm_pair.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbm/sdbm/sdbm_pair.h
   freeswitch/branches/seven/libs/apr-util/dbm/sdbm/sdbm_private.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbm/sdbm/sdbm_private.h
   freeswitch/branches/seven/libs/apr-util/dbm/sdbm/sdbm_tune.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/dbm/sdbm/sdbm_tune.h
   freeswitch/branches/seven/libs/apr-util/docs/
      - copied from r11459, /freeswitch/trunk/libs/apr-util/docs/
   freeswitch/branches/seven/libs/apr-util/docs/doxygen.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/docs/doxygen.conf
   freeswitch/branches/seven/libs/apr-util/encoding/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/encoding/
   freeswitch/branches/seven/libs/apr-util/encoding/apr_base64.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/encoding/apr_base64.c
   freeswitch/branches/seven/libs/apr-util/export_vars.sh.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/export_vars.sh.in
   freeswitch/branches/seven/libs/apr-util/hooks/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/hooks/
   freeswitch/branches/seven/libs/apr-util/hooks/apr_hooks.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/hooks/apr_hooks.c
   freeswitch/branches/seven/libs/apr-util/include/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/include/
   freeswitch/branches/seven/libs/apr-util/include/apr_anylock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_anylock.h
   freeswitch/branches/seven/libs/apr-util/include/apr_base64.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_base64.h
   freeswitch/branches/seven/libs/apr-util/include/apr_buckets.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_buckets.h
   freeswitch/branches/seven/libs/apr-util/include/apr_date.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_date.h
   freeswitch/branches/seven/libs/apr-util/include/apr_dbd.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_dbd.h
   freeswitch/branches/seven/libs/apr-util/include/apr_dbm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_dbm.h
   freeswitch/branches/seven/libs/apr-util/include/apr_hooks.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_hooks.h
   freeswitch/branches/seven/libs/apr-util/include/apr_ldap.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_ldap.h.in
   freeswitch/branches/seven/libs/apr-util/include/apr_ldap.hnw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_ldap.hnw
   freeswitch/branches/seven/libs/apr-util/include/apr_ldap.hw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_ldap.hw
   freeswitch/branches/seven/libs/apr-util/include/apr_ldap_init.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_ldap_init.h
   freeswitch/branches/seven/libs/apr-util/include/apr_ldap_option.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_ldap_option.h
   freeswitch/branches/seven/libs/apr-util/include/apr_ldap_url.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_ldap_url.h
   freeswitch/branches/seven/libs/apr-util/include/apr_md4.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_md4.h
   freeswitch/branches/seven/libs/apr-util/include/apr_md5.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_md5.h
   freeswitch/branches/seven/libs/apr-util/include/apr_optional.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_optional.h
   freeswitch/branches/seven/libs/apr-util/include/apr_optional_hooks.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_optional_hooks.h
   freeswitch/branches/seven/libs/apr-util/include/apr_queue.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_queue.h
   freeswitch/branches/seven/libs/apr-util/include/apr_reslist.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_reslist.h
   freeswitch/branches/seven/libs/apr-util/include/apr_rmm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_rmm.h
   freeswitch/branches/seven/libs/apr-util/include/apr_sdbm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_sdbm.h
   freeswitch/branches/seven/libs/apr-util/include/apr_sha1.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_sha1.h
   freeswitch/branches/seven/libs/apr-util/include/apr_strmatch.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_strmatch.h
   freeswitch/branches/seven/libs/apr-util/include/apr_uri.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_uri.h
   freeswitch/branches/seven/libs/apr-util/include/apr_uuid.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_uuid.h
   freeswitch/branches/seven/libs/apr-util/include/apr_xlate.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_xlate.h
   freeswitch/branches/seven/libs/apr-util/include/apr_xml.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apr_xml.h
   freeswitch/branches/seven/libs/apr-util/include/apu.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apu.h.in
   freeswitch/branches/seven/libs/apr-util/include/apu.hnw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apu.hnw
   freeswitch/branches/seven/libs/apr-util/include/apu.hw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apu.hw
   freeswitch/branches/seven/libs/apr-util/include/apu_version.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apu_version.h
   freeswitch/branches/seven/libs/apr-util/include/apu_want.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apu_want.h.in
   freeswitch/branches/seven/libs/apr-util/include/apu_want.hnw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apu_want.hnw
   freeswitch/branches/seven/libs/apr-util/include/apu_want.hw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/apu_want.hw
   freeswitch/branches/seven/libs/apr-util/include/private/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/include/private/
   freeswitch/branches/seven/libs/apr-util/include/private/apr_dbd_internal.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/private/apr_dbd_internal.h
   freeswitch/branches/seven/libs/apr-util/include/private/apr_dbm_private.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/private/apr_dbm_private.h
   freeswitch/branches/seven/libs/apr-util/include/private/apu_config.hw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/private/apu_config.hw
   freeswitch/branches/seven/libs/apr-util/include/private/apu_select_dbm.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/private/apu_select_dbm.h.in
   freeswitch/branches/seven/libs/apr-util/include/private/apu_select_dbm.hw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/include/private/apu_select_dbm.hw
   freeswitch/branches/seven/libs/apr-util/ldap/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/ldap/
   freeswitch/branches/seven/libs/apr-util/ldap/NWGNUmakefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/ldap/NWGNUmakefile
   freeswitch/branches/seven/libs/apr-util/ldap/apr_ldap_init.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/ldap/apr_ldap_init.c
   freeswitch/branches/seven/libs/apr-util/ldap/apr_ldap_option.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/ldap/apr_ldap_option.c
   freeswitch/branches/seven/libs/apr-util/ldap/apr_ldap_url.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/ldap/apr_ldap_url.c
   freeswitch/branches/seven/libs/apr-util/libaprutil.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/libaprutil.dsp
   freeswitch/branches/seven/libs/apr-util/libaprutil.rc
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/libaprutil.rc
   freeswitch/branches/seven/libs/apr-util/misc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/misc/
   freeswitch/branches/seven/libs/apr-util/misc/apr_date.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/misc/apr_date.c
   freeswitch/branches/seven/libs/apr-util/misc/apr_queue.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/misc/apr_queue.c
   freeswitch/branches/seven/libs/apr-util/misc/apr_reslist.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/misc/apr_reslist.c
   freeswitch/branches/seven/libs/apr-util/misc/apr_rmm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/misc/apr_rmm.c
   freeswitch/branches/seven/libs/apr-util/misc/apu_version.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/misc/apu_version.c
   freeswitch/branches/seven/libs/apr-util/renames_pending
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/renames_pending
   freeswitch/branches/seven/libs/apr-util/strmatch/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/strmatch/
   freeswitch/branches/seven/libs/apr-util/strmatch/apr_strmatch.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/strmatch/apr_strmatch.c
   freeswitch/branches/seven/libs/apr-util/test/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/test/
   freeswitch/branches/seven/libs/apr-util/test/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/Makefile.in
   freeswitch/branches/seven/libs/apr-util/test/Makefile.win
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/Makefile.win
   freeswitch/branches/seven/libs/apr-util/test/NWGNUmakefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/NWGNUmakefile
   freeswitch/branches/seven/libs/apr-util/test/abts.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/abts.c
   freeswitch/branches/seven/libs/apr-util/test/abts.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/abts.h
   freeswitch/branches/seven/libs/apr-util/test/abts_tests.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/abts_tests.h
   freeswitch/branches/seven/libs/apr-util/test/data/
      - copied from r11459, /freeswitch/trunk/libs/apr-util/test/data/
   freeswitch/branches/seven/libs/apr-util/test/dbd.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/dbd.c
   freeswitch/branches/seven/libs/apr-util/test/nw_misc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/nw_misc.c
   freeswitch/branches/seven/libs/apr-util/test/nwgnuaputest
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/nwgnuaputest
   freeswitch/branches/seven/libs/apr-util/test/test_apu.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/test_apu.h
   freeswitch/branches/seven/libs/apr-util/test/testbuckets.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testbuckets.c
   freeswitch/branches/seven/libs/apr-util/test/testdate.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testdate.c
   freeswitch/branches/seven/libs/apr-util/test/testdbd.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testdbd.c
   freeswitch/branches/seven/libs/apr-util/test/testdbm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testdbm.c
   freeswitch/branches/seven/libs/apr-util/test/testldap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testldap.c
   freeswitch/branches/seven/libs/apr-util/test/testmd4.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testmd4.c
   freeswitch/branches/seven/libs/apr-util/test/testmd5.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testmd5.c
   freeswitch/branches/seven/libs/apr-util/test/testpass.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testpass.c
   freeswitch/branches/seven/libs/apr-util/test/testqueue.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testqueue.c
   freeswitch/branches/seven/libs/apr-util/test/testreslist.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testreslist.c
   freeswitch/branches/seven/libs/apr-util/test/testrmm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testrmm.c
   freeswitch/branches/seven/libs/apr-util/test/teststrmatch.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/teststrmatch.c
   freeswitch/branches/seven/libs/apr-util/test/testuri.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testuri.c
   freeswitch/branches/seven/libs/apr-util/test/testutil.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testutil.c
   freeswitch/branches/seven/libs/apr-util/test/testutil.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testutil.h
   freeswitch/branches/seven/libs/apr-util/test/testuuid.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testuuid.c
   freeswitch/branches/seven/libs/apr-util/test/testxlate.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testxlate.c
   freeswitch/branches/seven/libs/apr-util/test/testxml.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/test/testxml.c
   freeswitch/branches/seven/libs/apr-util/uri/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/uri/
   freeswitch/branches/seven/libs/apr-util/uri/NWGNUmakefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/uri/NWGNUmakefile
   freeswitch/branches/seven/libs/apr-util/uri/apr_uri.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/uri/apr_uri.c
   freeswitch/branches/seven/libs/apr-util/xlate/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/xlate/
   freeswitch/branches/seven/libs/apr-util/xlate/xlate.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xlate/xlate.c
   freeswitch/branches/seven/libs/apr-util/xml/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/xml/
   freeswitch/branches/seven/libs/apr-util/xml/NWGNUmakefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/NWGNUmakefile
   freeswitch/branches/seven/libs/apr-util/xml/apr_xml.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/apr_xml.c
   freeswitch/branches/seven/libs/apr-util/xml/expat/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/
   freeswitch/branches/seven/libs/apr-util/xml/expat/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/COPYING
   freeswitch/branches/seven/libs/apr-util/xml/expat/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/Makefile.in
   freeswitch/branches/seven/libs/apr-util/xml/expat/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/README
   freeswitch/branches/seven/libs/apr-util/xml/expat/buildconf.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/buildconf.sh
   freeswitch/branches/seven/libs/apr-util/xml/expat/configure.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/configure.in
   freeswitch/branches/seven/libs/apr-util/xml/expat/conftools/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/conftools/
   freeswitch/branches/seven/libs/apr-util/xml/expat/conftools/PrintPath
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/conftools/PrintPath
   freeswitch/branches/seven/libs/apr-util/xml/expat/conftools/config.guess
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/conftools/config.guess
   freeswitch/branches/seven/libs/apr-util/xml/expat/conftools/config.sub
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/conftools/config.sub
   freeswitch/branches/seven/libs/apr-util/xml/expat/conftools/install-sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/conftools/install-sh
   freeswitch/branches/seven/libs/apr-util/xml/expat/conftools/missing
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/conftools/missing
   freeswitch/branches/seven/libs/apr-util/xml/expat/conftools/mkinstalldirs
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/conftools/mkinstalldirs
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/Makefile.in
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/ascii.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/ascii.h
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/asciitab.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/asciitab.h
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/config.hnw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/config.hnw
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/expat.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/expat.dsp
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/expat.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/expat.h.in
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/iasciitab.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/iasciitab.h
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/latin1tab.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/latin1tab.h
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/map_osd_ebcdic_df04_1.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/map_osd_ebcdic_df04_1.h
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/nametab.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/nametab.h
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/osd_ebcdic_df04_1.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/osd_ebcdic_df04_1.h
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/utf8tab.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/utf8tab.h
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/winconfig.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/winconfig.h
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/xml.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/xml.dsp
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/xmlparse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/xmlparse.c
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/xmlrole.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/xmlrole.c
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/xmlrole.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/xmlrole.h
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/xmltok.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/xmltok.c
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/xmltok.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/xmltok.h
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/xmltok_impl.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/xmltok_impl.c
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/xmltok_impl.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/xmltok_impl.h
   freeswitch/branches/seven/libs/apr-util/xml/expat/lib/xmltok_ns.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr-util/xml/expat/lib/xmltok_ns.c
   freeswitch/branches/seven/libs/apr/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/.update
   freeswitch/branches/seven/libs/apr/CHANGES
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/CHANGES
   freeswitch/branches/seven/libs/apr/LICENSE
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/LICENSE
   freeswitch/branches/seven/libs/apr/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/Makefile.in
   freeswitch/branches/seven/libs/apr/NOTICE
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/NOTICE
   freeswitch/branches/seven/libs/apr/NWGNUmakefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/NWGNUmakefile
   freeswitch/branches/seven/libs/apr/README.dev
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/README.dev
   freeswitch/branches/seven/libs/apr/apr-config.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/apr-config.in
   freeswitch/branches/seven/libs/apr/apr.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/apr.dsp
   freeswitch/branches/seven/libs/apr/apr.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/apr.dsw
   freeswitch/branches/seven/libs/apr/apr.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/apr.pc.in
   freeswitch/branches/seven/libs/apr/apr.spec
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/apr.spec
   freeswitch/branches/seven/libs/apr/atomic/
      - copied from r11459, /freeswitch/trunk/libs/apr/atomic/
   freeswitch/branches/seven/libs/apr/atomic/netware/
      - copied from r11459, /freeswitch/trunk/libs/apr/atomic/netware/
   freeswitch/branches/seven/libs/apr/atomic/netware/apr_atomic.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/atomic/netware/apr_atomic.c
   freeswitch/branches/seven/libs/apr/atomic/os390/
      - copied from r11459, /freeswitch/trunk/libs/apr/atomic/os390/
   freeswitch/branches/seven/libs/apr/atomic/os390/atomic.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/atomic/os390/atomic.c
   freeswitch/branches/seven/libs/apr/atomic/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/atomic/unix/
   freeswitch/branches/seven/libs/apr/atomic/unix/apr_atomic.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/atomic/unix/apr_atomic.c
   freeswitch/branches/seven/libs/apr/atomic/win32/
      - copied from r11459, /freeswitch/trunk/libs/apr/atomic/win32/
   freeswitch/branches/seven/libs/apr/atomic/win32/apr_atomic.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/atomic/win32/apr_atomic.c
   freeswitch/branches/seven/libs/apr/build/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/build/
   freeswitch/branches/seven/libs/apr/build-outputs.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build-outputs.mk
   freeswitch/branches/seven/libs/apr/build.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build.conf
   freeswitch/branches/seven/libs/apr/build/MakeEtags
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/MakeEtags
   freeswitch/branches/seven/libs/apr/build/NWGNUenvironment.inc
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/NWGNUenvironment.inc
   freeswitch/branches/seven/libs/apr/build/NWGNUhead.inc
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/NWGNUhead.inc
   freeswitch/branches/seven/libs/apr/build/NWGNUmakefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/NWGNUmakefile
   freeswitch/branches/seven/libs/apr/build/NWGNUtail.inc
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/NWGNUtail.inc
   freeswitch/branches/seven/libs/apr/build/PrintPath
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/PrintPath
   freeswitch/branches/seven/libs/apr/build/aplibtool.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/aplibtool.c
   freeswitch/branches/seven/libs/apr/build/apr_app.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/apr_app.dsp
   freeswitch/branches/seven/libs/apr/build/apr_common.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/apr_common.m4
   freeswitch/branches/seven/libs/apr/build/apr_hints.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/apr_hints.m4
   freeswitch/branches/seven/libs/apr/build/apr_network.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/apr_network.m4
   freeswitch/branches/seven/libs/apr/build/apr_rules.mk.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/apr_rules.mk.in
   freeswitch/branches/seven/libs/apr/build/apr_threads.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/apr_threads.m4
   freeswitch/branches/seven/libs/apr/build/ax_compiler_vendor.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/ax_compiler_vendor.m4
   freeswitch/branches/seven/libs/apr/build/buildcheck.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/buildcheck.sh
   freeswitch/branches/seven/libs/apr/build/config.sub
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/config.sub
   freeswitch/branches/seven/libs/apr/build/cvtdsp.pl
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/cvtdsp.pl
   freeswitch/branches/seven/libs/apr/build/find_apr.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/find_apr.m4
   freeswitch/branches/seven/libs/apr/build/fixwin32mak.pl
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/fixwin32mak.pl
   freeswitch/branches/seven/libs/apr/build/gen-build.py
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/gen-build.py
   freeswitch/branches/seven/libs/apr/build/get-version.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/get-version.sh
   freeswitch/branches/seven/libs/apr/build/install.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/install.sh
   freeswitch/branches/seven/libs/apr/build/jlibtool.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/jlibtool.c
   freeswitch/branches/seven/libs/apr/build/libapr_app.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/libapr_app.dsp
   freeswitch/branches/seven/libs/apr/build/lineends.pl
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/lineends.pl
   freeswitch/branches/seven/libs/apr/build/make_exports.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/make_exports.awk
   freeswitch/branches/seven/libs/apr/build/make_nw_export.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/make_nw_export.awk
   freeswitch/branches/seven/libs/apr/build/make_var_export.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/make_var_export.awk
   freeswitch/branches/seven/libs/apr/build/mkdir.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/mkdir.sh
   freeswitch/branches/seven/libs/apr/build/nw_export.inc
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/nw_export.inc
   freeswitch/branches/seven/libs/apr/build/nw_ver.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/nw_ver.awk
   freeswitch/branches/seven/libs/apr/build/pkg/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/build/pkg/
   freeswitch/branches/seven/libs/apr/build/pkg/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/pkg/README
   freeswitch/branches/seven/libs/apr/build/pkg/buildpkg.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/pkg/buildpkg.sh
   freeswitch/branches/seven/libs/apr/build/pkg/pkginfo.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/pkg/pkginfo.in
   freeswitch/branches/seven/libs/apr/build/prebuildNW.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/prebuildNW.bat
   freeswitch/branches/seven/libs/apr/build/rpm/
      - copied from r11459, /freeswitch/trunk/libs/apr/build/rpm/
   freeswitch/branches/seven/libs/apr/build/rpm/apr.spec.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/rpm/apr.spec.in
   freeswitch/branches/seven/libs/apr/build/run-gcov.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/run-gcov.sh
   freeswitch/branches/seven/libs/apr/build/win32ver.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/build/win32ver.awk
   freeswitch/branches/seven/libs/apr/buildconf
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/buildconf
   freeswitch/branches/seven/libs/apr/config.layout
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/config.layout
   freeswitch/branches/seven/libs/apr/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/configure.gnu
   freeswitch/branches/seven/libs/apr/configure.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/configure.in
   freeswitch/branches/seven/libs/apr/docs/
      - copied from r11459, /freeswitch/trunk/libs/apr/docs/
   freeswitch/branches/seven/libs/apr/docs/APRDesign.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/docs/APRDesign.html
   freeswitch/branches/seven/libs/apr/docs/canonical_filenames.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/docs/canonical_filenames.html
   freeswitch/branches/seven/libs/apr/docs/doxygen.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/docs/doxygen.conf
   freeswitch/branches/seven/libs/apr/docs/incomplete_types
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/docs/incomplete_types
   freeswitch/branches/seven/libs/apr/docs/non_apr_programs
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/docs/non_apr_programs
   freeswitch/branches/seven/libs/apr/docs/pool-design.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/docs/pool-design.html
   freeswitch/branches/seven/libs/apr/docs/win32_builds.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/docs/win32_builds.html
   freeswitch/branches/seven/libs/apr/dso/
      - copied from r11459, /freeswitch/trunk/libs/apr/dso/
   freeswitch/branches/seven/libs/apr/dso/aix/
      - copied from r11459, /freeswitch/trunk/libs/apr/dso/aix/
   freeswitch/branches/seven/libs/apr/dso/aix/dso.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/dso/aix/dso.c
   freeswitch/branches/seven/libs/apr/dso/beos/
      - copied from r11459, /freeswitch/trunk/libs/apr/dso/beos/
   freeswitch/branches/seven/libs/apr/dso/beos/dso.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/dso/beos/dso.c
   freeswitch/branches/seven/libs/apr/dso/netware/
      - copied from r11459, /freeswitch/trunk/libs/apr/dso/netware/
   freeswitch/branches/seven/libs/apr/dso/netware/dso.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/dso/netware/dso.c
   freeswitch/branches/seven/libs/apr/dso/os2/
      - copied from r11459, /freeswitch/trunk/libs/apr/dso/os2/
   freeswitch/branches/seven/libs/apr/dso/os2/dso.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/dso/os2/dso.c
   freeswitch/branches/seven/libs/apr/dso/os390/
      - copied from r11459, /freeswitch/trunk/libs/apr/dso/os390/
   freeswitch/branches/seven/libs/apr/dso/os390/dso.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/dso/os390/dso.c
   freeswitch/branches/seven/libs/apr/dso/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/dso/unix/
   freeswitch/branches/seven/libs/apr/dso/unix/dso.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/dso/unix/dso.c
   freeswitch/branches/seven/libs/apr/dso/win32/
      - copied from r11459, /freeswitch/trunk/libs/apr/dso/win32/
   freeswitch/branches/seven/libs/apr/dso/win32/dso.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/dso/win32/dso.c
   freeswitch/branches/seven/libs/apr/emacs-mode
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/emacs-mode
   freeswitch/branches/seven/libs/apr/file_io/
      - copied from r11459, /freeswitch/trunk/libs/apr/file_io/
   freeswitch/branches/seven/libs/apr/file_io/netware/
      - copied from r11459, /freeswitch/trunk/libs/apr/file_io/netware/
   freeswitch/branches/seven/libs/apr/file_io/netware/filepath.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/netware/filepath.c
   freeswitch/branches/seven/libs/apr/file_io/netware/filestat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/netware/filestat.c
   freeswitch/branches/seven/libs/apr/file_io/netware/filesys.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/netware/filesys.c
   freeswitch/branches/seven/libs/apr/file_io/netware/flock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/netware/flock.c
   freeswitch/branches/seven/libs/apr/file_io/netware/mktemp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/netware/mktemp.c
   freeswitch/branches/seven/libs/apr/file_io/netware/pipe.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/netware/pipe.c
   freeswitch/branches/seven/libs/apr/file_io/os2/
      - copied from r11459, /freeswitch/trunk/libs/apr/file_io/os2/
   freeswitch/branches/seven/libs/apr/file_io/os2/copy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/copy.c
   freeswitch/branches/seven/libs/apr/file_io/os2/dir.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/dir.c
   freeswitch/branches/seven/libs/apr/file_io/os2/dir_make_recurse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/dir_make_recurse.c
   freeswitch/branches/seven/libs/apr/file_io/os2/fileacc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/fileacc.c
   freeswitch/branches/seven/libs/apr/file_io/os2/filedup.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/filedup.c
   freeswitch/branches/seven/libs/apr/file_io/os2/filepath.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/filepath.c
   freeswitch/branches/seven/libs/apr/file_io/os2/filepath_util.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/filepath_util.c
   freeswitch/branches/seven/libs/apr/file_io/os2/filestat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/filestat.c
   freeswitch/branches/seven/libs/apr/file_io/os2/filesys.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/filesys.c
   freeswitch/branches/seven/libs/apr/file_io/os2/flock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/flock.c
   freeswitch/branches/seven/libs/apr/file_io/os2/fullrw.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/fullrw.c
   freeswitch/branches/seven/libs/apr/file_io/os2/maperrorcode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/maperrorcode.c
   freeswitch/branches/seven/libs/apr/file_io/os2/mktemp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/mktemp.c
   freeswitch/branches/seven/libs/apr/file_io/os2/open.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/open.c
   freeswitch/branches/seven/libs/apr/file_io/os2/pipe.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/pipe.c
   freeswitch/branches/seven/libs/apr/file_io/os2/readwrite.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/readwrite.c
   freeswitch/branches/seven/libs/apr/file_io/os2/seek.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/seek.c
   freeswitch/branches/seven/libs/apr/file_io/os2/tempdir.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/os2/tempdir.c
   freeswitch/branches/seven/libs/apr/file_io/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/file_io/unix/
   freeswitch/branches/seven/libs/apr/file_io/unix/copy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/copy.c
   freeswitch/branches/seven/libs/apr/file_io/unix/dir.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/dir.c
   freeswitch/branches/seven/libs/apr/file_io/unix/fileacc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/fileacc.c
   freeswitch/branches/seven/libs/apr/file_io/unix/filedup.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/filedup.c
   freeswitch/branches/seven/libs/apr/file_io/unix/filepath.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/filepath.c
   freeswitch/branches/seven/libs/apr/file_io/unix/filepath_util.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/filepath_util.c
   freeswitch/branches/seven/libs/apr/file_io/unix/filestat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/filestat.c
   freeswitch/branches/seven/libs/apr/file_io/unix/flock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/flock.c
   freeswitch/branches/seven/libs/apr/file_io/unix/fullrw.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/fullrw.c
   freeswitch/branches/seven/libs/apr/file_io/unix/mktemp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/mktemp.c
   freeswitch/branches/seven/libs/apr/file_io/unix/open.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/open.c
   freeswitch/branches/seven/libs/apr/file_io/unix/pipe.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/pipe.c
   freeswitch/branches/seven/libs/apr/file_io/unix/readwrite.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/readwrite.c
   freeswitch/branches/seven/libs/apr/file_io/unix/seek.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/seek.c
   freeswitch/branches/seven/libs/apr/file_io/unix/tempdir.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/unix/tempdir.c
   freeswitch/branches/seven/libs/apr/file_io/win32/
      - copied from r11459, /freeswitch/trunk/libs/apr/file_io/win32/
   freeswitch/branches/seven/libs/apr/file_io/win32/dir.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/win32/dir.c
   freeswitch/branches/seven/libs/apr/file_io/win32/filedup.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/win32/filedup.c
   freeswitch/branches/seven/libs/apr/file_io/win32/filepath.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/win32/filepath.c
   freeswitch/branches/seven/libs/apr/file_io/win32/filestat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/win32/filestat.c
   freeswitch/branches/seven/libs/apr/file_io/win32/filesys.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/win32/filesys.c
   freeswitch/branches/seven/libs/apr/file_io/win32/flock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/win32/flock.c
   freeswitch/branches/seven/libs/apr/file_io/win32/open.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/win32/open.c
   freeswitch/branches/seven/libs/apr/file_io/win32/pipe.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/win32/pipe.c
   freeswitch/branches/seven/libs/apr/file_io/win32/readwrite.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/win32/readwrite.c
   freeswitch/branches/seven/libs/apr/file_io/win32/seek.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/file_io/win32/seek.c
   freeswitch/branches/seven/libs/apr/helpers/
      - copied from r11459, /freeswitch/trunk/libs/apr/helpers/
   freeswitch/branches/seven/libs/apr/helpers/apr_rename.pl
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/helpers/apr_rename.pl
   freeswitch/branches/seven/libs/apr/images/
      - copied from r11459, /freeswitch/trunk/libs/apr/images/
   freeswitch/branches/seven/libs/apr/images/ScanDocBig.jpg
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/ScanDocBig.jpg
   freeswitch/branches/seven/libs/apr/images/ScanDocSmall.jpg
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/ScanDocSmall.jpg
   freeswitch/branches/seven/libs/apr/images/ball1.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/ball1.gif
   freeswitch/branches/seven/libs/apr/images/ball1.png
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/ball1.png
   freeswitch/branches/seven/libs/apr/images/ball2.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/ball2.gif
   freeswitch/branches/seven/libs/apr/images/ball2.png
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/ball2.png
   freeswitch/branches/seven/libs/apr/images/bug.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/bug.gif
   freeswitch/branches/seven/libs/apr/images/bug.png
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/bug.png
   freeswitch/branches/seven/libs/apr/images/caution.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/caution.gif
   freeswitch/branches/seven/libs/apr/images/caution.png
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/caution.png
   freeswitch/branches/seven/libs/apr/images/master.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/master.gif
   freeswitch/branches/seven/libs/apr/images/master.png
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/master.png
   freeswitch/branches/seven/libs/apr/images/tip.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/tip.gif
   freeswitch/branches/seven/libs/apr/images/tip.png
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/tip.png
   freeswitch/branches/seven/libs/apr/images/warning.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/warning.gif
   freeswitch/branches/seven/libs/apr/images/warning.png
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/images/warning.png
   freeswitch/branches/seven/libs/apr/include/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/include/
   freeswitch/branches/seven/libs/apr/include/apr.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr.h.in
   freeswitch/branches/seven/libs/apr/include/apr.hnw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr.hnw
   freeswitch/branches/seven/libs/apr/include/apr.hw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr.hw
   freeswitch/branches/seven/libs/apr/include/apr_allocator.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_allocator.h
   freeswitch/branches/seven/libs/apr/include/apr_atomic.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_atomic.h
   freeswitch/branches/seven/libs/apr/include/apr_dso.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_dso.h
   freeswitch/branches/seven/libs/apr/include/apr_env.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_env.h
   freeswitch/branches/seven/libs/apr/include/apr_errno.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_errno.h
   freeswitch/branches/seven/libs/apr/include/apr_file_info.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_file_info.h
   freeswitch/branches/seven/libs/apr/include/apr_file_io.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_file_io.h
   freeswitch/branches/seven/libs/apr/include/apr_fnmatch.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_fnmatch.h
   freeswitch/branches/seven/libs/apr/include/apr_general.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_general.h
   freeswitch/branches/seven/libs/apr/include/apr_getopt.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_getopt.h
   freeswitch/branches/seven/libs/apr/include/apr_global_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_global_mutex.h
   freeswitch/branches/seven/libs/apr/include/apr_hash.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_hash.h
   freeswitch/branches/seven/libs/apr/include/apr_inherit.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_inherit.h
   freeswitch/branches/seven/libs/apr/include/apr_lib.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_lib.h
   freeswitch/branches/seven/libs/apr/include/apr_mmap.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_mmap.h
   freeswitch/branches/seven/libs/apr/include/apr_network_io.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_network_io.h
   freeswitch/branches/seven/libs/apr/include/apr_poll.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_poll.h
   freeswitch/branches/seven/libs/apr/include/apr_pools.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_pools.h
   freeswitch/branches/seven/libs/apr/include/apr_portable.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_portable.h
   freeswitch/branches/seven/libs/apr/include/apr_proc_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_proc_mutex.h
   freeswitch/branches/seven/libs/apr/include/apr_random.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_random.h
   freeswitch/branches/seven/libs/apr/include/apr_ring.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_ring.h
   freeswitch/branches/seven/libs/apr/include/apr_shm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_shm.h
   freeswitch/branches/seven/libs/apr/include/apr_signal.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_signal.h
   freeswitch/branches/seven/libs/apr/include/apr_strings.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_strings.h
   freeswitch/branches/seven/libs/apr/include/apr_support.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_support.h
   freeswitch/branches/seven/libs/apr/include/apr_tables.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_tables.h
   freeswitch/branches/seven/libs/apr/include/apr_thread_cond.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_thread_cond.h
   freeswitch/branches/seven/libs/apr/include/apr_thread_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_thread_mutex.h
   freeswitch/branches/seven/libs/apr/include/apr_thread_proc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_thread_proc.h
   freeswitch/branches/seven/libs/apr/include/apr_thread_rwlock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_thread_rwlock.h
   freeswitch/branches/seven/libs/apr/include/apr_time.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_time.h
   freeswitch/branches/seven/libs/apr/include/apr_user.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_user.h
   freeswitch/branches/seven/libs/apr/include/apr_version.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_version.h
   freeswitch/branches/seven/libs/apr/include/apr_want.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/apr_want.h
   freeswitch/branches/seven/libs/apr/include/arch/
      - copied from r11459, /freeswitch/trunk/libs/apr/include/arch/
   freeswitch/branches/seven/libs/apr/include/arch/aix/
      - copied from r11459, /freeswitch/trunk/libs/apr/include/arch/aix/
   freeswitch/branches/seven/libs/apr/include/arch/aix/apr_arch_dso.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/aix/apr_arch_dso.h
   freeswitch/branches/seven/libs/apr/include/arch/apr_private_common.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/apr_private_common.h
   freeswitch/branches/seven/libs/apr/include/arch/beos/
      - copied from r11459, /freeswitch/trunk/libs/apr/include/arch/beos/
   freeswitch/branches/seven/libs/apr/include/arch/beos/apr_arch_dso.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/beos/apr_arch_dso.h
   freeswitch/branches/seven/libs/apr/include/arch/beos/apr_arch_proc_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/beos/apr_arch_proc_mutex.h
   freeswitch/branches/seven/libs/apr/include/arch/beos/apr_arch_thread_cond.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/beos/apr_arch_thread_cond.h
   freeswitch/branches/seven/libs/apr/include/arch/beos/apr_arch_thread_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/beos/apr_arch_thread_mutex.h
   freeswitch/branches/seven/libs/apr/include/arch/beos/apr_arch_thread_rwlock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/beos/apr_arch_thread_rwlock.h
   freeswitch/branches/seven/libs/apr/include/arch/beos/apr_arch_threadproc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/beos/apr_arch_threadproc.h
   freeswitch/branches/seven/libs/apr/include/arch/netware/
      - copied from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/
   freeswitch/branches/seven/libs/apr/include/arch/netware/apr_arch_dso.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/apr_arch_dso.h
   freeswitch/branches/seven/libs/apr/include/arch/netware/apr_arch_file_io.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/apr_arch_file_io.h
   freeswitch/branches/seven/libs/apr/include/arch/netware/apr_arch_global_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/apr_arch_global_mutex.h
   freeswitch/branches/seven/libs/apr/include/arch/netware/apr_arch_internal_time.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/apr_arch_internal_time.h
   freeswitch/branches/seven/libs/apr/include/arch/netware/apr_arch_networkio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/apr_arch_networkio.h
   freeswitch/branches/seven/libs/apr/include/arch/netware/apr_arch_pre_nw.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/apr_arch_pre_nw.h
   freeswitch/branches/seven/libs/apr/include/arch/netware/apr_arch_proc_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/apr_arch_proc_mutex.h
   freeswitch/branches/seven/libs/apr/include/arch/netware/apr_arch_thread_cond.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/apr_arch_thread_cond.h
   freeswitch/branches/seven/libs/apr/include/arch/netware/apr_arch_thread_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/apr_arch_thread_mutex.h
   freeswitch/branches/seven/libs/apr/include/arch/netware/apr_arch_thread_rwlock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/apr_arch_thread_rwlock.h
   freeswitch/branches/seven/libs/apr/include/arch/netware/apr_arch_threadproc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/apr_arch_threadproc.h
   freeswitch/branches/seven/libs/apr/include/arch/netware/apr_private.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/netware/apr_private.h
   freeswitch/branches/seven/libs/apr/include/arch/os2/
      - copied from r11459, /freeswitch/trunk/libs/apr/include/arch/os2/
   freeswitch/branches/seven/libs/apr/include/arch/os2/apr_arch_dso.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/os2/apr_arch_dso.h
   freeswitch/branches/seven/libs/apr/include/arch/os2/apr_arch_file_io.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/os2/apr_arch_file_io.h
   freeswitch/branches/seven/libs/apr/include/arch/os2/apr_arch_networkio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/os2/apr_arch_networkio.h
   freeswitch/branches/seven/libs/apr/include/arch/os2/apr_arch_os2calls.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/os2/apr_arch_os2calls.h
   freeswitch/branches/seven/libs/apr/include/arch/os2/apr_arch_proc_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/os2/apr_arch_proc_mutex.h
   freeswitch/branches/seven/libs/apr/include/arch/os2/apr_arch_thread_cond.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/os2/apr_arch_thread_cond.h
   freeswitch/branches/seven/libs/apr/include/arch/os2/apr_arch_thread_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/os2/apr_arch_thread_mutex.h
   freeswitch/branches/seven/libs/apr/include/arch/os2/apr_arch_thread_rwlock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/os2/apr_arch_thread_rwlock.h
   freeswitch/branches/seven/libs/apr/include/arch/os2/apr_arch_threadproc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/os2/apr_arch_threadproc.h
   freeswitch/branches/seven/libs/apr/include/arch/os390/
      - copied from r11459, /freeswitch/trunk/libs/apr/include/arch/os390/
   freeswitch/branches/seven/libs/apr/include/arch/os390/apr_arch_dso.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/os390/apr_arch_dso.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_dso.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_dso.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_file_io.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_file_io.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_global_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_global_mutex.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_inherit.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_inherit.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_internal_time.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_internal_time.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_misc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_misc.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_networkio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_networkio.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_poll_private.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_poll_private.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_proc_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_proc_mutex.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_shm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_shm.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_thread_cond.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_thread_cond.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_thread_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_thread_mutex.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_thread_rwlock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_thread_rwlock.h
   freeswitch/branches/seven/libs/apr/include/arch/unix/apr_arch_threadproc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/unix/apr_arch_threadproc.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/
      - copied from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_arch_atime.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_arch_atime.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_arch_dso.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_arch_dso.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_arch_file_io.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_arch_file_io.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_arch_inherit.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_arch_inherit.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_arch_misc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_arch_misc.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_arch_networkio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_arch_networkio.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_arch_proc_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_arch_proc_mutex.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_arch_thread_cond.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_arch_thread_cond.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_arch_thread_mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_arch_thread_mutex.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_arch_thread_rwlock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_arch_thread_rwlock.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_arch_threadproc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_arch_threadproc.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_arch_utf8.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_arch_utf8.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_dbg_win32_handles.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_dbg_win32_handles.h
   freeswitch/branches/seven/libs/apr/include/arch/win32/apr_private.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/include/arch/win32/apr_private.h
   freeswitch/branches/seven/libs/apr/libapr.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/libapr.dsp
   freeswitch/branches/seven/libs/apr/libapr.rc
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/libapr.rc
   freeswitch/branches/seven/libs/apr/libaprnw.mcp.zip
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/libaprnw.mcp.zip
   freeswitch/branches/seven/libs/apr/locks/
      - copied from r11459, /freeswitch/trunk/libs/apr/locks/
   freeswitch/branches/seven/libs/apr/locks/beos/
      - copied from r11459, /freeswitch/trunk/libs/apr/locks/beos/
   freeswitch/branches/seven/libs/apr/locks/beos/proc_mutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/beos/proc_mutex.c
   freeswitch/branches/seven/libs/apr/locks/beos/thread_cond.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/beos/thread_cond.c
   freeswitch/branches/seven/libs/apr/locks/beos/thread_mutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/beos/thread_mutex.c
   freeswitch/branches/seven/libs/apr/locks/beos/thread_rwlock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/beos/thread_rwlock.c
   freeswitch/branches/seven/libs/apr/locks/netware/
      - copied from r11459, /freeswitch/trunk/libs/apr/locks/netware/
   freeswitch/branches/seven/libs/apr/locks/netware/proc_mutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/netware/proc_mutex.c
   freeswitch/branches/seven/libs/apr/locks/netware/thread_cond.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/netware/thread_cond.c
   freeswitch/branches/seven/libs/apr/locks/netware/thread_mutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/netware/thread_mutex.c
   freeswitch/branches/seven/libs/apr/locks/netware/thread_rwlock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/netware/thread_rwlock.c
   freeswitch/branches/seven/libs/apr/locks/os2/
      - copied from r11459, /freeswitch/trunk/libs/apr/locks/os2/
   freeswitch/branches/seven/libs/apr/locks/os2/proc_mutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/os2/proc_mutex.c
   freeswitch/branches/seven/libs/apr/locks/os2/thread_cond.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/os2/thread_cond.c
   freeswitch/branches/seven/libs/apr/locks/os2/thread_mutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/os2/thread_mutex.c
   freeswitch/branches/seven/libs/apr/locks/os2/thread_rwlock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/os2/thread_rwlock.c
   freeswitch/branches/seven/libs/apr/locks/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/locks/unix/
   freeswitch/branches/seven/libs/apr/locks/unix/global_mutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/unix/global_mutex.c
   freeswitch/branches/seven/libs/apr/locks/unix/proc_mutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/unix/proc_mutex.c
   freeswitch/branches/seven/libs/apr/locks/unix/thread_cond.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/unix/thread_cond.c
   freeswitch/branches/seven/libs/apr/locks/unix/thread_mutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/unix/thread_mutex.c
   freeswitch/branches/seven/libs/apr/locks/unix/thread_rwlock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/unix/thread_rwlock.c
   freeswitch/branches/seven/libs/apr/locks/win32/
      - copied from r11459, /freeswitch/trunk/libs/apr/locks/win32/
   freeswitch/branches/seven/libs/apr/locks/win32/proc_mutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/win32/proc_mutex.c
   freeswitch/branches/seven/libs/apr/locks/win32/thread_cond.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/win32/thread_cond.c
   freeswitch/branches/seven/libs/apr/locks/win32/thread_mutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/win32/thread_mutex.c
   freeswitch/branches/seven/libs/apr/locks/win32/thread_rwlock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/locks/win32/thread_rwlock.c
   freeswitch/branches/seven/libs/apr/memory/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/memory/
   freeswitch/branches/seven/libs/apr/memory/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/memory/unix/
   freeswitch/branches/seven/libs/apr/memory/unix/apr_pools.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/memory/unix/apr_pools.c
   freeswitch/branches/seven/libs/apr/misc/
      - copied from r11459, /freeswitch/trunk/libs/apr/misc/
   freeswitch/branches/seven/libs/apr/misc/netware/
      - copied from r11459, /freeswitch/trunk/libs/apr/misc/netware/
   freeswitch/branches/seven/libs/apr/misc/netware/apr.xdc
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/netware/apr.xdc
   freeswitch/branches/seven/libs/apr/misc/netware/aprlib.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/netware/aprlib.def
   freeswitch/branches/seven/libs/apr/misc/netware/charset.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/netware/charset.c
   freeswitch/branches/seven/libs/apr/misc/netware/libprews.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/netware/libprews.c
   freeswitch/branches/seven/libs/apr/misc/netware/rand.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/netware/rand.c
   freeswitch/branches/seven/libs/apr/misc/netware/start.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/netware/start.c
   freeswitch/branches/seven/libs/apr/misc/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/misc/unix/
   freeswitch/branches/seven/libs/apr/misc/unix/charset.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/unix/charset.c
   freeswitch/branches/seven/libs/apr/misc/unix/env.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/unix/env.c
   freeswitch/branches/seven/libs/apr/misc/unix/errorcodes.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/unix/errorcodes.c
   freeswitch/branches/seven/libs/apr/misc/unix/getopt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/unix/getopt.c
   freeswitch/branches/seven/libs/apr/misc/unix/otherchild.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/unix/otherchild.c
   freeswitch/branches/seven/libs/apr/misc/unix/rand.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/unix/rand.c
   freeswitch/branches/seven/libs/apr/misc/unix/randbyte_os2.inc
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/unix/randbyte_os2.inc
   freeswitch/branches/seven/libs/apr/misc/unix/start.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/unix/start.c
   freeswitch/branches/seven/libs/apr/misc/unix/version.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/unix/version.c
   freeswitch/branches/seven/libs/apr/misc/win32/
      - copied from r11459, /freeswitch/trunk/libs/apr/misc/win32/
   freeswitch/branches/seven/libs/apr/misc/win32/apr_app.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/win32/apr_app.c
   freeswitch/branches/seven/libs/apr/misc/win32/charset.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/win32/charset.c
   freeswitch/branches/seven/libs/apr/misc/win32/env.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/win32/env.c
   freeswitch/branches/seven/libs/apr/misc/win32/internal.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/win32/internal.c
   freeswitch/branches/seven/libs/apr/misc/win32/misc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/win32/misc.c
   freeswitch/branches/seven/libs/apr/misc/win32/rand.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/win32/rand.c
   freeswitch/branches/seven/libs/apr/misc/win32/start.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/win32/start.c
   freeswitch/branches/seven/libs/apr/misc/win32/utf8.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/misc/win32/utf8.c
   freeswitch/branches/seven/libs/apr/mmap/
      - copied from r11459, /freeswitch/trunk/libs/apr/mmap/
   freeswitch/branches/seven/libs/apr/mmap/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/mmap/unix/
   freeswitch/branches/seven/libs/apr/mmap/unix/common.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/mmap/unix/common.c
   freeswitch/branches/seven/libs/apr/mmap/unix/mmap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/mmap/unix/mmap.c
   freeswitch/branches/seven/libs/apr/mmap/win32/
      - copied from r11459, /freeswitch/trunk/libs/apr/mmap/win32/
   freeswitch/branches/seven/libs/apr/mmap/win32/mmap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/mmap/win32/mmap.c
   freeswitch/branches/seven/libs/apr/network_io/
      - copied from r11459, /freeswitch/trunk/libs/apr/network_io/
   freeswitch/branches/seven/libs/apr/network_io/beos/
      - copied from r11459, /freeswitch/trunk/libs/apr/network_io/beos/
   freeswitch/branches/seven/libs/apr/network_io/beos/sendrecv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/beos/sendrecv.c
   freeswitch/branches/seven/libs/apr/network_io/beos/socketcommon.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/beos/socketcommon.c
   freeswitch/branches/seven/libs/apr/network_io/os2/
      - copied from r11459, /freeswitch/trunk/libs/apr/network_io/os2/
   freeswitch/branches/seven/libs/apr/network_io/os2/inet_ntop.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/os2/inet_ntop.c
   freeswitch/branches/seven/libs/apr/network_io/os2/inet_pton.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/os2/inet_pton.c
   freeswitch/branches/seven/libs/apr/network_io/os2/os2calls.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/os2/os2calls.c
   freeswitch/branches/seven/libs/apr/network_io/os2/sendrecv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/os2/sendrecv.c
   freeswitch/branches/seven/libs/apr/network_io/os2/sendrecv_udp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/os2/sendrecv_udp.c
   freeswitch/branches/seven/libs/apr/network_io/os2/sockaddr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/os2/sockaddr.c
   freeswitch/branches/seven/libs/apr/network_io/os2/sockets.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/os2/sockets.c
   freeswitch/branches/seven/libs/apr/network_io/os2/sockopt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/os2/sockopt.c
   freeswitch/branches/seven/libs/apr/network_io/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/network_io/unix/
   freeswitch/branches/seven/libs/apr/network_io/unix/inet_ntop.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/unix/inet_ntop.c
   freeswitch/branches/seven/libs/apr/network_io/unix/inet_pton.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/unix/inet_pton.c
   freeswitch/branches/seven/libs/apr/network_io/unix/multicast.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/unix/multicast.c
   freeswitch/branches/seven/libs/apr/network_io/unix/sendrecv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/unix/sendrecv.c
   freeswitch/branches/seven/libs/apr/network_io/unix/sockaddr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/unix/sockaddr.c
   freeswitch/branches/seven/libs/apr/network_io/unix/sockets.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/unix/sockets.c
   freeswitch/branches/seven/libs/apr/network_io/unix/sockopt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/unix/sockopt.c
   freeswitch/branches/seven/libs/apr/network_io/win32/
      - copied from r11459, /freeswitch/trunk/libs/apr/network_io/win32/
   freeswitch/branches/seven/libs/apr/network_io/win32/sendrecv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/win32/sendrecv.c
   freeswitch/branches/seven/libs/apr/network_io/win32/sockets.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/win32/sockets.c
   freeswitch/branches/seven/libs/apr/network_io/win32/sockopt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/network_io/win32/sockopt.c
   freeswitch/branches/seven/libs/apr/passwd/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/passwd/
   freeswitch/branches/seven/libs/apr/passwd/apr_getpass.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/passwd/apr_getpass.c
   freeswitch/branches/seven/libs/apr/poll/
      - copied from r11459, /freeswitch/trunk/libs/apr/poll/
   freeswitch/branches/seven/libs/apr/poll/os2/
      - copied from r11459, /freeswitch/trunk/libs/apr/poll/os2/
   freeswitch/branches/seven/libs/apr/poll/os2/poll.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/poll/os2/poll.c
   freeswitch/branches/seven/libs/apr/poll/os2/pollset.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/poll/os2/pollset.c
   freeswitch/branches/seven/libs/apr/poll/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/poll/unix/
   freeswitch/branches/seven/libs/apr/poll/unix/epoll.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/poll/unix/epoll.c
   freeswitch/branches/seven/libs/apr/poll/unix/kqueue.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/poll/unix/kqueue.c
   freeswitch/branches/seven/libs/apr/poll/unix/poll.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/poll/unix/poll.c
   freeswitch/branches/seven/libs/apr/poll/unix/port.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/poll/unix/port.c
   freeswitch/branches/seven/libs/apr/poll/unix/select.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/poll/unix/select.c
   freeswitch/branches/seven/libs/apr/random/
      - copied from r11459, /freeswitch/trunk/libs/apr/random/
   freeswitch/branches/seven/libs/apr/random/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/random/unix/
   freeswitch/branches/seven/libs/apr/random/unix/apr_random.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/random/unix/apr_random.c
   freeswitch/branches/seven/libs/apr/random/unix/sha2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/random/unix/sha2.c
   freeswitch/branches/seven/libs/apr/random/unix/sha2.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/random/unix/sha2.h
   freeswitch/branches/seven/libs/apr/random/unix/sha2_glue.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/random/unix/sha2_glue.c
   freeswitch/branches/seven/libs/apr/renames_pending
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/renames_pending
   freeswitch/branches/seven/libs/apr/shmem/
      - copied from r11459, /freeswitch/trunk/libs/apr/shmem/
   freeswitch/branches/seven/libs/apr/shmem/beos/
      - copied from r11459, /freeswitch/trunk/libs/apr/shmem/beos/
   freeswitch/branches/seven/libs/apr/shmem/beos/shm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/shmem/beos/shm.c
   freeswitch/branches/seven/libs/apr/shmem/os2/
      - copied from r11459, /freeswitch/trunk/libs/apr/shmem/os2/
   freeswitch/branches/seven/libs/apr/shmem/os2/shm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/shmem/os2/shm.c
   freeswitch/branches/seven/libs/apr/shmem/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/shmem/unix/
   freeswitch/branches/seven/libs/apr/shmem/unix/shm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/shmem/unix/shm.c
   freeswitch/branches/seven/libs/apr/shmem/win32/
      - copied from r11459, /freeswitch/trunk/libs/apr/shmem/win32/
   freeswitch/branches/seven/libs/apr/shmem/win32/shm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/shmem/win32/shm.c
   freeswitch/branches/seven/libs/apr/strings/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/strings/
   freeswitch/branches/seven/libs/apr/strings/apr_cpystrn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/strings/apr_cpystrn.c
   freeswitch/branches/seven/libs/apr/strings/apr_fnmatch.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/strings/apr_fnmatch.c
   freeswitch/branches/seven/libs/apr/strings/apr_snprintf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/strings/apr_snprintf.c
   freeswitch/branches/seven/libs/apr/strings/apr_strings.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/strings/apr_strings.c
   freeswitch/branches/seven/libs/apr/strings/apr_strnatcmp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/strings/apr_strnatcmp.c
   freeswitch/branches/seven/libs/apr/strings/apr_strtok.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/strings/apr_strtok.c
   freeswitch/branches/seven/libs/apr/support/
      - copied from r11459, /freeswitch/trunk/libs/apr/support/
   freeswitch/branches/seven/libs/apr/support/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/support/unix/
   freeswitch/branches/seven/libs/apr/support/unix/waitio.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/support/unix/waitio.c
   freeswitch/branches/seven/libs/apr/tables/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/tables/
   freeswitch/branches/seven/libs/apr/tables/apr_hash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/tables/apr_hash.c
   freeswitch/branches/seven/libs/apr/tables/apr_tables.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/tables/apr_tables.c
   freeswitch/branches/seven/libs/apr/test/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/test/
   freeswitch/branches/seven/libs/apr/test/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/Makefile.in
   freeswitch/branches/seven/libs/apr/test/Makefile.win
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/Makefile.win
   freeswitch/branches/seven/libs/apr/test/NWGNUmakefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/NWGNUmakefile
   freeswitch/branches/seven/libs/apr/test/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/README
   freeswitch/branches/seven/libs/apr/test/abts.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/abts.c
   freeswitch/branches/seven/libs/apr/test/abts.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/abts.h
   freeswitch/branches/seven/libs/apr/test/abts_tests.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/abts_tests.h
   freeswitch/branches/seven/libs/apr/test/aprtest.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/aprtest.def
   freeswitch/branches/seven/libs/apr/test/aprtest.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/aprtest.dsp
   freeswitch/branches/seven/libs/apr/test/aprtest.win
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/aprtest.win
   freeswitch/branches/seven/libs/apr/test/data/
      - copied from r11459, /freeswitch/trunk/libs/apr/test/data/
   freeswitch/branches/seven/libs/apr/test/data/file_datafile.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/data/file_datafile.txt
   freeswitch/branches/seven/libs/apr/test/data/mmap_datafile.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/data/mmap_datafile.txt
   freeswitch/branches/seven/libs/apr/test/globalmutexchild.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/globalmutexchild.c
   freeswitch/branches/seven/libs/apr/test/internal/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/test/internal/
   freeswitch/branches/seven/libs/apr/test/internal/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/internal/Makefile.in
   freeswitch/branches/seven/libs/apr/test/internal/testregex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/internal/testregex.c
   freeswitch/branches/seven/libs/apr/test/internal/testucs.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/internal/testucs.c
   freeswitch/branches/seven/libs/apr/test/mod_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/mod_test.c
   freeswitch/branches/seven/libs/apr/test/nw_misc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/nw_misc.c
   freeswitch/branches/seven/libs/apr/test/nwgnuaprtest
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/nwgnuaprtest
   freeswitch/branches/seven/libs/apr/test/nwgnuglobalmutexchild
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/nwgnuglobalmutexchild
   freeswitch/branches/seven/libs/apr/test/nwgnumod_test
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/nwgnumod_test
   freeswitch/branches/seven/libs/apr/test/nwgnuproc_child
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/nwgnuproc_child
   freeswitch/branches/seven/libs/apr/test/nwgnureadchild
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/nwgnureadchild
   freeswitch/branches/seven/libs/apr/test/nwgnusockchild
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/nwgnusockchild
   freeswitch/branches/seven/libs/apr/test/nwgnutestatmc
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/nwgnutestatmc
   freeswitch/branches/seven/libs/apr/test/nwgnutryread
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/nwgnutryread
   freeswitch/branches/seven/libs/apr/test/occhild.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/occhild.c
   freeswitch/branches/seven/libs/apr/test/proc_child.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/proc_child.c
   freeswitch/branches/seven/libs/apr/test/readchild.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/readchild.c
   freeswitch/branches/seven/libs/apr/test/sendfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/sendfile.c
   freeswitch/branches/seven/libs/apr/test/sockchild.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/sockchild.c
   freeswitch/branches/seven/libs/apr/test/testall.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testall.dsp
   freeswitch/branches/seven/libs/apr/test/testall.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testall.dsw
   freeswitch/branches/seven/libs/apr/test/testapp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testapp.c
   freeswitch/branches/seven/libs/apr/test/testapp.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testapp.dsp
   freeswitch/branches/seven/libs/apr/test/testappnt.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testappnt.dsp
   freeswitch/branches/seven/libs/apr/test/testargs.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testargs.c
   freeswitch/branches/seven/libs/apr/test/testatomic.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testatomic.c
   freeswitch/branches/seven/libs/apr/test/testdir.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testdir.c
   freeswitch/branches/seven/libs/apr/test/testdso.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testdso.c
   freeswitch/branches/seven/libs/apr/test/testdup.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testdup.c
   freeswitch/branches/seven/libs/apr/test/testenv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testenv.c
   freeswitch/branches/seven/libs/apr/test/testfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testfile.c
   freeswitch/branches/seven/libs/apr/test/testfilecopy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testfilecopy.c
   freeswitch/branches/seven/libs/apr/test/testfileinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testfileinfo.c
   freeswitch/branches/seven/libs/apr/test/testflock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testflock.c
   freeswitch/branches/seven/libs/apr/test/testflock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testflock.h
   freeswitch/branches/seven/libs/apr/test/testfmt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testfmt.c
   freeswitch/branches/seven/libs/apr/test/testfnmatch.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testfnmatch.c
   freeswitch/branches/seven/libs/apr/test/testglobalmutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testglobalmutex.c
   freeswitch/branches/seven/libs/apr/test/testglobalmutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testglobalmutex.h
   freeswitch/branches/seven/libs/apr/test/testhash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testhash.c
   freeswitch/branches/seven/libs/apr/test/testipsub.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testipsub.c
   freeswitch/branches/seven/libs/apr/test/testlfs.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testlfs.c
   freeswitch/branches/seven/libs/apr/test/testlock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testlock.c
   freeswitch/branches/seven/libs/apr/test/testlockperf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testlockperf.c
   freeswitch/branches/seven/libs/apr/test/testmmap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testmmap.c
   freeswitch/branches/seven/libs/apr/test/testmutexscope.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testmutexscope.c
   freeswitch/branches/seven/libs/apr/test/testnames.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testnames.c
   freeswitch/branches/seven/libs/apr/test/testoc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testoc.c
   freeswitch/branches/seven/libs/apr/test/testpath.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testpath.c
   freeswitch/branches/seven/libs/apr/test/testpipe.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testpipe.c
   freeswitch/branches/seven/libs/apr/test/testpoll.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testpoll.c
   freeswitch/branches/seven/libs/apr/test/testpools.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testpools.c
   freeswitch/branches/seven/libs/apr/test/testproc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testproc.c
   freeswitch/branches/seven/libs/apr/test/testprocmutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testprocmutex.c
   freeswitch/branches/seven/libs/apr/test/testrand.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testrand.c
   freeswitch/branches/seven/libs/apr/test/testrand2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testrand2.c
   freeswitch/branches/seven/libs/apr/test/testshm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testshm.c
   freeswitch/branches/seven/libs/apr/test/testshm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testshm.h
   freeswitch/branches/seven/libs/apr/test/testshmconsumer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testshmconsumer.c
   freeswitch/branches/seven/libs/apr/test/testshmproducer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testshmproducer.c
   freeswitch/branches/seven/libs/apr/test/testsleep.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testsleep.c
   freeswitch/branches/seven/libs/apr/test/testsock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testsock.c
   freeswitch/branches/seven/libs/apr/test/testsock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testsock.h
   freeswitch/branches/seven/libs/apr/test/testsockets.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testsockets.c
   freeswitch/branches/seven/libs/apr/test/testsockopt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testsockopt.c
   freeswitch/branches/seven/libs/apr/test/teststr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/teststr.c
   freeswitch/branches/seven/libs/apr/test/teststrnatcmp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/teststrnatcmp.c
   freeswitch/branches/seven/libs/apr/test/testtable.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testtable.c
   freeswitch/branches/seven/libs/apr/test/testtemp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testtemp.c
   freeswitch/branches/seven/libs/apr/test/testthread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testthread.c
   freeswitch/branches/seven/libs/apr/test/testtime.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testtime.c
   freeswitch/branches/seven/libs/apr/test/testud.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testud.c
   freeswitch/branches/seven/libs/apr/test/testuser.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testuser.c
   freeswitch/branches/seven/libs/apr/test/testutil.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testutil.c
   freeswitch/branches/seven/libs/apr/test/testutil.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testutil.h
   freeswitch/branches/seven/libs/apr/test/testvsn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/testvsn.c
   freeswitch/branches/seven/libs/apr/test/tryread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/test/tryread.c
   freeswitch/branches/seven/libs/apr/threadproc/
      - copied from r11459, /freeswitch/trunk/libs/apr/threadproc/
   freeswitch/branches/seven/libs/apr/threadproc/beos/
      - copied from r11459, /freeswitch/trunk/libs/apr/threadproc/beos/
   freeswitch/branches/seven/libs/apr/threadproc/beos/apr_proc_stub.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/beos/apr_proc_stub.c
   freeswitch/branches/seven/libs/apr/threadproc/beos/proc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/beos/proc.c
   freeswitch/branches/seven/libs/apr/threadproc/beos/thread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/beos/thread.c
   freeswitch/branches/seven/libs/apr/threadproc/beos/threadpriv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/beos/threadpriv.c
   freeswitch/branches/seven/libs/apr/threadproc/beos/threadproc_common.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/beos/threadproc_common.c
   freeswitch/branches/seven/libs/apr/threadproc/netware/
      - copied from r11459, /freeswitch/trunk/libs/apr/threadproc/netware/
   freeswitch/branches/seven/libs/apr/threadproc/netware/proc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/netware/proc.c
   freeswitch/branches/seven/libs/apr/threadproc/netware/procsup.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/netware/procsup.c
   freeswitch/branches/seven/libs/apr/threadproc/netware/signals.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/netware/signals.c
   freeswitch/branches/seven/libs/apr/threadproc/netware/thread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/netware/thread.c
   freeswitch/branches/seven/libs/apr/threadproc/netware/threadpriv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/netware/threadpriv.c
   freeswitch/branches/seven/libs/apr/threadproc/os2/
      - copied from r11459, /freeswitch/trunk/libs/apr/threadproc/os2/
   freeswitch/branches/seven/libs/apr/threadproc/os2/proc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/os2/proc.c
   freeswitch/branches/seven/libs/apr/threadproc/os2/signals.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/os2/signals.c
   freeswitch/branches/seven/libs/apr/threadproc/os2/thread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/os2/thread.c
   freeswitch/branches/seven/libs/apr/threadproc/os2/threadpriv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/os2/threadpriv.c
   freeswitch/branches/seven/libs/apr/threadproc/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/threadproc/unix/
   freeswitch/branches/seven/libs/apr/threadproc/unix/proc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/unix/proc.c
   freeswitch/branches/seven/libs/apr/threadproc/unix/procsup.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/unix/procsup.c
   freeswitch/branches/seven/libs/apr/threadproc/unix/signals.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/unix/signals.c
   freeswitch/branches/seven/libs/apr/threadproc/unix/thread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/unix/thread.c
   freeswitch/branches/seven/libs/apr/threadproc/unix/threadpriv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/unix/threadpriv.c
   freeswitch/branches/seven/libs/apr/threadproc/win32/
      - copied from r11459, /freeswitch/trunk/libs/apr/threadproc/win32/
   freeswitch/branches/seven/libs/apr/threadproc/win32/proc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/win32/proc.c
   freeswitch/branches/seven/libs/apr/threadproc/win32/signals.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/win32/signals.c
   freeswitch/branches/seven/libs/apr/threadproc/win32/thread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/win32/thread.c
   freeswitch/branches/seven/libs/apr/threadproc/win32/threadpriv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/threadproc/win32/threadpriv.c
   freeswitch/branches/seven/libs/apr/time/
      - copied from r11459, /freeswitch/trunk/libs/apr/time/
   freeswitch/branches/seven/libs/apr/time/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/time/unix/
   freeswitch/branches/seven/libs/apr/time/unix/time.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/time/unix/time.c
   freeswitch/branches/seven/libs/apr/time/unix/timestr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/time/unix/timestr.c
   freeswitch/branches/seven/libs/apr/time/win32/
      - copied from r11459, /freeswitch/trunk/libs/apr/time/win32/
   freeswitch/branches/seven/libs/apr/time/win32/access.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/time/win32/access.c
   freeswitch/branches/seven/libs/apr/time/win32/time.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/time/win32/time.c
   freeswitch/branches/seven/libs/apr/time/win32/timestr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/time/win32/timestr.c
   freeswitch/branches/seven/libs/apr/user/
      - copied from r11459, /freeswitch/trunk/libs/apr/user/
   freeswitch/branches/seven/libs/apr/user/netware/
      - copied from r11459, /freeswitch/trunk/libs/apr/user/netware/
   freeswitch/branches/seven/libs/apr/user/netware/groupinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/user/netware/groupinfo.c
   freeswitch/branches/seven/libs/apr/user/netware/userinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/user/netware/userinfo.c
   freeswitch/branches/seven/libs/apr/user/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/apr/user/unix/
   freeswitch/branches/seven/libs/apr/user/unix/groupinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/user/unix/groupinfo.c
   freeswitch/branches/seven/libs/apr/user/unix/userinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/user/unix/userinfo.c
   freeswitch/branches/seven/libs/apr/user/win32/
      - copied from r11459, /freeswitch/trunk/libs/apr/user/win32/
   freeswitch/branches/seven/libs/apr/user/win32/groupinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/user/win32/groupinfo.c
   freeswitch/branches/seven/libs/apr/user/win32/userinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/apr/user/win32/userinfo.c
   freeswitch/branches/seven/libs/codec/
      - copied from r11459, /freeswitch/trunk/libs/codec/
   freeswitch/branches/seven/libs/codec/ilbc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/codec/ilbc/
   freeswitch/branches/seven/libs/codec/ilbc/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/.update
   freeswitch/branches/seven/libs/codec/ilbc/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/AUTHORS
   freeswitch/branches/seven/libs/codec/ilbc/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/COPYING
   freeswitch/branches/seven/libs/codec/ilbc/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/ChangeLog
   freeswitch/branches/seven/libs/codec/ilbc/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/INSTALL
   freeswitch/branches/seven/libs/codec/ilbc/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/Makefile.am
   freeswitch/branches/seven/libs/codec/ilbc/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/NEWS
   freeswitch/branches/seven/libs/codec/ilbc/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/README
   freeswitch/branches/seven/libs/codec/ilbc/acsite.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/acsite.m4
   freeswitch/branches/seven/libs/codec/ilbc/build/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/codec/ilbc/build/
   freeswitch/branches/seven/libs/codec/ilbc/build/config/
      - copied from r11459, /freeswitch/trunk/libs/codec/ilbc/build/config/
   freeswitch/branches/seven/libs/codec/ilbc/build/config/ac_cflags_gcc_option.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/build/config/ac_cflags_gcc_option.m4
   freeswitch/branches/seven/libs/codec/ilbc/build/config/ac_cflags_sun_option.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/build/config/ac_cflags_sun_option.m4
   freeswitch/branches/seven/libs/codec/ilbc/build/config/ac_gcc_archflag.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/build/config/ac_gcc_archflag.m4
   freeswitch/branches/seven/libs/codec/ilbc/build/config/ac_gcc_x86_cpuid.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/build/config/ac_gcc_x86_cpuid.m4
   freeswitch/branches/seven/libs/codec/ilbc/build/config/ac_prog_gzip.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/build/config/ac_prog_gzip.m4
   freeswitch/branches/seven/libs/codec/ilbc/build/config/ac_prog_wget.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/build/config/ac_prog_wget.m4
   freeswitch/branches/seven/libs/codec/ilbc/build/config/ax_cc_maxopt.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/build/config/ax_cc_maxopt.m4
   freeswitch/branches/seven/libs/codec/ilbc/build/config/ax_cflags_warn_all_ansi.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/build/config/ax_cflags_warn_all_ansi.m4
   freeswitch/branches/seven/libs/codec/ilbc/build/config/ax_check_compiler_flags.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/build/config/ax_check_compiler_flags.m4
   freeswitch/branches/seven/libs/codec/ilbc/build/config/ax_compiler_vendor.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/build/config/ax_compiler_vendor.m4
   freeswitch/branches/seven/libs/codec/ilbc/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/configure.gnu
   freeswitch/branches/seven/libs/codec/ilbc/configure.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/configure.in
   freeswitch/branches/seven/libs/codec/ilbc/draft-ietf-avt-ilbc-codec-05.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/draft-ietf-avt-ilbc-codec-05.txt
   freeswitch/branches/seven/libs/codec/ilbc/libilbc.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/libilbc.2008.vcproj
   freeswitch/branches/seven/libs/codec/ilbc/libilbc.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/libilbc.vcproj
   freeswitch/branches/seven/libs/codec/ilbc/src/
      - copied from r11459, /freeswitch/trunk/libs/codec/ilbc/src/
   freeswitch/branches/seven/libs/codec/ilbc/src/FrameClassify.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/FrameClassify.c
   freeswitch/branches/seven/libs/codec/ilbc/src/FrameClassify.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/FrameClassify.h
   freeswitch/branches/seven/libs/codec/ilbc/src/LPCdecode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/LPCdecode.c
   freeswitch/branches/seven/libs/codec/ilbc/src/LPCdecode.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/LPCdecode.h
   freeswitch/branches/seven/libs/codec/ilbc/src/LPCencode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/LPCencode.c
   freeswitch/branches/seven/libs/codec/ilbc/src/LPCencode.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/LPCencode.h
   freeswitch/branches/seven/libs/codec/ilbc/src/StateConstructW.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/StateConstructW.c
   freeswitch/branches/seven/libs/codec/ilbc/src/StateConstructW.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/StateConstructW.h
   freeswitch/branches/seven/libs/codec/ilbc/src/StateSearchW.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/StateSearchW.c
   freeswitch/branches/seven/libs/codec/ilbc/src/StateSearchW.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/StateSearchW.h
   freeswitch/branches/seven/libs/codec/ilbc/src/anaFilter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/anaFilter.c
   freeswitch/branches/seven/libs/codec/ilbc/src/anaFilter.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/anaFilter.h
   freeswitch/branches/seven/libs/codec/ilbc/src/constants.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/constants.c
   freeswitch/branches/seven/libs/codec/ilbc/src/constants.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/constants.h
   freeswitch/branches/seven/libs/codec/ilbc/src/createCB.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/createCB.c
   freeswitch/branches/seven/libs/codec/ilbc/src/createCB.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/createCB.h
   freeswitch/branches/seven/libs/codec/ilbc/src/doCPLC.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/doCPLC.c
   freeswitch/branches/seven/libs/codec/ilbc/src/doCPLC.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/doCPLC.h
   freeswitch/branches/seven/libs/codec/ilbc/src/enhancer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/enhancer.c
   freeswitch/branches/seven/libs/codec/ilbc/src/enhancer.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/enhancer.h
   freeswitch/branches/seven/libs/codec/ilbc/src/extract-cfile.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/extract-cfile.awk
   freeswitch/branches/seven/libs/codec/ilbc/src/filter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/filter.c
   freeswitch/branches/seven/libs/codec/ilbc/src/filter.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/filter.h
   freeswitch/branches/seven/libs/codec/ilbc/src/gainquant.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/gainquant.c
   freeswitch/branches/seven/libs/codec/ilbc/src/gainquant.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/gainquant.h
   freeswitch/branches/seven/libs/codec/ilbc/src/getCBvec.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/getCBvec.c
   freeswitch/branches/seven/libs/codec/ilbc/src/getCBvec.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/getCBvec.h
   freeswitch/branches/seven/libs/codec/ilbc/src/helpfun.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/helpfun.c
   freeswitch/branches/seven/libs/codec/ilbc/src/helpfun.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/helpfun.h
   freeswitch/branches/seven/libs/codec/ilbc/src/hpInput.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/hpInput.c
   freeswitch/branches/seven/libs/codec/ilbc/src/hpInput.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/hpInput.h
   freeswitch/branches/seven/libs/codec/ilbc/src/hpOutput.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/hpOutput.c
   freeswitch/branches/seven/libs/codec/ilbc/src/hpOutput.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/hpOutput.h
   freeswitch/branches/seven/libs/codec/ilbc/src/iCBConstruct.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/iCBConstruct.c
   freeswitch/branches/seven/libs/codec/ilbc/src/iCBConstruct.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/iCBConstruct.h
   freeswitch/branches/seven/libs/codec/ilbc/src/iCBSearch.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/iCBSearch.c
   freeswitch/branches/seven/libs/codec/ilbc/src/iCBSearch.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/iCBSearch.h
   freeswitch/branches/seven/libs/codec/ilbc/src/iLBC_decode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/iLBC_decode.c
   freeswitch/branches/seven/libs/codec/ilbc/src/iLBC_decode.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/iLBC_decode.h
   freeswitch/branches/seven/libs/codec/ilbc/src/iLBC_define.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/iLBC_define.h
   freeswitch/branches/seven/libs/codec/ilbc/src/iLBC_encode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/iLBC_encode.c
   freeswitch/branches/seven/libs/codec/ilbc/src/iLBC_encode.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/iLBC_encode.h
   freeswitch/branches/seven/libs/codec/ilbc/src/lsf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/lsf.c
   freeswitch/branches/seven/libs/codec/ilbc/src/lsf.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/lsf.h
   freeswitch/branches/seven/libs/codec/ilbc/src/packing.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/packing.c
   freeswitch/branches/seven/libs/codec/ilbc/src/packing.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/packing.h
   freeswitch/branches/seven/libs/codec/ilbc/src/syntFilter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/syntFilter.c
   freeswitch/branches/seven/libs/codec/ilbc/src/syntFilter.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/codec/ilbc/src/syntFilter.h
   freeswitch/branches/seven/libs/curl/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/
   freeswitch/branches/seven/libs/curl/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/.update
   freeswitch/branches/seven/libs/curl/CHANGES
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/CHANGES
   freeswitch/branches/seven/libs/curl/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/COPYING
   freeswitch/branches/seven/libs/curl/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/Makefile.am
   freeswitch/branches/seven/libs/curl/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/README
   freeswitch/branches/seven/libs/curl/RELEASE-NOTES
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/RELEASE-NOTES
   freeswitch/branches/seven/libs/curl/acinclude.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/acinclude.m4
   freeswitch/branches/seven/libs/curl/buildconf
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/buildconf
   freeswitch/branches/seven/libs/curl/buildconf.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/buildconf.bat
   freeswitch/branches/seven/libs/curl/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/configure.ac
   freeswitch/branches/seven/libs/curl/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/configure.gnu
   freeswitch/branches/seven/libs/curl/curl-config.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/curl-config.in
   freeswitch/branches/seven/libs/curl/curl-style.el
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/curl-style.el
   freeswitch/branches/seven/libs/curl/include/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/include/
   freeswitch/branches/seven/libs/curl/include/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/include/Makefile.am
   freeswitch/branches/seven/libs/curl/include/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/include/README
   freeswitch/branches/seven/libs/curl/include/curl/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/include/curl/
   freeswitch/branches/seven/libs/curl/include/curl/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/include/curl/Makefile.am
   freeswitch/branches/seven/libs/curl/include/curl/curl.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/include/curl/curl.h
   freeswitch/branches/seven/libs/curl/include/curl/curlver.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/include/curl/curlver.h
   freeswitch/branches/seven/libs/curl/include/curl/easy.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/include/curl/easy.h
   freeswitch/branches/seven/libs/curl/include/curl/mprintf.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/include/curl/mprintf.h
   freeswitch/branches/seven/libs/curl/include/curl/multi.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/include/curl/multi.h
   freeswitch/branches/seven/libs/curl/include/curl/stdcheaders.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/include/curl/stdcheaders.h
   freeswitch/branches/seven/libs/curl/include/curl/types.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/include/curl/types.h
   freeswitch/branches/seven/libs/curl/lib/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/lib/
   freeswitch/branches/seven/libs/curl/lib/Makefile.Watcom
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/Makefile.Watcom
   freeswitch/branches/seven/libs/curl/lib/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/Makefile.am
   freeswitch/branches/seven/libs/curl/lib/Makefile.b32
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/Makefile.b32
   freeswitch/branches/seven/libs/curl/lib/Makefile.inc
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/Makefile.inc
   freeswitch/branches/seven/libs/curl/lib/Makefile.m32
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/Makefile.m32
   freeswitch/branches/seven/libs/curl/lib/Makefile.netware
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/Makefile.netware
   freeswitch/branches/seven/libs/curl/lib/Makefile.riscos
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/Makefile.riscos
   freeswitch/branches/seven/libs/curl/lib/Makefile.vc6
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/Makefile.vc6
   freeswitch/branches/seven/libs/curl/lib/README.ares
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/README.ares
   freeswitch/branches/seven/libs/curl/lib/README.curlx
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/README.curlx
   freeswitch/branches/seven/libs/curl/lib/README.encoding
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/README.encoding
   freeswitch/branches/seven/libs/curl/lib/README.hostip
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/README.hostip
   freeswitch/branches/seven/libs/curl/lib/README.httpauth
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/README.httpauth
   freeswitch/branches/seven/libs/curl/lib/README.memoryleak
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/README.memoryleak
   freeswitch/branches/seven/libs/curl/lib/README.multi_socket
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/README.multi_socket
   freeswitch/branches/seven/libs/curl/lib/README.pipelining
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/README.pipelining
   freeswitch/branches/seven/libs/curl/lib/amigaos.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/amigaos.c
   freeswitch/branches/seven/libs/curl/lib/amigaos.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/amigaos.h
   freeswitch/branches/seven/libs/curl/lib/arpa_telnet.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/arpa_telnet.h
   freeswitch/branches/seven/libs/curl/lib/base64.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/base64.c
   freeswitch/branches/seven/libs/curl/lib/base64.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/base64.h
   freeswitch/branches/seven/libs/curl/lib/ca-bundle.crt
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/ca-bundle.crt
   freeswitch/branches/seven/libs/curl/lib/config-amigaos.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/config-amigaos.h
   freeswitch/branches/seven/libs/curl/lib/config-mac.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/config-mac.h
   freeswitch/branches/seven/libs/curl/lib/config-riscos.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/config-riscos.h
   freeswitch/branches/seven/libs/curl/lib/config-tpf.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/config-tpf.h
   freeswitch/branches/seven/libs/curl/lib/config-win32.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/config-win32.h
   freeswitch/branches/seven/libs/curl/lib/config-win32ce.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/config-win32ce.h
   freeswitch/branches/seven/libs/curl/lib/config.dos
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/config.dos
   freeswitch/branches/seven/libs/curl/lib/connect.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/connect.c
   freeswitch/branches/seven/libs/curl/lib/connect.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/connect.h
   freeswitch/branches/seven/libs/curl/lib/content_encoding.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/content_encoding.c
   freeswitch/branches/seven/libs/curl/lib/content_encoding.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/content_encoding.h
   freeswitch/branches/seven/libs/curl/lib/cookie.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/cookie.c
   freeswitch/branches/seven/libs/curl/lib/cookie.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/cookie.h
   freeswitch/branches/seven/libs/curl/lib/curllib.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/curllib.dsp
   freeswitch/branches/seven/libs/curl/lib/curllib.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/curllib.dsw
   freeswitch/branches/seven/libs/curl/lib/curllib.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/curllib.vcproj
   freeswitch/branches/seven/libs/curl/lib/curlx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/curlx.h
   freeswitch/branches/seven/libs/curl/lib/dict.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/dict.c
   freeswitch/branches/seven/libs/curl/lib/dict.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/dict.h
   freeswitch/branches/seven/libs/curl/lib/easy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/easy.c
   freeswitch/branches/seven/libs/curl/lib/easyif.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/easyif.h
   freeswitch/branches/seven/libs/curl/lib/escape.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/escape.c
   freeswitch/branches/seven/libs/curl/lib/escape.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/escape.h
   freeswitch/branches/seven/libs/curl/lib/file.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/file.c
   freeswitch/branches/seven/libs/curl/lib/file.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/file.h
   freeswitch/branches/seven/libs/curl/lib/formdata.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/formdata.c
   freeswitch/branches/seven/libs/curl/lib/formdata.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/formdata.h
   freeswitch/branches/seven/libs/curl/lib/ftp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/ftp.c
   freeswitch/branches/seven/libs/curl/lib/ftp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/ftp.h
   freeswitch/branches/seven/libs/curl/lib/getenv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/getenv.c
   freeswitch/branches/seven/libs/curl/lib/getinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/getinfo.c
   freeswitch/branches/seven/libs/curl/lib/getinfo.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/getinfo.h
   freeswitch/branches/seven/libs/curl/lib/gtls.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/gtls.c
   freeswitch/branches/seven/libs/curl/lib/gtls.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/gtls.h
   freeswitch/branches/seven/libs/curl/lib/hash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/hash.c
   freeswitch/branches/seven/libs/curl/lib/hash.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/hash.h
   freeswitch/branches/seven/libs/curl/lib/hostares.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/hostares.c
   freeswitch/branches/seven/libs/curl/lib/hostasyn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/hostasyn.c
   freeswitch/branches/seven/libs/curl/lib/hostip.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/hostip.c
   freeswitch/branches/seven/libs/curl/lib/hostip.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/hostip.h
   freeswitch/branches/seven/libs/curl/lib/hostip4.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/hostip4.c
   freeswitch/branches/seven/libs/curl/lib/hostip6.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/hostip6.c
   freeswitch/branches/seven/libs/curl/lib/hostsyn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/hostsyn.c
   freeswitch/branches/seven/libs/curl/lib/hostthre.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/hostthre.c
   freeswitch/branches/seven/libs/curl/lib/http.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/http.c
   freeswitch/branches/seven/libs/curl/lib/http.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/http.h
   freeswitch/branches/seven/libs/curl/lib/http_chunks.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/http_chunks.c
   freeswitch/branches/seven/libs/curl/lib/http_chunks.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/http_chunks.h
   freeswitch/branches/seven/libs/curl/lib/http_digest.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/http_digest.c
   freeswitch/branches/seven/libs/curl/lib/http_digest.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/http_digest.h
   freeswitch/branches/seven/libs/curl/lib/http_negotiate.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/http_negotiate.c
   freeswitch/branches/seven/libs/curl/lib/http_negotiate.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/http_negotiate.h
   freeswitch/branches/seven/libs/curl/lib/http_ntlm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/http_ntlm.c
   freeswitch/branches/seven/libs/curl/lib/http_ntlm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/http_ntlm.h
   freeswitch/branches/seven/libs/curl/lib/if2ip.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/if2ip.c
   freeswitch/branches/seven/libs/curl/lib/if2ip.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/if2ip.h
   freeswitch/branches/seven/libs/curl/lib/inet_ntoa_r.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/inet_ntoa_r.h
   freeswitch/branches/seven/libs/curl/lib/inet_ntop.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/inet_ntop.c
   freeswitch/branches/seven/libs/curl/lib/inet_ntop.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/inet_ntop.h
   freeswitch/branches/seven/libs/curl/lib/inet_pton.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/inet_pton.c
   freeswitch/branches/seven/libs/curl/lib/inet_pton.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/inet_pton.h
   freeswitch/branches/seven/libs/curl/lib/krb4.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/krb4.c
   freeswitch/branches/seven/libs/curl/lib/krb4.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/krb4.h
   freeswitch/branches/seven/libs/curl/lib/ldap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/ldap.c
   freeswitch/branches/seven/libs/curl/lib/ldap.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/ldap.h
   freeswitch/branches/seven/libs/curl/lib/libcurl.framework.make
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/libcurl.framework.make
   freeswitch/branches/seven/libs/curl/lib/libcurl.imp
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/libcurl.imp
   freeswitch/branches/seven/libs/curl/lib/libcurl.plist
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/libcurl.plist
   freeswitch/branches/seven/libs/curl/lib/libcurl.rc
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/libcurl.rc
   freeswitch/branches/seven/libs/curl/lib/llist.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/llist.c
   freeswitch/branches/seven/libs/curl/lib/llist.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/llist.h
   freeswitch/branches/seven/libs/curl/lib/makefile.amiga
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/makefile.amiga
   freeswitch/branches/seven/libs/curl/lib/makefile.dj
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/makefile.dj
   freeswitch/branches/seven/libs/curl/lib/md5.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/md5.c
   freeswitch/branches/seven/libs/curl/lib/md5.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/md5.h
   freeswitch/branches/seven/libs/curl/lib/memdebug.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/memdebug.c
   freeswitch/branches/seven/libs/curl/lib/memdebug.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/memdebug.h
   freeswitch/branches/seven/libs/curl/lib/memory.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/memory.h
   freeswitch/branches/seven/libs/curl/lib/mprintf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/mprintf.c
   freeswitch/branches/seven/libs/curl/lib/msvcproj.foot
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/msvcproj.foot
   freeswitch/branches/seven/libs/curl/lib/msvcproj.head
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/msvcproj.head
   freeswitch/branches/seven/libs/curl/lib/multi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/multi.c
   freeswitch/branches/seven/libs/curl/lib/multiif.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/multiif.h
   freeswitch/branches/seven/libs/curl/lib/netrc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/netrc.c
   freeswitch/branches/seven/libs/curl/lib/netrc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/netrc.h
   freeswitch/branches/seven/libs/curl/lib/nwlib.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/nwlib.c
   freeswitch/branches/seven/libs/curl/lib/parsedate.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/parsedate.c
   freeswitch/branches/seven/libs/curl/lib/parsedate.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/parsedate.h
   freeswitch/branches/seven/libs/curl/lib/progress.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/progress.c
   freeswitch/branches/seven/libs/curl/lib/progress.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/progress.h
   freeswitch/branches/seven/libs/curl/lib/security.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/security.c
   freeswitch/branches/seven/libs/curl/lib/select.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/select.c
   freeswitch/branches/seven/libs/curl/lib/select.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/select.h
   freeswitch/branches/seven/libs/curl/lib/sendf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/sendf.c
   freeswitch/branches/seven/libs/curl/lib/sendf.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/sendf.h
   freeswitch/branches/seven/libs/curl/lib/setup.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/setup.h
   freeswitch/branches/seven/libs/curl/lib/setup_once.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/setup_once.h
   freeswitch/branches/seven/libs/curl/lib/share.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/share.c
   freeswitch/branches/seven/libs/curl/lib/share.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/share.h
   freeswitch/branches/seven/libs/curl/lib/sockaddr.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/sockaddr.h
   freeswitch/branches/seven/libs/curl/lib/socks.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/socks.c
   freeswitch/branches/seven/libs/curl/lib/socks.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/socks.h
   freeswitch/branches/seven/libs/curl/lib/speedcheck.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/speedcheck.c
   freeswitch/branches/seven/libs/curl/lib/speedcheck.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/speedcheck.h
   freeswitch/branches/seven/libs/curl/lib/splay.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/splay.c
   freeswitch/branches/seven/libs/curl/lib/splay.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/splay.h
   freeswitch/branches/seven/libs/curl/lib/sslgen.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/sslgen.c
   freeswitch/branches/seven/libs/curl/lib/sslgen.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/sslgen.h
   freeswitch/branches/seven/libs/curl/lib/ssluse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/ssluse.c
   freeswitch/branches/seven/libs/curl/lib/ssluse.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/ssluse.h
   freeswitch/branches/seven/libs/curl/lib/strdup.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/strdup.c
   freeswitch/branches/seven/libs/curl/lib/strdup.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/strdup.h
   freeswitch/branches/seven/libs/curl/lib/strequal.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/strequal.c
   freeswitch/branches/seven/libs/curl/lib/strequal.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/strequal.h
   freeswitch/branches/seven/libs/curl/lib/strerror.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/strerror.c
   freeswitch/branches/seven/libs/curl/lib/strerror.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/strerror.h
   freeswitch/branches/seven/libs/curl/lib/strtok.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/strtok.c
   freeswitch/branches/seven/libs/curl/lib/strtok.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/strtok.h
   freeswitch/branches/seven/libs/curl/lib/strtoofft.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/strtoofft.c
   freeswitch/branches/seven/libs/curl/lib/strtoofft.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/strtoofft.h
   freeswitch/branches/seven/libs/curl/lib/telnet.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/telnet.c
   freeswitch/branches/seven/libs/curl/lib/telnet.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/telnet.h
   freeswitch/branches/seven/libs/curl/lib/tftp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/tftp.c
   freeswitch/branches/seven/libs/curl/lib/tftp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/tftp.h
   freeswitch/branches/seven/libs/curl/lib/timeval.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/timeval.c
   freeswitch/branches/seven/libs/curl/lib/timeval.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/timeval.h
   freeswitch/branches/seven/libs/curl/lib/transfer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/transfer.c
   freeswitch/branches/seven/libs/curl/lib/transfer.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/transfer.h
   freeswitch/branches/seven/libs/curl/lib/url.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/url.c
   freeswitch/branches/seven/libs/curl/lib/url.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/url.h
   freeswitch/branches/seven/libs/curl/lib/urldata.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/urldata.h
   freeswitch/branches/seven/libs/curl/lib/version.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/lib/version.c
   freeswitch/branches/seven/libs/curl/libcurl.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/libcurl.pc.in
   freeswitch/branches/seven/libs/curl/maketgz
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/maketgz
   freeswitch/branches/seven/libs/curl/mkinstalldirs
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/mkinstalldirs
   freeswitch/branches/seven/libs/curl/packages/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/
   freeswitch/branches/seven/libs/curl/packages/AIX/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/AIX/
   freeswitch/branches/seven/libs/curl/packages/AIX/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/AIX/Makefile.am
   freeswitch/branches/seven/libs/curl/packages/AIX/RPM/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/AIX/RPM/
   freeswitch/branches/seven/libs/curl/packages/AIX/RPM/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/AIX/RPM/Makefile.am
   freeswitch/branches/seven/libs/curl/packages/AIX/RPM/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/AIX/RPM/README
   freeswitch/branches/seven/libs/curl/packages/AIX/RPM/curl.spec.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/AIX/RPM/curl.spec.in
   freeswitch/branches/seven/libs/curl/packages/DOS/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/DOS/
   freeswitch/branches/seven/libs/curl/packages/DOS/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/DOS/Makefile.am
   freeswitch/branches/seven/libs/curl/packages/DOS/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/DOS/README
   freeswitch/branches/seven/libs/curl/packages/DOS/common.dj
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/DOS/common.dj
   freeswitch/branches/seven/libs/curl/packages/EPM/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/EPM/
   freeswitch/branches/seven/libs/curl/packages/EPM/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/EPM/Makefile.am
   freeswitch/branches/seven/libs/curl/packages/EPM/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/EPM/README
   freeswitch/branches/seven/libs/curl/packages/EPM/curl.list.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/EPM/curl.list.in
   freeswitch/branches/seven/libs/curl/packages/Linux/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/Linux/
   freeswitch/branches/seven/libs/curl/packages/Linux/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/Linux/Makefile.am
   freeswitch/branches/seven/libs/curl/packages/Linux/RPM/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/Linux/RPM/
   freeswitch/branches/seven/libs/curl/packages/Linux/RPM/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/Linux/RPM/Makefile.am
   freeswitch/branches/seven/libs/curl/packages/Linux/RPM/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/Linux/RPM/README
   freeswitch/branches/seven/libs/curl/packages/Linux/RPM/curl-ssl.spec.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/Linux/RPM/curl-ssl.spec.in
   freeswitch/branches/seven/libs/curl/packages/Linux/RPM/curl.spec.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/Linux/RPM/curl.spec.in
   freeswitch/branches/seven/libs/curl/packages/Linux/RPM/make_curl_rpm
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/Linux/RPM/make_curl_rpm
   freeswitch/branches/seven/libs/curl/packages/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/Makefile.am
   freeswitch/branches/seven/libs/curl/packages/NetWare/
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/NetWare/
   freeswitch/branches/seven/libs/curl/packages/NetWare/get_ver.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/NetWare/get_ver.awk
   freeswitch/branches/seven/libs/curl/packages/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/README
   freeswitch/branches/seven/libs/curl/packages/Solaris/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/Solaris/
   freeswitch/branches/seven/libs/curl/packages/Solaris/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/Solaris/Makefile.am
   freeswitch/branches/seven/libs/curl/packages/Win32/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/Win32/
   freeswitch/branches/seven/libs/curl/packages/Win32/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/Win32/Makefile.am
   freeswitch/branches/seven/libs/curl/packages/Win32/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/Win32/README
   freeswitch/branches/seven/libs/curl/packages/Win32/cygwin/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/Win32/cygwin/
   freeswitch/branches/seven/libs/curl/packages/Win32/cygwin/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/Win32/cygwin/Makefile.am
   freeswitch/branches/seven/libs/curl/packages/Win32/cygwin/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/Win32/cygwin/README
   freeswitch/branches/seven/libs/curl/packages/vms/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/vms/
   freeswitch/branches/seven/libs/curl/packages/vms/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/Makefile.am
   freeswitch/branches/seven/libs/curl/packages/vms/axp/
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/vms/axp/
   freeswitch/branches/seven/libs/curl/packages/vms/axp/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/axp/README
   freeswitch/branches/seven/libs/curl/packages/vms/batch_compile.com
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/batch_compile.com
   freeswitch/branches/seven/libs/curl/packages/vms/build_vms.com
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/build_vms.com
   freeswitch/branches/seven/libs/curl/packages/vms/config-vms.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/config-vms.h
   freeswitch/branches/seven/libs/curl/packages/vms/curlmsg.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/curlmsg.h
   freeswitch/branches/seven/libs/curl/packages/vms/curlmsg.msg
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/curlmsg.msg
   freeswitch/branches/seven/libs/curl/packages/vms/curlmsg.sdl
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/curlmsg.sdl
   freeswitch/branches/seven/libs/curl/packages/vms/curlmsg_vms.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/curlmsg_vms.h
   freeswitch/branches/seven/libs/curl/packages/vms/defines.com
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/defines.com
   freeswitch/branches/seven/libs/curl/packages/vms/hpssl_alpha.opt
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/hpssl_alpha.opt
   freeswitch/branches/seven/libs/curl/packages/vms/hpssl_ia64.opt
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/hpssl_ia64.opt
   freeswitch/branches/seven/libs/curl/packages/vms/hpssl_vax.opt
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/hpssl_vax.opt
   freeswitch/branches/seven/libs/curl/packages/vms/ia64/
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/vms/ia64/
   freeswitch/branches/seven/libs/curl/packages/vms/ia64/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/ia64/README
   freeswitch/branches/seven/libs/curl/packages/vms/readme
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/readme
   freeswitch/branches/seven/libs/curl/packages/vms/vax/
      - copied from r11459, /freeswitch/trunk/libs/curl/packages/vms/vax/
   freeswitch/branches/seven/libs/curl/packages/vms/vax/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/packages/vms/vax/README
   freeswitch/branches/seven/libs/curl/reconf
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/reconf
   freeswitch/branches/seven/libs/curl/sample.emacs
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/sample.emacs
   freeswitch/branches/seven/libs/curl/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/curl/src/
   freeswitch/branches/seven/libs/curl/src/Makefile.Watcom
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/Makefile.Watcom
   freeswitch/branches/seven/libs/curl/src/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/Makefile.am
   freeswitch/branches/seven/libs/curl/src/Makefile.b32
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/Makefile.b32
   freeswitch/branches/seven/libs/curl/src/Makefile.inc
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/Makefile.inc
   freeswitch/branches/seven/libs/curl/src/Makefile.m32
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/Makefile.m32
   freeswitch/branches/seven/libs/curl/src/Makefile.netware
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/Makefile.netware
   freeswitch/branches/seven/libs/curl/src/Makefile.riscos
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/Makefile.riscos
   freeswitch/branches/seven/libs/curl/src/Makefile.vc6
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/Makefile.vc6
   freeswitch/branches/seven/libs/curl/src/config-amigaos.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/config-amigaos.h
   freeswitch/branches/seven/libs/curl/src/config-mac.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/config-mac.h
   freeswitch/branches/seven/libs/curl/src/config-riscos.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/config-riscos.h
   freeswitch/branches/seven/libs/curl/src/config-win32.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/config-win32.h
   freeswitch/branches/seven/libs/curl/src/config.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/config.h.in
   freeswitch/branches/seven/libs/curl/src/curl.rc
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/curl.rc
   freeswitch/branches/seven/libs/curl/src/getpass.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/getpass.c
   freeswitch/branches/seven/libs/curl/src/getpass.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/getpass.h
   freeswitch/branches/seven/libs/curl/src/homedir.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/homedir.c
   freeswitch/branches/seven/libs/curl/src/homedir.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/homedir.h
   freeswitch/branches/seven/libs/curl/src/hugehelp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/hugehelp.h
   freeswitch/branches/seven/libs/curl/src/macos/
      - copied from r11459, /freeswitch/trunk/libs/curl/src/macos/
   freeswitch/branches/seven/libs/curl/src/macos/MACINSTALL.TXT
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/macos/MACINSTALL.TXT
   freeswitch/branches/seven/libs/curl/src/macos/curl.mcp.xml.sit.hqx
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/macos/curl.mcp.xml.sit.hqx
   freeswitch/branches/seven/libs/curl/src/macos/src/
      - copied from r11459, /freeswitch/trunk/libs/curl/src/macos/src/
   freeswitch/branches/seven/libs/curl/src/macos/src/curl_GUSIConfig.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/macos/src/curl_GUSIConfig.cpp
   freeswitch/branches/seven/libs/curl/src/macos/src/macos_main.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/macos/src/macos_main.cpp
   freeswitch/branches/seven/libs/curl/src/main.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/main.c
   freeswitch/branches/seven/libs/curl/src/makefile.amiga
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/makefile.amiga
   freeswitch/branches/seven/libs/curl/src/makefile.dj
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/makefile.dj
   freeswitch/branches/seven/libs/curl/src/mkhelp.pl
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/mkhelp.pl
   freeswitch/branches/seven/libs/curl/src/setup.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/setup.h
   freeswitch/branches/seven/libs/curl/src/urlglob.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/urlglob.c
   freeswitch/branches/seven/libs/curl/src/urlglob.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/urlglob.h
   freeswitch/branches/seven/libs/curl/src/version.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/version.h
   freeswitch/branches/seven/libs/curl/src/writeenv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/writeenv.c
   freeswitch/branches/seven/libs/curl/src/writeenv.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/writeenv.h
   freeswitch/branches/seven/libs/curl/src/writeout.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/writeout.c
   freeswitch/branches/seven/libs/curl/src/writeout.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/curl/src/writeout.h
   freeswitch/branches/seven/libs/esl/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/esl/
   freeswitch/branches/seven/libs/esl/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/Makefile
   freeswitch/branches/seven/libs/esl/fs_cli.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/fs_cli.2008.vcproj
   freeswitch/branches/seven/libs/esl/fs_cli.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/fs_cli.c
   freeswitch/branches/seven/libs/esl/fs_cli.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/fs_cli.conf
   freeswitch/branches/seven/libs/esl/getopt/
      - copied from r11459, /freeswitch/trunk/libs/esl/getopt/
   freeswitch/branches/seven/libs/esl/getopt/getopt.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/getopt/getopt.h
   freeswitch/branches/seven/libs/esl/getopt/getopt_long.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/getopt/getopt_long.c
   freeswitch/branches/seven/libs/esl/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/esl/src/
   freeswitch/branches/seven/libs/esl/src/esl.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/src/esl.2008.vcproj
   freeswitch/branches/seven/libs/esl/src/esl.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/src/esl.c
   freeswitch/branches/seven/libs/esl/src/esl_config.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/src/esl_config.c
   freeswitch/branches/seven/libs/esl/src/esl_event.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/src/esl_event.c
   freeswitch/branches/seven/libs/esl/src/esl_threadmutex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/src/esl_threadmutex.c
   freeswitch/branches/seven/libs/esl/src/include/
      - copied from r11459, /freeswitch/trunk/libs/esl/src/include/
   freeswitch/branches/seven/libs/esl/src/include/esl.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/src/include/esl.h
   freeswitch/branches/seven/libs/esl/src/include/esl_config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/src/include/esl_config.h
   freeswitch/branches/seven/libs/esl/src/include/esl_event.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/src/include/esl_event.h
   freeswitch/branches/seven/libs/esl/src/include/esl_threadmutex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/src/include/esl_threadmutex.h
   freeswitch/branches/seven/libs/esl/testclient.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/testclient.c
   freeswitch/branches/seven/libs/esl/testserver.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/esl/testserver.c
   freeswitch/branches/seven/libs/iksemel/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/iksemel/
   freeswitch/branches/seven/libs/iksemel/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/.update
   freeswitch/branches/seven/libs/iksemel/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/AUTHORS
   freeswitch/branches/seven/libs/iksemel/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/COPYING
   freeswitch/branches/seven/libs/iksemel/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/ChangeLog
   freeswitch/branches/seven/libs/iksemel/HACKING
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/HACKING
   freeswitch/branches/seven/libs/iksemel/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/INSTALL
   freeswitch/branches/seven/libs/iksemel/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/Makefile.am
   freeswitch/branches/seven/libs/iksemel/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/NEWS
   freeswitch/branches/seven/libs/iksemel/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/README
   freeswitch/branches/seven/libs/iksemel/TODO
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/TODO
   freeswitch/branches/seven/libs/iksemel/acsite.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/acsite.m4
   freeswitch/branches/seven/libs/iksemel/build/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/iksemel/build/
   freeswitch/branches/seven/libs/iksemel/build/libgnutls.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/build/libgnutls.m4
   freeswitch/branches/seven/libs/iksemel/build/texinfo.tex
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/build/texinfo.tex
   freeswitch/branches/seven/libs/iksemel/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/configure.ac
   freeswitch/branches/seven/libs/iksemel/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/configure.gnu
   freeswitch/branches/seven/libs/iksemel/doc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/iksemel/doc/
   freeswitch/branches/seven/libs/iksemel/doc/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/doc/Makefile.am
   freeswitch/branches/seven/libs/iksemel/doc/iksemel
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/doc/iksemel
   freeswitch/branches/seven/libs/iksemel/doc/iksemel.texi
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/doc/iksemel.texi
   freeswitch/branches/seven/libs/iksemel/iksemel.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/iksemel.pc.in
   freeswitch/branches/seven/libs/iksemel/include/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/iksemel/include/
   freeswitch/branches/seven/libs/iksemel/include/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/include/Makefile.am
   freeswitch/branches/seven/libs/iksemel/include/common.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/include/common.h
   freeswitch/branches/seven/libs/iksemel/include/finetune.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/include/finetune.h
   freeswitch/branches/seven/libs/iksemel/include/iksemel.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/include/iksemel.h
   freeswitch/branches/seven/libs/iksemel/include/stamp-h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/include/stamp-h.in
   freeswitch/branches/seven/libs/iksemel/ltmain.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/ltmain.sh
   freeswitch/branches/seven/libs/iksemel/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/iksemel/src/
   freeswitch/branches/seven/libs/iksemel/src/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/Makefile.am
   freeswitch/branches/seven/libs/iksemel/src/base64.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/base64.c
   freeswitch/branches/seven/libs/iksemel/src/dom.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/dom.c
   freeswitch/branches/seven/libs/iksemel/src/filter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/filter.c
   freeswitch/branches/seven/libs/iksemel/src/iks.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/iks.c
   freeswitch/branches/seven/libs/iksemel/src/ikstack.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/ikstack.c
   freeswitch/branches/seven/libs/iksemel/src/io-posix.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/io-posix.c
   freeswitch/branches/seven/libs/iksemel/src/jabber.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/jabber.c
   freeswitch/branches/seven/libs/iksemel/src/md5.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/md5.c
   freeswitch/branches/seven/libs/iksemel/src/sax.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/sax.c
   freeswitch/branches/seven/libs/iksemel/src/sha.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/sha.c
   freeswitch/branches/seven/libs/iksemel/src/stream.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/stream.c
   freeswitch/branches/seven/libs/iksemel/src/utility.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/src/utility.c
   freeswitch/branches/seven/libs/iksemel/test/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/iksemel/test/
   freeswitch/branches/seven/libs/iksemel/test/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/test/Makefile.am
   freeswitch/branches/seven/libs/iksemel/test/tst-dom.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/test/tst-dom.c
   freeswitch/branches/seven/libs/iksemel/test/tst-filter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/test/tst-filter.c
   freeswitch/branches/seven/libs/iksemel/test/tst-iks.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/test/tst-iks.c
   freeswitch/branches/seven/libs/iksemel/test/tst-ikstack.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/test/tst-ikstack.c
   freeswitch/branches/seven/libs/iksemel/test/tst-jid.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/test/tst-jid.c
   freeswitch/branches/seven/libs/iksemel/test/tst-md5.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/test/tst-md5.c
   freeswitch/branches/seven/libs/iksemel/test/tst-sax.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/test/tst-sax.c
   freeswitch/branches/seven/libs/iksemel/test/tst-sha.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/test/tst-sha.c
   freeswitch/branches/seven/libs/iksemel/tools/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/iksemel/tools/
   freeswitch/branches/seven/libs/iksemel/tools/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/tools/Makefile.am
   freeswitch/branches/seven/libs/iksemel/tools/hash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/tools/hash.c
   freeswitch/branches/seven/libs/iksemel/tools/ikslint.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/tools/ikslint.c
   freeswitch/branches/seven/libs/iksemel/tools/iksperf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/tools/iksperf.c
   freeswitch/branches/seven/libs/iksemel/tools/iksroster.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/tools/iksroster.c
   freeswitch/branches/seven/libs/iksemel/tools/perf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/tools/perf.c
   freeswitch/branches/seven/libs/iksemel/tools/perf.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/iksemel/tools/perf.h
   freeswitch/branches/seven/libs/js/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/
   freeswitch/branches/seven/libs/js/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/.update
   freeswitch/branches/seven/libs/js/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/AUTHORS
   freeswitch/branches/seven/libs/js/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/ChangeLog
   freeswitch/branches/seven/libs/js/LINKS
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/LINKS
   freeswitch/branches/seven/libs/js/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/Makefile.in
   freeswitch/branches/seven/libs/js/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/README
   freeswitch/branches/seven/libs/js/THANKS
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/THANKS
   freeswitch/branches/seven/libs/js/TODO
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/TODO
   freeswitch/branches/seven/libs/js/VERSION
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/VERSION
   freeswitch/branches/seven/libs/js/acsite.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/acsite.m4
   freeswitch/branches/seven/libs/js/config.hw
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/config.hw
   freeswitch/branches/seven/libs/js/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/configure.ac
   freeswitch/branches/seven/libs/js/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/configure.gnu
   freeswitch/branches/seven/libs/js/js-config.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/js-config.1
   freeswitch/branches/seven/libs/js/js-config.sh.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/js-config.sh.in
   freeswitch/branches/seven/libs/js/js.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/js.1
   freeswitch/branches/seven/libs/js/js.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/js.3
   freeswitch/branches/seven/libs/js/js.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/js.pc.in
   freeswitch/branches/seven/libs/js/jslint.js
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/jslint.js
   freeswitch/branches/seven/libs/js/libtool.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/libtool.m4
   freeswitch/branches/seven/libs/js/nsprpub/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/
   freeswitch/branches/seven/libs/js/nsprpub/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/.update
   freeswitch/branches/seven/libs/js/nsprpub/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/admin/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/admin/
   freeswitch/branches/seven/libs/js/nsprpub/admin/explode.pl
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/admin/explode.pl
   freeswitch/branches/seven/libs/js/nsprpub/admin/makeTargetDirs.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/admin/makeTargetDirs.sh
   freeswitch/branches/seven/libs/js/nsprpub/admin/repackage.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/admin/repackage.sh
   freeswitch/branches/seven/libs/js/nsprpub/admin/symlinks.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/admin/symlinks.sh
   freeswitch/branches/seven/libs/js/nsprpub/build/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/build/
   freeswitch/branches/seven/libs/js/nsprpub/build/autoconf/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/build/autoconf/
   freeswitch/branches/seven/libs/js/nsprpub/build/autoconf/install-sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/build/autoconf/install-sh
   freeswitch/branches/seven/libs/js/nsprpub/build/cygwin-wrapper
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/build/cygwin-wrapper
   freeswitch/branches/seven/libs/js/nsprpub/config/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/config/
   freeswitch/branches/seven/libs/js/nsprpub/config/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/config/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/config/autoconf.mk.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/autoconf.mk.in
   freeswitch/branches/seven/libs/js/nsprpub/config/config.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/config.mk
   freeswitch/branches/seven/libs/js/nsprpub/config/gcc_hidden.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/gcc_hidden.h
   freeswitch/branches/seven/libs/js/nsprpub/config/libc_r.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/libc_r.h
   freeswitch/branches/seven/libs/js/nsprpub/config/make-system-wrappers.pl
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/make-system-wrappers.pl
   freeswitch/branches/seven/libs/js/nsprpub/config/nfspwd.pl
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/nfspwd.pl
   freeswitch/branches/seven/libs/js/nsprpub/config/now.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/now.c
   freeswitch/branches/seven/libs/js/nsprpub/config/nsinstall.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/nsinstall.c
   freeswitch/branches/seven/libs/js/nsprpub/config/nspr-config.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/nspr-config.in
   freeswitch/branches/seven/libs/js/nsprpub/config/nspr.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/nspr.m4
   freeswitch/branches/seven/libs/js/nsprpub/config/nsprincl.mk.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/nsprincl.mk.in
   freeswitch/branches/seven/libs/js/nsprpub/config/nsprincl.sh.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/nsprincl.sh.in
   freeswitch/branches/seven/libs/js/nsprpub/config/pathsub.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/pathsub.h
   freeswitch/branches/seven/libs/js/nsprpub/config/prdepend.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/prdepend.h
   freeswitch/branches/seven/libs/js/nsprpub/config/prmkdir.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/prmkdir.bat
   freeswitch/branches/seven/libs/js/nsprpub/config/rules.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/rules.mk
   freeswitch/branches/seven/libs/js/nsprpub/config/system-headers
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/config/system-headers
   freeswitch/branches/seven/libs/js/nsprpub/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/configure.gnu
   freeswitch/branches/seven/libs/js/nsprpub/configure.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/configure.in
   freeswitch/branches/seven/libs/js/nsprpub/include/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/include/
   freeswitch/branches/seven/libs/js/nsprpub/lib/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/
   freeswitch/branches/seven/libs/js/nsprpub/lib/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/lib/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/MANIFEST
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/MANIFEST
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/plarena.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/plarena.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/plarena.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/plarena.h
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/plarenas.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/plarenas.h
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/plds.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/plds.def
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/plds.rc
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/plds.rc
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/plds_symvec.opt
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/plds_symvec.opt
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/plhash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/plhash.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/plhash.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/plhash.h
   freeswitch/branches/seven/libs/js/nsprpub/lib/ds/plvrsion.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/ds/plvrsion.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/README
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/include/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/include/
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/include/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/include/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/include/MANIFEST
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/include/MANIFEST
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/include/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/include/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/include/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/include/README
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/include/plbase64.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/include/plbase64.h
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/include/plerror.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/include/plerror.h
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/include/plgetopt.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/include/plgetopt.h
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/include/plresolv.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/include/plresolv.h
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/include/plstr.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/include/plstr.h
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/README
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/base64.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/base64.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/plc.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/plc.def
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/plc.rc
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/plc.rc
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/plc_symvec.opt
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/plc_symvec.opt
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/plerror.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/plerror.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/plgetopt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/plgetopt.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/plvrsion.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/plvrsion.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/strcat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/strcat.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/strccmp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/strccmp.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/strchr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/strchr.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/strcmp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/strcmp.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/strcpy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/strcpy.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/strcstr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/strcstr.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/strdup.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/strdup.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/strlen.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/strlen.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/strpbrk.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/strpbrk.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/strstr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/strstr.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/libc/src/strtok.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/libc/src/strtok.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/include/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/include/
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/include/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/include/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/include/MANIFEST
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/include/MANIFEST
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/include/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/include/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/include/gcint.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/include/gcint.h
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/include/prgc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/include/prgc.h
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/src/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/src/
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/src/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/src/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/src/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/src/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/src/macgc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/src/macgc.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/src/os2gc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/src/os2gc.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/src/prgcapi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/src/prgcapi.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/src/prmsgc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/src/prmsgc.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/src/unixgc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/src/unixgc.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/src/win16gc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/src/win16gc.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/src/win32gc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/src/win32gc.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/tests/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/tests/
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/tests/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/tests/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/tests/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/tests/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/tests/gc1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/tests/gc1.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/msgc/tests/thrashgc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/msgc/tests/thrashgc.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/prstreams/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/prstreams/
   freeswitch/branches/seven/libs/js/nsprpub/lib/prstreams/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/prstreams/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/lib/prstreams/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/prstreams/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/lib/prstreams/plvrsion.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/prstreams/plvrsion.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/prstreams/prstrms.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/prstreams/prstrms.cpp
   freeswitch/branches/seven/libs/js/nsprpub/lib/prstreams/prstrms.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/prstreams/prstrms.h
   freeswitch/branches/seven/libs/js/nsprpub/lib/prstreams/prstrms.rc
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/prstreams/prstrms.rc
   freeswitch/branches/seven/libs/js/nsprpub/lib/prstreams/tests/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/prstreams/tests/
   freeswitch/branches/seven/libs/js/nsprpub/lib/prstreams/tests/testprstrm/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/prstreams/tests/testprstrm/
   freeswitch/branches/seven/libs/js/nsprpub/lib/prstreams/tests/testprstrm/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/prstreams/tests/testprstrm/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/lib/prstreams/tests/testprstrm/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/prstreams/tests/testprstrm/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/lib/prstreams/tests/testprstrm/testprstrm.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/prstreams/tests/testprstrm/testprstrm.cpp
   freeswitch/branches/seven/libs/js/nsprpub/lib/tests/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/tests/
   freeswitch/branches/seven/libs/js/nsprpub/lib/tests/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/tests/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/lib/tests/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/tests/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/lib/tests/arena.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/tests/arena.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/tests/base64t.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/tests/base64t.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/tests/string.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/tests/string.c
   freeswitch/branches/seven/libs/js/nsprpub/lib/tests/windows/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/tests/windows/
   freeswitch/branches/seven/libs/js/nsprpub/lib/tests/windows/makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/tests/windows/makefile
   freeswitch/branches/seven/libs/js/nsprpub/lib/tests/windows/readme.1st
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/tests/windows/readme.1st
   freeswitch/branches/seven/libs/js/nsprpub/lib/tests/windows/winevent.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/lib/tests/windows/winevent.c
   freeswitch/branches/seven/libs/js/nsprpub/macbuild/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/macbuild/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pkg/linux/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/linux/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/linux/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/linux/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pkg/linux/sun-nspr.spec
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/linux/sun-nspr.spec
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/Makefile-devl.com
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/Makefile-devl.com
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/Makefile-devl.targ
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/Makefile-devl.targ
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/Makefile.com
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/Makefile.com
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/Makefile.targ
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/Makefile.targ
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWnspr/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWnspr/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWnsprx/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWnsprx/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWpr/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWpr/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWpr-devl/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWpr-devl/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWpr/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWpr/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWpr/depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWpr/depend
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWpr/pkginfo.tmpl
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWpr/pkginfo.tmpl
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWpr/prototype_com
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWpr/prototype_com
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWpr/prototype_i386
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWpr/prototype_i386
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWpr/prototype_sparc
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWpr/prototype_sparc
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWprd/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWprd/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWprd/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWprd/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWprd/depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWprd/depend
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWprd/pkginfo.tmpl
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWprd/pkginfo.tmpl
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWprd/prototype
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWprd/prototype
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWprdx/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWprdx/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWprx/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWprx/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/SUNWprx-devl/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/SUNWprx-devl/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/bld_awk_pkginfo.ksh
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/bld_awk_pkginfo.ksh
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/common_files/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/common_files/
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/common_files/copyright
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/common_files/copyright
   freeswitch/branches/seven/libs/js/nsprpub/pkg/solaris/proto64.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pkg/solaris/proto64.mk
   freeswitch/branches/seven/libs/js/nsprpub/pr/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/
   freeswitch/branches/seven/libs/js/nsprpub/pr/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/MANIFEST
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/MANIFEST
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/gencfg.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/gencfg.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_aix.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_aix.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_aix32.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_aix32.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_aix64.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_aix64.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_beos.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_beos.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_beos.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_beos.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_bsdi.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_bsdi.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_bsdi.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_bsdi.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_darwin.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_darwin.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_darwin.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_darwin.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_dgux.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_dgux.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_dgux.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_dgux.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_freebsd.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_freebsd.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_freebsd.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_freebsd.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_hpux.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_hpux.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_hpux32.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_hpux32.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_hpux64.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_hpux64.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_irix.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_irix.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_irix32.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_irix32.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_irix64.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_irix64.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_linux.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_linux.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_linux.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_linux.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_macos.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_macos.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_ncr.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_ncr.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_ncr.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_ncr.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_nec.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_nec.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_nec.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_nec.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_netbsd.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_netbsd.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_netbsd.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_netbsd.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_nextstep.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_nextstep.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_nextstep.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_nextstep.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_nspr_pthread.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_nspr_pthread.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_nto.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_nto.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_nto.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_nto.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_openbsd.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_openbsd.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_openbsd.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_openbsd.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_openvms.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_openvms.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_openvms.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_openvms.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_os2.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_os2.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_os2.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_os2.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_os2_errors.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_os2_errors.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_osf1.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_osf1.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_osf1.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_osf1.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_pcos.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_pcos.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_pth.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_pth.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_qnx.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_qnx.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_qnx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_qnx.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_reliantunix.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_reliantunix.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_reliantunix.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_reliantunix.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_rhapsody.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_rhapsody.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_rhapsody.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_rhapsody.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_riscos.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_riscos.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_riscos.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_riscos.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_scoos.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_scoos.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_scoos.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_scoos.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_solaris.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_solaris.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_solaris.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_solaris.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_sony.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_sony.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_sony.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_sony.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_sunos4.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_sunos4.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_sunos4.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_sunos4.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_unix_errors.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_unix_errors.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_unixos.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_unixos.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_unixware.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_unixware.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_unixware.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_unixware.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_unixware7.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_unixware7.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_win16.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_win16.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_win16.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_win16.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_win32_errors.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_win32_errors.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_win95.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_win95.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_win95.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_win95.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_winnt.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_winnt.cfg
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/_winnt.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/_winnt.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/prosdep.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/prosdep.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/md/sunos4.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/md/sunos4.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/nspr.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/nspr.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/obsolete/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/obsolete/
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/obsolete/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/obsolete/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/obsolete/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/obsolete/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/obsolete/pralarm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/obsolete/pralarm.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/obsolete/probslet.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/obsolete/probslet.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/obsolete/protypes.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/obsolete/protypes.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/obsolete/prsem.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/obsolete/prsem.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/pratom.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/pratom.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prbit.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prbit.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prclist.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prclist.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prcmon.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prcmon.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prcountr.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prcountr.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prcvar.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prcvar.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prdtoa.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prdtoa.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prenv.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prenv.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prerr.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prerr.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prerror.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prerror.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prinet.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prinet.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prinit.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prinit.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prinrval.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prinrval.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prio.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/pripcsem.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/pripcsem.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/private/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/private/
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/private/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/private/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/private/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/private/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/private/pprio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/private/pprio.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/private/pprmwait.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/private/pprmwait.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/private/pprthred.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/private/pprthred.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/private/primpl.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/private/primpl.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/private/prpriv.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/private/prpriv.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prlink.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prlink.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prlock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prlock.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prlog.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prlog.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prlong.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prlong.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prmem.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prmem.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prmon.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prmon.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prmwait.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prmwait.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prnetdb.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prnetdb.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prolock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prolock.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prpdce.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prpdce.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prprf.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prprf.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prproces.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prproces.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prrng.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prrng.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prrwlock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prrwlock.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prshm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prshm.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prshma.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prshma.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prsystem.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prsystem.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prthread.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prthread.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prtime.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prtime.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prtpool.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prtpool.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prtrace.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prtrace.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prtypes.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prtypes.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prvrsion.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prvrsion.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/include/prwin16.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/include/prwin16.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/bthreads/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/bthreads/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/bthreads/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/bthreads/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/bthreads/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/bthreads/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/bthreads/bsrcs.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/bthreads/bsrcs.mk
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/bthreads/btcvar.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/bthreads/btcvar.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/bthreads/btlocks.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/bthreads/btlocks.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/bthreads/btmisc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/bthreads/btmisc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/bthreads/btmon.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/bthreads/btmon.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/bthreads/btsem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/bthreads/btsem.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/bthreads/btthread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/bthreads/btthread.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/bthreads/objs.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/bthreads/objs.mk
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcascii.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcascii.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcbase.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcbase.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcbase.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcbase.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rccv.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rccv.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rccv.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rccv.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcfileio.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcfileio.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcfileio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcfileio.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcinrval.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcinrval.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcinrval.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcinrval.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcio.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcio.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcio.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rclock.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rclock.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rclock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rclock.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcmon.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcmon.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcnetdb.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcnetdb.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcnetdb.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcnetdb.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcnetio.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcnetio.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcnetio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcnetio.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcthread.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcthread.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rcthread.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rcthread.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rctime.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rctime.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/rctime.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/rctime.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/tests/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/tests/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/tests/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/tests/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/tests/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/tests/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/tests/fileio.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/tests/fileio.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/tests/interval.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/tests/interval.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/tests/ranfile.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/tests/ranfile.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/tests/switch.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/tests/switch.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/tests/thread.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/tests/thread.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/tests/time.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/tests/time.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cplus/tests/tpd.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cplus/tests/tpd.cpp
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/cthreads/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/cthreads/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prdir.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prdir.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prfdcach.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prfdcach.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prfile.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prio.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prio.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/priometh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/priometh.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/pripv6.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/pripv6.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prlayer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prlayer.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prlog.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prlog.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prmapopt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prmapopt.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prmmap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prmmap.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prmwait.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prmwait.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prpolevt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prpolevt.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prprf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prprf.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prscanf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prscanf.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prsocket.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prsocket.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/io/prstdio.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/io/prstdio.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/linking/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/linking/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/linking/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/linking/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/linking/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/linking/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/linking/prlink.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/linking/prlink.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/malloc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/malloc/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/malloc/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/malloc/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/malloc/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/malloc/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/malloc/prmalloc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/malloc/prmalloc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/malloc/prmem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/malloc/prmem.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/bcpu.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/bcpu.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/beos.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/beos.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/beos_errors.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/beos_errors.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/bfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/bfile.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/bmemory.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/bmemory.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/bmisc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/bmisc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/bmmap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/bmmap.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/bnet.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/bnet.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/bproc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/bproc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/brng.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/brng.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/bseg.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/bseg.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/bsrcs.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/bsrcs.mk
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/btime.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/btime.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/beos/objs.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/beos/objs.mk
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/MANIFEST
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/MANIFEST
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/MacErrorHandling.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/MacErrorHandling.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/macdll.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/macdll.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/macdll.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/macdll.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/macio.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/macio.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/macio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/macio.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/macrng.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/macrng.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/macsocket.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/macsocket.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/macsockotpt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/macsockotpt.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/macthr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/macthr.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/mactime.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/mactime.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/mactime.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/mactime.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/mdcriticalregion.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/mdcriticalregion.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/mdcriticalregion.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/mdcriticalregion.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/mdmac.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/mdmac.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/mdmac.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/mdmac.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/mac/prcpucfg.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/mac/prcpucfg.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/objs.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/objs.mk
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2_errors.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2_errors.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2cv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2cv.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2emx.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2emx.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2gc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2gc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2inrval.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2inrval.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2io.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2io.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2misc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2misc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2poll.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2poll.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2rng.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2rng.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2sem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2sem.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2sock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2sock.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2thred.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2thred.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2vaclegacy.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2vaclegacy.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/os2/os2vacpp.asm
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/os2/os2vacpp.asm
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/prosdep.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/prosdep.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/aix.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/aix.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/aixwrap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/aixwrap.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/bsdi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/bsdi.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/darwin.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/darwin.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/dgux.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/dgux.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/freebsd.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/freebsd.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/hpux.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/hpux.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/irix.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/irix.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/linux.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/linux.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/ncr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/ncr.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/nec.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/nec.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/netbsd.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/netbsd.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/nextstep.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/nextstep.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/nto.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/nto.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/objs.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/objs.mk
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/openbsd.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/openbsd.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/openvms.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/openvms.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_AIX.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_AIX.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_BSD_386_2.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_BSD_386_2.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_Darwin_ppc.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_Darwin_ppc.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_Darwin_x86.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_Darwin_x86.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_HPUX.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_HPUX.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_HPUX_ia64.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_HPUX_ia64.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_Irix.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_Irix.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_Linux_ia64.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_Linux_ia64.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_Linux_x86.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_Linux_x86.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_Linux_x86_64.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_Linux_x86_64.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_ReliantUNIX.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_ReliantUNIX.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_SunOS.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_SunOS.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_SunOS_sparcv9.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_SunOS_sparcv9.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_SunOS_ultrasparc.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_SunOS_ultrasparc.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_SunOS_x86.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_SunOS_x86.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/os_SunOS_x86_64.s
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/os_SunOS_x86_64.s
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/osf1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/osf1.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/pthreads_user.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/pthreads_user.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/qnx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/qnx.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/reliantunix.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/reliantunix.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/rhapsody.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/rhapsody.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/riscos.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/riscos.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/scoos.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/scoos.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/solaris.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/solaris.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/sony.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/sony.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/sunos4.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/sunos4.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/unix.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/unix.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/unix_errors.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/unix_errors.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/unixware.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/unixware.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/uxpoll.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/uxpoll.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/uxproces.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/uxproces.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/uxrng.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/uxrng.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/uxshm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/uxshm.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/unix/uxwrap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/unix/uxwrap.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/ntdllmn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/ntdllmn.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/ntgc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/ntgc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/ntinrval.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/ntinrval.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/ntio.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/ntio.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/ntmisc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/ntmisc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/ntsec.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/ntsec.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/ntsem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/ntsem.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/ntthread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/ntthread.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/objs.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/objs.mk
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w16callb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w16callb.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w16error.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w16error.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w16fmem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w16fmem.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w16gc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w16gc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w16io.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w16io.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w16mem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w16mem.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w16null.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w16null.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w16proc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w16proc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w16sock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w16sock.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w16stdio.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w16stdio.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w16thred.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w16thred.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w32ipcsem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w32ipcsem.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w32poll.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w32poll.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w32rng.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w32rng.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w32shm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w32shm.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w95cv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w95cv.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w95dllmain.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w95dllmain.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w95io.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w95io.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w95sock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w95sock.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/w95thred.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/w95thred.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/md/windows/win32_errors.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/md/windows/win32_errors.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/memory/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/memory/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/memory/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/memory/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/memory/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/memory/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/memory/prgcleak.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/memory/prgcleak.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/memory/prseg.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/memory/prseg.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/memory/prshm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/memory/prshm.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/memory/prshma.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/memory/prshma.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/compile-et.pl
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/compile-et.pl
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/pralarm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/pralarm.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/pratom.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/pratom.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prcountr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prcountr.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prdtoa.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prdtoa.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prenv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prenv.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prerr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prerr.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prerr.et
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prerr.et
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prerr.properties
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prerr.properties
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prerror.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prerror.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prerrortable.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prerrortable.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prinit.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prinit.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prinrval.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prinrval.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/pripc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/pripc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/pripcsem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/pripcsem.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prlog2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prlog2.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prlong.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prlong.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prnetdb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prnetdb.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prolock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prolock.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prrng.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prrng.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prsystem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prsystem.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prthinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prthinfo.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prtime.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prtime.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prtpool.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prtpool.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/misc/prtrace.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/misc/prtrace.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/nspr.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/nspr.def
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/nspr.rc
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/nspr.rc
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/nspr_symvec.opt
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/nspr_symvec.opt
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/os2extra.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/os2extra.def
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/prvrsion.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/prvrsion.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/pthreads/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/pthreads/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/pthreads/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/pthreads/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/pthreads/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/pthreads/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/pthreads/ptio.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/pthreads/ptio.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/pthreads/ptmisc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/pthreads/ptmisc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/pthreads/ptsynch.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/pthreads/ptsynch.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/pthreads/ptthread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/pthreads/ptthread.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/combined/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/combined/
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/combined/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/combined/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/combined/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/combined/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/combined/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/combined/README
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/combined/prucpu.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/combined/prucpu.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/combined/prucv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/combined/prucv.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/combined/prulock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/combined/prulock.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/combined/prustack.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/combined/prustack.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/combined/pruthr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/combined/pruthr.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/prcmon.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/prcmon.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/prcthr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/prcthr.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/prdump.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/prdump.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/prmon.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/prmon.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/prrwlock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/prrwlock.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/prsem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/prsem.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/src/threads/prtpd.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/src/threads/prtpd.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/README.TXT
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/README.TXT
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/accept.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/accept.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/acceptread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/acceptread.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/acceptreademu.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/acceptreademu.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/addrstr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/addrstr.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/affinity.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/affinity.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/alarm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/alarm.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/anonfm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/anonfm.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/append.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/append.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/atomic.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/atomic.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/attach.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/attach.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/bigfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/bigfile.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/bigfile2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/bigfile2.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/bigfile3.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/bigfile3.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/bug1test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/bug1test.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/cleanup.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/cleanup.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/cltsrv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/cltsrv.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/concur.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/concur.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/cvar.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/cvar.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/cvar2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/cvar2.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/dbmalloc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/dbmalloc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/dbmalloc1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/dbmalloc1.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/dceemu.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/dceemu.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/depend.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/depend.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/dll/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/dll/
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/dll/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/dll/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/dll/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/dll/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/dll/my.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/dll/my.def
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/dll/mygetval.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/dll/mygetval.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/dll/mysetval.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/dll/mysetval.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/dlltest.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/dlltest.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/dtoa.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/dtoa.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/env.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/env.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/errcodes.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/errcodes.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/errset.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/errset.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/exit.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/exit.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/fdcach.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/fdcach.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/fileio.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/fileio.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/foreign.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/foreign.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/forktest.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/forktest.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/formattm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/formattm.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/freeif.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/freeif.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/fsync.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/fsync.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/getai.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/getai.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/gethost.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/gethost.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/getproto.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/getproto.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/i2l.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/i2l.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/initclk.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/initclk.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/inrval.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/inrval.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/instrumt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/instrumt.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/intrio.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/intrio.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/intrupt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/intrupt.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/io_timeout.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/io_timeout.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/io_timeoutk.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/io_timeoutk.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/io_timeoutu.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/io_timeoutu.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/ioconthr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/ioconthr.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/ipv6.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/ipv6.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/join.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/join.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/joinkk.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/joinkk.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/joinku.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/joinku.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/joinuk.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/joinuk.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/joinuu.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/joinuu.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/layer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/layer.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/lazyinit.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/lazyinit.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/libfilename.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/libfilename.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/lltest.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/lltest.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/lock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/lock.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/lockfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/lockfile.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/logger.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/logger.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/macbuild/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/macbuild/
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/makedir.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/makedir.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/many_cv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/many_cv.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/mbcs.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/mbcs.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/multiacc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/multiacc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/multiwait.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/multiwait.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/nameshm1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/nameshm1.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/nbconn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/nbconn.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/nblayer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/nblayer.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/nonblock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/nonblock.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/ntioto.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/ntioto.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/ntoh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/ntoh.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/obsints.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/obsints.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/op_2long.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/op_2long.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/op_excl.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/op_excl.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/op_filnf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/op_filnf.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/op_filok.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/op_filok.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/op_noacc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/op_noacc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/op_nofil.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/op_nofil.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/openfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/openfile.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/parent.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/parent.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/peek.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/peek.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/perf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/perf.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/pipeping.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/pipeping.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/pipeping2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/pipeping2.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/pipepong.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/pipepong.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/pipepong2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/pipepong2.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/pipeself.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/pipeself.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/poll_er.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/poll_er.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/poll_nm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/poll_nm.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/poll_to.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/poll_to.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/pollable.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/pollable.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/prftest.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/prftest.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/prftest1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/prftest1.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/prftest2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/prftest2.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/primblok.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/primblok.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/priotest.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/priotest.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/provider.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/provider.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/prpoll.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/prpoll.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/prpollml.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/prpollml.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/prselect.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/prselect.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/prttools.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/prttools.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/randseed.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/randseed.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/ranfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/ranfile.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/rmdir.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/rmdir.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/runtests.ksh
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/runtests.ksh
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/runtests.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/runtests.sh
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/runy2ktests.ksh
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/runy2ktests.ksh
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/rwlocktest.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/rwlocktest.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/sel_spd.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/sel_spd.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/selct_er.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/selct_er.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/selct_nm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/selct_nm.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/selct_to.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/selct_to.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/select2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/select2.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/selintr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/selintr.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/sem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/sem.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/sema.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/sema.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/semaerr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/semaerr.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/semaerr1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/semaerr1.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/semaping.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/semaping.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/semapong.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/semapong.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/sendzlf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/sendzlf.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/server_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/server_test.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/servr_kk.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/servr_kk.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/servr_ku.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/servr_ku.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/servr_uk.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/servr_uk.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/servr_uu.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/servr_uu.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/short_thread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/short_thread.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/sigpipe.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/sigpipe.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/sleep.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/sleep.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/socket.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/socket.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/sockopt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/sockopt.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/sockping.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/sockping.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/sockpong.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/sockpong.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/sprintf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/sprintf.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/sproc_ch.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/sproc_ch.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/sproc_p.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/sproc_p.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/stack.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/stack.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/stat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/stat.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/stdio.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/stdio.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/str2addr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/str2addr.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/strod.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/strod.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/suspend.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/suspend.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/switch.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/switch.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/system.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/system.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/testbit.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/testbit.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/testfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/testfile.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/threads.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/threads.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/thrpool_client.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/thrpool_client.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/thrpool_server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/thrpool_server.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/thruput.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/thruput.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/time.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/time.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/timemac.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/timemac.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/timetest.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/timetest.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/tmoacc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/tmoacc.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/tmocon.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/tmocon.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/tpd.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/tpd.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/udpsrv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/udpsrv.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/ut_ttools.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/ut_ttools.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/vercheck.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/vercheck.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/version.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/version.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/w16gui/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/w16gui/
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/w16gui/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/w16gui/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/w16gui/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/w16gui/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/w16gui/popfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/w16gui/popfile.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/w16gui/popfind.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/w16gui/popfind.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/w16gui/popfont.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/w16gui/popfont.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/w16gui/poppad.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/w16gui/poppad.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/w16gui/poppad.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/w16gui/poppad.h
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/w16gui/poppad.ico
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/w16gui/poppad.ico
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/w16gui/poppad.rc
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/w16gui/poppad.rc
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/w16gui/popprnt0.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/w16gui/popprnt0.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/w16gui/readme.1st
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/w16gui/readme.1st
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/writev.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/writev.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/xnotify.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/xnotify.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/y2k.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/y2k.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/y2ktmo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/y2ktmo.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/yield.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/yield.c
   freeswitch/branches/seven/libs/js/nsprpub/pr/tests/zerolen.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/pr/tests/zerolen.c
   freeswitch/branches/seven/libs/js/nsprpub/tools/
      - copied from r11459, /freeswitch/trunk/libs/js/nsprpub/tools/
   freeswitch/branches/seven/libs/js/nsprpub/tools/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/tools/.cvsignore
   freeswitch/branches/seven/libs/js/nsprpub/tools/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/tools/Makefile.in
   freeswitch/branches/seven/libs/js/nsprpub/tools/httpget.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/tools/httpget.c
   freeswitch/branches/seven/libs/js/nsprpub/tools/tail.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/nsprpub/tools/tail.c
   freeswitch/branches/seven/libs/js/shtool
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/shtool
   freeswitch/branches/seven/libs/js/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/src/
   freeswitch/branches/seven/libs/js/src/fdlibm/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/src/fdlibm/
   freeswitch/branches/seven/libs/js/src/fdlibm/e_acos.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_acos.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_acosh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_acosh.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_asin.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_asin.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_atan2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_atan2.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_atanh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_atanh.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_cosh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_cosh.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_exp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_exp.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_fmod.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_fmod.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_gamma.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_gamma.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_gamma_r.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_gamma_r.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_hypot.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_hypot.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_j0.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_j0.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_j1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_j1.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_jn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_jn.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_lgamma.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_lgamma.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_lgamma_r.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_lgamma_r.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_log.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_log.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_log10.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_log10.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_pow.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_pow.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_rem_pio2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_rem_pio2.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_remainder.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_remainder.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_scalb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_scalb.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_sinh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_sinh.c
   freeswitch/branches/seven/libs/js/src/fdlibm/e_sqrt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/e_sqrt.c
   freeswitch/branches/seven/libs/js/src/fdlibm/fdlibm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/fdlibm.h
   freeswitch/branches/seven/libs/js/src/fdlibm/k_cos.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/k_cos.c
   freeswitch/branches/seven/libs/js/src/fdlibm/k_rem_pio2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/k_rem_pio2.c
   freeswitch/branches/seven/libs/js/src/fdlibm/k_sin.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/k_sin.c
   freeswitch/branches/seven/libs/js/src/fdlibm/k_standard.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/k_standard.c
   freeswitch/branches/seven/libs/js/src/fdlibm/k_tan.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/k_tan.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_asinh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_asinh.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_atan.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_atan.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_cbrt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_cbrt.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_ceil.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_ceil.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_copysign.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_copysign.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_cos.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_cos.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_erf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_erf.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_expm1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_expm1.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_fabs.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_fabs.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_finite.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_finite.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_floor.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_floor.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_frexp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_frexp.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_ilogb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_ilogb.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_isnan.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_isnan.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_ldexp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_ldexp.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_lib_version.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_lib_version.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_log1p.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_log1p.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_logb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_logb.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_matherr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_matherr.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_modf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_modf.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_nextafter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_nextafter.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_rint.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_rint.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_scalbn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_scalbn.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_signgam.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_signgam.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_significand.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_significand.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_sin.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_sin.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_tan.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_tan.c
   freeswitch/branches/seven/libs/js/src/fdlibm/s_tanh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/s_tanh.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_acos.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_acos.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_acosh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_acosh.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_asin.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_asin.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_atan2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_atan2.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_atanh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_atanh.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_cosh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_cosh.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_exp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_exp.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_fmod.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_fmod.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_gamma.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_gamma.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_gamma_r.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_gamma_r.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_hypot.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_hypot.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_j0.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_j0.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_j1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_j1.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_jn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_jn.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_lgamma.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_lgamma.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_lgamma_r.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_lgamma_r.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_log.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_log.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_log10.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_log10.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_pow.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_pow.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_remainder.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_remainder.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_scalb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_scalb.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_sinh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_sinh.c
   freeswitch/branches/seven/libs/js/src/fdlibm/w_sqrt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/fdlibm/w_sqrt.c
   freeswitch/branches/seven/libs/js/src/js.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/js.c
   freeswitch/branches/seven/libs/js/src/js.msg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/js.msg
   freeswitch/branches/seven/libs/js/src/jsapi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsapi.c
   freeswitch/branches/seven/libs/js/src/jsapi.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsapi.h
   freeswitch/branches/seven/libs/js/src/jsarena.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsarena.c
   freeswitch/branches/seven/libs/js/src/jsarena.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsarena.h
   freeswitch/branches/seven/libs/js/src/jsarray.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsarray.c
   freeswitch/branches/seven/libs/js/src/jsarray.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsarray.h
   freeswitch/branches/seven/libs/js/src/jsatom.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsatom.c
   freeswitch/branches/seven/libs/js/src/jsatom.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsatom.h
   freeswitch/branches/seven/libs/js/src/jsautocfg.hw
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsautocfg.hw
   freeswitch/branches/seven/libs/js/src/jsbit.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsbit.h
   freeswitch/branches/seven/libs/js/src/jsbool.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsbool.c
   freeswitch/branches/seven/libs/js/src/jsbool.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsbool.h
   freeswitch/branches/seven/libs/js/src/jsclist.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsclist.h
   freeswitch/branches/seven/libs/js/src/jscntxt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jscntxt.c
   freeswitch/branches/seven/libs/js/src/jscntxt.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jscntxt.h
   freeswitch/branches/seven/libs/js/src/jscompat.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jscompat.h
   freeswitch/branches/seven/libs/js/src/jsconfig.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsconfig.h
   freeswitch/branches/seven/libs/js/src/jscpucfg.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jscpucfg.c
   freeswitch/branches/seven/libs/js/src/jscpucfg.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jscpucfg.h
   freeswitch/branches/seven/libs/js/src/jsdate.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsdate.c
   freeswitch/branches/seven/libs/js/src/jsdate.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsdate.h
   freeswitch/branches/seven/libs/js/src/jsdbgapi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsdbgapi.c
   freeswitch/branches/seven/libs/js/src/jsdbgapi.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsdbgapi.h
   freeswitch/branches/seven/libs/js/src/jsdhash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsdhash.c
   freeswitch/branches/seven/libs/js/src/jsdhash.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsdhash.h
   freeswitch/branches/seven/libs/js/src/jsdso.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsdso.c
   freeswitch/branches/seven/libs/js/src/jsdso.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsdso.h
   freeswitch/branches/seven/libs/js/src/jsdtoa.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsdtoa.c
   freeswitch/branches/seven/libs/js/src/jsdtoa.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsdtoa.h
   freeswitch/branches/seven/libs/js/src/jsemit.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsemit.c
   freeswitch/branches/seven/libs/js/src/jsemit.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsemit.h
   freeswitch/branches/seven/libs/js/src/jsexn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsexn.c
   freeswitch/branches/seven/libs/js/src/jsexn.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsexn.h
   freeswitch/branches/seven/libs/js/src/jsfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsfile.c
   freeswitch/branches/seven/libs/js/src/jsfile.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsfile.h
   freeswitch/branches/seven/libs/js/src/jsfile.msg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsfile.msg
   freeswitch/branches/seven/libs/js/src/jsfun.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsfun.c
   freeswitch/branches/seven/libs/js/src/jsfun.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsfun.h
   freeswitch/branches/seven/libs/js/src/jsgc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsgc.c
   freeswitch/branches/seven/libs/js/src/jsgc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsgc.h
   freeswitch/branches/seven/libs/js/src/jshash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jshash.c
   freeswitch/branches/seven/libs/js/src/jshash.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jshash.h
   freeswitch/branches/seven/libs/js/src/jsinterp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsinterp.c
   freeswitch/branches/seven/libs/js/src/jsinterp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsinterp.h
   freeswitch/branches/seven/libs/js/src/jslibmath.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jslibmath.h
   freeswitch/branches/seven/libs/js/src/jslock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jslock.c
   freeswitch/branches/seven/libs/js/src/jslock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jslock.h
   freeswitch/branches/seven/libs/js/src/jslog2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jslog2.c
   freeswitch/branches/seven/libs/js/src/jslong.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jslong.c
   freeswitch/branches/seven/libs/js/src/jslong.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jslong.h
   freeswitch/branches/seven/libs/js/src/jsmath.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsmath.c
   freeswitch/branches/seven/libs/js/src/jsmath.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsmath.h
   freeswitch/branches/seven/libs/js/src/jsnum.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsnum.c
   freeswitch/branches/seven/libs/js/src/jsnum.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsnum.h
   freeswitch/branches/seven/libs/js/src/jsobj.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsobj.c
   freeswitch/branches/seven/libs/js/src/jsobj.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsobj.h
   freeswitch/branches/seven/libs/js/src/jsopcode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsopcode.c
   freeswitch/branches/seven/libs/js/src/jsopcode.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsopcode.h
   freeswitch/branches/seven/libs/js/src/jsopcode.tbl
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsopcode.tbl
   freeswitch/branches/seven/libs/js/src/jsosdep.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsosdep.h
   freeswitch/branches/seven/libs/js/src/jsotypes.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsotypes.h
   freeswitch/branches/seven/libs/js/src/jsparse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsparse.c
   freeswitch/branches/seven/libs/js/src/jsparse.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsparse.h
   freeswitch/branches/seven/libs/js/src/jsprf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsprf.c
   freeswitch/branches/seven/libs/js/src/jsprf.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsprf.h
   freeswitch/branches/seven/libs/js/src/jsprvtd.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsprvtd.h
   freeswitch/branches/seven/libs/js/src/jspubtd.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jspubtd.h
   freeswitch/branches/seven/libs/js/src/jsregexp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsregexp.c
   freeswitch/branches/seven/libs/js/src/jsregexp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsregexp.h
   freeswitch/branches/seven/libs/js/src/jsscan.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsscan.c
   freeswitch/branches/seven/libs/js/src/jsscan.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsscan.h
   freeswitch/branches/seven/libs/js/src/jsscope.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsscope.c
   freeswitch/branches/seven/libs/js/src/jsscope.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsscope.h
   freeswitch/branches/seven/libs/js/src/jsscript.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsscript.c
   freeswitch/branches/seven/libs/js/src/jsscript.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsscript.h
   freeswitch/branches/seven/libs/js/src/jsshell.msg
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsshell.msg
   freeswitch/branches/seven/libs/js/src/jsstddef.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsstddef.h
   freeswitch/branches/seven/libs/js/src/jsstr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsstr.c
   freeswitch/branches/seven/libs/js/src/jsstr.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsstr.h
   freeswitch/branches/seven/libs/js/src/jstypes.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jstypes.h
   freeswitch/branches/seven/libs/js/src/jsutil.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsutil.c
   freeswitch/branches/seven/libs/js/src/jsutil.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsutil.h
   freeswitch/branches/seven/libs/js/src/jsxdrapi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsxdrapi.c
   freeswitch/branches/seven/libs/js/src/jsxdrapi.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsxdrapi.h
   freeswitch/branches/seven/libs/js/src/jsxml.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsxml.c
   freeswitch/branches/seven/libs/js/src/jsxml.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/jsxml.h
   freeswitch/branches/seven/libs/js/src/perlconnect/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/js/src/perlconnect/
   freeswitch/branches/seven/libs/js/src/perlconnect/JS.pm
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/perlconnect/JS.pm
   freeswitch/branches/seven/libs/js/src/perlconnect/JS.xs
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/perlconnect/JS.xs
   freeswitch/branches/seven/libs/js/src/perlconnect/MANIFEST
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/perlconnect/MANIFEST
   freeswitch/branches/seven/libs/js/src/perlconnect/Makefile.PL.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/perlconnect/Makefile.PL.in
   freeswitch/branches/seven/libs/js/src/perlconnect/PerlConnect.pm
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/perlconnect/PerlConnect.pm
   freeswitch/branches/seven/libs/js/src/perlconnect/jsperl.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/perlconnect/jsperl.c
   freeswitch/branches/seven/libs/js/src/perlconnect/jsperl.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/perlconnect/jsperl.h
   freeswitch/branches/seven/libs/js/src/perlconnect/jsperlpvt.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/perlconnect/jsperlpvt.h
   freeswitch/branches/seven/libs/js/src/perlconnect/typemap
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/perlconnect/typemap
   freeswitch/branches/seven/libs/js/src/prmjtime.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/prmjtime.c
   freeswitch/branches/seven/libs/js/src/prmjtime.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/js/src/prmjtime.h
   freeswitch/branches/seven/libs/libdingaling/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libdingaling/
   freeswitch/branches/seven/libs/libdingaling/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/.update
   freeswitch/branches/seven/libs/libdingaling/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/AUTHORS
   freeswitch/branches/seven/libs/libdingaling/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/COPYING
   freeswitch/branches/seven/libs/libdingaling/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/ChangeLog
   freeswitch/branches/seven/libs/libdingaling/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/INSTALL
   freeswitch/branches/seven/libs/libdingaling/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/Makefile.am
   freeswitch/branches/seven/libs/libdingaling/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/NEWS
   freeswitch/branches/seven/libs/libdingaling/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/README
   freeswitch/branches/seven/libs/libdingaling/acsite.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/acsite.m4
   freeswitch/branches/seven/libs/libdingaling/build/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libdingaling/build/
   freeswitch/branches/seven/libs/libdingaling/build/config/
      - copied from r11459, /freeswitch/trunk/libs/libdingaling/build/config/
   freeswitch/branches/seven/libs/libdingaling/build/config/ac_cflags_gcc_option.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/build/config/ac_cflags_gcc_option.m4
   freeswitch/branches/seven/libs/libdingaling/build/config/ac_cflags_sun_option.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/build/config/ac_cflags_sun_option.m4
   freeswitch/branches/seven/libs/libdingaling/build/config/ac_gcc_archflag.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/build/config/ac_gcc_archflag.m4
   freeswitch/branches/seven/libs/libdingaling/build/config/ac_gcc_x86_cpuid.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/build/config/ac_gcc_x86_cpuid.m4
   freeswitch/branches/seven/libs/libdingaling/build/config/ac_prog_gzip.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/build/config/ac_prog_gzip.m4
   freeswitch/branches/seven/libs/libdingaling/build/config/ac_prog_wget.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/build/config/ac_prog_wget.m4
   freeswitch/branches/seven/libs/libdingaling/build/config/ax_cc_maxopt.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/build/config/ax_cc_maxopt.m4
   freeswitch/branches/seven/libs/libdingaling/build/config/ax_cflags_warn_all_ansi.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/build/config/ax_cflags_warn_all_ansi.m4
   freeswitch/branches/seven/libs/libdingaling/build/config/ax_check_compiler_flags.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/build/config/ax_check_compiler_flags.m4
   freeswitch/branches/seven/libs/libdingaling/build/config/ax_compiler_vendor.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/build/config/ax_compiler_vendor.m4
   freeswitch/branches/seven/libs/libdingaling/compile
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/compile
   freeswitch/branches/seven/libs/libdingaling/config.guess
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/config.guess
   freeswitch/branches/seven/libs/libdingaling/config.sub
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/config.sub
   freeswitch/branches/seven/libs/libdingaling/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/configure.gnu
   freeswitch/branches/seven/libs/libdingaling/configure.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/configure.in
   freeswitch/branches/seven/libs/libdingaling/depcomp
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/depcomp
   freeswitch/branches/seven/libs/libdingaling/doc
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/doc
   freeswitch/branches/seven/libs/libdingaling/docs/
      - copied from r11459, /freeswitch/trunk/libs/libdingaling/docs/
   freeswitch/branches/seven/libs/libdingaling/docs/Doxygen.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/docs/Doxygen.conf
   freeswitch/branches/seven/libs/libdingaling/docs/docs.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/docs/docs.vcproj
   freeswitch/branches/seven/libs/libdingaling/install-sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/install-sh
   freeswitch/branches/seven/libs/libdingaling/libdingaling.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/libdingaling.2008.vcproj
   freeswitch/branches/seven/libs/libdingaling/libdingaling.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/libdingaling.vcproj
   freeswitch/branches/seven/libs/libdingaling/ltmain.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/ltmain.sh
   freeswitch/branches/seven/libs/libdingaling/missing
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/missing
   freeswitch/branches/seven/libs/libdingaling/mkinstalldirs
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/mkinstalldirs
   freeswitch/branches/seven/libs/libdingaling/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libdingaling/src/
   freeswitch/branches/seven/libs/libdingaling/src/dingaling.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/src/dingaling.def
   freeswitch/branches/seven/libs/libdingaling/src/ldl_compat.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/src/ldl_compat.h
   freeswitch/branches/seven/libs/libdingaling/src/libdingaling.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/src/libdingaling.c
   freeswitch/branches/seven/libs/libdingaling/src/libdingaling.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/src/libdingaling.h
   freeswitch/branches/seven/libs/libdingaling/src/sha1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/src/sha1.c
   freeswitch/branches/seven/libs/libdingaling/src/sha1.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libdingaling/src/sha1.h
   freeswitch/branches/seven/libs/libedit/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libedit/
   freeswitch/branches/seven/libs/libedit/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/COPYING
   freeswitch/branches/seven/libs/libedit/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/ChangeLog
   freeswitch/branches/seven/libs/libedit/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/INSTALL
   freeswitch/branches/seven/libs/libedit/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/Makefile.am
   freeswitch/branches/seven/libs/libedit/THANKS
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/THANKS
   freeswitch/branches/seven/libs/libedit/acinclude.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/acinclude.m4
   freeswitch/branches/seven/libs/libedit/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/configure.ac
   freeswitch/branches/seven/libs/libedit/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/configure.gnu
   freeswitch/branches/seven/libs/libedit/doc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libedit/doc/
   freeswitch/branches/seven/libs/libedit/doc/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/doc/Makefile.am
   freeswitch/branches/seven/libs/libedit/doc/editline.3.roff
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/doc/editline.3.roff
   freeswitch/branches/seven/libs/libedit/doc/editrc.5.roff
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/doc/editrc.5.roff
   freeswitch/branches/seven/libs/libedit/doc/mdoc2man.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/doc/mdoc2man.awk
   freeswitch/branches/seven/libs/libedit/examples/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libedit/examples/
   freeswitch/branches/seven/libs/libedit/examples/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/examples/Makefile.am
   freeswitch/branches/seven/libs/libedit/examples/fileman.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/examples/fileman.c
   freeswitch/branches/seven/libs/libedit/examples/test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/examples/test.c
   freeswitch/branches/seven/libs/libedit/libedit.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/libedit.pc.in
   freeswitch/branches/seven/libs/libedit/patches/
      - copied from r11459, /freeswitch/trunk/libs/libedit/patches/
   freeswitch/branches/seven/libs/libedit/patches/00-vis.h.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/00-vis.h.patch
   freeswitch/branches/seven/libs/libedit/patches/01-term.c.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/01-term.c.patch
   freeswitch/branches/seven/libs/libedit/patches/02-el_term.h.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/02-el_term.h.patch
   freeswitch/branches/seven/libs/libedit/patches/03-unvis.c.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/03-unvis.c.patch
   freeswitch/branches/seven/libs/libedit/patches/04-strlcpy.c.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/04-strlcpy.c.patch
   freeswitch/branches/seven/libs/libedit/patches/05-strlcat.c.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/05-strlcat.c.patch
   freeswitch/branches/seven/libs/libedit/patches/06-readline.c.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/06-readline.c.patch
   freeswitch/branches/seven/libs/libedit/patches/07-sys.h.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/07-sys.h.patch
   freeswitch/branches/seven/libs/libedit/patches/08-el.h.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/08-el.h.patch
   freeswitch/branches/seven/libs/libedit/patches/09-search.c.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/09-search.c.patch
   freeswitch/branches/seven/libs/libedit/patches/10-readline.h.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/10-readline.h.patch
   freeswitch/branches/seven/libs/libedit/patches/11-el.c.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/11-el.c.patch
   freeswitch/branches/seven/libs/libedit/patches/12-history.c.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/12-history.c.patch
   freeswitch/branches/seven/libs/libedit/patches/13-vis.c.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/13-vis.c.patch
   freeswitch/branches/seven/libs/libedit/patches/14-fgetln.c.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/14-fgetln.c.patch
   freeswitch/branches/seven/libs/libedit/patches/15-filecomplete.c.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/15-filecomplete.c.patch
   freeswitch/branches/seven/libs/libedit/patches/16-tc1.c.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/16-tc1.c.patch
   freeswitch/branches/seven/libs/libedit/patches/17-editline.3.roff.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/17-editline.3.roff.patch
   freeswitch/branches/seven/libs/libedit/patches/18-editrc.5.roff.patch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/18-editrc.5.roff.patch
   freeswitch/branches/seven/libs/libedit/patches/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/README
   freeswitch/branches/seven/libs/libedit/patches/cvs_export.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/cvs_export.sh
   freeswitch/branches/seven/libs/libedit/patches/extra_dist_list.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/extra_dist_list.sh
   freeswitch/branches/seven/libs/libedit/patches/patches_apply.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/patches_apply.sh
   freeswitch/branches/seven/libs/libedit/patches/patches_check.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/patches_check.sh
   freeswitch/branches/seven/libs/libedit/patches/patches_make.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/patches_make.sh
   freeswitch/branches/seven/libs/libedit/patches/timestamp.cvsexport
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/timestamp.cvsexport
   freeswitch/branches/seven/libs/libedit/patches/update_dist.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/update_dist.sh
   freeswitch/branches/seven/libs/libedit/patches/update_version.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/patches/update_version.sh
   freeswitch/branches/seven/libs/libedit/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libedit/src/
   freeswitch/branches/seven/libs/libedit/src/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/Makefile.am
   freeswitch/branches/seven/libs/libedit/src/chared.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/chared.c
   freeswitch/branches/seven/libs/libedit/src/chared.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/chared.h
   freeswitch/branches/seven/libs/libedit/src/common.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/common.c
   freeswitch/branches/seven/libs/libedit/src/editline/
      - copied from r11459, /freeswitch/trunk/libs/libedit/src/editline/
   freeswitch/branches/seven/libs/libedit/src/editline/readline.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/editline/readline.h
   freeswitch/branches/seven/libs/libedit/src/el.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/el.c
   freeswitch/branches/seven/libs/libedit/src/el.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/el.h
   freeswitch/branches/seven/libs/libedit/src/el_term.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/el_term.h
   freeswitch/branches/seven/libs/libedit/src/emacs.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/emacs.c
   freeswitch/branches/seven/libs/libedit/src/fgetln.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/fgetln.c
   freeswitch/branches/seven/libs/libedit/src/filecomplete.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/filecomplete.c
   freeswitch/branches/seven/libs/libedit/src/filecomplete.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/filecomplete.h
   freeswitch/branches/seven/libs/libedit/src/hist.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/hist.c
   freeswitch/branches/seven/libs/libedit/src/hist.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/hist.h
   freeswitch/branches/seven/libs/libedit/src/histedit.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/histedit.h
   freeswitch/branches/seven/libs/libedit/src/history.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/history.c
   freeswitch/branches/seven/libs/libedit/src/key.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/key.c
   freeswitch/branches/seven/libs/libedit/src/key.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/key.h
   freeswitch/branches/seven/libs/libedit/src/makelist
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/makelist
   freeswitch/branches/seven/libs/libedit/src/map.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/map.c
   freeswitch/branches/seven/libs/libedit/src/map.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/map.h
   freeswitch/branches/seven/libs/libedit/src/parse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/parse.c
   freeswitch/branches/seven/libs/libedit/src/parse.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/parse.h
   freeswitch/branches/seven/libs/libedit/src/prompt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/prompt.c
   freeswitch/branches/seven/libs/libedit/src/prompt.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/prompt.h
   freeswitch/branches/seven/libs/libedit/src/read.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/read.c
   freeswitch/branches/seven/libs/libedit/src/read.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/read.h
   freeswitch/branches/seven/libs/libedit/src/readline.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/readline.c
   freeswitch/branches/seven/libs/libedit/src/refresh.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/refresh.c
   freeswitch/branches/seven/libs/libedit/src/refresh.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/refresh.h
   freeswitch/branches/seven/libs/libedit/src/search.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/search.c
   freeswitch/branches/seven/libs/libedit/src/search.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/search.h
   freeswitch/branches/seven/libs/libedit/src/shlib_version
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/shlib_version
   freeswitch/branches/seven/libs/libedit/src/sig.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/sig.c
   freeswitch/branches/seven/libs/libedit/src/sig.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/sig.h
   freeswitch/branches/seven/libs/libedit/src/strlcat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/strlcat.c
   freeswitch/branches/seven/libs/libedit/src/strlcpy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/strlcpy.c
   freeswitch/branches/seven/libs/libedit/src/sys.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/sys.h
   freeswitch/branches/seven/libs/libedit/src/term.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/term.c
   freeswitch/branches/seven/libs/libedit/src/tokenizer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/tokenizer.c
   freeswitch/branches/seven/libs/libedit/src/tty.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/tty.c
   freeswitch/branches/seven/libs/libedit/src/tty.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/tty.h
   freeswitch/branches/seven/libs/libedit/src/unvis.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/unvis.c
   freeswitch/branches/seven/libs/libedit/src/vi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/vi.c
   freeswitch/branches/seven/libs/libedit/src/vis.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/vis.c
   freeswitch/branches/seven/libs/libedit/src/vis.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libedit/src/vis.h
   freeswitch/branches/seven/libs/libg722_1/
      - copied from r11459, /freeswitch/trunk/libs/libg722_1/
   freeswitch/branches/seven/libs/libg722_1/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/.update
   freeswitch/branches/seven/libs/libg722_1/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/AUTHORS
   freeswitch/branches/seven/libs/libg722_1/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/COPYING
   freeswitch/branches/seven/libs/libg722_1/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/ChangeLog
   freeswitch/branches/seven/libs/libg722_1/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/INSTALL
   freeswitch/branches/seven/libs/libg722_1/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/Makefile.am
   freeswitch/branches/seven/libs/libg722_1/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/Makefile.in
   freeswitch/branches/seven/libs/libg722_1/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/NEWS
   freeswitch/branches/seven/libs/libg722_1/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/README
   freeswitch/branches/seven/libs/libg722_1/aclocal.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/aclocal.m4
   freeswitch/branches/seven/libs/libg722_1/autogen.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/autogen.sh
   freeswitch/branches/seven/libs/libg722_1/config/
      - copied from r11459, /freeswitch/trunk/libs/libg722_1/config/
   freeswitch/branches/seven/libs/libg722_1/config-h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/config-h.in
   freeswitch/branches/seven/libs/libg722_1/config/ax_c99_features.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/config/ax_c99_features.m4
   freeswitch/branches/seven/libs/libg722_1/config/ax_check_real_file.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/config/ax_check_real_file.m4
   freeswitch/branches/seven/libs/libg722_1/config/ax_compiler_vendor.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/config/ax_compiler_vendor.m4
   freeswitch/branches/seven/libs/libg722_1/config/ax_fixed_point_machine.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/config/ax_fixed_point_machine.m4
   freeswitch/branches/seven/libs/libg722_1/config/ax_misaligned_access_fails.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/config/ax_misaligned_access_fails.m4
   freeswitch/branches/seven/libs/libg722_1/config/config.guess
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/config/config.guess
   freeswitch/branches/seven/libs/libg722_1/config/config.sub
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/config/config.sub
   freeswitch/branches/seven/libs/libg722_1/config/depcomp
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/config/depcomp
   freeswitch/branches/seven/libs/libg722_1/config/install-sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/config/install-sh
   freeswitch/branches/seven/libs/libg722_1/config/ltmain.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/config/ltmain.sh
   freeswitch/branches/seven/libs/libg722_1/config/missing
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/config/missing
   freeswitch/branches/seven/libs/libg722_1/configure
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/configure
   freeswitch/branches/seven/libs/libg722_1/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/configure.ac
   freeswitch/branches/seven/libs/libg722_1/debian/
      - copied from r11459, /freeswitch/trunk/libs/libg722_1/debian/
   freeswitch/branches/seven/libs/libg722_1/debian/changelog
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/debian/changelog
   freeswitch/branches/seven/libs/libg722_1/debian/compat
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/debian/compat
   freeswitch/branches/seven/libs/libg722_1/debian/control
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/debian/control
   freeswitch/branches/seven/libs/libg722_1/debian/copyright
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/debian/copyright
   freeswitch/branches/seven/libs/libg722_1/debian/libg722_1-dev.install
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/debian/libg722_1-dev.install
   freeswitch/branches/seven/libs/libg722_1/debian/libg722_1-doc.install
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/debian/libg722_1-doc.install
   freeswitch/branches/seven/libs/libg722_1/debian/libg722_11.install
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/debian/libg722_11.install
   freeswitch/branches/seven/libs/libg722_1/debian/rules
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/debian/rules
   freeswitch/branches/seven/libs/libg722_1/debian/watch
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/debian/watch
   freeswitch/branches/seven/libs/libg722_1/doc/
      - copied from r11459, /freeswitch/trunk/libs/libg722_1/doc/
   freeswitch/branches/seven/libs/libg722_1/doc/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/doc/Makefile.am
   freeswitch/branches/seven/libs/libg722_1/doc/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/doc/Makefile.in
   freeswitch/branches/seven/libs/libg722_1/doc/css.css
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/doc/css.css
   freeswitch/branches/seven/libs/libg722_1/doc/libg722_1-doxygen
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/doc/libg722_1-doxygen
   freeswitch/branches/seven/libs/libg722_1/doc/wrapper.xsl
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/doc/wrapper.xsl
   freeswitch/branches/seven/libs/libg722_1/g722_1.spec.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/g722_1.spec.in
   freeswitch/branches/seven/libs/libg722_1/src/
      - copied from r11459, /freeswitch/trunk/libs/libg722_1/src/
   freeswitch/branches/seven/libs/libg722_1/src/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/Makefile.am
   freeswitch/branches/seven/libs/libg722_1/src/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/Makefile.in
   freeswitch/branches/seven/libs/libg722_1/src/basop32.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/basop32.c
   freeswitch/branches/seven/libs/libg722_1/src/basop32.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/basop32.h
   freeswitch/branches/seven/libs/libg722_1/src/bitstream.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/bitstream.c
   freeswitch/branches/seven/libs/libg722_1/src/bitstream.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/bitstream.h
   freeswitch/branches/seven/libs/libg722_1/src/coef2sam.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/coef2sam.c
   freeswitch/branches/seven/libs/libg722_1/src/coef2sam.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/coef2sam.h
   freeswitch/branches/seven/libs/libg722_1/src/common.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/common.c
   freeswitch/branches/seven/libs/libg722_1/src/commonf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/commonf.c
   freeswitch/branches/seven/libs/libg722_1/src/dct4.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/dct4.c
   freeswitch/branches/seven/libs/libg722_1/src/dct4_a.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/dct4_a.c
   freeswitch/branches/seven/libs/libg722_1/src/dct4_a.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/dct4_a.h
   freeswitch/branches/seven/libs/libg722_1/src/dct4_s.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/dct4_s.c
   freeswitch/branches/seven/libs/libg722_1/src/dct4_s.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/dct4_s.h
   freeswitch/branches/seven/libs/libg722_1/src/decoder.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/decoder.c
   freeswitch/branches/seven/libs/libg722_1/src/decoderf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/decoderf.c
   freeswitch/branches/seven/libs/libg722_1/src/defs.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/defs.h
   freeswitch/branches/seven/libs/libg722_1/src/encoder.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/encoder.c
   freeswitch/branches/seven/libs/libg722_1/src/encoderf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/encoderf.c
   freeswitch/branches/seven/libs/libg722_1/src/g722_1/
      - copied from r11459, /freeswitch/trunk/libs/libg722_1/src/g722_1/
   freeswitch/branches/seven/libs/libg722_1/src/g722_1.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/g722_1.h.in
   freeswitch/branches/seven/libs/libg722_1/src/g722_1/g722_1.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/g722_1/g722_1.h
   freeswitch/branches/seven/libs/libg722_1/src/g722_1/version.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/g722_1/version.h
   freeswitch/branches/seven/libs/libg722_1/src/g722_1/version.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/g722_1/version.h.in
   freeswitch/branches/seven/libs/libg722_1/src/huff_tab.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/huff_tab.c
   freeswitch/branches/seven/libs/libg722_1/src/huff_tab.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/huff_tab.h
   freeswitch/branches/seven/libs/libg722_1/src/libg722_1.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/libg722_1.dsp
   freeswitch/branches/seven/libs/libg722_1/src/libg722_1.sln
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/libg722_1.sln
   freeswitch/branches/seven/libs/libg722_1/src/libg722_1.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/libg722_1.vcproj
   freeswitch/branches/seven/libs/libg722_1/src/make_dct4_tables.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/make_dct4_tables.c
   freeswitch/branches/seven/libs/libg722_1/src/make_tables.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/make_tables.c
   freeswitch/branches/seven/libs/libg722_1/src/msvc/
      - copied from r11459, /freeswitch/trunk/libs/libg722_1/src/msvc/
   freeswitch/branches/seven/libs/libg722_1/src/msvc/g722_1.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/msvc/g722_1.def
   freeswitch/branches/seven/libs/libg722_1/src/msvc/gettimeofday.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/msvc/gettimeofday.c
   freeswitch/branches/seven/libs/libg722_1/src/msvc/inttypes.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/msvc/inttypes.h
   freeswitch/branches/seven/libs/libg722_1/src/msvc/msvcproj.foot
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/msvc/msvcproj.foot
   freeswitch/branches/seven/libs/libg722_1/src/msvc/msvcproj.head
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/msvc/msvcproj.head
   freeswitch/branches/seven/libs/libg722_1/src/msvc/sys/
      - copied from r11459, /freeswitch/trunk/libs/libg722_1/src/msvc/sys/
   freeswitch/branches/seven/libs/libg722_1/src/msvc/sys/time.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/msvc/sys/time.h
   freeswitch/branches/seven/libs/libg722_1/src/msvc/tgmath.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/msvc/tgmath.h
   freeswitch/branches/seven/libs/libg722_1/src/msvc/unistd.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/msvc/unistd.h
   freeswitch/branches/seven/libs/libg722_1/src/msvc/vc8proj.foot
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/msvc/vc8proj.foot
   freeswitch/branches/seven/libs/libg722_1/src/msvc/vc8proj.head
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/msvc/vc8proj.head
   freeswitch/branches/seven/libs/libg722_1/src/sam2coef.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/sam2coef.c
   freeswitch/branches/seven/libs/libg722_1/src/sam2coef.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/sam2coef.h
   freeswitch/branches/seven/libs/libg722_1/src/tables.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/tables.c
   freeswitch/branches/seven/libs/libg722_1/src/tables.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/src/tables.h
   freeswitch/branches/seven/libs/libg722_1/test-data/
      - copied from r11459, /freeswitch/trunk/libs/libg722_1/test-data/
   freeswitch/branches/seven/libs/libg722_1/test-data/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/test-data/Makefile.am
   freeswitch/branches/seven/libs/libg722_1/test-data/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/test-data/Makefile.in
   freeswitch/branches/seven/libs/libg722_1/test-data/itu/
      - copied from r11459, /freeswitch/trunk/libs/libg722_1/test-data/itu/
   freeswitch/branches/seven/libs/libg722_1/test-data/itu/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/test-data/itu/Makefile.am
   freeswitch/branches/seven/libs/libg722_1/test-data/itu/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/test-data/itu/Makefile.in
   freeswitch/branches/seven/libs/libg722_1/test-data/local/
      - copied from r11459, /freeswitch/trunk/libs/libg722_1/test-data/local/
   freeswitch/branches/seven/libs/libg722_1/test-data/local/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/test-data/local/Makefile.am
   freeswitch/branches/seven/libs/libg722_1/test-data/local/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/test-data/local/Makefile.in
   freeswitch/branches/seven/libs/libg722_1/test-data/local/short_wb_voice.wav
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/test-data/local/short_wb_voice.wav
   freeswitch/branches/seven/libs/libg722_1/tests/
      - copied from r11459, /freeswitch/trunk/libs/libg722_1/tests/
   freeswitch/branches/seven/libs/libg722_1/tests/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/tests/Makefile.am
   freeswitch/branches/seven/libs/libg722_1/tests/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/tests/Makefile.in
   freeswitch/branches/seven/libs/libg722_1/tests/g722_1_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/tests/g722_1_tests.c
   freeswitch/branches/seven/libs/libg722_1/tests/itu_bit_stream.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/tests/itu_bit_stream.c
   freeswitch/branches/seven/libs/libg722_1/tests/regression_tests.sh.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/tests/regression_tests.sh.in
   freeswitch/branches/seven/libs/libg722_1/tests/timing.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/tests/timing.h
   freeswitch/branches/seven/libs/libg722_1/unpack_g722_1_data.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/unpack_g722_1_data.sh
   freeswitch/branches/seven/libs/libg722_1/wrapper.xsl
      - copied unchanged from r11459, /freeswitch/trunk/libs/libg722_1/wrapper.xsl
   freeswitch/branches/seven/libs/libresample/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libresample/
   freeswitch/branches/seven/libs/libresample/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/.update
   freeswitch/branches/seven/libs/libresample/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/AUTHORS
   freeswitch/branches/seven/libs/libresample/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/COPYING
   freeswitch/branches/seven/libs/libresample/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/ChangeLog
   freeswitch/branches/seven/libs/libresample/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/INSTALL
   freeswitch/branches/seven/libs/libresample/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/Makefile.am
   freeswitch/branches/seven/libs/libresample/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/NEWS
   freeswitch/branches/seven/libs/libresample/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/README
   freeswitch/branches/seven/libs/libresample/acsite.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/acsite.m4
   freeswitch/branches/seven/libs/libresample/build/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libresample/build/
   freeswitch/branches/seven/libs/libresample/build/config/
      - copied from r11459, /freeswitch/trunk/libs/libresample/build/config/
   freeswitch/branches/seven/libs/libresample/build/config/ac_cflags_gcc_option.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/build/config/ac_cflags_gcc_option.m4
   freeswitch/branches/seven/libs/libresample/build/config/ac_cflags_sun_option.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/build/config/ac_cflags_sun_option.m4
   freeswitch/branches/seven/libs/libresample/build/config/ac_gcc_archflag.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/build/config/ac_gcc_archflag.m4
   freeswitch/branches/seven/libs/libresample/build/config/ac_gcc_x86_cpuid.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/build/config/ac_gcc_x86_cpuid.m4
   freeswitch/branches/seven/libs/libresample/build/config/ac_prog_gzip.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/build/config/ac_prog_gzip.m4
   freeswitch/branches/seven/libs/libresample/build/config/ac_prog_wget.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/build/config/ac_prog_wget.m4
   freeswitch/branches/seven/libs/libresample/build/config/ax_cc_maxopt.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/build/config/ax_cc_maxopt.m4
   freeswitch/branches/seven/libs/libresample/build/config/ax_cflags_warn_all_ansi.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/build/config/ax_cflags_warn_all_ansi.m4
   freeswitch/branches/seven/libs/libresample/build/config/ax_check_compiler_flags.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/build/config/ax_check_compiler_flags.m4
   freeswitch/branches/seven/libs/libresample/build/config/ax_compiler_vendor.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/build/config/ax_compiler_vendor.m4
   freeswitch/branches/seven/libs/libresample/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/configure.gnu
   freeswitch/branches/seven/libs/libresample/configure.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/configure.in
   freeswitch/branches/seven/libs/libresample/include/
      - copied from r11459, /freeswitch/trunk/libs/libresample/include/
   freeswitch/branches/seven/libs/libresample/include/libresample.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/include/libresample.h
   freeswitch/branches/seven/libs/libresample/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libresample/src/
   freeswitch/branches/seven/libs/libresample/src/filterkit.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/src/filterkit.c
   freeswitch/branches/seven/libs/libresample/src/filterkit.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/src/filterkit.h
   freeswitch/branches/seven/libs/libresample/src/resample.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/src/resample.c
   freeswitch/branches/seven/libs/libresample/src/resample_defs.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/src/resample_defs.h
   freeswitch/branches/seven/libs/libresample/src/resamplesubs.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/src/resamplesubs.c
   freeswitch/branches/seven/libs/libresample/src/stamp-h1
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/src/stamp-h1
   freeswitch/branches/seven/libs/libresample/tests/
      - copied from r11459, /freeswitch/trunk/libs/libresample/tests/
   freeswitch/branches/seven/libs/libresample/tests/compareresample.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/tests/compareresample.c
   freeswitch/branches/seven/libs/libresample/tests/resample-sndfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/tests/resample-sndfile.c
   freeswitch/branches/seven/libs/libresample/tests/testresample.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/tests/testresample.c
   freeswitch/branches/seven/libs/libresample/win/
      - copied from r11459, /freeswitch/trunk/libs/libresample/win/
   freeswitch/branches/seven/libs/libresample/win/libresample.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/libresample/win/libresample.dsp
   freeswitch/branches/seven/libs/libsndfile/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libsndfile/
   freeswitch/branches/seven/libs/libsndfile/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/.update
   freeswitch/branches/seven/libs/libsndfile/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/AUTHORS
   freeswitch/branches/seven/libs/libsndfile/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/COPYING
   freeswitch/branches/seven/libs/libsndfile/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/ChangeLog
   freeswitch/branches/seven/libs/libsndfile/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/INSTALL
   freeswitch/branches/seven/libs/libsndfile/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/Makefile.am
   freeswitch/branches/seven/libs/libsndfile/Mingw-make-dist.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/Mingw-make-dist.sh
   freeswitch/branches/seven/libs/libsndfile/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/NEWS
   freeswitch/branches/seven/libs/libsndfile/Octave/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libsndfile/Octave/
   freeswitch/branches/seven/libs/libsndfile/Octave/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/Octave/Makefile.am
   freeswitch/branches/seven/libs/libsndfile/Octave/sndfile_load.m
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/Octave/sndfile_load.m
   freeswitch/branches/seven/libs/libsndfile/Octave/sndfile_play.m
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/Octave/sndfile_play.m
   freeswitch/branches/seven/libs/libsndfile/Octave/sndfile_save.m
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/Octave/sndfile_save.m
   freeswitch/branches/seven/libs/libsndfile/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/README
   freeswitch/branches/seven/libs/libsndfile/TODO
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/TODO
   freeswitch/branches/seven/libs/libsndfile/Win32/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libsndfile/Win32/
   freeswitch/branches/seven/libs/libsndfile/Win32/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/Win32/Makefile.am
   freeswitch/branches/seven/libs/libsndfile/Win32/README-precompiled-dll.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/Win32/README-precompiled-dll.txt
   freeswitch/branches/seven/libs/libsndfile/Win32/testprog.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/Win32/testprog.c
   freeswitch/branches/seven/libs/libsndfile/acinclude.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/acinclude.m4
   freeswitch/branches/seven/libs/libsndfile/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/configure.ac
   freeswitch/branches/seven/libs/libsndfile/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/configure.gnu
   freeswitch/branches/seven/libs/libsndfile/doc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libsndfile/doc/
   freeswitch/branches/seven/libs/libsndfile/doc/FAQ.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/FAQ.html
   freeswitch/branches/seven/libs/libsndfile/doc/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/Makefile.am
   freeswitch/branches/seven/libs/libsndfile/doc/api.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/api.html
   freeswitch/branches/seven/libs/libsndfile/doc/bugs.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/bugs.html
   freeswitch/branches/seven/libs/libsndfile/doc/command.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/command.html
   freeswitch/branches/seven/libs/libsndfile/doc/dither.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/dither.html
   freeswitch/branches/seven/libs/libsndfile/doc/embedded_files.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/embedded_files.html
   freeswitch/branches/seven/libs/libsndfile/doc/index.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/index.html
   freeswitch/branches/seven/libs/libsndfile/doc/libsndfile.css
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/libsndfile.css
   freeswitch/branches/seven/libs/libsndfile/doc/libsndfile.css.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/libsndfile.css.in
   freeswitch/branches/seven/libs/libsndfile/doc/libsndfile.jpg
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/libsndfile.jpg
   freeswitch/branches/seven/libs/libsndfile/doc/lists.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/lists.html
   freeswitch/branches/seven/libs/libsndfile/doc/new_file_type.HOWTO
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/new_file_type.HOWTO
   freeswitch/branches/seven/libs/libsndfile/doc/octave.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/octave.html
   freeswitch/branches/seven/libs/libsndfile/doc/pkgconfig.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/pkgconfig.html
   freeswitch/branches/seven/libs/libsndfile/doc/sndfile_info.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/sndfile_info.html
   freeswitch/branches/seven/libs/libsndfile/doc/win32.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/doc/win32.html
   freeswitch/branches/seven/libs/libsndfile/examples/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libsndfile/examples/
   freeswitch/branches/seven/libs/libsndfile/examples/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/examples/Makefile.am
   freeswitch/branches/seven/libs/libsndfile/examples/cooledit-fixer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/examples/cooledit-fixer.c
   freeswitch/branches/seven/libs/libsndfile/examples/generate.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/examples/generate.c
   freeswitch/branches/seven/libs/libsndfile/examples/list_formats.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/examples/list_formats.c
   freeswitch/branches/seven/libs/libsndfile/examples/make_sine.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/examples/make_sine.c
   freeswitch/branches/seven/libs/libsndfile/examples/sfprocess.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/examples/sfprocess.c
   freeswitch/branches/seven/libs/libsndfile/examples/sndfile-convert.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/examples/sndfile-convert.c
   freeswitch/branches/seven/libs/libsndfile/examples/sndfile-info.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/examples/sndfile-info.c
   freeswitch/branches/seven/libs/libsndfile/examples/sndfile-play-beos.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/examples/sndfile-play-beos.cpp
   freeswitch/branches/seven/libs/libsndfile/examples/sndfile-play.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/examples/sndfile-play.c
   freeswitch/branches/seven/libs/libsndfile/libsndfile.spec.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/libsndfile.spec.in
   freeswitch/branches/seven/libs/libsndfile/man/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libsndfile/man/
   freeswitch/branches/seven/libs/libsndfile/man/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/man/Makefile.am
   freeswitch/branches/seven/libs/libsndfile/man/sndfile-convert.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/man/sndfile-convert.1
   freeswitch/branches/seven/libs/libsndfile/man/sndfile-info.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/man/sndfile-info.1
   freeswitch/branches/seven/libs/libsndfile/man/sndfile-play.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/man/sndfile-play.1
   freeswitch/branches/seven/libs/libsndfile/reconfigure.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/reconfigure.mk
   freeswitch/branches/seven/libs/libsndfile/regtest/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libsndfile/regtest/
   freeswitch/branches/seven/libs/libsndfile/regtest/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/regtest/Makefile.am
   freeswitch/branches/seven/libs/libsndfile/regtest/checksum.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/regtest/checksum.c
   freeswitch/branches/seven/libs/libsndfile/regtest/database.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/regtest/database.c
   freeswitch/branches/seven/libs/libsndfile/regtest/regtest.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/regtest/regtest.h
   freeswitch/branches/seven/libs/libsndfile/regtest/sndfile-regtest.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/regtest/sndfile-regtest.c
   freeswitch/branches/seven/libs/libsndfile/sndfile.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/sndfile.pc.in
   freeswitch/branches/seven/libs/libsndfile/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libsndfile/src/
   freeswitch/branches/seven/libs/libsndfile/src/G72x/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/
   freeswitch/branches/seven/libs/libsndfile/src/G72x/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/ChangeLog
   freeswitch/branches/seven/libs/libsndfile/src/G72x/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/Makefile.am
   freeswitch/branches/seven/libs/libsndfile/src/G72x/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/README
   freeswitch/branches/seven/libs/libsndfile/src/G72x/README.original
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/README.original
   freeswitch/branches/seven/libs/libsndfile/src/G72x/g721.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/g721.c
   freeswitch/branches/seven/libs/libsndfile/src/G72x/g723_16.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/g723_16.c
   freeswitch/branches/seven/libs/libsndfile/src/G72x/g723_24.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/g723_24.c
   freeswitch/branches/seven/libs/libsndfile/src/G72x/g723_40.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/g723_40.c
   freeswitch/branches/seven/libs/libsndfile/src/G72x/g72x.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/g72x.c
   freeswitch/branches/seven/libs/libsndfile/src/G72x/g72x.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/g72x.h
   freeswitch/branches/seven/libs/libsndfile/src/G72x/g72x_priv.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/g72x_priv.h
   freeswitch/branches/seven/libs/libsndfile/src/G72x/g72x_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/G72x/g72x_test.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/COPYRIGHT
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/COPYRIGHT
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/ChangeLog
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/Makefile.am
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/README
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/add.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/add.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/code.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/code.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/config.h
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/decode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/decode.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/gsm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/gsm.h
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/gsm610_priv.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/gsm610_priv.h
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/gsm_create.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/gsm_create.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/gsm_decode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/gsm_decode.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/gsm_destroy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/gsm_destroy.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/gsm_encode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/gsm_encode.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/gsm_option.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/gsm_option.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/long_term.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/long_term.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/lpc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/lpc.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/preprocess.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/preprocess.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/rpe.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/rpe.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/short_term.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/short_term.c
   freeswitch/branches/seven/libs/libsndfile/src/GSM610/table.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/GSM610/table.c
   freeswitch/branches/seven/libs/libsndfile/src/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/Makefile.am
   freeswitch/branches/seven/libs/libsndfile/src/Symbols.darwin
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/Symbols.darwin
   freeswitch/branches/seven/libs/libsndfile/src/Symbols.linux
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/Symbols.linux
   freeswitch/branches/seven/libs/libsndfile/src/aiff.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/aiff.c
   freeswitch/branches/seven/libs/libsndfile/src/alaw.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/alaw.c
   freeswitch/branches/seven/libs/libsndfile/src/au.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/au.c
   freeswitch/branches/seven/libs/libsndfile/src/avr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/avr.c
   freeswitch/branches/seven/libs/libsndfile/src/binheader_writef_check.py
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/binheader_writef_check.py
   freeswitch/branches/seven/libs/libsndfile/src/broadcast.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/broadcast.c
   freeswitch/branches/seven/libs/libsndfile/src/caf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/caf.c
   freeswitch/branches/seven/libs/libsndfile/src/command.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/command.c
   freeswitch/branches/seven/libs/libsndfile/src/common.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/common.c
   freeswitch/branches/seven/libs/libsndfile/src/common.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/common.h
   freeswitch/branches/seven/libs/libsndfile/src/create_symbols_file.py
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/create_symbols_file.py
   freeswitch/branches/seven/libs/libsndfile/src/cygsndfile.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/cygsndfile.def
   freeswitch/branches/seven/libs/libsndfile/src/dither.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/dither.c
   freeswitch/branches/seven/libs/libsndfile/src/double64.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/double64.c
   freeswitch/branches/seven/libs/libsndfile/src/dwd.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/dwd.c
   freeswitch/branches/seven/libs/libsndfile/src/dwvw.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/dwvw.c
   freeswitch/branches/seven/libs/libsndfile/src/file_io.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/file_io.c
   freeswitch/branches/seven/libs/libsndfile/src/flac.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/flac.c
   freeswitch/branches/seven/libs/libsndfile/src/float32.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/float32.c
   freeswitch/branches/seven/libs/libsndfile/src/float_cast.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/float_cast.h
   freeswitch/branches/seven/libs/libsndfile/src/g72x.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/g72x.c
   freeswitch/branches/seven/libs/libsndfile/src/gsm610.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/gsm610.c
   freeswitch/branches/seven/libs/libsndfile/src/htk.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/htk.c
   freeswitch/branches/seven/libs/libsndfile/src/ima_adpcm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/ima_adpcm.c
   freeswitch/branches/seven/libs/libsndfile/src/interleave.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/interleave.c
   freeswitch/branches/seven/libs/libsndfile/src/ircam.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/ircam.c
   freeswitch/branches/seven/libs/libsndfile/src/libsndfile.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/libsndfile.def
   freeswitch/branches/seven/libs/libsndfile/src/macbinary3.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/macbinary3.c
   freeswitch/branches/seven/libs/libsndfile/src/macos.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/macos.c
   freeswitch/branches/seven/libs/libsndfile/src/mat4.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/mat4.c
   freeswitch/branches/seven/libs/libsndfile/src/mat5.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/mat5.c
   freeswitch/branches/seven/libs/libsndfile/src/ms_adpcm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/ms_adpcm.c
   freeswitch/branches/seven/libs/libsndfile/src/nist.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/nist.c
   freeswitch/branches/seven/libs/libsndfile/src/ogg.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/ogg.c
   freeswitch/branches/seven/libs/libsndfile/src/paf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/paf.c
   freeswitch/branches/seven/libs/libsndfile/src/pcm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/pcm.c
   freeswitch/branches/seven/libs/libsndfile/src/pvf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/pvf.c
   freeswitch/branches/seven/libs/libsndfile/src/raw.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/raw.c
   freeswitch/branches/seven/libs/libsndfile/src/rx2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/rx2.c
   freeswitch/branches/seven/libs/libsndfile/src/sd2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/sd2.c
   freeswitch/branches/seven/libs/libsndfile/src/sds.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/sds.c
   freeswitch/branches/seven/libs/libsndfile/src/sf_unistd.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/sf_unistd.h
   freeswitch/branches/seven/libs/libsndfile/src/sfconfig.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/sfconfig.h
   freeswitch/branches/seven/libs/libsndfile/src/sfendian.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/sfendian.h
   freeswitch/branches/seven/libs/libsndfile/src/sndfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/sndfile.c
   freeswitch/branches/seven/libs/libsndfile/src/sndfile.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/sndfile.h.in
   freeswitch/branches/seven/libs/libsndfile/src/sndfile.hh
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/sndfile.hh
   freeswitch/branches/seven/libs/libsndfile/src/strings.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/strings.c
   freeswitch/branches/seven/libs/libsndfile/src/svx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/svx.c
   freeswitch/branches/seven/libs/libsndfile/src/test_endswap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/test_endswap.c
   freeswitch/branches/seven/libs/libsndfile/src/test_endswap.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/test_endswap.def
   freeswitch/branches/seven/libs/libsndfile/src/test_endswap.tpl
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/test_endswap.tpl
   freeswitch/branches/seven/libs/libsndfile/src/test_file_io.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/test_file_io.c
   freeswitch/branches/seven/libs/libsndfile/src/test_log_printf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/test_log_printf.c
   freeswitch/branches/seven/libs/libsndfile/src/txw.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/txw.c
   freeswitch/branches/seven/libs/libsndfile/src/ulaw.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/ulaw.c
   freeswitch/branches/seven/libs/libsndfile/src/voc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/voc.c
   freeswitch/branches/seven/libs/libsndfile/src/vox_adpcm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/vox_adpcm.c
   freeswitch/branches/seven/libs/libsndfile/src/w64.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/w64.c
   freeswitch/branches/seven/libs/libsndfile/src/wav.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/wav.c
   freeswitch/branches/seven/libs/libsndfile/src/wav_w64.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/wav_w64.c
   freeswitch/branches/seven/libs/libsndfile/src/wav_w64.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/wav_w64.h
   freeswitch/branches/seven/libs/libsndfile/src/wve.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/wve.c
   freeswitch/branches/seven/libs/libsndfile/src/xi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/src/xi.c
   freeswitch/branches/seven/libs/libsndfile/tests/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libsndfile/tests/
   freeswitch/branches/seven/libs/libsndfile/tests/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/Makefile.am
   freeswitch/branches/seven/libs/libsndfile/tests/aiff_rw_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/aiff_rw_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/alaw_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/alaw_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/benchmark.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/benchmark.c
   freeswitch/branches/seven/libs/libsndfile/tests/benchmark.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/benchmark.def
   freeswitch/branches/seven/libs/libsndfile/tests/benchmark.tpl
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/benchmark.tpl
   freeswitch/branches/seven/libs/libsndfile/tests/command_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/command_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/cpp_test.cc
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/cpp_test.cc
   freeswitch/branches/seven/libs/libsndfile/tests/dft_cmp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/dft_cmp.c
   freeswitch/branches/seven/libs/libsndfile/tests/dft_cmp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/dft_cmp.h
   freeswitch/branches/seven/libs/libsndfile/tests/dither_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/dither_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/dwvw_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/dwvw_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/error_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/error_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/fix_this.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/fix_this.c
   freeswitch/branches/seven/libs/libsndfile/tests/floating_point_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/floating_point_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/floating_point_test.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/floating_point_test.def
   freeswitch/branches/seven/libs/libsndfile/tests/floating_point_test.tpl
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/floating_point_test.tpl
   freeswitch/branches/seven/libs/libsndfile/tests/header_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/header_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/header_test.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/header_test.def
   freeswitch/branches/seven/libs/libsndfile/tests/header_test.tpl
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/header_test.tpl
   freeswitch/branches/seven/libs/libsndfile/tests/headerless_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/headerless_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/largefile_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/largefile_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/locale_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/locale_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/lossy_comp_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/lossy_comp_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/misc_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/misc_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/multi_file_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/multi_file_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/open_fail_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/open_fail_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/pcm_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/pcm_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/pcm_test.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/pcm_test.def
   freeswitch/branches/seven/libs/libsndfile/tests/pcm_test.tpl
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/pcm_test.tpl
   freeswitch/branches/seven/libs/libsndfile/tests/peak_chunk_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/peak_chunk_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/pipe_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/pipe_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/pipe_test.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/pipe_test.def
   freeswitch/branches/seven/libs/libsndfile/tests/pipe_test.tpl
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/pipe_test.tpl
   freeswitch/branches/seven/libs/libsndfile/tests/raw_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/raw_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/scale_clip_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/scale_clip_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/scale_clip_test.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/scale_clip_test.def
   freeswitch/branches/seven/libs/libsndfile/tests/scale_clip_test.tpl
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/scale_clip_test.tpl
   freeswitch/branches/seven/libs/libsndfile/tests/sfversion.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/sfversion.c
   freeswitch/branches/seven/libs/libsndfile/tests/stdin_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/stdin_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/stdio_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/stdio_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/stdout_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/stdout_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/string_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/string_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/ulaw_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/ulaw_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/utils.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/utils.c
   freeswitch/branches/seven/libs/libsndfile/tests/utils.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/utils.def
   freeswitch/branches/seven/libs/libsndfile/tests/utils.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/utils.h
   freeswitch/branches/seven/libs/libsndfile/tests/utils.tpl
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/utils.tpl
   freeswitch/branches/seven/libs/libsndfile/tests/virtual_io_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/virtual_io_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/win32_ordinal_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/win32_ordinal_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/win32_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/win32_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/write_read_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/write_read_test.c
   freeswitch/branches/seven/libs/libsndfile/tests/write_read_test.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/write_read_test.def
   freeswitch/branches/seven/libs/libsndfile/tests/write_read_test.tpl
      - copied unchanged from r11459, /freeswitch/trunk/libs/libsndfile/tests/write_read_test.tpl
   freeswitch/branches/seven/libs/libteletone/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libteletone/
   freeswitch/branches/seven/libs/libteletone/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/.update
   freeswitch/branches/seven/libs/libteletone/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/AUTHORS
   freeswitch/branches/seven/libs/libteletone/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/COPYING
   freeswitch/branches/seven/libs/libteletone/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/ChangeLog
   freeswitch/branches/seven/libs/libteletone/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/INSTALL
   freeswitch/branches/seven/libs/libteletone/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/Makefile.am
   freeswitch/branches/seven/libs/libteletone/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/NEWS
   freeswitch/branches/seven/libs/libteletone/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/README
   freeswitch/branches/seven/libs/libteletone/acsite.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/acsite.m4
   freeswitch/branches/seven/libs/libteletone/build/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/libteletone/build/
   freeswitch/branches/seven/libs/libteletone/build/config/
      - copied from r11459, /freeswitch/trunk/libs/libteletone/build/config/
   freeswitch/branches/seven/libs/libteletone/build/config/ac_cflags_gcc_option.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/build/config/ac_cflags_gcc_option.m4
   freeswitch/branches/seven/libs/libteletone/build/config/ac_cflags_sun_option.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/build/config/ac_cflags_sun_option.m4
   freeswitch/branches/seven/libs/libteletone/build/config/ac_gcc_archflag.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/build/config/ac_gcc_archflag.m4
   freeswitch/branches/seven/libs/libteletone/build/config/ac_gcc_x86_cpuid.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/build/config/ac_gcc_x86_cpuid.m4
   freeswitch/branches/seven/libs/libteletone/build/config/ac_prog_gzip.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/build/config/ac_prog_gzip.m4
   freeswitch/branches/seven/libs/libteletone/build/config/ac_prog_wget.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/build/config/ac_prog_wget.m4
   freeswitch/branches/seven/libs/libteletone/build/config/ax_cc_maxopt.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/build/config/ax_cc_maxopt.m4
   freeswitch/branches/seven/libs/libteletone/build/config/ax_cflags_warn_all_ansi.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/build/config/ax_cflags_warn_all_ansi.m4
   freeswitch/branches/seven/libs/libteletone/build/config/ax_check_compiler_flags.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/build/config/ax_check_compiler_flags.m4
   freeswitch/branches/seven/libs/libteletone/build/config/ax_compiler_vendor.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/build/config/ax_compiler_vendor.m4
   freeswitch/branches/seven/libs/libteletone/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/configure.gnu
   freeswitch/branches/seven/libs/libteletone/configure.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/configure.in
   freeswitch/branches/seven/libs/libteletone/libteletone.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/libteletone.2008.vcproj
   freeswitch/branches/seven/libs/libteletone/libteletone.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/libteletone.vcproj
   freeswitch/branches/seven/libs/libteletone/src/
      - copied from r11459, /freeswitch/trunk/libs/libteletone/src/
   freeswitch/branches/seven/libs/libteletone/src/libteletone.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/src/libteletone.h
   freeswitch/branches/seven/libs/libteletone/src/libteletone_detect.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/src/libteletone_detect.c
   freeswitch/branches/seven/libs/libteletone/src/libteletone_detect.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/src/libteletone_detect.h
   freeswitch/branches/seven/libs/libteletone/src/libteletone_generate.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/src/libteletone_generate.c
   freeswitch/branches/seven/libs/libteletone/src/libteletone_generate.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/src/libteletone_generate.h
   freeswitch/branches/seven/libs/libteletone/teletone.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/libteletone/teletone.def
   freeswitch/branches/seven/libs/pcre/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/pcre/
   freeswitch/branches/seven/libs/pcre/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/.update
   freeswitch/branches/seven/libs/pcre/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/AUTHORS
   freeswitch/branches/seven/libs/pcre/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/COPYING
   freeswitch/branches/seven/libs/pcre/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/ChangeLog
   freeswitch/branches/seven/libs/pcre/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/INSTALL
   freeswitch/branches/seven/libs/pcre/LICENCE
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/LICENCE
   freeswitch/branches/seven/libs/pcre/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/Makefile.in
   freeswitch/branches/seven/libs/pcre/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/NEWS
   freeswitch/branches/seven/libs/pcre/NON-UNIX-USE
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/NON-UNIX-USE
   freeswitch/branches/seven/libs/pcre/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/README
   freeswitch/branches/seven/libs/pcre/RunGrepTest.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/RunGrepTest.in
   freeswitch/branches/seven/libs/pcre/RunTest.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/RunTest.in
   freeswitch/branches/seven/libs/pcre/config.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/config.h.in
   freeswitch/branches/seven/libs/pcre/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/configure.ac
   freeswitch/branches/seven/libs/pcre/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/configure.gnu
   freeswitch/branches/seven/libs/pcre/dftables.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/dftables.c
   freeswitch/branches/seven/libs/pcre/doc/
      - copied from r11459, /freeswitch/trunk/libs/pcre/doc/
   freeswitch/branches/seven/libs/pcre/doc/Tech.Notes
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/Tech.Notes
   freeswitch/branches/seven/libs/pcre/doc/html/
      - copied from r11459, /freeswitch/trunk/libs/pcre/doc/html/
   freeswitch/branches/seven/libs/pcre/doc/html/index.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/index.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_compile.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_compile.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_compile2.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_compile2.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_config.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_config.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_copy_named_substring.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_copy_named_substring.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_copy_substring.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_copy_substring.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_dfa_exec.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_dfa_exec.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_exec.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_exec.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_free_substring.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_free_substring.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_free_substring_list.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_free_substring_list.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_fullinfo.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_fullinfo.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_get_named_substring.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_get_named_substring.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_get_stringnumber.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_get_stringnumber.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_get_stringtable_entries.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_get_stringtable_entries.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_get_substring.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_get_substring.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_get_substring_list.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_get_substring_list.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_info.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_info.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_maketables.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_maketables.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_refcount.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_refcount.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_study.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_study.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcre_version.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcre_version.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcreapi.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcreapi.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcrebuild.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcrebuild.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcrecallout.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcrecallout.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcrecompat.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcrecompat.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcrecpp.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcrecpp.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcregrep.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcregrep.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcrematching.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcrematching.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcrepartial.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcrepartial.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcrepattern.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcrepattern.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcreperform.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcreperform.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcreposix.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcreposix.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcreprecompile.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcreprecompile.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcresample.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcresample.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcrestack.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcrestack.html
   freeswitch/branches/seven/libs/pcre/doc/html/pcretest.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/html/pcretest.html
   freeswitch/branches/seven/libs/pcre/doc/pcre.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre.3
   freeswitch/branches/seven/libs/pcre/doc/pcre.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre.txt
   freeswitch/branches/seven/libs/pcre/doc/pcre_compile.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_compile.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_compile2.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_compile2.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_config.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_config.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_copy_named_substring.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_copy_named_substring.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_copy_substring.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_copy_substring.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_dfa_exec.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_dfa_exec.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_exec.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_exec.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_free_substring.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_free_substring.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_free_substring_list.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_free_substring_list.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_fullinfo.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_fullinfo.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_get_named_substring.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_get_named_substring.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_get_stringnumber.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_get_stringnumber.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_get_stringtable_entries.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_get_stringtable_entries.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_get_substring.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_get_substring.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_get_substring_list.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_get_substring_list.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_info.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_info.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_maketables.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_maketables.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_refcount.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_refcount.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_study.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_study.3
   freeswitch/branches/seven/libs/pcre/doc/pcre_version.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcre_version.3
   freeswitch/branches/seven/libs/pcre/doc/pcreapi.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcreapi.3
   freeswitch/branches/seven/libs/pcre/doc/pcrebuild.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcrebuild.3
   freeswitch/branches/seven/libs/pcre/doc/pcrecallout.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcrecallout.3
   freeswitch/branches/seven/libs/pcre/doc/pcrecompat.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcrecompat.3
   freeswitch/branches/seven/libs/pcre/doc/pcrecpp.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcrecpp.3
   freeswitch/branches/seven/libs/pcre/doc/pcregrep.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcregrep.1
   freeswitch/branches/seven/libs/pcre/doc/pcregrep.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcregrep.txt
   freeswitch/branches/seven/libs/pcre/doc/pcrematching.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcrematching.3
   freeswitch/branches/seven/libs/pcre/doc/pcrepartial.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcrepartial.3
   freeswitch/branches/seven/libs/pcre/doc/pcrepattern.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcrepattern.3
   freeswitch/branches/seven/libs/pcre/doc/pcreperform.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcreperform.3
   freeswitch/branches/seven/libs/pcre/doc/pcreposix.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcreposix.3
   freeswitch/branches/seven/libs/pcre/doc/pcreprecompile.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcreprecompile.3
   freeswitch/branches/seven/libs/pcre/doc/pcresample.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcresample.3
   freeswitch/branches/seven/libs/pcre/doc/pcrestack.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcrestack.3
   freeswitch/branches/seven/libs/pcre/doc/pcretest.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcretest.1
   freeswitch/branches/seven/libs/pcre/doc/pcretest.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/pcretest.txt
   freeswitch/branches/seven/libs/pcre/doc/perltest.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/doc/perltest.txt
   freeswitch/branches/seven/libs/pcre/install-sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/install-sh
   freeswitch/branches/seven/libs/pcre/libpcre.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/libpcre.def
   freeswitch/branches/seven/libs/pcre/libpcre.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/libpcre.pc.in
   freeswitch/branches/seven/libs/pcre/libpcreposix.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/libpcreposix.def
   freeswitch/branches/seven/libs/pcre/makevp.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/makevp.bat
   freeswitch/branches/seven/libs/pcre/mkinstalldirs
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/mkinstalldirs
   freeswitch/branches/seven/libs/pcre/pcre-config.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre-config.in
   freeswitch/branches/seven/libs/pcre/pcre.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre.def
   freeswitch/branches/seven/libs/pcre/pcre.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre.h
   freeswitch/branches/seven/libs/pcre/pcre_compile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_compile.c
   freeswitch/branches/seven/libs/pcre/pcre_config.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_config.c
   freeswitch/branches/seven/libs/pcre/pcre_dfa_exec.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_dfa_exec.c
   freeswitch/branches/seven/libs/pcre/pcre_exec.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_exec.c
   freeswitch/branches/seven/libs/pcre/pcre_fullinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_fullinfo.c
   freeswitch/branches/seven/libs/pcre/pcre_get.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_get.c
   freeswitch/branches/seven/libs/pcre/pcre_globals.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_globals.c
   freeswitch/branches/seven/libs/pcre/pcre_info.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_info.c
   freeswitch/branches/seven/libs/pcre/pcre_internal.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_internal.h
   freeswitch/branches/seven/libs/pcre/pcre_maketables.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_maketables.c
   freeswitch/branches/seven/libs/pcre/pcre_ord2utf8.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_ord2utf8.c
   freeswitch/branches/seven/libs/pcre/pcre_printint.src
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_printint.src
   freeswitch/branches/seven/libs/pcre/pcre_refcount.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_refcount.c
   freeswitch/branches/seven/libs/pcre/pcre_scanner.cc
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_scanner.cc
   freeswitch/branches/seven/libs/pcre/pcre_scanner.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_scanner.h
   freeswitch/branches/seven/libs/pcre/pcre_scanner_unittest.cc
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_scanner_unittest.cc
   freeswitch/branches/seven/libs/pcre/pcre_stringpiece.cc
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_stringpiece.cc
   freeswitch/branches/seven/libs/pcre/pcre_stringpiece.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_stringpiece.h.in
   freeswitch/branches/seven/libs/pcre/pcre_stringpiece_unittest.cc
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_stringpiece_unittest.cc
   freeswitch/branches/seven/libs/pcre/pcre_study.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_study.c
   freeswitch/branches/seven/libs/pcre/pcre_tables.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_tables.c
   freeswitch/branches/seven/libs/pcre/pcre_try_flipped.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_try_flipped.c
   freeswitch/branches/seven/libs/pcre/pcre_ucp_searchfuncs.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_ucp_searchfuncs.c
   freeswitch/branches/seven/libs/pcre/pcre_valid_utf8.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_valid_utf8.c
   freeswitch/branches/seven/libs/pcre/pcre_version.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_version.c
   freeswitch/branches/seven/libs/pcre/pcre_xclass.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcre_xclass.c
   freeswitch/branches/seven/libs/pcre/pcrecpp.cc
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcrecpp.cc
   freeswitch/branches/seven/libs/pcre/pcrecpp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcrecpp.h
   freeswitch/branches/seven/libs/pcre/pcrecpp_unittest.cc
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcrecpp_unittest.cc
   freeswitch/branches/seven/libs/pcre/pcrecpparg.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcrecpparg.h.in
   freeswitch/branches/seven/libs/pcre/pcredemo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcredemo.c
   freeswitch/branches/seven/libs/pcre/pcregrep.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcregrep.c
   freeswitch/branches/seven/libs/pcre/pcreposix.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcreposix.c
   freeswitch/branches/seven/libs/pcre/pcreposix.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcreposix.h
   freeswitch/branches/seven/libs/pcre/pcretest.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/pcretest.c
   freeswitch/branches/seven/libs/pcre/perltest
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/perltest
   freeswitch/branches/seven/libs/pcre/testdata/
      - copied from r11459, /freeswitch/trunk/libs/pcre/testdata/
   freeswitch/branches/seven/libs/pcre/testdata/grepinput
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/grepinput
   freeswitch/branches/seven/libs/pcre/testdata/grepinputx
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/grepinputx
   freeswitch/branches/seven/libs/pcre/testdata/greplist
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/greplist
   freeswitch/branches/seven/libs/pcre/testdata/grepoutput
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/grepoutput
   freeswitch/branches/seven/libs/pcre/testdata/testinput1
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testinput1
   freeswitch/branches/seven/libs/pcre/testdata/testinput2
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testinput2
   freeswitch/branches/seven/libs/pcre/testdata/testinput3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testinput3
   freeswitch/branches/seven/libs/pcre/testdata/testinput4
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testinput4
   freeswitch/branches/seven/libs/pcre/testdata/testinput5
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testinput5
   freeswitch/branches/seven/libs/pcre/testdata/testinput6
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testinput6
   freeswitch/branches/seven/libs/pcre/testdata/testinput7
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testinput7
   freeswitch/branches/seven/libs/pcre/testdata/testinput8
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testinput8
   freeswitch/branches/seven/libs/pcre/testdata/testinput9
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testinput9
   freeswitch/branches/seven/libs/pcre/testdata/testoutput1
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testoutput1
   freeswitch/branches/seven/libs/pcre/testdata/testoutput2
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testoutput2
   freeswitch/branches/seven/libs/pcre/testdata/testoutput3
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testoutput3
   freeswitch/branches/seven/libs/pcre/testdata/testoutput4
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testoutput4
   freeswitch/branches/seven/libs/pcre/testdata/testoutput5
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testoutput5
   freeswitch/branches/seven/libs/pcre/testdata/testoutput6
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testoutput6
   freeswitch/branches/seven/libs/pcre/testdata/testoutput7
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testoutput7
   freeswitch/branches/seven/libs/pcre/testdata/testoutput8
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testoutput8
   freeswitch/branches/seven/libs/pcre/testdata/testoutput9
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/testdata/testoutput9
   freeswitch/branches/seven/libs/pcre/ucp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/ucp.h
   freeswitch/branches/seven/libs/pcre/ucpinternal.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/ucpinternal.h
   freeswitch/branches/seven/libs/pcre/ucptable.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/pcre/ucptable.c
   freeswitch/branches/seven/libs/portaudio/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/portaudio/
   freeswitch/branches/seven/libs/portaudio/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/.update
   freeswitch/branches/seven/libs/portaudio/COMPILING.DARWIN
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/COMPILING.DARWIN
   freeswitch/branches/seven/libs/portaudio/Doxyfile
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/Doxyfile
   freeswitch/branches/seven/libs/portaudio/LICENSE.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/LICENSE.txt
   freeswitch/branches/seven/libs/portaudio/Makefile.darwin
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/Makefile.darwin
   freeswitch/branches/seven/libs/portaudio/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/Makefile.in
   freeswitch/branches/seven/libs/portaudio/README.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/README.txt
   freeswitch/branches/seven/libs/portaudio/SConstruct
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/SConstruct
   freeswitch/branches/seven/libs/portaudio/V19-devel-readme.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/V19-devel-readme.txt
   freeswitch/branches/seven/libs/portaudio/aclocal.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/aclocal.m4
   freeswitch/branches/seven/libs/portaudio/bindings/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/AUTHORS
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/COPYING
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/ChangeLog
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/INSTALL
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/Makefile.am
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/Makefile.in
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/NEWS
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/README
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/SConscript
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/SConscript
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/aclocal.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/aclocal.m4
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/bin/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/bin/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/bin/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/bin/Makefile.am
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/bin/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/bin/Makefile.in
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/gnu/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/gnu/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/gnu/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/gnu/Makefile.in
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/gnu/OUT_OF_DATE
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/gnu/OUT_OF_DATE
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/gnu/aclocal.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/gnu/aclocal.m4
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/gnu/config.guess
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/gnu/config.guess
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/gnu/config.sub
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/gnu/config.sub
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/gnu/configure
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/gnu/configure
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/gnu/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/gnu/configure.ac
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/gnu/install-sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/gnu/install-sh
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc6/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc6/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc6/devs_example.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc6/devs_example.dsp
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc6/devs_example.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc6/devs_example.dsw
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc6/sine_example.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc6/sine_example.dsp
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc6/sine_example.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc6/sine_example.dsw
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc6/static_library.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc6/static_library.dsp
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc6/static_library.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc6/static_library.dsw
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc7/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc7/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc7/OUT_OF_DATE
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc7/OUT_OF_DATE
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc7_1/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc7_1/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc7_1/devs_example.sln
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc7_1/devs_example.sln
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc7_1/devs_example.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc7_1/devs_example.vcproj
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc7_1/sine_example.sln
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc7_1/sine_example.sln
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc7_1/sine_example.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc7_1/sine_example.vcproj
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc7_1/static_library.sln
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc7_1/static_library.sln
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/build/vc7_1/static_library.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/build/vc7_1/static_library.vcproj
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/configure
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/configure
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/configure.ac
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/doc/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/doc/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/doc/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/doc/Makefile.am
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/doc/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/doc/Makefile.in
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/doc/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/doc/README
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/doc/config.doxy
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/doc/config.doxy
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/doc/config.doxy.linux
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/doc/config.doxy.linux
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/example/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/example/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/example/devs.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/example/devs.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/example/sine.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/example/sine.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/Makefile.am
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/Makefile.in
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/AsioDeviceAdapter.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/AsioDeviceAdapter.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/AutoSystem.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/AutoSystem.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/BlockingStream.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/BlockingStream.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/CFunCallbackStream.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/CFunCallbackStream.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/CallbackInterface.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/CallbackInterface.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/CallbackStream.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/CallbackStream.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/CppFunCallbackStream.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/CppFunCallbackStream.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/Device.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/Device.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/DirectionSpecificStreamParameters.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/DirectionSpecificStreamParameters.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/Exception.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/Exception.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/HostApi.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/HostApi.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/InterfaceCallbackStream.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/InterfaceCallbackStream.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/MemFunCallbackStream.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/MemFunCallbackStream.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/PortAudioCpp.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/PortAudioCpp.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/SampleDataFormat.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/SampleDataFormat.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/Stream.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/Stream.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/StreamParameters.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/StreamParameters.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/System.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/System.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/SystemDeviceIterator.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/SystemDeviceIterator.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/include/portaudiocpp/SystemHostApiIterator.hxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/include/portaudiocpp/SystemHostApiIterator.hxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/lib/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/lib/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/lib/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/lib/Makefile.am
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/lib/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/lib/Makefile.in
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/portaudiocpp.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/portaudiocpp.pc.in
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/AsioDeviceAdapter.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/AsioDeviceAdapter.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/BlockingStream.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/BlockingStream.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/CFunCallbackStream.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/CFunCallbackStream.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/CallbackInterface.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/CallbackInterface.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/CallbackStream.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/CallbackStream.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/CppFunCallbackStream.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/CppFunCallbackStream.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/Device.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/Device.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/DirectionSpecificStreamParameters.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/DirectionSpecificStreamParameters.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/Exception.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/Exception.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/HostApi.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/HostApi.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/InterfaceCallbackStream.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/InterfaceCallbackStream.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/MemFunCallbackStream.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/MemFunCallbackStream.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/Stream.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/Stream.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/StreamParameters.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/StreamParameters.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/System.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/System.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/SystemDeviceIterator.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/SystemDeviceIterator.cxx
   freeswitch/branches/seven/libs/portaudio/bindings/cpp/source/portaudiocpp/SystemHostApiIterator.cxx
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/bindings/cpp/source/portaudiocpp/SystemHostApiIterator.cxx
   freeswitch/branches/seven/libs/portaudio/build/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/build/
   freeswitch/branches/seven/libs/portaudio/build/dev-cpp/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/build/dev-cpp/
   freeswitch/branches/seven/libs/portaudio/build/dev-cpp/Makefile-dll
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/dev-cpp/Makefile-dll
   freeswitch/branches/seven/libs/portaudio/build/dev-cpp/Makefile-static
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/dev-cpp/Makefile-static
   freeswitch/branches/seven/libs/portaudio/build/dev-cpp/portaudio-dll.dev
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/dev-cpp/portaudio-dll.dev
   freeswitch/branches/seven/libs/portaudio/build/dev-cpp/portaudio-static.dev
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/dev-cpp/portaudio-static.dev
   freeswitch/branches/seven/libs/portaudio/build/dev-cpp/readme.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/dev-cpp/readme.txt
   freeswitch/branches/seven/libs/portaudio/build/msvc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/portaudio/build/msvc/
   freeswitch/branches/seven/libs/portaudio/build/msvc/portaudio.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/msvc/portaudio.2008.vcproj
   freeswitch/branches/seven/libs/portaudio/build/msvc/portaudio.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/msvc/portaudio.def
   freeswitch/branches/seven/libs/portaudio/build/msvc/portaudio.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/msvc/portaudio.dsp
   freeswitch/branches/seven/libs/portaudio/build/msvc/portaudio.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/msvc/portaudio.dsw
   freeswitch/branches/seven/libs/portaudio/build/msvc/portaudio.sln
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/msvc/portaudio.sln
   freeswitch/branches/seven/libs/portaudio/build/msvc/portaudio.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/msvc/portaudio.vcproj
   freeswitch/branches/seven/libs/portaudio/build/msvc/readme.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/msvc/readme.txt
   freeswitch/branches/seven/libs/portaudio/build/scons/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/build/scons/
   freeswitch/branches/seven/libs/portaudio/build/scons/SConscript_common
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/scons/SConscript_common
   freeswitch/branches/seven/libs/portaudio/build/scons/SConscript_opts
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/build/scons/SConscript_opts
   freeswitch/branches/seven/libs/portaudio/config.guess
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/config.guess
   freeswitch/branches/seven/libs/portaudio/config.sub
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/config.sub
   freeswitch/branches/seven/libs/portaudio/configure
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/configure
   freeswitch/branches/seven/libs/portaudio/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/configure.gnu
   freeswitch/branches/seven/libs/portaudio/configure.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/configure.in
   freeswitch/branches/seven/libs/portaudio/depcomp
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/depcomp
   freeswitch/branches/seven/libs/portaudio/doc/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/doc/
   freeswitch/branches/seven/libs/portaudio/doc/html/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/doc/html/
   freeswitch/branches/seven/libs/portaudio/doc/src/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/doc/src/
   freeswitch/branches/seven/libs/portaudio/doc/src/license.dox
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/doc/src/license.dox
   freeswitch/branches/seven/libs/portaudio/doc/src/mainpage.dox
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/doc/src/mainpage.dox
   freeswitch/branches/seven/libs/portaudio/doc/src/srcguide.dox
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/doc/src/srcguide.dox
   freeswitch/branches/seven/libs/portaudio/doc/utils/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/doc/utils/
   freeswitch/branches/seven/libs/portaudio/doc/utils/checkfiledocs.py
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/doc/utils/checkfiledocs.py
   freeswitch/branches/seven/libs/portaudio/fixdir.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/fixdir.bat
   freeswitch/branches/seven/libs/portaudio/fixfile.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/fixfile.bat
   freeswitch/branches/seven/libs/portaudio/include/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/include/
   freeswitch/branches/seven/libs/portaudio/include/pa_asio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/include/pa_asio.h
   freeswitch/branches/seven/libs/portaudio/include/pa_jack.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/include/pa_jack.h
   freeswitch/branches/seven/libs/portaudio/include/pa_linux_alsa.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/include/pa_linux_alsa.h
   freeswitch/branches/seven/libs/portaudio/include/pa_mac_core.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/include/pa_mac_core.h
   freeswitch/branches/seven/libs/portaudio/include/pa_win_ds.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/include/pa_win_ds.h
   freeswitch/branches/seven/libs/portaudio/include/pa_win_waveformat.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/include/pa_win_waveformat.h
   freeswitch/branches/seven/libs/portaudio/include/pa_win_wmme.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/include/pa_win_wmme.h
   freeswitch/branches/seven/libs/portaudio/include/portaudio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/include/portaudio.h
   freeswitch/branches/seven/libs/portaudio/index.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/index.html
   freeswitch/branches/seven/libs/portaudio/install-sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/install-sh
   freeswitch/branches/seven/libs/portaudio/ltmain.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/ltmain.sh
   freeswitch/branches/seven/libs/portaudio/missing
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/missing
   freeswitch/branches/seven/libs/portaudio/pablio/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/pablio/
   freeswitch/branches/seven/libs/portaudio/pablio/README.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/pablio/README.txt
   freeswitch/branches/seven/libs/portaudio/pablio/pablio.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/pablio/pablio.c
   freeswitch/branches/seven/libs/portaudio/pablio/pablio.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/pablio/pablio.def
   freeswitch/branches/seven/libs/portaudio/pablio/pablio.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/pablio/pablio.h
   freeswitch/branches/seven/libs/portaudio/pablio/test_rw.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/pablio/test_rw.c
   freeswitch/branches/seven/libs/portaudio/pablio/test_rw_echo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/pablio/test_rw_echo.c
   freeswitch/branches/seven/libs/portaudio/pablio/test_w_saw.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/pablio/test_w_saw.c
   freeswitch/branches/seven/libs/portaudio/pablio/test_w_saw8.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/pablio/test_w_saw8.c
   freeswitch/branches/seven/libs/portaudio/portaudio-2.0.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/portaudio-2.0.pc.in
   freeswitch/branches/seven/libs/portaudio/src/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/
   freeswitch/branches/seven/libs/portaudio/src/SConscript
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/SConscript
   freeswitch/branches/seven/libs/portaudio/src/common/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/common/
   freeswitch/branches/seven/libs/portaudio/src/common/pa_allocation.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_allocation.c
   freeswitch/branches/seven/libs/portaudio/src/common/pa_allocation.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_allocation.h
   freeswitch/branches/seven/libs/portaudio/src/common/pa_converters.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_converters.c
   freeswitch/branches/seven/libs/portaudio/src/common/pa_converters.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_converters.h
   freeswitch/branches/seven/libs/portaudio/src/common/pa_cpuload.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_cpuload.c
   freeswitch/branches/seven/libs/portaudio/src/common/pa_cpuload.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_cpuload.h
   freeswitch/branches/seven/libs/portaudio/src/common/pa_debugprint.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_debugprint.c
   freeswitch/branches/seven/libs/portaudio/src/common/pa_debugprint.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_debugprint.h
   freeswitch/branches/seven/libs/portaudio/src/common/pa_dither.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_dither.c
   freeswitch/branches/seven/libs/portaudio/src/common/pa_dither.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_dither.h
   freeswitch/branches/seven/libs/portaudio/src/common/pa_endianness.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_endianness.h
   freeswitch/branches/seven/libs/portaudio/src/common/pa_front.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_front.c
   freeswitch/branches/seven/libs/portaudio/src/common/pa_hostapi.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_hostapi.h
   freeswitch/branches/seven/libs/portaudio/src/common/pa_process.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_process.c
   freeswitch/branches/seven/libs/portaudio/src/common/pa_process.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_process.h
   freeswitch/branches/seven/libs/portaudio/src/common/pa_ringbuffer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_ringbuffer.c
   freeswitch/branches/seven/libs/portaudio/src/common/pa_ringbuffer.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_ringbuffer.h
   freeswitch/branches/seven/libs/portaudio/src/common/pa_skeleton.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_skeleton.c
   freeswitch/branches/seven/libs/portaudio/src/common/pa_stream.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_stream.c
   freeswitch/branches/seven/libs/portaudio/src/common/pa_stream.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_stream.h
   freeswitch/branches/seven/libs/portaudio/src/common/pa_trace.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_trace.c
   freeswitch/branches/seven/libs/portaudio/src/common/pa_trace.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_trace.h
   freeswitch/branches/seven/libs/portaudio/src/common/pa_types.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_types.h
   freeswitch/branches/seven/libs/portaudio/src/common/pa_util.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/common/pa_util.h
   freeswitch/branches/seven/libs/portaudio/src/hostapi/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/
   freeswitch/branches/seven/libs/portaudio/src/hostapi/alsa/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/alsa/
   freeswitch/branches/seven/libs/portaudio/src/hostapi/alsa/pa_linux_alsa.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/alsa/pa_linux_alsa.c
   freeswitch/branches/seven/libs/portaudio/src/hostapi/asihpi/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/asihpi/
   freeswitch/branches/seven/libs/portaudio/src/hostapi/asihpi/pa_linux_asihpi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/asihpi/pa_linux_asihpi.c
   freeswitch/branches/seven/libs/portaudio/src/hostapi/asio/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/asio/
   freeswitch/branches/seven/libs/portaudio/src/hostapi/asio/ASIO-README.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/asio/ASIO-README.txt
   freeswitch/branches/seven/libs/portaudio/src/hostapi/asio/Callback_adaptation_.pdf
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/asio/Callback_adaptation_.pdf
   freeswitch/branches/seven/libs/portaudio/src/hostapi/asio/Pa_ASIO.pdf
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/asio/Pa_ASIO.pdf
   freeswitch/branches/seven/libs/portaudio/src/hostapi/asio/iasiothiscallresolver.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/asio/iasiothiscallresolver.cpp
   freeswitch/branches/seven/libs/portaudio/src/hostapi/asio/iasiothiscallresolver.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/asio/iasiothiscallresolver.h
   freeswitch/branches/seven/libs/portaudio/src/hostapi/asio/pa_asio.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/asio/pa_asio.cpp
   freeswitch/branches/seven/libs/portaudio/src/hostapi/coreaudio/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/coreaudio/
   freeswitch/branches/seven/libs/portaudio/src/hostapi/coreaudio/notes.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/coreaudio/notes.txt
   freeswitch/branches/seven/libs/portaudio/src/hostapi/coreaudio/pa_mac_core.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/coreaudio/pa_mac_core.c
   freeswitch/branches/seven/libs/portaudio/src/hostapi/coreaudio/pa_mac_core_blocking.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/coreaudio/pa_mac_core_blocking.c
   freeswitch/branches/seven/libs/portaudio/src/hostapi/coreaudio/pa_mac_core_blocking.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/coreaudio/pa_mac_core_blocking.h
   freeswitch/branches/seven/libs/portaudio/src/hostapi/coreaudio/pa_mac_core_internal.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/coreaudio/pa_mac_core_internal.h
   freeswitch/branches/seven/libs/portaudio/src/hostapi/coreaudio/pa_mac_core_old.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/coreaudio/pa_mac_core_old.c
   freeswitch/branches/seven/libs/portaudio/src/hostapi/coreaudio/pa_mac_core_utilities.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/coreaudio/pa_mac_core_utilities.c
   freeswitch/branches/seven/libs/portaudio/src/hostapi/coreaudio/pa_mac_core_utilities.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/coreaudio/pa_mac_core_utilities.h
   freeswitch/branches/seven/libs/portaudio/src/hostapi/dsound/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/dsound/
   freeswitch/branches/seven/libs/portaudio/src/hostapi/dsound/pa_win_ds.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/dsound/pa_win_ds.c
   freeswitch/branches/seven/libs/portaudio/src/hostapi/dsound/pa_win_ds_dynlink.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/dsound/pa_win_ds_dynlink.c
   freeswitch/branches/seven/libs/portaudio/src/hostapi/dsound/pa_win_ds_dynlink.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/dsound/pa_win_ds_dynlink.h
   freeswitch/branches/seven/libs/portaudio/src/hostapi/jack/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/jack/
   freeswitch/branches/seven/libs/portaudio/src/hostapi/jack/pa_jack.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/jack/pa_jack.c
   freeswitch/branches/seven/libs/portaudio/src/hostapi/oss/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/oss/
   freeswitch/branches/seven/libs/portaudio/src/hostapi/oss/low_latency_tip.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/oss/low_latency_tip.txt
   freeswitch/branches/seven/libs/portaudio/src/hostapi/oss/pa_unix_oss.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/oss/pa_unix_oss.c
   freeswitch/branches/seven/libs/portaudio/src/hostapi/oss/recplay.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/oss/recplay.c
   freeswitch/branches/seven/libs/portaudio/src/hostapi/wasapi/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/wasapi/
   freeswitch/branches/seven/libs/portaudio/src/hostapi/wasapi/pa_win_wasapi.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/wasapi/pa_win_wasapi.cpp
   freeswitch/branches/seven/libs/portaudio/src/hostapi/wdmks/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/wdmks/
   freeswitch/branches/seven/libs/portaudio/src/hostapi/wdmks/pa_win_wdmks.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/wdmks/pa_win_wdmks.c
   freeswitch/branches/seven/libs/portaudio/src/hostapi/wdmks/readme.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/wdmks/readme.txt
   freeswitch/branches/seven/libs/portaudio/src/hostapi/wmme/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/wmme/
   freeswitch/branches/seven/libs/portaudio/src/hostapi/wmme/pa_win_wmme.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/hostapi/wmme/pa_win_wmme.c
   freeswitch/branches/seven/libs/portaudio/src/os/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/os/
   freeswitch/branches/seven/libs/portaudio/src/os/mac_osx/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/os/mac_osx/
   freeswitch/branches/seven/libs/portaudio/src/os/mac_osx/pa_mac_hostapis.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/os/mac_osx/pa_mac_hostapis.c
   freeswitch/branches/seven/libs/portaudio/src/os/unix/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/os/unix/
   freeswitch/branches/seven/libs/portaudio/src/os/unix/pa_unix_hostapis.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/os/unix/pa_unix_hostapis.c
   freeswitch/branches/seven/libs/portaudio/src/os/unix/pa_unix_util.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/os/unix/pa_unix_util.c
   freeswitch/branches/seven/libs/portaudio/src/os/unix/pa_unix_util.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/os/unix/pa_unix_util.h
   freeswitch/branches/seven/libs/portaudio/src/os/win/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/src/os/win/
   freeswitch/branches/seven/libs/portaudio/src/os/win/pa_win_hostapis.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/os/win/pa_win_hostapis.c
   freeswitch/branches/seven/libs/portaudio/src/os/win/pa_win_util.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/os/win/pa_win_util.c
   freeswitch/branches/seven/libs/portaudio/src/os/win/pa_win_waveformat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/os/win/pa_win_waveformat.c
   freeswitch/branches/seven/libs/portaudio/src/os/win/pa_win_wdmks_utils.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/os/win/pa_win_wdmks_utils.c
   freeswitch/branches/seven/libs/portaudio/src/os/win/pa_win_wdmks_utils.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/os/win/pa_win_wdmks_utils.h
   freeswitch/branches/seven/libs/portaudio/src/os/win/pa_x86_plain_converters.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/os/win/pa_x86_plain_converters.c
   freeswitch/branches/seven/libs/portaudio/src/os/win/pa_x86_plain_converters.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/src/os/win/pa_x86_plain_converters.h
   freeswitch/branches/seven/libs/portaudio/test/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/portaudio/test/
   freeswitch/branches/seven/libs/portaudio/test/README.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/README.txt
   freeswitch/branches/seven/libs/portaudio/test/debug_convert.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/debug_convert.c
   freeswitch/branches/seven/libs/portaudio/test/debug_dither_calc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/debug_dither_calc.c
   freeswitch/branches/seven/libs/portaudio/test/debug_dual.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/debug_dual.c
   freeswitch/branches/seven/libs/portaudio/test/debug_multi_in.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/debug_multi_in.c
   freeswitch/branches/seven/libs/portaudio/test/debug_multi_out.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/debug_multi_out.c
   freeswitch/branches/seven/libs/portaudio/test/debug_record.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/debug_record.c
   freeswitch/branches/seven/libs/portaudio/test/debug_record_reuse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/debug_record_reuse.c
   freeswitch/branches/seven/libs/portaudio/test/debug_sine.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/debug_sine.c
   freeswitch/branches/seven/libs/portaudio/test/debug_sine_amp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/debug_sine_amp.c
   freeswitch/branches/seven/libs/portaudio/test/debug_sine_formats.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/debug_sine_formats.c
   freeswitch/branches/seven/libs/portaudio/test/debug_srate.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/debug_srate.c
   freeswitch/branches/seven/libs/portaudio/test/debug_test1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/debug_test1.c
   freeswitch/branches/seven/libs/portaudio/test/pa_devs.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/pa_devs.c
   freeswitch/branches/seven/libs/portaudio/test/pa_fuzz.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/pa_fuzz.c
   freeswitch/branches/seven/libs/portaudio/test/pa_minlat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/pa_minlat.c
   freeswitch/branches/seven/libs/portaudio/test/paqa_devs.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/paqa_devs.c
   freeswitch/branches/seven/libs/portaudio/test/paqa_errs.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/paqa_errs.c
   freeswitch/branches/seven/libs/portaudio/test/patest1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest1.c
   freeswitch/branches/seven/libs/portaudio/test/patest_buffer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_buffer.c
   freeswitch/branches/seven/libs/portaudio/test/patest_callbackstop.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_callbackstop.c
   freeswitch/branches/seven/libs/portaudio/test/patest_clip.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_clip.c
   freeswitch/branches/seven/libs/portaudio/test/patest_dither.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_dither.c
   freeswitch/branches/seven/libs/portaudio/test/patest_dsound_surround.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_dsound_surround.c
   freeswitch/branches/seven/libs/portaudio/test/patest_hang.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_hang.c
   freeswitch/branches/seven/libs/portaudio/test/patest_in_overflow.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_in_overflow.c
   freeswitch/branches/seven/libs/portaudio/test/patest_latency.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_latency.c
   freeswitch/branches/seven/libs/portaudio/test/patest_leftright.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_leftright.c
   freeswitch/branches/seven/libs/portaudio/test/patest_longsine.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_longsine.c
   freeswitch/branches/seven/libs/portaudio/test/patest_many.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_many.c
   freeswitch/branches/seven/libs/portaudio/test/patest_maxsines.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_maxsines.c
   freeswitch/branches/seven/libs/portaudio/test/patest_mono.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_mono.c
   freeswitch/branches/seven/libs/portaudio/test/patest_mono_asio_channel_select.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_mono_asio_channel_select.c
   freeswitch/branches/seven/libs/portaudio/test/patest_multi_sine.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_multi_sine.c
   freeswitch/branches/seven/libs/portaudio/test/patest_out_underflow.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_out_underflow.c
   freeswitch/branches/seven/libs/portaudio/test/patest_pink.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_pink.c
   freeswitch/branches/seven/libs/portaudio/test/patest_prime.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_prime.c
   freeswitch/branches/seven/libs/portaudio/test/patest_read_record.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_read_record.c
   freeswitch/branches/seven/libs/portaudio/test/patest_read_write_wire.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_read_write_wire.c
   freeswitch/branches/seven/libs/portaudio/test/patest_record.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_record.c
   freeswitch/branches/seven/libs/portaudio/test/patest_ringmix.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_ringmix.c
   freeswitch/branches/seven/libs/portaudio/test/patest_saw.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_saw.c
   freeswitch/branches/seven/libs/portaudio/test/patest_sine.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_sine.c
   freeswitch/branches/seven/libs/portaudio/test/patest_sine8.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_sine8.c
   freeswitch/branches/seven/libs/portaudio/test/patest_sine_channelmaps.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_sine_channelmaps.c
   freeswitch/branches/seven/libs/portaudio/test/patest_sine_formats.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c
   freeswitch/branches/seven/libs/portaudio/test/patest_sine_time.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_sine_time.c
   freeswitch/branches/seven/libs/portaudio/test/patest_start_stop.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_start_stop.c
   freeswitch/branches/seven/libs/portaudio/test/patest_stop.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_stop.c
   freeswitch/branches/seven/libs/portaudio/test/patest_stop_playout.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_stop_playout.c
   freeswitch/branches/seven/libs/portaudio/test/patest_sync.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_sync.c
   freeswitch/branches/seven/libs/portaudio/test/patest_timing.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_timing.c
   freeswitch/branches/seven/libs/portaudio/test/patest_toomanysines.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_toomanysines.c
   freeswitch/branches/seven/libs/portaudio/test/patest_two_rates.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_two_rates.c
   freeswitch/branches/seven/libs/portaudio/test/patest_underflow.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_underflow.c
   freeswitch/branches/seven/libs/portaudio/test/patest_wire.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_wire.c
   freeswitch/branches/seven/libs/portaudio/test/patest_wmme_surround.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_wmme_surround.c
   freeswitch/branches/seven/libs/portaudio/test/patest_write_sine.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_write_sine.c
   freeswitch/branches/seven/libs/portaudio/test/patest_write_stop.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/test/patest_write_stop.c
   freeswitch/branches/seven/libs/portaudio/testcvs/
      - copied from r11459, /freeswitch/trunk/libs/portaudio/testcvs/
   freeswitch/branches/seven/libs/portaudio/testcvs/changeme.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/portaudio/testcvs/changeme.txt
   freeswitch/branches/seven/libs/sofia-sip/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/.update
   freeswitch/branches/seven/libs/sofia-sip/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/AUTHORS
   freeswitch/branches/seven/libs/sofia-sip/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/COPYING
   freeswitch/branches/seven/libs/sofia-sip/COPYRIGHTS
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/COPYRIGHTS
   freeswitch/branches/seven/libs/sofia-sip/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/ChangeLog.ext-trees
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/ChangeLog.ext-trees
   freeswitch/branches/seven/libs/sofia-sip/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/README
   freeswitch/branches/seven/libs/sofia-sip/README.developers
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/README.developers
   freeswitch/branches/seven/libs/sofia-sip/RELEASE
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/RELEASE
   freeswitch/branches/seven/libs/sofia-sip/RELEASE.template
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/RELEASE.template
   freeswitch/branches/seven/libs/sofia-sip/TODO
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/TODO
   freeswitch/branches/seven/libs/sofia-sip/acinclude.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/acinclude.m4
   freeswitch/branches/seven/libs/sofia-sip/autogen.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/autogen.sh
   freeswitch/branches/seven/libs/sofia-sip/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/configure.ac
   freeswitch/branches/seven/libs/sofia-sip/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/configure.gnu
   freeswitch/branches/seven/libs/sofia-sip/docs/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/docs/
   freeswitch/branches/seven/libs/sofia-sip/docs/build_system.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/docs/build_system.txt
   freeswitch/branches/seven/libs/sofia-sip/docs/devel_platform_notes.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/docs/devel_platform_notes.txt
   freeswitch/branches/seven/libs/sofia-sip/docs/release_management.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/docs/release_management.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/docs/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/docs/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/docs/Doxyfile.aliases
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/docs/Doxyfile.aliases
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/docs/Doxyfile.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/docs/Doxyfile.conf
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/docs/Doxyfile.version
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/docs/Doxyfile.version
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/sofia-sip/su_glib.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/sofia-sip/su_glib.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/sofia-sip/su_source.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/sofia-sip/su_source.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_glib.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_glib.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_source.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_source.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_source_test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_source_test.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/torture_su_glib_timer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/torture_su_glib_timer.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/bnf/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/bnf/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/bnf/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/bnf/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/bnf/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/bnf/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/bnf/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/bnf/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/bnf/bnf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/bnf/bnf.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/bnf/bnf.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/bnf/bnf.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/bnf/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/bnf/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/bnf/sofia-sip/bnf.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/bnf/sofia-sip/bnf.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/bnf/sofia-sip/hostdomain.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/bnf/sofia-sip/hostdomain.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/bnf/torture_bnf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/bnf/torture_bnf.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/Doxyfile.aliases
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/Doxyfile.aliases
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/Doxyfile.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/Doxyfile.conf
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/Doxyfile.version.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/Doxyfile.version.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/conformance.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/conformance.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/docguide.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/docguide.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/mainpage.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/mainpage.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_basic_incoming_operation.eps
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_basic_incoming_operation.eps
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_basic_incoming_operation.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_basic_incoming_operation.gif
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_basic_incoming_operation.vsd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_basic_incoming_operation.vsd
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_basic_outgoing_operation.eps
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_basic_outgoing_operation.eps
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_basic_outgoing_operation.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_basic_outgoing_operation.gif
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_basic_outgoing_operation.vsd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_basic_outgoing_operation.vsd
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_incoming_call.eps
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_incoming_call.eps
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_incoming_call.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_incoming_call.gif
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_incoming_call.vsd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_incoming_call.vsd
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_outgoing_call.eps
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_outgoing_call.eps
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_outgoing_call.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_outgoing_call.gif
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_outgoing_call.vsd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_outgoing_call.vsd
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_outgoing_operation_with_auth.eps
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_outgoing_operation_with_auth.eps
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_outgoing_operation_with_auth.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_outgoing_operation_with_auth.gif
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_outgoing_operation_with_auth.vsd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/SIP_outgoing_operation_with_auth.vsd
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/autotools.eps
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/autotools.eps
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/autotools.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/autotools.gif
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/autotools.vsd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/autotools.vsd
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/nta-receiving-message.eps
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/nta-receiving-message.eps
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/pictures/nta-receiving-message.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/pictures/nta-receiving-message.gif
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/docs/sofia-footer.html.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/docs/sofia-footer.html.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/features/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/features/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/features/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/features/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/features/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/features/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/features/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/features/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/features/features.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/features/features.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/features/features.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/features/features.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/features/sofia-sip/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/features/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/features/sofia-sip/sofia_features.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/features/sofia-sip/sofia_features.h.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/headers
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/headers
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/http.def.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/http.def.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/http.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/http.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/http_basic.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/http_basic.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/http_extra.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/http_extra.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/http_header.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/http_header.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/http_inlined.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/http_inlined.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/http_parser.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/http_parser.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/http_parser_table.c.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/http_parser_table.c.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/http_status.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/http_status.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/http_tag.c.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/http_tag.c.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/http_tag_class.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/http_tag_class.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_hclasses.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_hclasses.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_header.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_header.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_parser.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_parser.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_protos.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_protos.h.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_status.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_status.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_tag.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_tag.h.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_tag_class.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/sofia-sip/http_tag_class.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/http/test_http.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/http/test_http.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/base64.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/base64.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/ipt.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/ipt.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/rc4.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/rc4.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip/base64.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip/base64.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip/rc4.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip/rc4.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip/token64.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip/token64.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip/uniqueid.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip/uniqueid.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip/utf8.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/sofia-sip/utf8.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/token64.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/token64.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/torture_base64.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/torture_base64.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/ucs2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/ucs2.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/ucs4.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/ucs4.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/utf8.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/utf8.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/utf8internal.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/utf8internal.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/ipt/utf8test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/ipt/utf8test.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client_ntlm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client_ntlm.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_common.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_common.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_digest.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_digest.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_module.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_module.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_module_http.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_module_http.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_module_sip.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_module_sip.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_ntlm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_ntlm.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_plugin.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_plugin.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_plugin_delayed.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_plugin_delayed.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_plugin_ntlm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_plugin_ntlm.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/iptsec.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/iptsec.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/iptsec_debug.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/iptsec_debug.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/iptsec_debug.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/iptsec_debug.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_client.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_client.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_client_plugin.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_client_plugin.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_common.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_common.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_digest.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_digest.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_module.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_module.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_ntlm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_ntlm.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_plugin.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/sofia-sip/auth_plugin.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/test_auth_digest.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/test_auth_digest.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/iptsec/testpasswd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/iptsec/testpasswd
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_auth.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_auth.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_basic.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_basic.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_date.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_date.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_generic.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_generic.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_header_copy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_header_copy.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_header_make.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_header_make.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_inlined.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_inlined.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_internal.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_internal.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_mclass.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_mclass.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_mime.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_mime.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_mime_table.c.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_mime_table.c.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_name_hash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_name_hash.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_parser.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_parser.awk
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_parser.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_parser.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_parser_util.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_parser_util.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/msg_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/msg_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_addr.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_addr.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_buffer.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_buffer.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_date.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_date.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_header.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_header.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_mclass.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_mclass.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_mclass_hash.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_mclass_hash.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_mime.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_mime.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_mime_protos.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_mime_protos.h.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_parser.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_parser.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_protos.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_protos.h.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_tag_class.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_tag_class.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_types.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/sofia-sip/msg_types.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/test_class.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/test_class.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/test_class.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/test_class.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/test_inlined.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/test_inlined.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/test_msg.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/test_msg.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/test_protos.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/test_protos.h.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/msg/test_table.c.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/msg/test_table.c.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/nea.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/nea.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/nea.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/nea.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/nea_debug.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/nea_debug.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/nea_debug.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/nea_debug.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/nea_event.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/nea_event.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/nea_server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/nea_server.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/nea_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/nea_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/sofia-sip/nea.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/sofia-sip/nea.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nea/sofia-sip/nea_tag.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nea/sofia-sip/nea_tag.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/agent.pem
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/agent.pem
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/cafile.pem
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/cafile.pem
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/invite.msc
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/invite.msc
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/nta.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/nta.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/nta_check.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta_check.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/nta_compat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta_compat.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/nta_compat.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta_compat.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/nta_internal.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta_internal.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/nta_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/nta_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/portbind.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/portbind.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/run_test_nta
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/run_test_nta
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/run_test_nta_api
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/run_test_nta_api
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/sl_read_payload.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_read_payload.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_log.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_log.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_print.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_print.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/nta.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/nta.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/nta_stateless.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/nta_stateless.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/nta_tag.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/nta_tag.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/nta_tport.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/nta_tport.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/sl_utils.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/sl_utils.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/test_nta.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/test_nta.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nta/test_nta_api.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/test_nta_api.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/agent.pem
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/agent.pem
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/cafile.pem
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/cafile.pem
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/http-client.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/http-client.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/http-server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/http-server.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/nth.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/nth.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/nth_client.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/nth_client.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/nth_server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/nth_server.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/nth_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/nth_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/sofia-sip/nth.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/sofia-sip/nth.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/sofia-sip/nth_tag.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/sofia-sip/nth_tag.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nth/test_nth.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nth/test_nth.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/check_nua.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/check_nua.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/check_nua.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/check_nua.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/check_register.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/check_register.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/check_session.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/check_session.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_common.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_common.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_dialog.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_dialog.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_dialog.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_dialog.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_event_server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_event_server.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_extension.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_extension.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_message.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_message.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_notifier.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_notifier.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_options.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_options.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_publish.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_publish.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_register.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_register.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_registrar.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_registrar.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_subnotref.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_subnotref.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/nua_types.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_types.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/outbound.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/outbound.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua_tag.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua_tag.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/test_s2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/test_s2.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/nua/test_s2.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/test_s2.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/README
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/errata
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/errata
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/rfc2327.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/rfc2327.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/run_test_sdp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/run_test_sdp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/sdp.bnf
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/sdp.bnf
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/sdp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/sdp.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/sdp.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/sdp.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/sdp_parse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/sdp_parse.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/sdp_print.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/sdp_print.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/sdp_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/sdp_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/sofia-sip/sdp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/sofia-sip/sdp.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/sofia-sip/sdp_tag.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/sofia-sip/sdp_tag.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/test_sdp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/test_sdp.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/tests/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/tests/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-1.sdp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-1.sdp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-10.sdp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-10.sdp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-11.sdp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-11.sdp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-2.sdp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-2.sdp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-3.sdp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-3.sdp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-4.sdp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-4.sdp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-5.sdp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-5.sdp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-6.sdp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-6.sdp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-7.sdp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-7.sdp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-8.sdp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-8.sdp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-9.sdp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/tests/message-9.sdp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sdp/torture_sdp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sdp/torture_sdp.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/ADD-A-HEADER
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/ADD-A-HEADER
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/GRAMMAR
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/GRAMMAR
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/images/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/images/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser.eps
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser.eps
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser.gif
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser2.eps
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser2.eps
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser2.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser2.gif
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser3.eps
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser3.eps
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser3.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser3.gif
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser4.eps
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser4.eps
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser4.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/images/sip-parser4.gif
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/rfc2543.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/rfc2543.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/run-tests
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/run-tests
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/run_test_date
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/run_test_date
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/run_test_sip_msg
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/run_test_sip_msg
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip.doxyaliases
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip.doxyaliases
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_bad_mask
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_bad_mask
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_basic.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_basic.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_caller_prefs.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_caller_prefs.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_event.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_event.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_extra.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_extra.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_extra_headers.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_extra_headers.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_feature.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_feature.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_header.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_header.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_inlined.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_inlined.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_mime.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_mime.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_parser.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_parser.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_parser.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_parser.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_parser_table.c.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_parser_table.c.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_prack.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_prack.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_pref_util.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_pref_util.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_reason.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_reason.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_refer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_refer.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_security.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_security.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_session.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_session.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_status.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_status.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_tag.c.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_tag.c.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_tag_class.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_tag_class.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_time.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_time.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sip_util.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_util.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_extra.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_extra.h.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_hclasses.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_hclasses.h.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_header.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_header.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_parser.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_parser.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_protos.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_protos.h.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_status.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_status.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_tag.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_tag.h.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_tag_class.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_tag_class.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_util.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_util.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/test_date.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/test_date.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/test_sip_msg.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/test_sip_msg.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/10052.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/10052.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/own0.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/own0.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/own1.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/own1.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/own2.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/own2.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/own3.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/own3.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/own4.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/own4.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/own5.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/own5.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/own6.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/own6.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/own8.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/own8.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test-ack-1.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test-ack-1.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test1.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test1.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test10.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test10.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test10b.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test10b.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test10c.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test10c.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test11.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test11.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test12.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test12.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test13.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test13.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test14-req.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test14-req.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test14.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test14.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test15.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test15.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test16.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test16.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test17.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test17.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test18.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test18.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test19.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test19.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test1a.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test1a.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test2.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test2.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test20.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test20.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test21.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test21.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test22.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test22.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test23.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test23.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test24.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test24.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test25.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test25.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test26.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test26.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test27.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test27.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test28.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test28.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test29.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test29.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test3.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test3.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test30.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test30.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test31.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test31.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test32.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test32.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test33.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test33.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test34.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test34.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test35.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test35.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test36.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test36.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test37.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test37.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test38.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test38.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test39.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test39.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test4.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test4.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test40.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test40.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test41.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test41.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test42.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test42.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test5.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test5.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test6.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test6.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test7.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test7.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test8.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test8.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/tests/test9.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/tests/test9.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/torture_sip.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/torture_sip.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sip/validator.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/validator.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/soa.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/soa.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/soa.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/soa.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/soa_asynch.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/soa_asynch.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/soa_static.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/soa_static.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/soa_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/soa_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/sofia-sip/soa.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/sofia-sip/soa.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/sofia-sip/soa_add.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/sofia-sip/soa_add.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/sofia-sip/soa_session.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/sofia-sip/soa_session.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/sofia-sip/soa_tag.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/sofia-sip/soa_tag.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/soa/test_soa.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/soa/test_soa.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sofia.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sofia.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/127.zone
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/127.zone
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/194.2.188
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/194.2.188
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/3.f.f.e.1.2.0.0.3.0.1.2.c.0.0.0
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/3.f.f.e.1.2.0.0.3.0.1.2.c.0.0.0
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/3.f.f.e.1.2.0.0.3.0.1.2.c.0.0.0.arpa
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/3.f.f.e.1.2.0.0.3.0.1.2.c.0.0.0.arpa
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/example.com
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/example.com
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/named.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/named.conf
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/resolv_timeout.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/resolv_timeout.conf
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/resolve_sip.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/resolve_sip.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/rfc1034.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/rfc1034.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/rfc1035.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/rfc1035.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/rfc2671.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/rfc2671.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/rndc.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/rndc.conf
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/root.zone
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/root.zone
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/run_test_sresolv
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/run_test_sresolv
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv/sres.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv/sres.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv/sres_async.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv/sres_async.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv/sres_cache.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv/sres_cache.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv/sres_config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv/sres_config.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv/sres_record.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-resolv/sres_record.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-sip/sresolv.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sofia-sip/sresolv.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sres.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sres.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sres_blocking.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sres_blocking.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sres_cache.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sres_cache.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sresolv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sresolv.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/sresolv.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/sresolv.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/test_sresolv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/test_sresolv.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/sresolv/torture_sresolv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sresolv/torture_sresolv.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/cert.pem
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/cert.pem
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/key.pem
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/key.pem
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/lookup_stun_server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/lookup_stun_server.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/rfc3489.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/rfc3489.txt
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/sofia-sip/stun.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/sofia-sip/stun.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/sofia-sip/stun_common.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/sofia-sip/stun_common.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/sofia-sip/stun_tag.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/sofia-sip/stun_tag.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/stun.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/stun.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/stun.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/stun.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/stun_common.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/stun_common.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/stun_dns.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/stun_dns.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/stun_internal.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/stun_internal.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/stun_mini.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/stun_mini.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/stun_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/stun_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/stun/stunc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/stun/stunc.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/addrinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/addrinfo.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/foo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/foo.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/getopt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/getopt.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/inet_ntop.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/inet_ntop.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/inet_pton.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/inet_pton.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/localinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/localinfo.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/memccpy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/memccpy.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/memcspn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/memcspn.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/memmem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/memmem.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/memspn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/memspn.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/poll.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/poll.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/run_addrinfo
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/run_addrinfo
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/run_localinfo
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/run_localinfo
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/run_test_su
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/run_test_su
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/run_test_su_osx
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/run_test_su_osx
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/smoothsort.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/smoothsort.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/heap.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/heap.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/htable.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/htable.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/htable2.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/htable2.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/rbtree.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/rbtree.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/string0.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/string0.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_addrinfo.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_addrinfo.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_alloc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_alloc.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_alloc_stat.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_alloc_stat.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_bm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_bm.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_config.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_configure.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_configure.h.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_debug.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_debug.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_errno.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_errno.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_localinfo.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_localinfo.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_log.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_log.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_md5.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_md5.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_os_nw.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_os_nw.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_osx_runloop.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_osx_runloop.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_strlst.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_strlst.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_tag.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_tag.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_tag_class.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_tag_class.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_tag_inline.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_tag_inline.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_tag_io.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_tag_io.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_tagarg.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_tagarg.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_time.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_time.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_types.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_types.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_uniqueid.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_uniqueid.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_vector.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_vector.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_wait.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_wait.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/tstdef.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/tstdef.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/strcasestr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/strcasestr.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/string0.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/string0.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/strtoull.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/strtoull.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_addrinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_addrinfo.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_alloc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_alloc.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_alloc_lock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_alloc_lock.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_base_port.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_base_port.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_bm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_bm.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_default_log.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_default_log.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_devpoll_port.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_devpoll_port.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_epoll_port.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_epoll_port.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_errno.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_errno.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_global_log.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_global_log.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_kqueue_port.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_kqueue_port.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_localinfo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_localinfo.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_log.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_log.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_md5.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_md5.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_module_debug.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_module_debug.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_open_c_localinfo.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_open_c_localinfo.cpp
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_os_nw.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_os_nw.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_osx_runloop.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_osx_runloop.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_perf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_perf.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_poll_port.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_poll_port.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_port.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_port.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_port.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_port.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_proxy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_proxy.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_pthread_port.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_pthread_port.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_root.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_root.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_select_port.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_select_port.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_socket_port.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_socket_port.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_sprintf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_sprintf.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_strdup.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_strdup.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_strlst.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_strlst.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_tag_io.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_tag_io.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_taglist.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_taglist.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_time.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_time.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_time0.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_time0.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_timer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_timer.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_uniqueid.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_uniqueid.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_vector.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_vector.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_wait.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_wait.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/su_win32_port.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_win32_port.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/tag_dll.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/tag_dll.awk
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/test_htable.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/test_htable.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/test_htable2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/test_htable2.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/test_memmem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/test_memmem.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/test_poll.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/test_poll.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/test_su.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/test_su.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/test_su_osx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/test_su_osx.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/torture_heap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/torture_heap.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/torture_rbtree.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/torture_rbtree.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/torture_su.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/torture_su.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/torture_su_alloc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/torture_su_alloc.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/torture_su_bm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/torture_su_bm.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/torture_su_port.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/torture_su_port.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/torture_su_root.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/torture_su_root.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/torture_su_root_osx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/torture_su_root_osx.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/torture_su_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/torture_su_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/torture_su_time.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/torture_su_time.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/su/torture_su_timer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/torture_su_timer.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/agent.pem
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/agent.pem
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/cafile.pem
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/cafile.pem
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/certificates-update
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/certificates-update
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/certificates.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/certificates.html
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/make_node_cert.pl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/make_node_cert.pl
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/make_root_cert.pl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/make_root_cert.pl
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/make_test_certs.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/make_test_certs.sh
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/sofia-sip/tport.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/sofia-sip/tport.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/sofia-sip/tport_plugins.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/sofia-sip/tport_plugins.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/sofia-sip/tport_tag.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/sofia-sip/tport_tag.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/test_tport.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/test_tport.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tls_test_client.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tls_test_client.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tls_test_server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tls_test_server.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_internal.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_internal.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_logging.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_logging.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_rand.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_rand.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_sigcomp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_sigcomp.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_stub_sigcomp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_stub_sigcomp.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_stub_stun.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_stub_stun.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_threadpool.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_threadpool.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls_test.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls_test.sh
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_connect.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_connect.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_sctp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_sctp.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_stun.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_stun.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_tcp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_tcp.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_tls.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_tls.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_udp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_udp.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/sofia-sip/url.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/sofia-sip/url.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/sofia-sip/url_tag.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/sofia-sip/url_tag.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/sofia-sip/url_tag_class.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/sofia-sip/url_tag_class.h
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/torture_url.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/torture_url.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/url.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/url.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/url.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/url.docs
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/url_tag.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/url_tag.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/urlmap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/urlmap.c
   freeswitch/branches/seven/libs/sofia-sip/libsofia-sip-ua/url/urlmap.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/url/urlmap.h
   freeswitch/branches/seven/libs/sofia-sip/m4/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/m4/
   freeswitch/branches/seven/libs/sofia-sip/m4/sac-coverage.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/m4/sac-coverage.m4
   freeswitch/branches/seven/libs/sofia-sip/m4/sac-general.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/m4/sac-general.m4
   freeswitch/branches/seven/libs/sofia-sip/m4/sac-openssl.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/m4/sac-openssl.m4
   freeswitch/branches/seven/libs/sofia-sip/m4/sac-su.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/m4/sac-su.m4
   freeswitch/branches/seven/libs/sofia-sip/m4/sac-su2.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/m4/sac-su2.m4
   freeswitch/branches/seven/libs/sofia-sip/m4/sac-tport.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/m4/sac-tport.m4
   freeswitch/branches/seven/libs/sofia-sip/open_c/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/
   freeswitch/branches/seven/libs/sofia-sip/open_c/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/open_c/autogen.cmd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/autogen.cmd
   freeswitch/branches/seven/libs/sofia-sip/open_c/build_sources.cmd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/build_sources.cmd
   freeswitch/branches/seven/libs/sofia-sip/open_c/config.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/config.h.in
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/bld.inf
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/bld.inf
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/libsofia-sip-ua-glib.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/libsofia-sip-ua-glib.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/libsofia-sip-ua.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/libsofia-sip-ua.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/su_source_test.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/su_source_test.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/su_source_test_reg.rss
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/su_source_test_reg.rss
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/test_http.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/test_http.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/test_http_reg.rss
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/test_http_reg.rss
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/test_msg.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/test_msg.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/test_msg_reg.rss
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/test_msg_reg.rss
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/test_nua.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/test_nua.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/test_nua_reg.rss
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/test_nua_reg.rss
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/test_tport.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/test_tport.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/test_tport_reg.rss
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/test_tport_reg.rss
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/torture_sip.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/torture_sip.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/torture_sip_reg.rss
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/torture_sip_reg.rss
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/torture_su_alloc.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/torture_su_alloc.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/torture_su_alloc_reg.rss
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/torture_su_alloc_reg.rss
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/torture_su_port.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/torture_su_port.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/torture_su_port_reg.rss
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/torture_su_port_reg.rss
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/torture_su_root.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/torture_su_root.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/torture_su_root_reg.rss
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/torture_su_root_reg.rss
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/torture_su_tag.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/torture_su_tag.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/torture_su_tag_reg.rss
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/torture_su_tag_reg.rss
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/torture_url.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/torture_url.mmp
   freeswitch/branches/seven/libs/sofia-sip/open_c/group/torture_url_reg.rss
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/group/torture_url_reg.rss
   freeswitch/branches/seven/libs/sofia-sip/open_c/sis/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/sis/
   freeswitch/branches/seven/libs/sofia-sip/open_c/sis/libsofia-sip-ua-glib.pkg
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/sis/libsofia-sip-ua-glib.pkg
   freeswitch/branches/seven/libs/sofia-sip/open_c/sis/libsofia-sip-ua.pkg
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/sis/libsofia-sip-ua.pkg
   freeswitch/branches/seven/libs/sofia-sip/open_c/sis/su_source_test.pkg
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/sis/su_source_test.pkg
   freeswitch/branches/seven/libs/sofia-sip/open_c/sis/test_nua.pkg
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/sis/test_nua.pkg
   freeswitch/branches/seven/libs/sofia-sip/open_c/sis/test_tport.pkg
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/sis/test_tport.pkg
   freeswitch/branches/seven/libs/sofia-sip/open_c/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/open_c/sofia-sip/su_configure.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/sofia-sip/su_configure.h
   freeswitch/branches/seven/libs/sofia-sip/open_c/version.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/version.awk
   freeswitch/branches/seven/libs/sofia-sip/open_c/version_files.cmd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/open_c/version_files.cmd
   freeswitch/branches/seven/libs/sofia-sip/packages/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/packages/
   freeswitch/branches/seven/libs/sofia-sip/packages/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/packages/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/packages/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/packages/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/packages/sofia-sip-ua-glib.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/packages/sofia-sip-ua-glib.pc.in
   freeswitch/branches/seven/libs/sofia-sip/packages/sofia-sip-ua.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/packages/sofia-sip-ua.pc.in
   freeswitch/branches/seven/libs/sofia-sip/packages/sofia-sip.spec.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/packages/sofia-sip.spec.in
   freeswitch/branches/seven/libs/sofia-sip/rules/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/rules/
   freeswitch/branches/seven/libs/sofia-sip/rules/lcov.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/rules/lcov.am
   freeswitch/branches/seven/libs/sofia-sip/rules/recursive.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/rules/recursive.am
   freeswitch/branches/seven/libs/sofia-sip/rules/sofia.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/rules/sofia.am
   freeswitch/branches/seven/libs/sofia-sip/rules/valcheck.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/rules/valcheck.am
   freeswitch/branches/seven/libs/sofia-sip/scripts/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/scripts/
   freeswitch/branches/seven/libs/sofia-sip/scripts/coverage
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/scripts/coverage
   freeswitch/branches/seven/libs/sofia-sip/scripts/fix-include-sofia-sip
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/scripts/fix-include-sofia-sip
   freeswitch/branches/seven/libs/sofia-sip/scripts/hide_emails.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/scripts/hide_emails.sh
   freeswitch/branches/seven/libs/sofia-sip/scripts/lcov-report
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/scripts/lcov-report
   freeswitch/branches/seven/libs/sofia-sip/scripts/rpmbuild-snaphot
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/scripts/rpmbuild-snaphot
   freeswitch/branches/seven/libs/sofia-sip/scripts/uncovered
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/scripts/uncovered
   freeswitch/branches/seven/libs/sofia-sip/tests/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/tests/
   freeswitch/branches/seven/libs/sofia-sip/tests/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/tests/check_sofia.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/check_sofia.c
   freeswitch/branches/seven/libs/sofia-sip/tests/check_sofia.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/check_sofia.h
   freeswitch/branches/seven/libs/sofia-sip/tests/suite_for_nua.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/suite_for_nua.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_100rel.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_100rel.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_basic_call.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_basic_call.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_call_hold.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_call_hold.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_call_reject.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_call_reject.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_cancel_bye.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_cancel_bye.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_extension.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_extension.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_init.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_init.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_nat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_nat.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_nat.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_nat.h
   freeswitch/branches/seven/libs/sofia-sip/tests/test_nat_tags.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_nat_tags.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_nua.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_nua.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_nua.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_nua.h
   freeswitch/branches/seven/libs/sofia-sip/tests/test_nua_api.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_nua_api.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_nua_params.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_nua_params.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_offer_answer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_offer_answer.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_ops.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_ops.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_proxy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_proxy.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_proxy.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_proxy.h
   freeswitch/branches/seven/libs/sofia-sip/tests/test_refer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_refer.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_register.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_register.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_session_timer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_session_timer.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_simple.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_simple.c
   freeswitch/branches/seven/libs/sofia-sip/tests/test_sip_events.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/tests/test_sip_events.c
   freeswitch/branches/seven/libs/sofia-sip/utils/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/utils/
   freeswitch/branches/seven/libs/sofia-sip/utils/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/utils/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/utils/Doxyfile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/utils/Doxyfile.in
   freeswitch/branches/seven/libs/sofia-sip/utils/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/utils/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/utils/apps_utils.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/utils/apps_utils.h
   freeswitch/branches/seven/libs/sofia-sip/utils/sip-date.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/utils/sip-date.c
   freeswitch/branches/seven/libs/sofia-sip/utils/sip-dig.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/utils/sip-dig.c
   freeswitch/branches/seven/libs/sofia-sip/utils/sip-options.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/utils/sip-options.c
   freeswitch/branches/seven/libs/sofia-sip/utils/utils.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/utils/utils.docs
   freeswitch/branches/seven/libs/sofia-sip/win32/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/
   freeswitch/branches/seven/libs/sofia-sip/win32/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/ChangeLog
   freeswitch/branches/seven/libs/sofia-sip/win32/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/Makefile.am
   freeswitch/branches/seven/libs/sofia-sip/win32/README.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/README.txt
   freeswitch/branches/seven/libs/sofia-sip/win32/SofiaSIP.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/SofiaSIP.dsw
   freeswitch/branches/seven/libs/sofia-sip/win32/SofiaSIP.sln
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/SofiaSIP.sln
   freeswitch/branches/seven/libs/sofia-sip/win32/autogen.cmd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/autogen.cmd
   freeswitch/branches/seven/libs/sofia-sip/win32/build_sources.cmd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/build_sources.cmd
   freeswitch/branches/seven/libs/sofia-sip/win32/check.cmd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/check.cmd
   freeswitch/branches/seven/libs/sofia-sip/win32/config.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/config.h.in
   freeswitch/branches/seven/libs/sofia-sip/win32/install.cmd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/install.cmd
   freeswitch/branches/seven/libs/sofia-sip/win32/libsofia-sip-ua/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/libsofia-sip-ua/
   freeswitch/branches/seven/libs/sofia-sip/win32/libsofia-sip-ua-static/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/libsofia-sip-ua-static/
   freeswitch/branches/seven/libs/sofia-sip/win32/libsofia-sip-ua-static/libsofia_sip_ua_static.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/libsofia-sip-ua-static/libsofia_sip_ua_static.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/libsofia-sip-ua-static/libsofia_sip_ua_static.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/libsofia-sip-ua-static/libsofia_sip_ua_static.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/libsofia-sip-ua/libsofia_sip_ua.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/libsofia-sip-ua/libsofia_sip_ua.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/libsofia-sip-ua/libsofia_sip_ua.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/libsofia-sip-ua/libsofia_sip_ua.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/libsofia-sip-ua/sofia-sip-ua.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/libsofia-sip-ua/sofia-sip-ua.def
   freeswitch/branches/seven/libs/sofia-sip/win32/sofia-sip/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/sofia-sip/
   freeswitch/branches/seven/libs/sofia-sip/win32/sofia-sip/su_configure.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/sofia-sip/su_configure.h
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_htable/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_htable/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_htable/test_htable.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_htable/test_htable.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_htable/test_htable.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_htable/test_htable.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_memmem/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_memmem/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_memmem/test_memmem.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_memmem/test_memmem.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_memmem/test_memmem.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_memmem/test_memmem.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_nta/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_nta/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_nta/test_nta.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_nta/test_nta.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_nta/test_nta.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_nta/test_nta.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_nua/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_nua/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_nua/test_nat_tags.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_nua/test_nat_tags.cpp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_nua/test_nua.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_nua/test_nua.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_nua/test_nua.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_nua/test_nua.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_su/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_su/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_su/test_su.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_su/test_su.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_su/test_su.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_su/test_su.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_tport/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_tport/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_tport/test_class.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_tport/test_class.cpp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_tport/test_table.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_tport/test_table.cpp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_tport/test_tport.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_tport/test_tport.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/test_tport/test_tport.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/test_tport/test_tport.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_rbtree/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_rbtree/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_rbtree/torture_rbtree.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_rbtree/torture_rbtree.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_rbtree/torture_rbtree.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_rbtree/torture_rbtree.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su/torture_su.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su/torture_su.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su/torture_su.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su/torture_su.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_alloc/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_alloc/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_alloc/torture_su_alloc.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_alloc/torture_su_alloc.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_alloc/torture_su_alloc.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_alloc/torture_su_alloc.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_bm/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_bm/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_bm/torture_su_bm.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_bm/torture_su_bm.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_bm/torture_su_bm.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_bm/torture_su_bm.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_port/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_port/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_port/torture_su_port.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_port/torture_su_port.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_port/torture_su_port.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_port/torture_su_port.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_root/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_root/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_root/torture_su_root.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_root/torture_su_root.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_root/torture_su_root.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_root/torture_su_root.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_tag/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_tag/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_tag/torture_su_tag.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_tag/torture_su_tag.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_tag/torture_su_tag.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_tag/torture_su_tag.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_time/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_time/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_time/torture_su_time.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_time/torture_su_time.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_time/torture_su_time.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_time/torture_su_time.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_timer/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_timer/
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_timer/torture_su_timer.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_timer/torture_su_timer.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/tests/torture_su_timer/torture_su_timer.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/tests/torture_su_timer/torture_su_timer.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/unistd.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/unistd.h
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/localinfo/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/localinfo/
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/localinfo/localinfo.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/localinfo/localinfo.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/localinfo/localinfo.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/localinfo/localinfo.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/sip_dig/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/sip_dig/
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/sip_dig/sip_dig.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/sip_dig/sip_dig.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/sip_dig/sip_dig.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/sip_dig/sip_dig.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/sip_options/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/sip_options/
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/sip_options/sip_options.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/sip_options/sip_options.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/sip_options/sip_options.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/sip_options/sip_options.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/sip_options_static/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/sip_options_static/
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/sip_options_static/sip_options_static.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/sip_options_static/sip_options_static.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/sip_options_static/sip_options_static.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/sip_options_static/sip_options_static.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/stunc/
      - copied from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/stunc/
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/stunc/stunc.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/stunc/stunc.dsp
   freeswitch/branches/seven/libs/sofia-sip/win32/utils/stunc/stunc.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/utils/stunc/stunc.vcproj
   freeswitch/branches/seven/libs/sofia-sip/win32/version.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/version.awk
   freeswitch/branches/seven/libs/sofia-sip/win32/version_files.cmd
      - copied unchanged from r11459, /freeswitch/trunk/libs/sofia-sip/win32/version_files.cmd
   freeswitch/branches/seven/libs/spandsp/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/spandsp/
   freeswitch/branches/seven/libs/spandsp/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/.update
   freeswitch/branches/seven/libs/spandsp/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/AUTHORS
   freeswitch/branches/seven/libs/spandsp/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/COPYING
   freeswitch/branches/seven/libs/spandsp/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/ChangeLog
   freeswitch/branches/seven/libs/spandsp/DueDiligence
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/DueDiligence
   freeswitch/branches/seven/libs/spandsp/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/INSTALL
   freeswitch/branches/seven/libs/spandsp/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/Makefile.am
   freeswitch/branches/seven/libs/spandsp/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/NEWS
   freeswitch/branches/seven/libs/spandsp/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/README
   freeswitch/branches/seven/libs/spandsp/README.testdata
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/README.testdata
   freeswitch/branches/seven/libs/spandsp/autogen.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/autogen.sh
   freeswitch/branches/seven/libs/spandsp/config/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/spandsp/config/
   freeswitch/branches/seven/libs/spandsp/config-h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/config-h.in
   freeswitch/branches/seven/libs/spandsp/config/ax_c99_features.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/config/ax_c99_features.m4
   freeswitch/branches/seven/libs/spandsp/config/ax_check_real_file.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/config/ax_check_real_file.m4
   freeswitch/branches/seven/libs/spandsp/config/ax_compiler_vendor.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/config/ax_compiler_vendor.m4
   freeswitch/branches/seven/libs/spandsp/config/ax_fixed_point_machine.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/config/ax_fixed_point_machine.m4
   freeswitch/branches/seven/libs/spandsp/config/ax_misaligned_access_fails.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/config/ax_misaligned_access_fails.m4
   freeswitch/branches/seven/libs/spandsp/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/configure.ac
   freeswitch/branches/seven/libs/spandsp/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/configure.gnu
   freeswitch/branches/seven/libs/spandsp/debian/
      - copied from r11459, /freeswitch/trunk/libs/spandsp/debian/
   freeswitch/branches/seven/libs/spandsp/debian/changelog
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/debian/changelog
   freeswitch/branches/seven/libs/spandsp/debian/compat
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/debian/compat
   freeswitch/branches/seven/libs/spandsp/debian/control
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/debian/control
   freeswitch/branches/seven/libs/spandsp/debian/copyright
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/debian/copyright
   freeswitch/branches/seven/libs/spandsp/debian/libspandsp-dev.install
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/debian/libspandsp-dev.install
   freeswitch/branches/seven/libs/spandsp/debian/libspandsp-doc.install
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/debian/libspandsp-doc.install
   freeswitch/branches/seven/libs/spandsp/debian/libspandsp5.install
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/debian/libspandsp5.install
   freeswitch/branches/seven/libs/spandsp/debian/rules
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/debian/rules
   freeswitch/branches/seven/libs/spandsp/debian/watch
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/debian/watch
   freeswitch/branches/seven/libs/spandsp/doc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/spandsp/doc/
   freeswitch/branches/seven/libs/spandsp/doc/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/doc/Makefile.am
   freeswitch/branches/seven/libs/spandsp/doc/css.css
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/doc/css.css
   freeswitch/branches/seven/libs/spandsp/doc/doxygen.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/doc/doxygen.in
   freeswitch/branches/seven/libs/spandsp/doc/t38-gateway.dia
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/doc/t38-gateway.dia
   freeswitch/branches/seven/libs/spandsp/doc/t38-terminal.dia
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/doc/t38-terminal.dia
   freeswitch/branches/seven/libs/spandsp/doc/t38_manual/
      - copied from r11459, /freeswitch/trunk/libs/spandsp/doc/t38_manual/
   freeswitch/branches/seven/libs/spandsp/doc/t38_manual.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/doc/t38_manual.xml
   freeswitch/branches/seven/libs/spandsp/doc/t38_manual/css.css
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/doc/t38_manual/css.css
   freeswitch/branches/seven/libs/spandsp/doc/wrapper.xsl
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/doc/wrapper.xsl
   freeswitch/branches/seven/libs/spandsp/libspandsp.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/libspandsp.vcproj
   freeswitch/branches/seven/libs/spandsp/spandsp/
      - copied from r11459, /freeswitch/trunk/libs/spandsp/spandsp/
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/Makefile.am
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/g1050.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/g1050.c
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/line_model.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/line_model.c
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/make_line_models.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/make_line_models.c
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/rfc2198_sim.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/rfc2198_sim.c
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/spandsp/
      - copied from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/spandsp-sim.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp-sim.h
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/spandsp/g1050.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/g1050.h
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/spandsp/line_model.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/line_model.h
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/spandsp/line_models.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/line_models.h
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/spandsp/rfc2198_sim.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/rfc2198_sim.h
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/spandsp/test_utils.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/test_utils.h
   freeswitch/branches/seven/libs/spandsp/spandsp-sim/test_utils.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp-sim/test_utils.c
   freeswitch/branches/seven/libs/spandsp/spandsp.spec
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp.spec
   freeswitch/branches/seven/libs/spandsp/spandsp.spec.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp.spec.in
   freeswitch/branches/seven/libs/spandsp/spandsp/global-tones.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp/global-tones.xml
   freeswitch/branches/seven/libs/spandsp/spandsp/tones.dtd
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp/tones.dtd
   freeswitch/branches/seven/libs/spandsp/spandsp/tsb85.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/spandsp/tsb85.xml
   freeswitch/branches/seven/libs/spandsp/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/spandsp/src/
   freeswitch/branches/seven/libs/spandsp/src/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/Makefile.am
   freeswitch/branches/seven/libs/spandsp/src/adsi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/adsi.c
   freeswitch/branches/seven/libs/spandsp/src/async.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/async.c
   freeswitch/branches/seven/libs/spandsp/src/at_interpreter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/at_interpreter.c
   freeswitch/branches/seven/libs/spandsp/src/awgn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/awgn.c
   freeswitch/branches/seven/libs/spandsp/src/bell_r2_mf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c
   freeswitch/branches/seven/libs/spandsp/src/bert.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/bert.c
   freeswitch/branches/seven/libs/spandsp/src/bit_operations.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/bit_operations.c
   freeswitch/branches/seven/libs/spandsp/src/bitstream.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/bitstream.c
   freeswitch/branches/seven/libs/spandsp/src/complex_filters.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/complex_filters.c
   freeswitch/branches/seven/libs/spandsp/src/complex_vector_float.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/complex_vector_float.c
   freeswitch/branches/seven/libs/spandsp/src/complex_vector_int.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/complex_vector_int.c
   freeswitch/branches/seven/libs/spandsp/src/crc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/crc.c
   freeswitch/branches/seven/libs/spandsp/src/dds_float.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/dds_float.c
   freeswitch/branches/seven/libs/spandsp/src/dds_int.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/dds_int.c
   freeswitch/branches/seven/libs/spandsp/src/dtmf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/dtmf.c
   freeswitch/branches/seven/libs/spandsp/src/echo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/echo.c
   freeswitch/branches/seven/libs/spandsp/src/fax.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/fax.c
   freeswitch/branches/seven/libs/spandsp/src/faxfont.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/faxfont.h
   freeswitch/branches/seven/libs/spandsp/src/filter_tools.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/filter_tools.c
   freeswitch/branches/seven/libs/spandsp/src/filter_tools.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/filter_tools.h
   freeswitch/branches/seven/libs/spandsp/src/floating_fudge.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/floating_fudge.h
   freeswitch/branches/seven/libs/spandsp/src/fsk.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/fsk.c
   freeswitch/branches/seven/libs/spandsp/src/g711.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/g711.c
   freeswitch/branches/seven/libs/spandsp/src/g722.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/g722.c
   freeswitch/branches/seven/libs/spandsp/src/g722_decode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/g722_decode.c
   freeswitch/branches/seven/libs/spandsp/src/g722_encode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/g722_encode.c
   freeswitch/branches/seven/libs/spandsp/src/g726.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/g726.c
   freeswitch/branches/seven/libs/spandsp/src/gsm0610_decode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/gsm0610_decode.c
   freeswitch/branches/seven/libs/spandsp/src/gsm0610_encode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/gsm0610_encode.c
   freeswitch/branches/seven/libs/spandsp/src/gsm0610_local.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/gsm0610_local.h
   freeswitch/branches/seven/libs/spandsp/src/gsm0610_long_term.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/gsm0610_long_term.c
   freeswitch/branches/seven/libs/spandsp/src/gsm0610_lpc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/gsm0610_lpc.c
   freeswitch/branches/seven/libs/spandsp/src/gsm0610_preprocess.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/gsm0610_preprocess.c
   freeswitch/branches/seven/libs/spandsp/src/gsm0610_rpe.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/gsm0610_rpe.c
   freeswitch/branches/seven/libs/spandsp/src/gsm0610_short_term.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/gsm0610_short_term.c
   freeswitch/branches/seven/libs/spandsp/src/hdlc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/hdlc.c
   freeswitch/branches/seven/libs/spandsp/src/ima_adpcm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/ima_adpcm.c
   freeswitch/branches/seven/libs/spandsp/src/libspandsp.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/libspandsp.dsp
   freeswitch/branches/seven/libs/spandsp/src/libspandsp.sln
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/libspandsp.sln
   freeswitch/branches/seven/libs/spandsp/src/libspandsp.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj
   freeswitch/branches/seven/libs/spandsp/src/logging.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/logging.c
   freeswitch/branches/seven/libs/spandsp/src/lpc10_analyse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/lpc10_analyse.c
   freeswitch/branches/seven/libs/spandsp/src/lpc10_decode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/lpc10_decode.c
   freeswitch/branches/seven/libs/spandsp/src/lpc10_encdecs.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/lpc10_encdecs.h
   freeswitch/branches/seven/libs/spandsp/src/lpc10_encode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/lpc10_encode.c
   freeswitch/branches/seven/libs/spandsp/src/lpc10_placev.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/lpc10_placev.c
   freeswitch/branches/seven/libs/spandsp/src/lpc10_voicing.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/lpc10_voicing.c
   freeswitch/branches/seven/libs/spandsp/src/make_at_dictionary.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/make_at_dictionary.c
   freeswitch/branches/seven/libs/spandsp/src/make_modem_filter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/make_modem_filter.c
   freeswitch/branches/seven/libs/spandsp/src/modem_connect_tones.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c
   freeswitch/branches/seven/libs/spandsp/src/modem_echo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/modem_echo.c
   freeswitch/branches/seven/libs/spandsp/src/msvc/
      - copied from r11459, /freeswitch/trunk/libs/spandsp/src/msvc/
   freeswitch/branches/seven/libs/spandsp/src/msvc/gettimeofday.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/msvc/gettimeofday.c
   freeswitch/branches/seven/libs/spandsp/src/msvc/inttypes.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/msvc/inttypes.h
   freeswitch/branches/seven/libs/spandsp/src/msvc/msvcproj.foot
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/msvc/msvcproj.foot
   freeswitch/branches/seven/libs/spandsp/src/msvc/msvcproj.head
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/msvc/msvcproj.head
   freeswitch/branches/seven/libs/spandsp/src/msvc/spandsp.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/msvc/spandsp.def
   freeswitch/branches/seven/libs/spandsp/src/msvc/sys/
      - copied from r11459, /freeswitch/trunk/libs/spandsp/src/msvc/sys/
   freeswitch/branches/seven/libs/spandsp/src/msvc/sys/time.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/msvc/sys/time.h
   freeswitch/branches/seven/libs/spandsp/src/msvc/tgmath.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/msvc/tgmath.h
   freeswitch/branches/seven/libs/spandsp/src/msvc/unistd.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/msvc/unistd.h
   freeswitch/branches/seven/libs/spandsp/src/msvc/vc8proj.foot
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.foot
   freeswitch/branches/seven/libs/spandsp/src/msvc/vc8proj.head
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.head
   freeswitch/branches/seven/libs/spandsp/src/noise.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/noise.c
   freeswitch/branches/seven/libs/spandsp/src/oki_adpcm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/oki_adpcm.c
   freeswitch/branches/seven/libs/spandsp/src/playout.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/playout.c
   freeswitch/branches/seven/libs/spandsp/src/plc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/plc.c
   freeswitch/branches/seven/libs/spandsp/src/power_meter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/power_meter.c
   freeswitch/branches/seven/libs/spandsp/src/queue.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/queue.c
   freeswitch/branches/seven/libs/spandsp/src/schedule.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/schedule.c
   freeswitch/branches/seven/libs/spandsp/src/sig_tone.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/sig_tone.c
   freeswitch/branches/seven/libs/spandsp/src/silence_gen.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/silence_gen.c
   freeswitch/branches/seven/libs/spandsp/src/spandsp/
      - copied from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/
   freeswitch/branches/seven/libs/spandsp/src/spandsp.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp.h.in
   freeswitch/branches/seven/libs/spandsp/src/spandsp/adsi.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/adsi.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/arctan2.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/arctan2.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/async.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/async.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/at_interpreter.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/at_interpreter.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/awgn.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/awgn.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/bell_r2_mf.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/bell_r2_mf.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/bert.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/bert.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/biquad.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/biquad.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/bit_operations.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/bit_operations.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/bitstream.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/bitstream.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/complex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/complex.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/complex_filters.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/complex_filters.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/complex_vector_float.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/complex_vector_float.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/complex_vector_int.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/complex_vector_int.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/crc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/crc.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/dc_restore.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/dc_restore.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/dds.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/dds.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/dtmf.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/dtmf.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/echo.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/echo.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/fax.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/fax.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/fax_modems.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/fax_modems.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/fir.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/fir.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/fsk.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/g168models.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/g168models.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/g711.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/g711.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/g722.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/g722.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/g726.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/g726.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/gsm0610.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/gsm0610.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/hdlc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/hdlc.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/ima_adpcm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/ima_adpcm.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/logging.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/logging.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/lpc10.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/lpc10.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/modem_connect_tones.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/modem_connect_tones.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/modem_echo.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/modem_echo.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/noise.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/noise.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/oki_adpcm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/oki_adpcm.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/playout.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/playout.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/plc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/plc.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/power_meter.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/power_meter.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/queue.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/queue.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/saturated.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/saturated.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/schedule.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/schedule.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/sig_tone.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/sig_tone.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/silence_gen.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/silence_gen.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/super_tone_rx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/super_tone_rx.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/super_tone_tx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/super_tone_tx.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/t30.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/t30.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/t30_api.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/t30_api.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/t30_fcf.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/t30_fcf.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/t30_logging.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/t30_logging.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/t31.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/t31.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/t35.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/t35.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/t38_core.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/t38_gateway.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/t38_gateway.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/t38_non_ecm_buffer.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/t38_non_ecm_buffer.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/t38_terminal.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/t38_terminal.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/t4.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/t4.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/telephony.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/telephony.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/time_scale.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/time_scale.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/timing.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/timing.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/tone_detect.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/tone_detect.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/tone_generate.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/tone_generate.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/v17rx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/v17tx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/v22bis.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/v27ter_rx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/v27ter_tx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/v29rx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/v29tx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/v42.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/v42.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/v42bis.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/v42bis.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/v8.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/v8.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/vector_float.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/vector_float.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/vector_int.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/vector_int.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/version.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/version.h
   freeswitch/branches/seven/libs/spandsp/src/spandsp/version.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/spandsp/version.h.in
   freeswitch/branches/seven/libs/spandsp/src/super_tone_rx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/super_tone_rx.c
   freeswitch/branches/seven/libs/spandsp/src/super_tone_tx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/super_tone_tx.c
   freeswitch/branches/seven/libs/spandsp/src/t30.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/t30.c
   freeswitch/branches/seven/libs/spandsp/src/t30_api.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/t30_api.c
   freeswitch/branches/seven/libs/spandsp/src/t30_local.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/t30_local.h
   freeswitch/branches/seven/libs/spandsp/src/t30_logging.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/t30_logging.c
   freeswitch/branches/seven/libs/spandsp/src/t31.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/t31.c
   freeswitch/branches/seven/libs/spandsp/src/t35.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/t35.c
   freeswitch/branches/seven/libs/spandsp/src/t38_core.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/t38_core.c
   freeswitch/branches/seven/libs/spandsp/src/t38_gateway.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/t38_gateway.c
   freeswitch/branches/seven/libs/spandsp/src/t38_non_ecm_buffer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/t38_non_ecm_buffer.c
   freeswitch/branches/seven/libs/spandsp/src/t38_terminal.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/t38_terminal.c
   freeswitch/branches/seven/libs/spandsp/src/t4.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/t4.c
   freeswitch/branches/seven/libs/spandsp/src/t4_states.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/t4_states.h
   freeswitch/branches/seven/libs/spandsp/src/testcpuid.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/testcpuid.c
   freeswitch/branches/seven/libs/spandsp/src/time_scale.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/time_scale.c
   freeswitch/branches/seven/libs/spandsp/src/tone_detect.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/tone_detect.c
   freeswitch/branches/seven/libs/spandsp/src/tone_generate.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/tone_generate.c
   freeswitch/branches/seven/libs/spandsp/src/v17rx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v17rx.c
   freeswitch/branches/seven/libs/spandsp/src/v17rx_constellation_maps.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v17rx_constellation_maps.h
   freeswitch/branches/seven/libs/spandsp/src/v17tx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v17tx.c
   freeswitch/branches/seven/libs/spandsp/src/v17tx_constellation_maps.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v17tx_constellation_maps.h
   freeswitch/branches/seven/libs/spandsp/src/v22bis_rx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v22bis_rx.c
   freeswitch/branches/seven/libs/spandsp/src/v22bis_tx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v22bis_tx.c
   freeswitch/branches/seven/libs/spandsp/src/v27ter_rx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v27ter_rx.c
   freeswitch/branches/seven/libs/spandsp/src/v27ter_tx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v27ter_tx.c
   freeswitch/branches/seven/libs/spandsp/src/v29rx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v29rx.c
   freeswitch/branches/seven/libs/spandsp/src/v29tx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v29tx.c
   freeswitch/branches/seven/libs/spandsp/src/v29tx_constellation_maps.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v29tx_constellation_maps.h
   freeswitch/branches/seven/libs/spandsp/src/v42.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v42.c
   freeswitch/branches/seven/libs/spandsp/src/v42bis.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v42bis.c
   freeswitch/branches/seven/libs/spandsp/src/v8.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/v8.c
   freeswitch/branches/seven/libs/spandsp/src/vector_float.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/vector_float.c
   freeswitch/branches/seven/libs/spandsp/src/vector_int.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/src/vector_int.c
   freeswitch/branches/seven/libs/spandsp/test-data/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/spandsp/test-data/
   freeswitch/branches/seven/libs/spandsp/test-data/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/Makefile.am
   freeswitch/branches/seven/libs/spandsp/test-data/etsi/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/spandsp/test-data/etsi/
   freeswitch/branches/seven/libs/spandsp/test-data/etsi/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/etsi/Makefile.am
   freeswitch/branches/seven/libs/spandsp/test-data/etsi/fax/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/spandsp/test-data/etsi/fax/
   freeswitch/branches/seven/libs/spandsp/test-data/etsi/fax/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/etsi/fax/Makefile.am
   freeswitch/branches/seven/libs/spandsp/test-data/etsi/fax/generate_etsi_300_242_pages.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/etsi/fax/generate_etsi_300_242_pages.c
   freeswitch/branches/seven/libs/spandsp/test-data/itu/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/
   freeswitch/branches/seven/libs/spandsp/test-data/itu/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/Makefile.am
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/Makefile.am
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/generate_dithered_tif.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/generate_dithered_tif.c
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/generate_sized_pages.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/generate_sized_pages.c
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/itu1.pbm
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/itu1.pbm
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/itu2.pbm
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/itu2.pbm
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/itu3.pbm
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/itu3.pbm
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/itu4.pbm
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/itu4.pbm
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/itu5.pbm
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/itu5.pbm
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/itu6.pbm
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/itu6.pbm
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/itu7.pbm
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/itu7.pbm
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/itu8.pbm
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/itu8.pbm
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/test1.pbm
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/test1.pbm
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/test2.pbm
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/test2.pbm
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/test3.pbm
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/test3.pbm
   freeswitch/branches/seven/libs/spandsp/test-data/itu/fax/test4.pbm
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/itu/fax/test4.pbm
   freeswitch/branches/seven/libs/spandsp/test-data/local/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/spandsp/test-data/local/
   freeswitch/branches/seven/libs/spandsp/test-data/local/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/local/Makefile.am
   freeswitch/branches/seven/libs/spandsp/test-data/local/dam9.wav
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/local/dam9.wav
   freeswitch/branches/seven/libs/spandsp/test-data/local/dam9_lpc55.wav
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/local/dam9_lpc55.wav
   freeswitch/branches/seven/libs/spandsp/test-data/local/short_nb_voice.wav
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/local/short_nb_voice.wav
   freeswitch/branches/seven/libs/spandsp/test-data/local/short_wb_voice.wav
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/test-data/local/short_wb_voice.wav
   freeswitch/branches/seven/libs/spandsp/tests/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/spandsp/tests/
   freeswitch/branches/seven/libs/spandsp/tests/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/Makefile.am
   freeswitch/branches/seven/libs/spandsp/tests/adsi_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/adsi_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/async_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/async_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/at_interpreter_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/at_interpreter_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/awgn_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/awgn_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/bell_mf_rx_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/bell_mf_rx_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/bell_mf_tx_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/bell_mf_tx_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/bert_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/bert_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/bit_operations_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/bit_operations_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/complex_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/complex_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/complex_vector_float_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/complex_vector_float_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/complex_vector_int_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/complex_vector_int_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/crc_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/crc_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/dc_restore_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/dc_restore_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/dds_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/dds_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/dtmf_rx_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/dtmf_rx_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/dtmf_tx_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/dtmf_tx_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/echo_monitor.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/echo_monitor.cpp
   freeswitch/branches/seven/libs/spandsp/tests/echo_monitor.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/echo_monitor.h
   freeswitch/branches/seven/libs/spandsp/tests/echo_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/echo_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/fax_decode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/fax_decode.c
   freeswitch/branches/seven/libs/spandsp/tests/fax_tester.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/fax_tester.c
   freeswitch/branches/seven/libs/spandsp/tests/fax_tester.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/fax_tester.h
   freeswitch/branches/seven/libs/spandsp/tests/fax_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/fax_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/fax_tests.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/fax_tests.sh
   freeswitch/branches/seven/libs/spandsp/tests/fsk_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/fsk_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/g1050_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/g1050_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/g168_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/g168_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/g711_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/g711_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/g722_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/g722_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/g726_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/g726_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/gsm0610_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/gsm0610_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/hdlc_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/hdlc_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/ima_adpcm_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/ima_adpcm_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/line_model_monitor.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/line_model_monitor.cpp
   freeswitch/branches/seven/libs/spandsp/tests/line_model_monitor.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/line_model_monitor.h
   freeswitch/branches/seven/libs/spandsp/tests/line_model_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/line_model_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/logging_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/logging_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/lpc10_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/lpc10_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/make_g168_css.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/make_g168_css.c
   freeswitch/branches/seven/libs/spandsp/tests/media_monitor.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/media_monitor.cpp
   freeswitch/branches/seven/libs/spandsp/tests/media_monitor.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/media_monitor.h
   freeswitch/branches/seven/libs/spandsp/tests/modem_connect_tones_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/modem_connect_tones_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/modem_echo_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/modem_echo_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/modem_monitor.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/modem_monitor.cpp
   freeswitch/branches/seven/libs/spandsp/tests/modem_monitor.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/modem_monitor.h
   freeswitch/branches/seven/libs/spandsp/tests/noise_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/noise_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/oki_adpcm_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/oki_adpcm_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/playout_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/playout_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/plc_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/plc_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/power_meter_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/power_meter_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/queue_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/queue_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/r2_mf_rx_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/r2_mf_rx_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/r2_mf_tx_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/r2_mf_tx_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/regression_tests.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/regression_tests.sh
   freeswitch/branches/seven/libs/spandsp/tests/rfc2198_sim_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/rfc2198_sim_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/schedule_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/schedule_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/sig_tone_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/sig_tone_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/super_tone_rx_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/super_tone_rx_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/super_tone_tx_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/super_tone_tx_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/t31_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/t31_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/t38_core_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/t38_core_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/t38_gateway_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/t38_gateway_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/t38_gateway_to_terminal_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/t38_gateway_to_terminal_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/t38_non_ecm_buffer_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/t38_non_ecm_buffer_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/t38_terminal_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/t38_terminal_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/t38_terminal_to_gateway_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/t38_terminal_to_gateway_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/t4_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/t4_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/testadsi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/testadsi.c
   freeswitch/branches/seven/libs/spandsp/tests/testfax.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/testfax.c
   freeswitch/branches/seven/libs/spandsp/tests/time_scale_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/time_scale_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/tone_detect_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/tone_detect_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/tone_generate_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/tone_generate_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/tsb85_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/tsb85_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/tsb85_tests.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/tsb85_tests.sh
   freeswitch/branches/seven/libs/spandsp/tests/v17_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/v17_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/v22bis_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/v27ter_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/v29_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/v29_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/v42_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/v42_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/v42bis_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/v42bis_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/v42bis_tests.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/v42bis_tests.sh
   freeswitch/branches/seven/libs/spandsp/tests/v8_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/v8_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/vector_float_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/vector_float_tests.c
   freeswitch/branches/seven/libs/spandsp/tests/vector_int_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/tests/vector_int_tests.c
   freeswitch/branches/seven/libs/spandsp/unpack_g722_data.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/unpack_g722_data.sh
   freeswitch/branches/seven/libs/spandsp/unpack_g726_data.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/unpack_g726_data.sh
   freeswitch/branches/seven/libs/spandsp/unpack_gsm0610_data.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/unpack_gsm0610_data.sh
   freeswitch/branches/seven/libs/spandsp/unpack_v56ter_data.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/unpack_v56ter_data.sh
   freeswitch/branches/seven/libs/spandsp/wrapper.xsl
      - copied unchanged from r11459, /freeswitch/trunk/libs/spandsp/wrapper.xsl
   freeswitch/branches/seven/libs/speex/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/
   freeswitch/branches/seven/libs/speex/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/.update
   freeswitch/branches/seven/libs/speex/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/AUTHORS
   freeswitch/branches/seven/libs/speex/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/COPYING
   freeswitch/branches/seven/libs/speex/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ChangeLog
   freeswitch/branches/seven/libs/speex/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/INSTALL
   freeswitch/branches/seven/libs/speex/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/Makefile.am
   freeswitch/branches/seven/libs/speex/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/NEWS
   freeswitch/branches/seven/libs/speex/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/README
   freeswitch/branches/seven/libs/speex/README.TI-DSP
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/README.TI-DSP
   freeswitch/branches/seven/libs/speex/README.blackfin
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/README.blackfin
   freeswitch/branches/seven/libs/speex/README.symbian
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/README.symbian
   freeswitch/branches/seven/libs/speex/Speex.kdevelop
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/Speex.kdevelop
   freeswitch/branches/seven/libs/speex/Speex.spec
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/Speex.spec
   freeswitch/branches/seven/libs/speex/Speex.spec.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/Speex.spec.in
   freeswitch/branches/seven/libs/speex/TODO
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/TODO
   freeswitch/branches/seven/libs/speex/acinclude.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/acinclude.m4
   freeswitch/branches/seven/libs/speex/config.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/config.h.in
   freeswitch/branches/seven/libs/speex/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/configure.ac
   freeswitch/branches/seven/libs/speex/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/configure.gnu
   freeswitch/branches/seven/libs/speex/doc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/doc/
   freeswitch/branches/seven/libs/speex/doc/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/doc/Makefile.am
   freeswitch/branches/seven/libs/speex/doc/manual.pdf
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/doc/manual.pdf
   freeswitch/branches/seven/libs/speex/include/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/include/
   freeswitch/branches/seven/libs/speex/include/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/include/Makefile.am
   freeswitch/branches/seven/libs/speex/include/speex/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/include/speex/
   freeswitch/branches/seven/libs/speex/include/speex/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/include/speex/Makefile.am
   freeswitch/branches/seven/libs/speex/include/speex/speex.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/include/speex/speex.h
   freeswitch/branches/seven/libs/speex/include/speex/speex_bits.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/include/speex/speex_bits.h
   freeswitch/branches/seven/libs/speex/include/speex/speex_callbacks.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/include/speex/speex_callbacks.h
   freeswitch/branches/seven/libs/speex/include/speex/speex_config_types.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/include/speex/speex_config_types.h.in
   freeswitch/branches/seven/libs/speex/include/speex/speex_echo.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/include/speex/speex_echo.h
   freeswitch/branches/seven/libs/speex/include/speex/speex_header.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/include/speex/speex_header.h
   freeswitch/branches/seven/libs/speex/include/speex/speex_jitter.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/include/speex/speex_jitter.h
   freeswitch/branches/seven/libs/speex/include/speex/speex_preprocess.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/include/speex/speex_preprocess.h
   freeswitch/branches/seven/libs/speex/include/speex/speex_stereo.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/include/speex/speex_stereo.h
   freeswitch/branches/seven/libs/speex/include/speex/speex_types.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/include/speex/speex_types.h
   freeswitch/branches/seven/libs/speex/libspeex/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/libspeex/
   freeswitch/branches/seven/libs/speex/libspeex/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/Makefile.am
   freeswitch/branches/seven/libs/speex/libspeex/_kiss_fft_guts.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/_kiss_fft_guts.h
   freeswitch/branches/seven/libs/speex/libspeex/arch.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/arch.h
   freeswitch/branches/seven/libs/speex/libspeex/bits.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/bits.c
   freeswitch/branches/seven/libs/speex/libspeex/cb_search.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/cb_search.c
   freeswitch/branches/seven/libs/speex/libspeex/cb_search.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/cb_search.h
   freeswitch/branches/seven/libs/speex/libspeex/cb_search_arm4.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/cb_search_arm4.h
   freeswitch/branches/seven/libs/speex/libspeex/cb_search_bfin.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/cb_search_bfin.h
   freeswitch/branches/seven/libs/speex/libspeex/cb_search_sse.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/cb_search_sse.h
   freeswitch/branches/seven/libs/speex/libspeex/exc_10_16_table.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/exc_10_16_table.c
   freeswitch/branches/seven/libs/speex/libspeex/exc_10_32_table.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/exc_10_32_table.c
   freeswitch/branches/seven/libs/speex/libspeex/exc_20_32_table.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/exc_20_32_table.c
   freeswitch/branches/seven/libs/speex/libspeex/exc_5_256_table.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/exc_5_256_table.c
   freeswitch/branches/seven/libs/speex/libspeex/exc_5_64_table.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/exc_5_64_table.c
   freeswitch/branches/seven/libs/speex/libspeex/exc_8_128_table.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/exc_8_128_table.c
   freeswitch/branches/seven/libs/speex/libspeex/fftwrap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/fftwrap.c
   freeswitch/branches/seven/libs/speex/libspeex/fftwrap.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/fftwrap.h
   freeswitch/branches/seven/libs/speex/libspeex/filters.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/filters.c
   freeswitch/branches/seven/libs/speex/libspeex/filters.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/filters.h
   freeswitch/branches/seven/libs/speex/libspeex/filters_arm4.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/filters_arm4.h
   freeswitch/branches/seven/libs/speex/libspeex/filters_bfin.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/filters_bfin.h
   freeswitch/branches/seven/libs/speex/libspeex/filters_sse.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/filters_sse.h
   freeswitch/branches/seven/libs/speex/libspeex/fixed_arm4.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/fixed_arm4.h
   freeswitch/branches/seven/libs/speex/libspeex/fixed_arm5e.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/fixed_arm5e.h
   freeswitch/branches/seven/libs/speex/libspeex/fixed_bfin.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/fixed_bfin.h
   freeswitch/branches/seven/libs/speex/libspeex/fixed_debug.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/fixed_debug.h
   freeswitch/branches/seven/libs/speex/libspeex/fixed_generic.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/fixed_generic.h
   freeswitch/branches/seven/libs/speex/libspeex/gain_table.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/gain_table.c
   freeswitch/branches/seven/libs/speex/libspeex/gain_table_lbr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/gain_table_lbr.c
   freeswitch/branches/seven/libs/speex/libspeex/hexc_10_32_table.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/hexc_10_32_table.c
   freeswitch/branches/seven/libs/speex/libspeex/hexc_table.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/hexc_table.c
   freeswitch/branches/seven/libs/speex/libspeex/high_lsp_tables.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/high_lsp_tables.c
   freeswitch/branches/seven/libs/speex/libspeex/jitter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/jitter.c
   freeswitch/branches/seven/libs/speex/libspeex/kiss_fft.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/kiss_fft.c
   freeswitch/branches/seven/libs/speex/libspeex/kiss_fft.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/kiss_fft.h
   freeswitch/branches/seven/libs/speex/libspeex/kiss_fftr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/kiss_fftr.c
   freeswitch/branches/seven/libs/speex/libspeex/kiss_fftr.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/kiss_fftr.h
   freeswitch/branches/seven/libs/speex/libspeex/lbr_48k_tables.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/lbr_48k_tables.c
   freeswitch/branches/seven/libs/speex/libspeex/lpc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/lpc.c
   freeswitch/branches/seven/libs/speex/libspeex/lpc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/lpc.h
   freeswitch/branches/seven/libs/speex/libspeex/lpc_bfin.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/lpc_bfin.h
   freeswitch/branches/seven/libs/speex/libspeex/lsp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/lsp.c
   freeswitch/branches/seven/libs/speex/libspeex/lsp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/lsp.h
   freeswitch/branches/seven/libs/speex/libspeex/lsp_bfin.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/lsp_bfin.h
   freeswitch/branches/seven/libs/speex/libspeex/lsp_tables_nb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/lsp_tables_nb.c
   freeswitch/branches/seven/libs/speex/libspeex/ltp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/ltp.c
   freeswitch/branches/seven/libs/speex/libspeex/ltp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/ltp.h
   freeswitch/branches/seven/libs/speex/libspeex/ltp_arm4.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/ltp_arm4.h
   freeswitch/branches/seven/libs/speex/libspeex/ltp_bfin.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/ltp_bfin.h
   freeswitch/branches/seven/libs/speex/libspeex/ltp_sse.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/ltp_sse.h
   freeswitch/branches/seven/libs/speex/libspeex/math_approx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/math_approx.c
   freeswitch/branches/seven/libs/speex/libspeex/math_approx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/math_approx.h
   freeswitch/branches/seven/libs/speex/libspeex/mdf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/mdf.c
   freeswitch/branches/seven/libs/speex/libspeex/misc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/misc.c
   freeswitch/branches/seven/libs/speex/libspeex/misc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/misc.h
   freeswitch/branches/seven/libs/speex/libspeex/misc_bfin.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/misc_bfin.h
   freeswitch/branches/seven/libs/speex/libspeex/modes.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/modes.c
   freeswitch/branches/seven/libs/speex/libspeex/modes.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/modes.h
   freeswitch/branches/seven/libs/speex/libspeex/nb_celp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/nb_celp.c
   freeswitch/branches/seven/libs/speex/libspeex/nb_celp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/nb_celp.h
   freeswitch/branches/seven/libs/speex/libspeex/preprocess.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/preprocess.c
   freeswitch/branches/seven/libs/speex/libspeex/pseudofloat.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/pseudofloat.h
   freeswitch/branches/seven/libs/speex/libspeex/quant_lsp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/quant_lsp.c
   freeswitch/branches/seven/libs/speex/libspeex/quant_lsp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/quant_lsp.h
   freeswitch/branches/seven/libs/speex/libspeex/quant_lsp_bfin.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/quant_lsp_bfin.h
   freeswitch/branches/seven/libs/speex/libspeex/sb_celp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/sb_celp.c
   freeswitch/branches/seven/libs/speex/libspeex/sb_celp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/sb_celp.h
   freeswitch/branches/seven/libs/speex/libspeex/smallft.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/smallft.c
   freeswitch/branches/seven/libs/speex/libspeex/smallft.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/smallft.h
   freeswitch/branches/seven/libs/speex/libspeex/speex.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/speex.c
   freeswitch/branches/seven/libs/speex/libspeex/speex_callbacks.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/speex_callbacks.c
   freeswitch/branches/seven/libs/speex/libspeex/speex_header.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/speex_header.c
   freeswitch/branches/seven/libs/speex/libspeex/stack_alloc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/stack_alloc.h
   freeswitch/branches/seven/libs/speex/libspeex/stereo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/stereo.c
   freeswitch/branches/seven/libs/speex/libspeex/testdenoise.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/testdenoise.c
   freeswitch/branches/seven/libs/speex/libspeex/testecho.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/testecho.c
   freeswitch/branches/seven/libs/speex/libspeex/testenc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/testenc.c
   freeswitch/branches/seven/libs/speex/libspeex/testenc_uwb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/testenc_uwb.c
   freeswitch/branches/seven/libs/speex/libspeex/testenc_wb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/testenc_wb.c
   freeswitch/branches/seven/libs/speex/libspeex/vbr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/vbr.c
   freeswitch/branches/seven/libs/speex/libspeex/vbr.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/vbr.h
   freeswitch/branches/seven/libs/speex/libspeex/vorbis_psy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/vorbis_psy.c
   freeswitch/branches/seven/libs/speex/libspeex/vorbis_psy.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/vorbis_psy.h
   freeswitch/branches/seven/libs/speex/libspeex/vq.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/vq.c
   freeswitch/branches/seven/libs/speex/libspeex/vq.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/vq.h
   freeswitch/branches/seven/libs/speex/libspeex/vq_arm4.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/vq_arm4.h
   freeswitch/branches/seven/libs/speex/libspeex/vq_bfin.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/vq_bfin.h
   freeswitch/branches/seven/libs/speex/libspeex/vq_sse.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/vq_sse.h
   freeswitch/branches/seven/libs/speex/libspeex/window.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/libspeex/window.c
   freeswitch/branches/seven/libs/speex/speex.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/speex.m4
   freeswitch/branches/seven/libs/speex/speex.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/speex.pc.in
   freeswitch/branches/seven/libs/speex/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/src/
   freeswitch/branches/seven/libs/speex/src/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/Makefile.am
   freeswitch/branches/seven/libs/speex/src/getopt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/getopt.c
   freeswitch/branches/seven/libs/speex/src/getopt1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/getopt1.c
   freeswitch/branches/seven/libs/speex/src/getopt_win.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/getopt_win.h
   freeswitch/branches/seven/libs/speex/src/skeleton.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/skeleton.c
   freeswitch/branches/seven/libs/speex/src/skeleton.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/skeleton.h
   freeswitch/branches/seven/libs/speex/src/speexdec.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/speexdec.1
   freeswitch/branches/seven/libs/speex/src/speexdec.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/speexdec.c
   freeswitch/branches/seven/libs/speex/src/speexenc.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/speexenc.1
   freeswitch/branches/seven/libs/speex/src/speexenc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/speexenc.c
   freeswitch/branches/seven/libs/speex/src/wav_io.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/wav_io.c
   freeswitch/branches/seven/libs/speex/src/wav_io.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/wav_io.h
   freeswitch/branches/seven/libs/speex/src/wave_out.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/wave_out.c
   freeswitch/branches/seven/libs/speex/src/wave_out.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/src/wave_out.h
   freeswitch/branches/seven/libs/speex/symbian/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/symbian/
   freeswitch/branches/seven/libs/speex/symbian/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/symbian/Makefile.am
   freeswitch/branches/seven/libs/speex/symbian/bld.inf
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/symbian/bld.inf
   freeswitch/branches/seven/libs/speex/symbian/config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/symbian/config.h
   freeswitch/branches/seven/libs/speex/symbian/speex.mmp
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/symbian/speex.mmp
   freeswitch/branches/seven/libs/speex/ti/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/ti/
   freeswitch/branches/seven/libs/speex/ti/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/Makefile.am
   freeswitch/branches/seven/libs/speex/ti/config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/config.h
   freeswitch/branches/seven/libs/speex/ti/speex_C54_test/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/ti/speex_C54_test/
   freeswitch/branches/seven/libs/speex/ti/speex_C54_test/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/speex_C54_test/Makefile.am
   freeswitch/branches/seven/libs/speex/ti/speex_C54_test/speex_C54_test.cmd
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/speex_C54_test/speex_C54_test.cmd
   freeswitch/branches/seven/libs/speex/ti/speex_C54_test/speex_C54_test.pjt
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/speex_C54_test/speex_C54_test.pjt
   freeswitch/branches/seven/libs/speex/ti/speex_C55_test/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/ti/speex_C55_test/
   freeswitch/branches/seven/libs/speex/ti/speex_C55_test/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/speex_C55_test/Makefile.am
   freeswitch/branches/seven/libs/speex/ti/speex_C55_test/speex_C55_test.cmd
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/speex_C55_test/speex_C55_test.cmd
   freeswitch/branches/seven/libs/speex/ti/speex_C55_test/speex_C55_test.pjt
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/speex_C55_test/speex_C55_test.pjt
   freeswitch/branches/seven/libs/speex/ti/speex_C64_test/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/ti/speex_C64_test/
   freeswitch/branches/seven/libs/speex/ti/speex_C64_test/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/speex_C64_test/Makefile.am
   freeswitch/branches/seven/libs/speex/ti/speex_C64_test/speex_C64_test.cmd
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/speex_C64_test/speex_C64_test.cmd
   freeswitch/branches/seven/libs/speex/ti/speex_C64_test/speex_C64_test.pjt
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/speex_C64_test/speex_C64_test.pjt
   freeswitch/branches/seven/libs/speex/ti/testenc-TI-C5x.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/testenc-TI-C5x.c
   freeswitch/branches/seven/libs/speex/ti/testenc-TI-C64x.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/testenc-TI-C64x.c
   freeswitch/branches/seven/libs/speex/ti/user_misc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/ti/user_misc.h
   freeswitch/branches/seven/libs/speex/win32/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/win32/
   freeswitch/branches/seven/libs/speex/win32/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/Makefile.am
   freeswitch/branches/seven/libs/speex/win32/VS2003/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/win32/VS2003/
   freeswitch/branches/seven/libs/speex/win32/VS2003/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2003/Makefile.am
   freeswitch/branches/seven/libs/speex/win32/VS2003/libspeex/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/win32/VS2003/libspeex/
   freeswitch/branches/seven/libs/speex/win32/VS2003/libspeex/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2003/libspeex/Makefile.am
   freeswitch/branches/seven/libs/speex/win32/VS2003/libspeex/libspeex.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2003/libspeex/libspeex.def
   freeswitch/branches/seven/libs/speex/win32/VS2003/libspeex/libspeex.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2003/libspeex/libspeex.vcproj
   freeswitch/branches/seven/libs/speex/win32/VS2003/speexdec/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/win32/VS2003/speexdec/
   freeswitch/branches/seven/libs/speex/win32/VS2003/speexdec/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2003/speexdec/Makefile.am
   freeswitch/branches/seven/libs/speex/win32/VS2003/speexdec/speexdec.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2003/speexdec/speexdec.vcproj
   freeswitch/branches/seven/libs/speex/win32/VS2003/speexenc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/win32/VS2003/speexenc/
   freeswitch/branches/seven/libs/speex/win32/VS2003/speexenc/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2003/speexenc/Makefile.am
   freeswitch/branches/seven/libs/speex/win32/VS2003/speexenc/speexenc.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2003/speexenc/speexenc.vcproj
   freeswitch/branches/seven/libs/speex/win32/VS2005/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/win32/VS2005/
   freeswitch/branches/seven/libs/speex/win32/VS2005/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2005/Makefile.am
   freeswitch/branches/seven/libs/speex/win32/VS2005/libspeex/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/win32/VS2005/libspeex/
   freeswitch/branches/seven/libs/speex/win32/VS2005/libspeex/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2005/libspeex/Makefile.am
   freeswitch/branches/seven/libs/speex/win32/VS2005/libspeex/libspeex.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2005/libspeex/libspeex.vcproj
   freeswitch/branches/seven/libs/speex/win32/VS2005/speexdec/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/win32/VS2005/speexdec/
   freeswitch/branches/seven/libs/speex/win32/VS2005/speexdec/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2005/speexdec/Makefile.am
   freeswitch/branches/seven/libs/speex/win32/VS2005/speexdec/speexdec.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2005/speexdec/speexdec.vcproj
   freeswitch/branches/seven/libs/speex/win32/VS2005/speexenc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/win32/VS2005/speexenc/
   freeswitch/branches/seven/libs/speex/win32/VS2005/speexenc/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2005/speexenc/Makefile.am
   freeswitch/branches/seven/libs/speex/win32/VS2005/speexenc/speexenc.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/VS2005/speexenc/speexenc.vcproj
   freeswitch/branches/seven/libs/speex/win32/config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/config.h
   freeswitch/branches/seven/libs/speex/win32/libspeex/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/win32/libspeex/
   freeswitch/branches/seven/libs/speex/win32/libspeex/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/libspeex/Makefile.am
   freeswitch/branches/seven/libs/speex/win32/libspeex/libspeex.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/libspeex/libspeex.dsp
   freeswitch/branches/seven/libs/speex/win32/libspeex/libspeex.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/libspeex/libspeex.dsw
   freeswitch/branches/seven/libs/speex/win32/libspeex/libspeex_dynamic.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/libspeex/libspeex_dynamic.dsp
   freeswitch/branches/seven/libs/speex/win32/libspeex/speex.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/libspeex/speex.def
   freeswitch/branches/seven/libs/speex/win32/speex.iss
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/speex.iss
   freeswitch/branches/seven/libs/speex/win32/speexdec/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/win32/speexdec/
   freeswitch/branches/seven/libs/speex/win32/speexdec/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/speexdec/Makefile.am
   freeswitch/branches/seven/libs/speex/win32/speexdec/speexdec.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/speexdec/speexdec.dsp
   freeswitch/branches/seven/libs/speex/win32/speexdec/speexdec.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/speexdec/speexdec.dsw
   freeswitch/branches/seven/libs/speex/win32/speexenc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/speex/win32/speexenc/
   freeswitch/branches/seven/libs/speex/win32/speexenc/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/speexenc/Makefile.am
   freeswitch/branches/seven/libs/speex/win32/speexenc/speexenc.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/speexenc/speexenc.dsp
   freeswitch/branches/seven/libs/speex/win32/speexenc/speexenc.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/speex/win32/speexenc/speexenc.dsw
   freeswitch/branches/seven/libs/sqlite/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sqlite/
   freeswitch/branches/seven/libs/sqlite/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/.update
   freeswitch/branches/seven/libs/sqlite/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/Makefile.in
   freeswitch/branches/seven/libs/sqlite/Makefile.linux-gcc
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/Makefile.linux-gcc
   freeswitch/branches/seven/libs/sqlite/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/README
   freeswitch/branches/seven/libs/sqlite/VERSION
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/VERSION
   freeswitch/branches/seven/libs/sqlite/addopcodes.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/addopcodes.awk
   freeswitch/branches/seven/libs/sqlite/art/
      - copied from r11459, /freeswitch/trunk/libs/sqlite/art/
   freeswitch/branches/seven/libs/sqlite/art/2005osaward.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/art/2005osaward.gif
   freeswitch/branches/seven/libs/sqlite/art/SQLite.eps
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/art/SQLite.eps
   freeswitch/branches/seven/libs/sqlite/art/SQLite.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/art/SQLite.gif
   freeswitch/branches/seven/libs/sqlite/art/SQLiteLogo3.tiff
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/art/SQLiteLogo3.tiff
   freeswitch/branches/seven/libs/sqlite/art/tmp/
      - copied from r11459, /freeswitch/trunk/libs/sqlite/art/tmp/
   freeswitch/branches/seven/libs/sqlite/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/configure.ac
   freeswitch/branches/seven/libs/sqlite/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/configure.gnu
   freeswitch/branches/seven/libs/sqlite/contrib/
      - copied from r11459, /freeswitch/trunk/libs/sqlite/contrib/
   freeswitch/branches/seven/libs/sqlite/contrib/sqlitecon.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/contrib/sqlitecon.tcl
   freeswitch/branches/seven/libs/sqlite/ext/
      - copied from r11459, /freeswitch/trunk/libs/sqlite/ext/
   freeswitch/branches/seven/libs/sqlite/ext/README.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/README.txt
   freeswitch/branches/seven/libs/sqlite/ext/fts1/
      - copied from r11459, /freeswitch/trunk/libs/sqlite/ext/fts1/
   freeswitch/branches/seven/libs/sqlite/ext/fts1/README.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts1/README.txt
   freeswitch/branches/seven/libs/sqlite/ext/fts1/fts1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts1/fts1.c
   freeswitch/branches/seven/libs/sqlite/ext/fts1/fts1.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts1/fts1.h
   freeswitch/branches/seven/libs/sqlite/ext/fts1/fts1_hash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts1/fts1_hash.c
   freeswitch/branches/seven/libs/sqlite/ext/fts1/fts1_hash.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts1/fts1_hash.h
   freeswitch/branches/seven/libs/sqlite/ext/fts1/fts1_porter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts1/fts1_porter.c
   freeswitch/branches/seven/libs/sqlite/ext/fts1/fts1_tokenizer.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts1/fts1_tokenizer.h
   freeswitch/branches/seven/libs/sqlite/ext/fts1/fts1_tokenizer1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts1/fts1_tokenizer1.c
   freeswitch/branches/seven/libs/sqlite/ext/fts2/
      - copied from r11459, /freeswitch/trunk/libs/sqlite/ext/fts2/
   freeswitch/branches/seven/libs/sqlite/ext/fts2/README.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts2/README.txt
   freeswitch/branches/seven/libs/sqlite/ext/fts2/fts2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts2/fts2.c
   freeswitch/branches/seven/libs/sqlite/ext/fts2/fts2.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts2/fts2.h
   freeswitch/branches/seven/libs/sqlite/ext/fts2/fts2_hash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts2/fts2_hash.c
   freeswitch/branches/seven/libs/sqlite/ext/fts2/fts2_hash.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts2/fts2_hash.h
   freeswitch/branches/seven/libs/sqlite/ext/fts2/fts2_porter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts2/fts2_porter.c
   freeswitch/branches/seven/libs/sqlite/ext/fts2/fts2_tokenizer.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts2/fts2_tokenizer.h
   freeswitch/branches/seven/libs/sqlite/ext/fts2/fts2_tokenizer1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/ext/fts2/fts2_tokenizer1.c
   freeswitch/branches/seven/libs/sqlite/install-sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/install-sh
   freeswitch/branches/seven/libs/sqlite/main.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/main.mk
   freeswitch/branches/seven/libs/sqlite/mkdll.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/mkdll.sh
   freeswitch/branches/seven/libs/sqlite/mkopcodec.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/mkopcodec.awk
   freeswitch/branches/seven/libs/sqlite/mkopcodeh.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/mkopcodeh.awk
   freeswitch/branches/seven/libs/sqlite/mkso.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/mkso.sh
   freeswitch/branches/seven/libs/sqlite/notes/
      - copied from r11459, /freeswitch/trunk/libs/sqlite/notes/
   freeswitch/branches/seven/libs/sqlite/publish.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/publish.sh
   freeswitch/branches/seven/libs/sqlite/spec.template
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/spec.template
   freeswitch/branches/seven/libs/sqlite/sqlite.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/sqlite.pc.in
   freeswitch/branches/seven/libs/sqlite/sqlite3.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/sqlite3.1
   freeswitch/branches/seven/libs/sqlite/sqlite3.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/sqlite3.pc.in
   freeswitch/branches/seven/libs/sqlite/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/sqlite/src/
   freeswitch/branches/seven/libs/sqlite/src/alter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/alter.c
   freeswitch/branches/seven/libs/sqlite/src/analyze.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/analyze.c
   freeswitch/branches/seven/libs/sqlite/src/attach.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/attach.c
   freeswitch/branches/seven/libs/sqlite/src/auth.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/auth.c
   freeswitch/branches/seven/libs/sqlite/src/btree.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/btree.c
   freeswitch/branches/seven/libs/sqlite/src/btree.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/btree.h
   freeswitch/branches/seven/libs/sqlite/src/build.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/build.c
   freeswitch/branches/seven/libs/sqlite/src/callback.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/callback.c
   freeswitch/branches/seven/libs/sqlite/src/complete.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/complete.c
   freeswitch/branches/seven/libs/sqlite/src/date.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/date.c
   freeswitch/branches/seven/libs/sqlite/src/delete.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/delete.c
   freeswitch/branches/seven/libs/sqlite/src/ex/
      - copied from r11459, /freeswitch/trunk/libs/sqlite/src/ex/
   freeswitch/branches/seven/libs/sqlite/src/expr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/expr.c
   freeswitch/branches/seven/libs/sqlite/src/func.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/func.c
   freeswitch/branches/seven/libs/sqlite/src/hash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/hash.c
   freeswitch/branches/seven/libs/sqlite/src/hash.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/hash.h
   freeswitch/branches/seven/libs/sqlite/src/insert.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/insert.c
   freeswitch/branches/seven/libs/sqlite/src/legacy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/legacy.c
   freeswitch/branches/seven/libs/sqlite/src/loadext.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/loadext.c
   freeswitch/branches/seven/libs/sqlite/src/main.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/main.c
   freeswitch/branches/seven/libs/sqlite/src/os.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/os.c
   freeswitch/branches/seven/libs/sqlite/src/os.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/os.h
   freeswitch/branches/seven/libs/sqlite/src/os_common.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/os_common.h
   freeswitch/branches/seven/libs/sqlite/src/os_os2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/os_os2.c
   freeswitch/branches/seven/libs/sqlite/src/os_os2.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/os_os2.h
   freeswitch/branches/seven/libs/sqlite/src/os_unix.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/os_unix.c
   freeswitch/branches/seven/libs/sqlite/src/os_win.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/os_win.c
   freeswitch/branches/seven/libs/sqlite/src/pager.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/pager.c
   freeswitch/branches/seven/libs/sqlite/src/pager.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/pager.h
   freeswitch/branches/seven/libs/sqlite/src/parse.y
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/parse.y
   freeswitch/branches/seven/libs/sqlite/src/pragma.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/pragma.c
   freeswitch/branches/seven/libs/sqlite/src/prepare.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/prepare.c
   freeswitch/branches/seven/libs/sqlite/src/printf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/printf.c
   freeswitch/branches/seven/libs/sqlite/src/random.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/random.c
   freeswitch/branches/seven/libs/sqlite/src/select.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/select.c
   freeswitch/branches/seven/libs/sqlite/src/shell.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/shell.c
   freeswitch/branches/seven/libs/sqlite/src/sqlite.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/sqlite.h.in
   freeswitch/branches/seven/libs/sqlite/src/sqlite3ext.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/sqlite3ext.h
   freeswitch/branches/seven/libs/sqlite/src/sqliteInt.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/sqliteInt.h
   freeswitch/branches/seven/libs/sqlite/src/table.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/table.c
   freeswitch/branches/seven/libs/sqlite/src/tclsqlite.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/tclsqlite.c
   freeswitch/branches/seven/libs/sqlite/src/test1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test1.c
   freeswitch/branches/seven/libs/sqlite/src/test2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test2.c
   freeswitch/branches/seven/libs/sqlite/src/test3.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test3.c
   freeswitch/branches/seven/libs/sqlite/src/test4.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test4.c
   freeswitch/branches/seven/libs/sqlite/src/test5.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test5.c
   freeswitch/branches/seven/libs/sqlite/src/test6.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test6.c
   freeswitch/branches/seven/libs/sqlite/src/test7.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test7.c
   freeswitch/branches/seven/libs/sqlite/src/test8.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test8.c
   freeswitch/branches/seven/libs/sqlite/src/test_async.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test_async.c
   freeswitch/branches/seven/libs/sqlite/src/test_autoext.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test_autoext.c
   freeswitch/branches/seven/libs/sqlite/src/test_loadext.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test_loadext.c
   freeswitch/branches/seven/libs/sqlite/src/test_md5.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test_md5.c
   freeswitch/branches/seven/libs/sqlite/src/test_schema.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test_schema.c
   freeswitch/branches/seven/libs/sqlite/src/test_server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test_server.c
   freeswitch/branches/seven/libs/sqlite/src/test_tclvar.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/test_tclvar.c
   freeswitch/branches/seven/libs/sqlite/src/tokenize.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/tokenize.c
   freeswitch/branches/seven/libs/sqlite/src/trigger.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/trigger.c
   freeswitch/branches/seven/libs/sqlite/src/update.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/update.c
   freeswitch/branches/seven/libs/sqlite/src/utf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/utf.c
   freeswitch/branches/seven/libs/sqlite/src/util.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/util.c
   freeswitch/branches/seven/libs/sqlite/src/vacuum.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/vacuum.c
   freeswitch/branches/seven/libs/sqlite/src/vdbe.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/vdbe.c
   freeswitch/branches/seven/libs/sqlite/src/vdbe.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/vdbe.h
   freeswitch/branches/seven/libs/sqlite/src/vdbeInt.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/vdbeInt.h
   freeswitch/branches/seven/libs/sqlite/src/vdbeapi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/vdbeapi.c
   freeswitch/branches/seven/libs/sqlite/src/vdbeaux.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/vdbeaux.c
   freeswitch/branches/seven/libs/sqlite/src/vdbefifo.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/vdbefifo.c
   freeswitch/branches/seven/libs/sqlite/src/vdbemem.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/vdbemem.c
   freeswitch/branches/seven/libs/sqlite/src/vtab.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/vtab.c
   freeswitch/branches/seven/libs/sqlite/src/where.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/src/where.c
   freeswitch/branches/seven/libs/sqlite/tclinstaller.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tclinstaller.tcl
   freeswitch/branches/seven/libs/sqlite/test/
      - copied from r11459, /freeswitch/trunk/libs/sqlite/test/
   freeswitch/branches/seven/libs/sqlite/test/aggerror.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/aggerror.test
   freeswitch/branches/seven/libs/sqlite/test/all.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/all.test
   freeswitch/branches/seven/libs/sqlite/test/alter.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/alter.test
   freeswitch/branches/seven/libs/sqlite/test/alter2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/alter2.test
   freeswitch/branches/seven/libs/sqlite/test/alter3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/alter3.test
   freeswitch/branches/seven/libs/sqlite/test/altermalloc.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/altermalloc.test
   freeswitch/branches/seven/libs/sqlite/test/analyze.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/analyze.test
   freeswitch/branches/seven/libs/sqlite/test/async.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/async.test
   freeswitch/branches/seven/libs/sqlite/test/async2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/async2.test
   freeswitch/branches/seven/libs/sqlite/test/attach.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/attach.test
   freeswitch/branches/seven/libs/sqlite/test/attach2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/attach2.test
   freeswitch/branches/seven/libs/sqlite/test/attach3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/attach3.test
   freeswitch/branches/seven/libs/sqlite/test/attachmalloc.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/attachmalloc.test
   freeswitch/branches/seven/libs/sqlite/test/auth.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/auth.test
   freeswitch/branches/seven/libs/sqlite/test/auth2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/auth2.test
   freeswitch/branches/seven/libs/sqlite/test/autoinc.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/autoinc.test
   freeswitch/branches/seven/libs/sqlite/test/autovacuum.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/autovacuum.test
   freeswitch/branches/seven/libs/sqlite/test/autovacuum_crash.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/autovacuum_crash.test
   freeswitch/branches/seven/libs/sqlite/test/autovacuum_ioerr.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/autovacuum_ioerr.test
   freeswitch/branches/seven/libs/sqlite/test/autovacuum_ioerr2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/autovacuum_ioerr2.test
   freeswitch/branches/seven/libs/sqlite/test/avtrans.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/avtrans.test
   freeswitch/branches/seven/libs/sqlite/test/between.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/between.test
   freeswitch/branches/seven/libs/sqlite/test/bigfile.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/bigfile.test
   freeswitch/branches/seven/libs/sqlite/test/bigrow.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/bigrow.test
   freeswitch/branches/seven/libs/sqlite/test/bind.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/bind.test
   freeswitch/branches/seven/libs/sqlite/test/bindxfer.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/bindxfer.test
   freeswitch/branches/seven/libs/sqlite/test/blob.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/blob.test
   freeswitch/branches/seven/libs/sqlite/test/btree.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/btree.test
   freeswitch/branches/seven/libs/sqlite/test/btree2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/btree2.test
   freeswitch/branches/seven/libs/sqlite/test/btree4.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/btree4.test
   freeswitch/branches/seven/libs/sqlite/test/btree5.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/btree5.test
   freeswitch/branches/seven/libs/sqlite/test/btree6.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/btree6.test
   freeswitch/branches/seven/libs/sqlite/test/btree7.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/btree7.test
   freeswitch/branches/seven/libs/sqlite/test/btree8.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/btree8.test
   freeswitch/branches/seven/libs/sqlite/test/busy.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/busy.test
   freeswitch/branches/seven/libs/sqlite/test/capi2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/capi2.test
   freeswitch/branches/seven/libs/sqlite/test/capi3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/capi3.test
   freeswitch/branches/seven/libs/sqlite/test/capi3b.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/capi3b.test
   freeswitch/branches/seven/libs/sqlite/test/capi3c.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/capi3c.test
   freeswitch/branches/seven/libs/sqlite/test/cast.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/cast.test
   freeswitch/branches/seven/libs/sqlite/test/check.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/check.test
   freeswitch/branches/seven/libs/sqlite/test/collate1.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/collate1.test
   freeswitch/branches/seven/libs/sqlite/test/collate2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/collate2.test
   freeswitch/branches/seven/libs/sqlite/test/collate3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/collate3.test
   freeswitch/branches/seven/libs/sqlite/test/collate4.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/collate4.test
   freeswitch/branches/seven/libs/sqlite/test/collate5.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/collate5.test
   freeswitch/branches/seven/libs/sqlite/test/collate6.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/collate6.test
   freeswitch/branches/seven/libs/sqlite/test/colmeta.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/colmeta.test
   freeswitch/branches/seven/libs/sqlite/test/conflict.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/conflict.test
   freeswitch/branches/seven/libs/sqlite/test/corrupt.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/corrupt.test
   freeswitch/branches/seven/libs/sqlite/test/corrupt2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/corrupt2.test
   freeswitch/branches/seven/libs/sqlite/test/crash.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/crash.test
   freeswitch/branches/seven/libs/sqlite/test/date.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/date.test
   freeswitch/branches/seven/libs/sqlite/test/default.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/default.test
   freeswitch/branches/seven/libs/sqlite/test/delete.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/delete.test
   freeswitch/branches/seven/libs/sqlite/test/delete2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/delete2.test
   freeswitch/branches/seven/libs/sqlite/test/delete3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/delete3.test
   freeswitch/branches/seven/libs/sqlite/test/descidx1.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/descidx1.test
   freeswitch/branches/seven/libs/sqlite/test/descidx2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/descidx2.test
   freeswitch/branches/seven/libs/sqlite/test/descidx3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/descidx3.test
   freeswitch/branches/seven/libs/sqlite/test/diskfull.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/diskfull.test
   freeswitch/branches/seven/libs/sqlite/test/distinctagg.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/distinctagg.test
   freeswitch/branches/seven/libs/sqlite/test/enc.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/enc.test
   freeswitch/branches/seven/libs/sqlite/test/enc2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/enc2.test
   freeswitch/branches/seven/libs/sqlite/test/enc3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/enc3.test
   freeswitch/branches/seven/libs/sqlite/test/expr.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/expr.test
   freeswitch/branches/seven/libs/sqlite/test/fkey1.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fkey1.test
   freeswitch/branches/seven/libs/sqlite/test/format4.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/format4.test
   freeswitch/branches/seven/libs/sqlite/test/fts1a.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts1a.test
   freeswitch/branches/seven/libs/sqlite/test/fts1b.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts1b.test
   freeswitch/branches/seven/libs/sqlite/test/fts1c.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts1c.test
   freeswitch/branches/seven/libs/sqlite/test/fts1d.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts1d.test
   freeswitch/branches/seven/libs/sqlite/test/fts1e.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts1e.test
   freeswitch/branches/seven/libs/sqlite/test/fts1f.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts1f.test
   freeswitch/branches/seven/libs/sqlite/test/fts1i.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts1i.test
   freeswitch/branches/seven/libs/sqlite/test/fts1j.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts1j.test
   freeswitch/branches/seven/libs/sqlite/test/fts1porter.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts1porter.test
   freeswitch/branches/seven/libs/sqlite/test/fts2a.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts2a.test
   freeswitch/branches/seven/libs/sqlite/test/fts2b.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts2b.test
   freeswitch/branches/seven/libs/sqlite/test/fts2c.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts2c.test
   freeswitch/branches/seven/libs/sqlite/test/fts2d.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts2d.test
   freeswitch/branches/seven/libs/sqlite/test/fts2e.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts2e.test
   freeswitch/branches/seven/libs/sqlite/test/fts2f.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts2f.test
   freeswitch/branches/seven/libs/sqlite/test/fts2g.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts2g.test
   freeswitch/branches/seven/libs/sqlite/test/fts2h.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts2h.test
   freeswitch/branches/seven/libs/sqlite/test/fts2i.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts2i.test
   freeswitch/branches/seven/libs/sqlite/test/fts2j.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/fts2j.test
   freeswitch/branches/seven/libs/sqlite/test/func.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/func.test
   freeswitch/branches/seven/libs/sqlite/test/hook.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/hook.test
   freeswitch/branches/seven/libs/sqlite/test/in.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/in.test
   freeswitch/branches/seven/libs/sqlite/test/index.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/index.test
   freeswitch/branches/seven/libs/sqlite/test/index2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/index2.test
   freeswitch/branches/seven/libs/sqlite/test/index3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/index3.test
   freeswitch/branches/seven/libs/sqlite/test/insert.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/insert.test
   freeswitch/branches/seven/libs/sqlite/test/insert2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/insert2.test
   freeswitch/branches/seven/libs/sqlite/test/insert3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/insert3.test
   freeswitch/branches/seven/libs/sqlite/test/interrupt.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/interrupt.test
   freeswitch/branches/seven/libs/sqlite/test/intpkey.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/intpkey.test
   freeswitch/branches/seven/libs/sqlite/test/ioerr.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/ioerr.test
   freeswitch/branches/seven/libs/sqlite/test/join.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/join.test
   freeswitch/branches/seven/libs/sqlite/test/join2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/join2.test
   freeswitch/branches/seven/libs/sqlite/test/join3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/join3.test
   freeswitch/branches/seven/libs/sqlite/test/join4.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/join4.test
   freeswitch/branches/seven/libs/sqlite/test/join5.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/join5.test
   freeswitch/branches/seven/libs/sqlite/test/journal1.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/journal1.test
   freeswitch/branches/seven/libs/sqlite/test/lastinsert.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/lastinsert.test
   freeswitch/branches/seven/libs/sqlite/test/laststmtchanges.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/laststmtchanges.test
   freeswitch/branches/seven/libs/sqlite/test/like.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/like.test
   freeswitch/branches/seven/libs/sqlite/test/limit.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/limit.test
   freeswitch/branches/seven/libs/sqlite/test/loadext.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/loadext.test
   freeswitch/branches/seven/libs/sqlite/test/loadext2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/loadext2.test
   freeswitch/branches/seven/libs/sqlite/test/lock.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/lock.test
   freeswitch/branches/seven/libs/sqlite/test/lock2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/lock2.test
   freeswitch/branches/seven/libs/sqlite/test/lock3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/lock3.test
   freeswitch/branches/seven/libs/sqlite/test/main.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/main.test
   freeswitch/branches/seven/libs/sqlite/test/malloc.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/malloc.test
   freeswitch/branches/seven/libs/sqlite/test/malloc2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/malloc2.test
   freeswitch/branches/seven/libs/sqlite/test/malloc3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/malloc3.test
   freeswitch/branches/seven/libs/sqlite/test/malloc4.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/malloc4.test
   freeswitch/branches/seven/libs/sqlite/test/malloc5.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/malloc5.test
   freeswitch/branches/seven/libs/sqlite/test/malloc6.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/malloc6.test
   freeswitch/branches/seven/libs/sqlite/test/malloc7.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/malloc7.test
   freeswitch/branches/seven/libs/sqlite/test/manydb.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/manydb.test
   freeswitch/branches/seven/libs/sqlite/test/memdb.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/memdb.test
   freeswitch/branches/seven/libs/sqlite/test/memleak.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/memleak.test
   freeswitch/branches/seven/libs/sqlite/test/minmax.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/minmax.test
   freeswitch/branches/seven/libs/sqlite/test/misc1.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/misc1.test
   freeswitch/branches/seven/libs/sqlite/test/misc2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/misc2.test
   freeswitch/branches/seven/libs/sqlite/test/misc3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/misc3.test
   freeswitch/branches/seven/libs/sqlite/test/misc4.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/misc4.test
   freeswitch/branches/seven/libs/sqlite/test/misc5.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/misc5.test
   freeswitch/branches/seven/libs/sqlite/test/misc6.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/misc6.test
   freeswitch/branches/seven/libs/sqlite/test/misuse.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/misuse.test
   freeswitch/branches/seven/libs/sqlite/test/notnull.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/notnull.test
   freeswitch/branches/seven/libs/sqlite/test/null.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/null.test
   freeswitch/branches/seven/libs/sqlite/test/pager.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/pager.test
   freeswitch/branches/seven/libs/sqlite/test/pager2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/pager2.test
   freeswitch/branches/seven/libs/sqlite/test/pager3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/pager3.test
   freeswitch/branches/seven/libs/sqlite/test/pagesize.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/pagesize.test
   freeswitch/branches/seven/libs/sqlite/test/pragma.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/pragma.test
   freeswitch/branches/seven/libs/sqlite/test/printf.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/printf.test
   freeswitch/branches/seven/libs/sqlite/test/progress.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/progress.test
   freeswitch/branches/seven/libs/sqlite/test/quick.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/quick.test
   freeswitch/branches/seven/libs/sqlite/test/quote.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/quote.test
   freeswitch/branches/seven/libs/sqlite/test/reindex.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/reindex.test
   freeswitch/branches/seven/libs/sqlite/test/rollback.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/rollback.test
   freeswitch/branches/seven/libs/sqlite/test/rowid.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/rowid.test
   freeswitch/branches/seven/libs/sqlite/test/safety.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/safety.test
   freeswitch/branches/seven/libs/sqlite/test/schema.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/schema.test
   freeswitch/branches/seven/libs/sqlite/test/schema2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/schema2.test
   freeswitch/branches/seven/libs/sqlite/test/select1.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/select1.test
   freeswitch/branches/seven/libs/sqlite/test/select2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/select2.test
   freeswitch/branches/seven/libs/sqlite/test/select3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/select3.test
   freeswitch/branches/seven/libs/sqlite/test/select4.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/select4.test
   freeswitch/branches/seven/libs/sqlite/test/select5.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/select5.test
   freeswitch/branches/seven/libs/sqlite/test/select6.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/select6.test
   freeswitch/branches/seven/libs/sqlite/test/select7.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/select7.test
   freeswitch/branches/seven/libs/sqlite/test/server1.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/server1.test
   freeswitch/branches/seven/libs/sqlite/test/shared.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/shared.test
   freeswitch/branches/seven/libs/sqlite/test/shared2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/shared2.test
   freeswitch/branches/seven/libs/sqlite/test/shared3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/shared3.test
   freeswitch/branches/seven/libs/sqlite/test/shared_err.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/shared_err.test
   freeswitch/branches/seven/libs/sqlite/test/sort.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/sort.test
   freeswitch/branches/seven/libs/sqlite/test/speed1.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/speed1.test
   freeswitch/branches/seven/libs/sqlite/test/subquery.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/subquery.test
   freeswitch/branches/seven/libs/sqlite/test/subselect.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/subselect.test
   freeswitch/branches/seven/libs/sqlite/test/sync.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/sync.test
   freeswitch/branches/seven/libs/sqlite/test/table.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/table.test
   freeswitch/branches/seven/libs/sqlite/test/tableapi.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tableapi.test
   freeswitch/branches/seven/libs/sqlite/test/tclsqlite.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tclsqlite.test
   freeswitch/branches/seven/libs/sqlite/test/temptable.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/temptable.test
   freeswitch/branches/seven/libs/sqlite/test/tester.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tester.tcl
   freeswitch/branches/seven/libs/sqlite/test/thread1.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/thread1.test
   freeswitch/branches/seven/libs/sqlite/test/thread2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/thread2.test
   freeswitch/branches/seven/libs/sqlite/test/threadtest1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/threadtest1.c
   freeswitch/branches/seven/libs/sqlite/test/threadtest2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/threadtest2.c
   freeswitch/branches/seven/libs/sqlite/test/tkt1435.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1435.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1443.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1443.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1444.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1444.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1449.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1449.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1473.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1473.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1501.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1501.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1512.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1512.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1514.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1514.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1536.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1536.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1537.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1537.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1567.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1567.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1644.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1644.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1667.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1667.test
   freeswitch/branches/seven/libs/sqlite/test/tkt1873.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt1873.test
   freeswitch/branches/seven/libs/sqlite/test/tkt2141.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt2141.test
   freeswitch/branches/seven/libs/sqlite/test/tkt2192.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt2192.test
   freeswitch/branches/seven/libs/sqlite/test/tkt2213.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/tkt2213.test
   freeswitch/branches/seven/libs/sqlite/test/trace.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/trace.test
   freeswitch/branches/seven/libs/sqlite/test/trans.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/trans.test
   freeswitch/branches/seven/libs/sqlite/test/trigger1.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/trigger1.test
   freeswitch/branches/seven/libs/sqlite/test/trigger2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/trigger2.test
   freeswitch/branches/seven/libs/sqlite/test/trigger3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/trigger3.test
   freeswitch/branches/seven/libs/sqlite/test/trigger4.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/trigger4.test
   freeswitch/branches/seven/libs/sqlite/test/trigger5.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/trigger5.test
   freeswitch/branches/seven/libs/sqlite/test/trigger6.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/trigger6.test
   freeswitch/branches/seven/libs/sqlite/test/trigger7.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/trigger7.test
   freeswitch/branches/seven/libs/sqlite/test/trigger8.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/trigger8.test
   freeswitch/branches/seven/libs/sqlite/test/types.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/types.test
   freeswitch/branches/seven/libs/sqlite/test/types2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/types2.test
   freeswitch/branches/seven/libs/sqlite/test/types3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/types3.test
   freeswitch/branches/seven/libs/sqlite/test/unique.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/unique.test
   freeswitch/branches/seven/libs/sqlite/test/update.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/update.test
   freeswitch/branches/seven/libs/sqlite/test/utf16.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/utf16.test
   freeswitch/branches/seven/libs/sqlite/test/utf16align.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/utf16align.test
   freeswitch/branches/seven/libs/sqlite/test/vacuum.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/vacuum.test
   freeswitch/branches/seven/libs/sqlite/test/vacuum2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/vacuum2.test
   freeswitch/branches/seven/libs/sqlite/test/varint.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/varint.test
   freeswitch/branches/seven/libs/sqlite/test/view.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/view.test
   freeswitch/branches/seven/libs/sqlite/test/vtab1.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/vtab1.test
   freeswitch/branches/seven/libs/sqlite/test/vtab2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/vtab2.test
   freeswitch/branches/seven/libs/sqlite/test/vtab3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/vtab3.test
   freeswitch/branches/seven/libs/sqlite/test/vtab4.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/vtab4.test
   freeswitch/branches/seven/libs/sqlite/test/vtab5.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/vtab5.test
   freeswitch/branches/seven/libs/sqlite/test/vtab6.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/vtab6.test
   freeswitch/branches/seven/libs/sqlite/test/vtab7.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/vtab7.test
   freeswitch/branches/seven/libs/sqlite/test/vtab9.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/vtab9.test
   freeswitch/branches/seven/libs/sqlite/test/vtab_err.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/vtab_err.test
   freeswitch/branches/seven/libs/sqlite/test/where.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/where.test
   freeswitch/branches/seven/libs/sqlite/test/where2.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/where2.test
   freeswitch/branches/seven/libs/sqlite/test/where3.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/where3.test
   freeswitch/branches/seven/libs/sqlite/test/where4.test
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/test/where4.test
   freeswitch/branches/seven/libs/sqlite/tool/
      - copied from r11459, /freeswitch/trunk/libs/sqlite/tool/
   freeswitch/branches/seven/libs/sqlite/tool/diffdb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/diffdb.c
   freeswitch/branches/seven/libs/sqlite/tool/fragck.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/fragck.tcl
   freeswitch/branches/seven/libs/sqlite/tool/lemon.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/lemon.c
   freeswitch/branches/seven/libs/sqlite/tool/lempar.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/lempar.c
   freeswitch/branches/seven/libs/sqlite/tool/memleak.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/memleak.awk
   freeswitch/branches/seven/libs/sqlite/tool/memleak2.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/memleak2.awk
   freeswitch/branches/seven/libs/sqlite/tool/memleak3.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/memleak3.tcl
   freeswitch/branches/seven/libs/sqlite/tool/mkkeywordhash.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/mkkeywordhash.c
   freeswitch/branches/seven/libs/sqlite/tool/mkopts.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/mkopts.tcl
   freeswitch/branches/seven/libs/sqlite/tool/omittest.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/omittest.tcl
   freeswitch/branches/seven/libs/sqlite/tool/opcodeDoc.awk
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/opcodeDoc.awk
   freeswitch/branches/seven/libs/sqlite/tool/report1.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/report1.txt
   freeswitch/branches/seven/libs/sqlite/tool/showdb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/showdb.c
   freeswitch/branches/seven/libs/sqlite/tool/showjournal.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/showjournal.c
   freeswitch/branches/seven/libs/sqlite/tool/space_used.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/space_used.tcl
   freeswitch/branches/seven/libs/sqlite/tool/spaceanal.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/spaceanal.tcl
   freeswitch/branches/seven/libs/sqlite/tool/speedtest.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/speedtest.tcl
   freeswitch/branches/seven/libs/sqlite/tool/speedtest2.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/tool/speedtest2.tcl
   freeswitch/branches/seven/libs/sqlite/www/
      - copied from r11459, /freeswitch/trunk/libs/sqlite/www/
   freeswitch/branches/seven/libs/sqlite/www/arch.fig
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/arch.fig
   freeswitch/branches/seven/libs/sqlite/www/arch.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/arch.gif
   freeswitch/branches/seven/libs/sqlite/www/arch.png
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/arch.png
   freeswitch/branches/seven/libs/sqlite/www/arch.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/arch.tcl
   freeswitch/branches/seven/libs/sqlite/www/arch2.fig
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/arch2.fig
   freeswitch/branches/seven/libs/sqlite/www/arch2.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/arch2.gif
   freeswitch/branches/seven/libs/sqlite/www/arch2b.fig
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/arch2b.fig
   freeswitch/branches/seven/libs/sqlite/www/audit.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/audit.tcl
   freeswitch/branches/seven/libs/sqlite/www/autoinc.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/autoinc.tcl
   freeswitch/branches/seven/libs/sqlite/www/c_interface.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/c_interface.tcl
   freeswitch/branches/seven/libs/sqlite/www/capi3.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/capi3.tcl
   freeswitch/branches/seven/libs/sqlite/www/capi3ref.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/capi3ref.tcl
   freeswitch/branches/seven/libs/sqlite/www/changes.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/changes.tcl
   freeswitch/branches/seven/libs/sqlite/www/common.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/common.tcl
   freeswitch/branches/seven/libs/sqlite/www/compile.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/compile.tcl
   freeswitch/branches/seven/libs/sqlite/www/conflict.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/conflict.tcl
   freeswitch/branches/seven/libs/sqlite/www/copyright-release.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/copyright-release.html
   freeswitch/branches/seven/libs/sqlite/www/copyright-release.pdf
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/copyright-release.pdf
   freeswitch/branches/seven/libs/sqlite/www/copyright.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/copyright.tcl
   freeswitch/branches/seven/libs/sqlite/www/datatype3.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/datatype3.tcl
   freeswitch/branches/seven/libs/sqlite/www/datatypes.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/datatypes.tcl
   freeswitch/branches/seven/libs/sqlite/www/different.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/different.tcl
   freeswitch/branches/seven/libs/sqlite/www/direct1b.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/direct1b.gif
   freeswitch/branches/seven/libs/sqlite/www/docs.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/docs.tcl
   freeswitch/branches/seven/libs/sqlite/www/download.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/download.tcl
   freeswitch/branches/seven/libs/sqlite/www/dynload.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/dynload.tcl
   freeswitch/branches/seven/libs/sqlite/www/faq.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/faq.tcl
   freeswitch/branches/seven/libs/sqlite/www/fileformat.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/fileformat.tcl
   freeswitch/branches/seven/libs/sqlite/www/formatchng.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/formatchng.tcl
   freeswitch/branches/seven/libs/sqlite/www/fullscanb.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/fullscanb.gif
   freeswitch/branches/seven/libs/sqlite/www/index-ex1-x-b.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/index-ex1-x-b.gif
   freeswitch/branches/seven/libs/sqlite/www/index.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/index.tcl
   freeswitch/branches/seven/libs/sqlite/www/indirect1b1.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/indirect1b1.gif
   freeswitch/branches/seven/libs/sqlite/www/lang.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/lang.tcl
   freeswitch/branches/seven/libs/sqlite/www/lockingv3.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/lockingv3.tcl
   freeswitch/branches/seven/libs/sqlite/www/mingw.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/mingw.tcl
   freeswitch/branches/seven/libs/sqlite/www/nulls.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/nulls.tcl
   freeswitch/branches/seven/libs/sqlite/www/oldnews.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/oldnews.tcl
   freeswitch/branches/seven/libs/sqlite/www/omitted.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/omitted.tcl
   freeswitch/branches/seven/libs/sqlite/www/opcode.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/opcode.tcl
   freeswitch/branches/seven/libs/sqlite/www/optimizer.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/optimizer.tcl
   freeswitch/branches/seven/libs/sqlite/www/optimizing.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/optimizing.tcl
   freeswitch/branches/seven/libs/sqlite/www/optoverview.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/optoverview.tcl
   freeswitch/branches/seven/libs/sqlite/www/pragma.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/pragma.tcl
   freeswitch/branches/seven/libs/sqlite/www/quickstart.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/quickstart.tcl
   freeswitch/branches/seven/libs/sqlite/www/shared.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/shared.gif
   freeswitch/branches/seven/libs/sqlite/www/sharedcache.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/sharedcache.tcl
   freeswitch/branches/seven/libs/sqlite/www/speed.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/speed.tcl
   freeswitch/branches/seven/libs/sqlite/www/sqlite.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/sqlite.tcl
   freeswitch/branches/seven/libs/sqlite/www/support.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/support.tcl
   freeswitch/branches/seven/libs/sqlite/www/table-ex1b2.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/table-ex1b2.gif
   freeswitch/branches/seven/libs/sqlite/www/tclsqlite.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/tclsqlite.tcl
   freeswitch/branches/seven/libs/sqlite/www/typesafe.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/typesafe.tcl
   freeswitch/branches/seven/libs/sqlite/www/vdbe.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/vdbe.tcl
   freeswitch/branches/seven/libs/sqlite/www/version3.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/version3.tcl
   freeswitch/branches/seven/libs/sqlite/www/whentouse.tcl
      - copied unchanged from r11459, /freeswitch/trunk/libs/sqlite/www/whentouse.tcl
   freeswitch/branches/seven/libs/srtp/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/srtp/
   freeswitch/branches/seven/libs/srtp/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/.update
   freeswitch/branches/seven/libs/srtp/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/AUTHORS
   freeswitch/branches/seven/libs/srtp/CHANGES
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/CHANGES
   freeswitch/branches/seven/libs/srtp/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/COPYING
   freeswitch/branches/seven/libs/srtp/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/ChangeLog
   freeswitch/branches/seven/libs/srtp/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/INSTALL
   freeswitch/branches/seven/libs/srtp/LICENSE
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/LICENSE
   freeswitch/branches/seven/libs/srtp/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/Makefile.am
   freeswitch/branches/seven/libs/srtp/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/NEWS
   freeswitch/branches/seven/libs/srtp/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/README
   freeswitch/branches/seven/libs/srtp/TODO
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/TODO
   freeswitch/branches/seven/libs/srtp/VERSION
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/VERSION
   freeswitch/branches/seven/libs/srtp/acsite.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/acsite.m4
   freeswitch/branches/seven/libs/srtp/build/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/srtp/build/
   freeswitch/branches/seven/libs/srtp/build/config/
      - copied from r11459, /freeswitch/trunk/libs/srtp/build/config/
   freeswitch/branches/seven/libs/srtp/build/config/ac_cflags_gcc_option.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/config/ac_cflags_gcc_option.m4
   freeswitch/branches/seven/libs/srtp/build/config/ac_cflags_sun_option.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/config/ac_cflags_sun_option.m4
   freeswitch/branches/seven/libs/srtp/build/config/ac_gcc_archflag.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/config/ac_gcc_archflag.m4
   freeswitch/branches/seven/libs/srtp/build/config/ac_gcc_x86_cpuid.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/config/ac_gcc_x86_cpuid.m4
   freeswitch/branches/seven/libs/srtp/build/config/ac_prog_gzip.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/config/ac_prog_gzip.m4
   freeswitch/branches/seven/libs/srtp/build/config/ac_prog_wget.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/config/ac_prog_wget.m4
   freeswitch/branches/seven/libs/srtp/build/config/ax_cc_maxopt.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/config/ax_cc_maxopt.m4
   freeswitch/branches/seven/libs/srtp/build/config/ax_cflags_warn_all_ansi.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/config/ax_cflags_warn_all_ansi.m4
   freeswitch/branches/seven/libs/srtp/build/config/ax_check_compiler_flags.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/config/ax_check_compiler_flags.m4
   freeswitch/branches/seven/libs/srtp/build/config/ax_compiler_vendor.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/config/ax_compiler_vendor.m4
   freeswitch/branches/seven/libs/srtp/build/depcomp
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/depcomp
   freeswitch/branches/seven/libs/srtp/build/install-sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/install-sh
   freeswitch/branches/seven/libs/srtp/build/missing
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/build/missing
   freeswitch/branches/seven/libs/srtp/config.hw
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/config.hw
   freeswitch/branches/seven/libs/srtp/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/configure.gnu
   freeswitch/branches/seven/libs/srtp/configure.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/configure.in
   freeswitch/branches/seven/libs/srtp/crypto/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/srtp/crypto/
   freeswitch/branches/seven/libs/srtp/crypto/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/Makefile.in
   freeswitch/branches/seven/libs/srtp/crypto/VERSION
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/VERSION
   freeswitch/branches/seven/libs/srtp/crypto/ae_xfm/
      - copied from r11459, /freeswitch/trunk/libs/srtp/crypto/ae_xfm/
   freeswitch/branches/seven/libs/srtp/crypto/ae_xfm/xfm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/ae_xfm/xfm.c
   freeswitch/branches/seven/libs/srtp/crypto/cipher/
      - copied from r11459, /freeswitch/trunk/libs/srtp/crypto/cipher/
   freeswitch/branches/seven/libs/srtp/crypto/cipher/aes.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/cipher/aes.c
   freeswitch/branches/seven/libs/srtp/crypto/cipher/aes_cbc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/cipher/aes_cbc.c
   freeswitch/branches/seven/libs/srtp/crypto/cipher/aes_icm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/cipher/aes_icm.c
   freeswitch/branches/seven/libs/srtp/crypto/cipher/cipher.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/cipher/cipher.c
   freeswitch/branches/seven/libs/srtp/crypto/cipher/null_cipher.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/cipher/null_cipher.c
   freeswitch/branches/seven/libs/srtp/crypto/hash/
      - copied from r11459, /freeswitch/trunk/libs/srtp/crypto/hash/
   freeswitch/branches/seven/libs/srtp/crypto/hash/auth.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/hash/auth.c
   freeswitch/branches/seven/libs/srtp/crypto/hash/hmac.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/hash/hmac.c
   freeswitch/branches/seven/libs/srtp/crypto/hash/null_auth.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/hash/null_auth.c
   freeswitch/branches/seven/libs/srtp/crypto/hash/sha1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/hash/sha1.c
   freeswitch/branches/seven/libs/srtp/crypto/include/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/srtp/crypto/include/
   freeswitch/branches/seven/libs/srtp/crypto/include/aes.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/aes.h
   freeswitch/branches/seven/libs/srtp/crypto/include/aes_cbc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/aes_cbc.h
   freeswitch/branches/seven/libs/srtp/crypto/include/aes_icm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/aes_icm.h
   freeswitch/branches/seven/libs/srtp/crypto/include/alloc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/alloc.h
   freeswitch/branches/seven/libs/srtp/crypto/include/auth.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/auth.h
   freeswitch/branches/seven/libs/srtp/crypto/include/cipher.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/cipher.h
   freeswitch/branches/seven/libs/srtp/crypto/include/crypto.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/crypto.h
   freeswitch/branches/seven/libs/srtp/crypto/include/crypto_kernel.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/crypto_kernel.h
   freeswitch/branches/seven/libs/srtp/crypto/include/crypto_math.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/crypto_math.h
   freeswitch/branches/seven/libs/srtp/crypto/include/crypto_types.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/crypto_types.h
   freeswitch/branches/seven/libs/srtp/crypto/include/cryptoalg.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/cryptoalg.h
   freeswitch/branches/seven/libs/srtp/crypto/include/datatypes.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/datatypes.h
   freeswitch/branches/seven/libs/srtp/crypto/include/err.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/err.h
   freeswitch/branches/seven/libs/srtp/crypto/include/gf2_8.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/gf2_8.h
   freeswitch/branches/seven/libs/srtp/crypto/include/hmac.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/hmac.h
   freeswitch/branches/seven/libs/srtp/crypto/include/integers.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/integers.h
   freeswitch/branches/seven/libs/srtp/crypto/include/kernel_compat.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/kernel_compat.h
   freeswitch/branches/seven/libs/srtp/crypto/include/key.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/key.h
   freeswitch/branches/seven/libs/srtp/crypto/include/null_auth.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/null_auth.h
   freeswitch/branches/seven/libs/srtp/crypto/include/null_cipher.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/null_cipher.h
   freeswitch/branches/seven/libs/srtp/crypto/include/prng.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/prng.h
   freeswitch/branches/seven/libs/srtp/crypto/include/rand_source.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/rand_source.h
   freeswitch/branches/seven/libs/srtp/crypto/include/rdb.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/rdb.h
   freeswitch/branches/seven/libs/srtp/crypto/include/rdbx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/rdbx.h
   freeswitch/branches/seven/libs/srtp/crypto/include/sha1.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/sha1.h
   freeswitch/branches/seven/libs/srtp/crypto/include/stat.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/stat.h
   freeswitch/branches/seven/libs/srtp/crypto/include/xfm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/include/xfm.h
   freeswitch/branches/seven/libs/srtp/crypto/kernel/
      - copied from r11459, /freeswitch/trunk/libs/srtp/crypto/kernel/
   freeswitch/branches/seven/libs/srtp/crypto/kernel/alloc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/kernel/alloc.c
   freeswitch/branches/seven/libs/srtp/crypto/kernel/crypto_kernel.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/kernel/crypto_kernel.c
   freeswitch/branches/seven/libs/srtp/crypto/kernel/err.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/kernel/err.c
   freeswitch/branches/seven/libs/srtp/crypto/kernel/key.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/kernel/key.c
   freeswitch/branches/seven/libs/srtp/crypto/math/
      - copied from r11459, /freeswitch/trunk/libs/srtp/crypto/math/
   freeswitch/branches/seven/libs/srtp/crypto/math/datatypes.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/math/datatypes.c
   freeswitch/branches/seven/libs/srtp/crypto/math/gf2_8.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/math/gf2_8.c
   freeswitch/branches/seven/libs/srtp/crypto/math/math.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/math/math.c
   freeswitch/branches/seven/libs/srtp/crypto/math/stat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/math/stat.c
   freeswitch/branches/seven/libs/srtp/crypto/replay/
      - copied from r11459, /freeswitch/trunk/libs/srtp/crypto/replay/
   freeswitch/branches/seven/libs/srtp/crypto/replay/rdb.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/replay/rdb.c
   freeswitch/branches/seven/libs/srtp/crypto/replay/rdbx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/replay/rdbx.c
   freeswitch/branches/seven/libs/srtp/crypto/replay/ut_sim.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/replay/ut_sim.c
   freeswitch/branches/seven/libs/srtp/crypto/rng/
      - copied from r11459, /freeswitch/trunk/libs/srtp/crypto/rng/
   freeswitch/branches/seven/libs/srtp/crypto/rng/ctr_prng.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/rng/ctr_prng.c
   freeswitch/branches/seven/libs/srtp/crypto/rng/prng.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/rng/prng.c
   freeswitch/branches/seven/libs/srtp/crypto/rng/rand_linux_kernel.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/rng/rand_linux_kernel.c
   freeswitch/branches/seven/libs/srtp/crypto/rng/rand_source.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/rng/rand_source.c
   freeswitch/branches/seven/libs/srtp/crypto/test/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/srtp/crypto/test/
   freeswitch/branches/seven/libs/srtp/crypto/test/aes_calc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/test/aes_calc.c
   freeswitch/branches/seven/libs/srtp/crypto/test/auth_driver.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/test/auth_driver.c
   freeswitch/branches/seven/libs/srtp/crypto/test/cipher_driver.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/test/cipher_driver.c
   freeswitch/branches/seven/libs/srtp/crypto/test/datatypes_driver.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/test/datatypes_driver.c
   freeswitch/branches/seven/libs/srtp/crypto/test/env.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/test/env.c
   freeswitch/branches/seven/libs/srtp/crypto/test/kernel_driver.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/test/kernel_driver.c
   freeswitch/branches/seven/libs/srtp/crypto/test/rand_gen.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/test/rand_gen.c
   freeswitch/branches/seven/libs/srtp/crypto/test/sha1_driver.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/test/sha1_driver.c
   freeswitch/branches/seven/libs/srtp/crypto/test/stat_driver.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/crypto/test/stat_driver.c
   freeswitch/branches/seven/libs/srtp/doc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/srtp/doc/
   freeswitch/branches/seven/libs/srtp/doc/Doxyfile
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/doc/Doxyfile
   freeswitch/branches/seven/libs/srtp/doc/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/doc/Makefile.in
   freeswitch/branches/seven/libs/srtp/doc/crypto_kernel.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/doc/crypto_kernel.txt
   freeswitch/branches/seven/libs/srtp/doc/draft-irtf-cfrg-icm-00.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/doc/draft-irtf-cfrg-icm-00.txt
   freeswitch/branches/seven/libs/srtp/doc/header.template
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/doc/header.template
   freeswitch/branches/seven/libs/srtp/doc/intro.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/doc/intro.txt
   freeswitch/branches/seven/libs/srtp/doc/libsrtp.pdf
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/doc/libsrtp.pdf
   freeswitch/branches/seven/libs/srtp/doc/references.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/doc/references.txt
   freeswitch/branches/seven/libs/srtp/doc/rfc3711.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/doc/rfc3711.txt
   freeswitch/branches/seven/libs/srtp/include/
      - copied from r11459, /freeswitch/trunk/libs/srtp/include/
   freeswitch/branches/seven/libs/srtp/include/rtp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/include/rtp.h
   freeswitch/branches/seven/libs/srtp/include/srtp.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/include/srtp.h
   freeswitch/branches/seven/libs/srtp/include/ut_sim.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/include/ut_sim.h
   freeswitch/branches/seven/libs/srtp/libsrtp.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/libsrtp.2008.vcproj
   freeswitch/branches/seven/libs/srtp/libsrtp.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/libsrtp.vcproj
   freeswitch/branches/seven/libs/srtp/srtp/
      - copied from r11459, /freeswitch/trunk/libs/srtp/srtp/
   freeswitch/branches/seven/libs/srtp/srtp-1.42.pc.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/srtp-1.42.pc.in
   freeswitch/branches/seven/libs/srtp/srtp.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/srtp.def
   freeswitch/branches/seven/libs/srtp/srtp.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/srtp.vcproj
   freeswitch/branches/seven/libs/srtp/srtp/srtp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/srtp/srtp.c
   freeswitch/branches/seven/libs/srtp/tables/
      - copied from r11459, /freeswitch/trunk/libs/srtp/tables/
   freeswitch/branches/seven/libs/srtp/tables/aes_tables.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/tables/aes_tables.c
   freeswitch/branches/seven/libs/srtp/test/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/srtp/test/
   freeswitch/branches/seven/libs/srtp/test/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/test/Makefile.am
   freeswitch/branches/seven/libs/srtp/test/lfsr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/test/lfsr.c
   freeswitch/branches/seven/libs/srtp/test/rdbx_driver.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/test/rdbx_driver.c
   freeswitch/branches/seven/libs/srtp/test/replay_driver.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/test/replay_driver.c
   freeswitch/branches/seven/libs/srtp/test/roc_driver.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/test/roc_driver.c
   freeswitch/branches/seven/libs/srtp/test/rtp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/test/rtp.c
   freeswitch/branches/seven/libs/srtp/test/rtpw.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/test/rtpw.c
   freeswitch/branches/seven/libs/srtp/test/srtp_driver.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/test/srtp_driver.c
   freeswitch/branches/seven/libs/srtp/timing
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/timing
   freeswitch/branches/seven/libs/srtp/undos.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/undos.sh
   freeswitch/branches/seven/libs/srtp/update.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/srtp/update.sh
   freeswitch/branches/seven/libs/stfu/
      - copied from r11459, /freeswitch/trunk/libs/stfu/
   freeswitch/branches/seven/libs/stfu/stfu.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/stfu/stfu.c
   freeswitch/branches/seven/libs/stfu/stfu.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/stfu/stfu.h
   freeswitch/branches/seven/libs/udns/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/udns/
   freeswitch/branches/seven/libs/udns/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/.update
   freeswitch/branches/seven/libs/udns/COPYING.LGPL
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/COPYING.LGPL
   freeswitch/branches/seven/libs/udns/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/Makefile
   freeswitch/branches/seven/libs/udns/NOTES
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/NOTES
   freeswitch/branches/seven/libs/udns/TODO
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/TODO
   freeswitch/branches/seven/libs/udns/debian/
      - copied from r11459, /freeswitch/trunk/libs/udns/debian/
   freeswitch/branches/seven/libs/udns/debian/changelog
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/debian/changelog
   freeswitch/branches/seven/libs/udns/debian/control
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/debian/control
   freeswitch/branches/seven/libs/udns/debian/copyright
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/debian/copyright
   freeswitch/branches/seven/libs/udns/debian/rules
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/debian/rules
   freeswitch/branches/seven/libs/udns/dnsget.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/dnsget.1
   freeswitch/branches/seven/libs/udns/dnsget.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/dnsget.c
   freeswitch/branches/seven/libs/udns/ex-rdns.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/ex-rdns.c
   freeswitch/branches/seven/libs/udns/inet_pton.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/inet_pton.c
   freeswitch/branches/seven/libs/udns/inet_pton.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/inet_pton.h
   freeswitch/branches/seven/libs/udns/rblcheck.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/rblcheck.1
   freeswitch/branches/seven/libs/udns/rblcheck.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/rblcheck.c
   freeswitch/branches/seven/libs/udns/udns.3
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns.3
   freeswitch/branches/seven/libs/udns/udns.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns.h
   freeswitch/branches/seven/libs/udns/udns_bl.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_bl.c
   freeswitch/branches/seven/libs/udns/udns_codes.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_codes.c
   freeswitch/branches/seven/libs/udns/udns_dn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_dn.c
   freeswitch/branches/seven/libs/udns/udns_dntosp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_dntosp.c
   freeswitch/branches/seven/libs/udns/udns_misc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_misc.c
   freeswitch/branches/seven/libs/udns/udns_parse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_parse.c
   freeswitch/branches/seven/libs/udns/udns_resolver.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_resolver.c
   freeswitch/branches/seven/libs/udns/udns_rr_a.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_rr_a.c
   freeswitch/branches/seven/libs/udns/udns_rr_mx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_rr_mx.c
   freeswitch/branches/seven/libs/udns/udns_rr_naptr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_rr_naptr.c
   freeswitch/branches/seven/libs/udns/udns_rr_ptr.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_rr_ptr.c
   freeswitch/branches/seven/libs/udns/udns_rr_srv.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_rr_srv.c
   freeswitch/branches/seven/libs/udns/udns_rr_txt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/udns/udns_rr_txt.c
   freeswitch/branches/seven/libs/voipcodecs/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/voipcodecs/
   freeswitch/branches/seven/libs/voipcodecs/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/.update
   freeswitch/branches/seven/libs/voipcodecs/AUTHORS
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/AUTHORS
   freeswitch/branches/seven/libs/voipcodecs/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/COPYING
   freeswitch/branches/seven/libs/voipcodecs/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/ChangeLog
   freeswitch/branches/seven/libs/voipcodecs/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/INSTALL
   freeswitch/branches/seven/libs/voipcodecs/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/Makefile.am
   freeswitch/branches/seven/libs/voipcodecs/NEWS
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/NEWS
   freeswitch/branches/seven/libs/voipcodecs/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/README
   freeswitch/branches/seven/libs/voipcodecs/config/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/voipcodecs/config/
   freeswitch/branches/seven/libs/voipcodecs/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/configure.ac
   freeswitch/branches/seven/libs/voipcodecs/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/configure.gnu
   freeswitch/branches/seven/libs/voipcodecs/debian/
      - copied from r11459, /freeswitch/trunk/libs/voipcodecs/debian/
   freeswitch/branches/seven/libs/voipcodecs/debian/changelog
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/debian/changelog
   freeswitch/branches/seven/libs/voipcodecs/debian/compat
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/debian/compat
   freeswitch/branches/seven/libs/voipcodecs/debian/control
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/debian/control
   freeswitch/branches/seven/libs/voipcodecs/debian/copyright
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/debian/copyright
   freeswitch/branches/seven/libs/voipcodecs/debian/libvoipcodecs-dev.install
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/debian/libvoipcodecs-dev.install
   freeswitch/branches/seven/libs/voipcodecs/debian/libvoipcodecs-doc.install
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/debian/libvoipcodecs-doc.install
   freeswitch/branches/seven/libs/voipcodecs/debian/libvoipcodecs.install
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/debian/libvoipcodecs.install
   freeswitch/branches/seven/libs/voipcodecs/debian/rules
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/debian/rules
   freeswitch/branches/seven/libs/voipcodecs/debian/watch
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/debian/watch
   freeswitch/branches/seven/libs/voipcodecs/doc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/voipcodecs/doc/
   freeswitch/branches/seven/libs/voipcodecs/doc/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/doc/Makefile.am
   freeswitch/branches/seven/libs/voipcodecs/doc/css.css
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/doc/css.css
   freeswitch/branches/seven/libs/voipcodecs/doc/libvoipcodecs-doxygen
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/doc/libvoipcodecs-doxygen
   freeswitch/branches/seven/libs/voipcodecs/doc/wrapper.xsl
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/doc/wrapper.xsl
   freeswitch/branches/seven/libs/voipcodecs/etsitests/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/voipcodecs/etsitests/
   freeswitch/branches/seven/libs/voipcodecs/etsitests/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/etsitests/Makefile.am
   freeswitch/branches/seven/libs/voipcodecs/itutests/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/voipcodecs/itutests/
   freeswitch/branches/seven/libs/voipcodecs/itutests/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/itutests/Makefile.am
   freeswitch/branches/seven/libs/voipcodecs/libvoipcodecs.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/libvoipcodecs.2008.vcproj
   freeswitch/branches/seven/libs/voipcodecs/libvoipcodecs.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/libvoipcodecs.vcproj
   freeswitch/branches/seven/libs/voipcodecs/localtests/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/voipcodecs/localtests/
   freeswitch/branches/seven/libs/voipcodecs/localtests/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/localtests/Makefile.am
   freeswitch/branches/seven/libs/voipcodecs/localtests/dam9.wav
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/localtests/dam9.wav
   freeswitch/branches/seven/libs/voipcodecs/localtests/dam9_lpc55.wav
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/localtests/dam9_lpc55.wav
   freeswitch/branches/seven/libs/voipcodecs/localtests/short_nb_voice.wav
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/localtests/short_nb_voice.wav
   freeswitch/branches/seven/libs/voipcodecs/localtests/short_wb_voice.wav
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/localtests/short_wb_voice.wav
   freeswitch/branches/seven/libs/voipcodecs/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/voipcodecs/src/
   freeswitch/branches/seven/libs/voipcodecs/src/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/Makefile.am
   freeswitch/branches/seven/libs/voipcodecs/src/bit_operations.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/bit_operations.c
   freeswitch/branches/seven/libs/voipcodecs/src/bitstream.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/bitstream.c
   freeswitch/branches/seven/libs/voipcodecs/src/float_fudge.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/float_fudge.h
   freeswitch/branches/seven/libs/voipcodecs/src/g711.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/g711.c
   freeswitch/branches/seven/libs/voipcodecs/src/g722_decode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/g722_decode.c
   freeswitch/branches/seven/libs/voipcodecs/src/g722_encode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/g722_encode.c
   freeswitch/branches/seven/libs/voipcodecs/src/g726.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/g726.c
   freeswitch/branches/seven/libs/voipcodecs/src/gsm0610_decode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/gsm0610_decode.c
   freeswitch/branches/seven/libs/voipcodecs/src/gsm0610_encode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/gsm0610_encode.c
   freeswitch/branches/seven/libs/voipcodecs/src/gsm0610_local.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/gsm0610_local.h
   freeswitch/branches/seven/libs/voipcodecs/src/gsm0610_long_term.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/gsm0610_long_term.c
   freeswitch/branches/seven/libs/voipcodecs/src/gsm0610_lpc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/gsm0610_lpc.c
   freeswitch/branches/seven/libs/voipcodecs/src/gsm0610_preprocess.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/gsm0610_preprocess.c
   freeswitch/branches/seven/libs/voipcodecs/src/gsm0610_rpe.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/gsm0610_rpe.c
   freeswitch/branches/seven/libs/voipcodecs/src/gsm0610_short_term.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/gsm0610_short_term.c
   freeswitch/branches/seven/libs/voipcodecs/src/ima_adpcm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/ima_adpcm.c
   freeswitch/branches/seven/libs/voipcodecs/src/libvoipcodecs.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/libvoipcodecs.dsp
   freeswitch/branches/seven/libs/voipcodecs/src/libvoipcodecs.sln
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/libvoipcodecs.sln
   freeswitch/branches/seven/libs/voipcodecs/src/lpc10_analyse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/lpc10_analyse.c
   freeswitch/branches/seven/libs/voipcodecs/src/lpc10_decode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/lpc10_decode.c
   freeswitch/branches/seven/libs/voipcodecs/src/lpc10_encdecs.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/lpc10_encdecs.h
   freeswitch/branches/seven/libs/voipcodecs/src/lpc10_encode.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/lpc10_encode.c
   freeswitch/branches/seven/libs/voipcodecs/src/lpc10_placev.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/lpc10_placev.c
   freeswitch/branches/seven/libs/voipcodecs/src/lpc10_voicing.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/lpc10_voicing.c
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/
      - copied from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/gettimeofday.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/gettimeofday.c
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/inttypes.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/inttypes.h
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/msvcproj.foot
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/msvcproj.foot
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/msvcproj.head
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/msvcproj.head
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/sys/
      - copied from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/sys/
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/sys/time.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/sys/time.h
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/tgmath.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/tgmath.h
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/unistd.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/unistd.h
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/vc8proj.foot
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/vc8proj.foot
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/vc8proj.head
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/vc8proj.head
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/voipcodecs.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/voipcodecs.def
   freeswitch/branches/seven/libs/voipcodecs/src/msvc/voipcodecs.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/msvc/voipcodecs.h
   freeswitch/branches/seven/libs/voipcodecs/src/oki_adpcm.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/oki_adpcm.c
   freeswitch/branches/seven/libs/voipcodecs/src/vector_int.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/vector_int.c
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/
      - copied from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs.h.in
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/bit_operations.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/bit_operations.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/bitstream.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/bitstream.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/dc_restore.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/dc_restore.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/g711.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/g711.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/g722.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/g722.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/g726.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/g726.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/gsm0610.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/gsm0610.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/ima_adpcm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/ima_adpcm.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/lpc10.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/lpc10.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/oki_adpcm.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/oki_adpcm.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/telephony.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/telephony.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/vector_int.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/vector_int.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/version.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/version.h
   freeswitch/branches/seven/libs/voipcodecs/src/voipcodecs/version.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/src/voipcodecs/version.h.in
   freeswitch/branches/seven/libs/voipcodecs/tests/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/voipcodecs/tests/
   freeswitch/branches/seven/libs/voipcodecs/tests/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/tests/Makefile.am
   freeswitch/branches/seven/libs/voipcodecs/tests/g711_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/tests/g711_tests.c
   freeswitch/branches/seven/libs/voipcodecs/tests/g722_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/tests/g722_tests.c
   freeswitch/branches/seven/libs/voipcodecs/tests/g726_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/tests/g726_tests.c
   freeswitch/branches/seven/libs/voipcodecs/tests/gsm0610_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/tests/gsm0610_tests.c
   freeswitch/branches/seven/libs/voipcodecs/tests/ima_adpcm_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/tests/ima_adpcm_tests.c
   freeswitch/branches/seven/libs/voipcodecs/tests/lpc10_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/tests/lpc10_tests.c
   freeswitch/branches/seven/libs/voipcodecs/tests/oki_adpcm_tests.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/tests/oki_adpcm_tests.c
   freeswitch/branches/seven/libs/voipcodecs/tests/regression_tests.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/tests/regression_tests.sh
   freeswitch/branches/seven/libs/voipcodecs/voipcodecs.spec.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/voipcodecs.spec.in
   freeswitch/branches/seven/libs/voipcodecs/wrapper.xsl
      - copied unchanged from r11459, /freeswitch/trunk/libs/voipcodecs/wrapper.xsl
   freeswitch/branches/seven/libs/win32/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/
   freeswitch/branches/seven/libs/win32/Dowload 32khz Sounds.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Dowload 32khz Sounds.2008.vcproj
   freeswitch/branches/seven/libs/win32/Download 16khz Sounds.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download 16khz Sounds.2008.vcproj
   freeswitch/branches/seven/libs/win32/Download 8khz Sounds.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download 8khz Sounds.2008.vcproj
   freeswitch/branches/seven/libs/win32/Download FLITE.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download FLITE.2008.vcproj
   freeswitch/branches/seven/libs/win32/Download HOWL.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download HOWL.2008.vcproj
   freeswitch/branches/seven/libs/win32/Download HOWL.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download HOWL.vcproj
   freeswitch/branches/seven/libs/win32/Download LAME.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download LAME.2008.vcproj
   freeswitch/branches/seven/libs/win32/Download LIBSHOUT.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download LIBSHOUT.2008.vcproj
   freeswitch/branches/seven/libs/win32/Download OGG.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download OGG.2008.vcproj
   freeswitch/branches/seven/libs/win32/Download PTHREAD.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download PTHREAD.2008.vcproj
   freeswitch/branches/seven/libs/win32/Download PTHREAD.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download PTHREAD.vcproj
   freeswitch/branches/seven/libs/win32/Download mpg123.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download mpg123.2008.vcproj
   freeswitch/branches/seven/libs/win32/Download pocketsphinx.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download pocketsphinx.2008.vcproj
   freeswitch/branches/seven/libs/win32/Download sphinxbase.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download sphinxbase.2008.vcproj
   freeswitch/branches/seven/libs/win32/Download sphinxmodel.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Download sphinxmodel.2008.vcproj
   freeswitch/branches/seven/libs/win32/Sound_Files/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/Sound_Files/
   freeswitch/branches/seven/libs/win32/Sound_Files/16khz.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Sound_Files/16khz.2008.vcproj
   freeswitch/branches/seven/libs/win32/Sound_Files/32khz.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Sound_Files/32khz.2008.vcproj
   freeswitch/branches/seven/libs/win32/Sound_Files/8khz.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/Sound_Files/8khz.2008.vcproj
   freeswitch/branches/seven/libs/win32/apr/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/apr/
   freeswitch/branches/seven/libs/win32/apr-util/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/apr-util/
   freeswitch/branches/seven/libs/win32/apr-util/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/apr-util/cleancount
   freeswitch/branches/seven/libs/win32/apr-util/libaprutil.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/apr-util/libaprutil.2008.vcproj
   freeswitch/branches/seven/libs/win32/apr-util/libaprutil.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/apr-util/libaprutil.vcproj
   freeswitch/branches/seven/libs/win32/apr-util/xml.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/apr-util/xml.2008.vcproj
   freeswitch/branches/seven/libs/win32/apr-util/xml.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/apr-util/xml.vcproj
   freeswitch/branches/seven/libs/win32/apr/apr.hw
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/apr/apr.hw
   freeswitch/branches/seven/libs/win32/apr/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/apr/cleancount
   freeswitch/branches/seven/libs/win32/apr/libapr.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/apr/libapr.2008.vcproj
   freeswitch/branches/seven/libs/win32/apr/libapr.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/apr/libapr.vcproj
   freeswitch/branches/seven/libs/win32/curl/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/curl/
   freeswitch/branches/seven/libs/win32/curl/ca-bundle.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/curl/ca-bundle.h
   freeswitch/branches/seven/libs/win32/curl/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/curl/cleancount
   freeswitch/branches/seven/libs/win32/curl/curllib.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/curl/curllib.2008.vcproj
   freeswitch/branches/seven/libs/win32/curl/curllib.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/curl/curllib.vcproj
   freeswitch/branches/seven/libs/win32/flite/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/flite/
   freeswitch/branches/seven/libs/win32/flite/flite.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/flite/flite.2008.vcproj
   freeswitch/branches/seven/libs/win32/howl/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/howl/
   freeswitch/branches/seven/libs/win32/howl/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/howl/cleancount
   freeswitch/branches/seven/libs/win32/howl/libhowl.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/howl/libhowl.2008.vcproj
   freeswitch/branches/seven/libs/win32/howl/libhowl.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/howl/libhowl.vcproj
   freeswitch/branches/seven/libs/win32/howl/libmDNSResponder.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/howl/libmDNSResponder.2008.vcproj
   freeswitch/branches/seven/libs/win32/howl/libmDNSResponder.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/howl/libmDNSResponder.vcproj
   freeswitch/branches/seven/libs/win32/iksemel/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/iksemel/
   freeswitch/branches/seven/libs/win32/iksemel/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/iksemel/cleancount
   freeswitch/branches/seven/libs/win32/iksemel/config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/iksemel/config.h
   freeswitch/branches/seven/libs/win32/iksemel/iksemel.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/iksemel/iksemel.2008.vcproj
   freeswitch/branches/seven/libs/win32/iksemel/iksemel.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/iksemel/iksemel.vcproj
   freeswitch/branches/seven/libs/win32/js/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/js/
   freeswitch/branches/seven/libs/win32/js/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/js/cleancount
   freeswitch/branches/seven/libs/win32/js/fdlibm.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/js/fdlibm.vcproj
   freeswitch/branches/seven/libs/win32/js/js.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/js/js.2008.vcproj
   freeswitch/branches/seven/libs/win32/js/js.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/js/js.vcproj
   freeswitch/branches/seven/libs/win32/libg722_1/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/libg722_1/
   freeswitch/branches/seven/libs/win32/libg722_1/libg722_1.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libg722_1/libg722_1.vcproj
   freeswitch/branches/seven/libs/win32/libmp3lame/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/libmp3lame/
   freeswitch/branches/seven/libs/win32/libmp3lame/config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libmp3lame/config.h
   freeswitch/branches/seven/libs/win32/libmp3lame/libmp3lame_vc7.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libmp3lame/libmp3lame_vc7.vcproj
   freeswitch/branches/seven/libs/win32/libogg/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/libogg/
   freeswitch/branches/seven/libs/win32/libogg/libogg.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libogg/libogg.2008.vcproj
   freeswitch/branches/seven/libs/win32/libresample/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/libresample/
   freeswitch/branches/seven/libs/win32/libresample/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libresample/cleancount
   freeswitch/branches/seven/libs/win32/libresample/libresample.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libresample/libresample.2008.vcproj
   freeswitch/branches/seven/libs/win32/libresample/libresample.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libresample/libresample.vcproj
   freeswitch/branches/seven/libs/win32/libshout/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/libshout/
   freeswitch/branches/seven/libs/win32/libshout/compat.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libshout/compat.h
   freeswitch/branches/seven/libs/win32/libshout/libshout.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libshout/libshout.vcproj
   freeswitch/branches/seven/libs/win32/libshout/shout/
      - copied from r11459, /freeswitch/trunk/libs/win32/libshout/shout/
   freeswitch/branches/seven/libs/win32/libshout/shout/shout.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libshout/shout/shout.h
   freeswitch/branches/seven/libs/win32/libsndfile/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/libsndfile/
   freeswitch/branches/seven/libs/win32/libsndfile/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libsndfile/cleancount
   freeswitch/branches/seven/libs/win32/libsndfile/common.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libsndfile/common.c
   freeswitch/branches/seven/libs/win32/libsndfile/config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libsndfile/config.h
   freeswitch/branches/seven/libs/win32/libsndfile/libsndfile.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libsndfile/libsndfile.2008.vcproj
   freeswitch/branches/seven/libs/win32/libsndfile/libsndfile.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libsndfile/libsndfile.vcproj
   freeswitch/branches/seven/libs/win32/libsndfile/sndfile.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/libsndfile/sndfile.h
   freeswitch/branches/seven/libs/win32/mpg123/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/mpg123/
   freeswitch/branches/seven/libs/win32/mpg123/libmpg123/
      - copied from r11459, /freeswitch/trunk/libs/win32/mpg123/libmpg123/
   freeswitch/branches/seven/libs/win32/mpg123/libmpg123.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/mpg123/libmpg123.2008.vcproj
   freeswitch/branches/seven/libs/win32/mpg123/libmpg123/config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/mpg123/libmpg123/config.h
   freeswitch/branches/seven/libs/win32/mpg123/libmpg123/mpg123.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/mpg123/libmpg123/mpg123.h
   freeswitch/branches/seven/libs/win32/pcre/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/pcre/
   freeswitch/branches/seven/libs/win32/pcre/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/pcre/cleancount
   freeswitch/branches/seven/libs/win32/pcre/config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/pcre/config.h
   freeswitch/branches/seven/libs/win32/pcre/dftables.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/pcre/dftables.c
   freeswitch/branches/seven/libs/win32/pcre/libpcre.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/pcre/libpcre.2008.vcproj
   freeswitch/branches/seven/libs/win32/pcre/libpcre.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/pcre/libpcre.vcproj
   freeswitch/branches/seven/libs/win32/pcre/pcre_chartables.c.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/pcre/pcre_chartables.c.2008.vcproj
   freeswitch/branches/seven/libs/win32/pcre/pcre_chartables.c.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/pcre/pcre_chartables.c.vcproj
   freeswitch/branches/seven/libs/win32/pocketsphinx/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/pocketsphinx/
   freeswitch/branches/seven/libs/win32/pocketsphinx/pocketsphinx.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/pocketsphinx/pocketsphinx.2008.vcproj
   freeswitch/branches/seven/libs/win32/portaudio/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/portaudio/
   freeswitch/branches/seven/libs/win32/portaudio/PAStaticWMME.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/portaudio/PAStaticWMME.vcproj
   freeswitch/branches/seven/libs/win32/portaudio/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/portaudio/cleancount
   freeswitch/branches/seven/libs/win32/pthread/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/pthread/
   freeswitch/branches/seven/libs/win32/pthread/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/pthread/cleancount
   freeswitch/branches/seven/libs/win32/pthread/pthread.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/pthread/pthread.2008.vcproj
   freeswitch/branches/seven/libs/win32/pthread/pthread.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/pthread/pthread.vcproj
   freeswitch/branches/seven/libs/win32/sofia/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/sofia/
   freeswitch/branches/seven/libs/win32/sofia/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sofia/cleancount
   freeswitch/branches/seven/libs/win32/sofia/libsofia_sip_ua_static.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sofia/libsofia_sip_ua_static.2008.vcproj
   freeswitch/branches/seven/libs/win32/sofia/libsofia_sip_ua_static.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sofia/libsofia_sip_ua_static.vcproj
   freeswitch/branches/seven/libs/win32/speex/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/speex/
   freeswitch/branches/seven/libs/win32/speex/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/speex/cleancount
   freeswitch/branches/seven/libs/win32/speex/libspeex.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/speex/libspeex.2008.vcproj
   freeswitch/branches/seven/libs/win32/speex/libspeex.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/speex/libspeex.vcproj
   freeswitch/branches/seven/libs/win32/sphinxbase/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/sphinxbase/
   freeswitch/branches/seven/libs/win32/sphinxbase/sphinxbase.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sphinxbase/sphinxbase.2008.vcproj
   freeswitch/branches/seven/libs/win32/sqlite/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/sqlite/
   freeswitch/branches/seven/libs/win32/sqlite/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sqlite/cleancount
   freeswitch/branches/seven/libs/win32/sqlite/keywordhash.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sqlite/keywordhash.h
   freeswitch/branches/seven/libs/win32/sqlite/opcodes.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sqlite/opcodes.c
   freeswitch/branches/seven/libs/win32/sqlite/opcodes.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sqlite/opcodes.h
   freeswitch/branches/seven/libs/win32/sqlite/parse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sqlite/parse.c
   freeswitch/branches/seven/libs/win32/sqlite/parse.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sqlite/parse.h
   freeswitch/branches/seven/libs/win32/sqlite/sqlite.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sqlite/sqlite.2008.vcproj
   freeswitch/branches/seven/libs/win32/sqlite/sqlite.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sqlite/sqlite.vcproj
   freeswitch/branches/seven/libs/win32/sqlite/sqlite3.def
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sqlite/sqlite3.def
   freeswitch/branches/seven/libs/win32/sqlite/sqlite3.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/sqlite/sqlite3.h
   freeswitch/branches/seven/libs/win32/udns/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/udns/
   freeswitch/branches/seven/libs/win32/udns/libudns.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/udns/libudns.2008.vcproj
   freeswitch/branches/seven/libs/win32/udns/libudns.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/udns/libudns.vcproj
   freeswitch/branches/seven/libs/win32/util.vbs
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/util.vbs
   freeswitch/branches/seven/libs/win32/xmlrpc/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/win32/xmlrpc/
   freeswitch/branches/seven/libs/win32/xmlrpc/Abyss.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/xmlrpc/Abyss.2008.vcproj
   freeswitch/branches/seven/libs/win32/xmlrpc/Abyss.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/xmlrpc/Abyss.vcproj
   freeswitch/branches/seven/libs/win32/xmlrpc/cleancount
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/xmlrpc/cleancount
   freeswitch/branches/seven/libs/win32/xmlrpc/xmlrpc.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/xmlrpc/xmlrpc.2008.vcproj
   freeswitch/branches/seven/libs/win32/xmlrpc/xmlrpc.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/win32/xmlrpc/xmlrpc.vcproj
   freeswitch/branches/seven/libs/xmlrpc-c/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/
   freeswitch/branches/seven/libs/xmlrpc-c/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/.update
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/.update
   freeswitch/branches/seven/libs/xmlrpc-c/GNUmakefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/GNUmakefile
   freeswitch/branches/seven/libs/xmlrpc-c/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/Makefile.common
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Makefile.common
   freeswitch/branches/seven/libs/xmlrpc-c/Makefile.config.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Makefile.config.in
   freeswitch/branches/seven/libs/xmlrpc-c/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/Makefile.srcdir.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Makefile.srcdir.in
   freeswitch/branches/seven/libs/xmlrpc-c/Makefile.version
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Makefile.version
   freeswitch/branches/seven/libs/xmlrpc-c/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/README
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/CleanAll.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/CleanAll.bat
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/CleanWin32.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/CleanWin32.bat
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/ConfigureWin32.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/ConfigureWin32.bat
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/ReadMeOld.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/ReadMeOld.txt
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/ReadMeWin32.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/ReadMeWin32.txt
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/UsingCURLinWin32.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/UsingCURLinWin32.txt
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/UsingProxyDSP.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/UsingProxyDSP.txt
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/abyss.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/abyss.2008.vcproj
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/abyss.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/abyss.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/abyss.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/abyss.vcproj
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/configwin32.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/configwin32.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/cpptest.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/cpptest.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/curllink.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/curllink.h
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/delsln.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/delsln.bat
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/diffcfg.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/diffcfg.bat
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/gennmtab.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/gennmtab.2008.vcproj
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/gennmtab.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/gennmtab.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/gennmtab.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/gennmtab.vcproj
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/mkvers.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/mkvers.bat
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/mkvers1.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/mkvers1.bat
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/query_meerkat.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/query_meerkat.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/rpctest.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/rpctest.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/transport_config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/transport_config.h
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/transport_config_win32.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/transport_config_win32.h
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/updcfg.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/updcfg.bat
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/win32_config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/win32_config.h
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlhttpsys.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlhttpsys.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlparse.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlparse.2008.vcproj
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlparse.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlparse.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlparse.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlparse.vcproj
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc-c/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc-c/
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc-c/config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc-c/config.h
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc.2008.vcproj
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc.dsw
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc.vcproj
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc_config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc_config.h
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc_cpp_proxy.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc_cpp_proxy.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc_misc.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc_misc.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc_sample_add_asynch_client.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc_sample_add_asynch_client.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc_sample_add_server.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc_sample_add_server.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc_sample_add_server_w32httpsys.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc_sample_add_server_w32httpsys.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc_sample_add_sync_client.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc_sample_add_sync_client.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc_sample_auth_client.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc_sample_auth_client.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpc_win32_config.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpc_win32_config.h
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmlrpccpp.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmlrpccpp.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmltok.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmltok.2008.vcproj
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmltok.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmltok.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/Windows/xmltok.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/Windows/xmltok.vcproj
   freeswitch/branches/seven/libs/xmlrpc-c/common.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/common.mk
   freeswitch/branches/seven/libs/xmlrpc-c/conf/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/conf/
   freeswitch/branches/seven/libs/xmlrpc-c/conf/abyss_root/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/conf/abyss_root/
   freeswitch/branches/seven/libs/xmlrpc-c/conf/abyss_root/conf/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/conf/abyss_root/conf/
   freeswitch/branches/seven/libs/xmlrpc-c/conf/abyss_root/conf/abyss.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/conf/abyss_root/conf/abyss.conf
   freeswitch/branches/seven/libs/xmlrpc-c/conf/abyss_root/conf/mime.types
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/conf/abyss_root/conf/mime.types
   freeswitch/branches/seven/libs/xmlrpc-c/conf/abyss_root/htdocs/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/conf/abyss_root/htdocs/
   freeswitch/branches/seven/libs/xmlrpc-c/conf/abyss_root/htdocs/index.htm
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/conf/abyss_root/htdocs/index.htm
   freeswitch/branches/seven/libs/xmlrpc-c/conf/abyss_root/htdocs/pwrabyss.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/conf/abyss_root/htdocs/pwrabyss.gif
   freeswitch/branches/seven/libs/xmlrpc-c/config.mk.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/config.mk.in
   freeswitch/branches/seven/libs/xmlrpc-c/configure.gnu
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/configure.gnu
   freeswitch/branches/seven/libs/xmlrpc-c/configure.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/configure.in
   freeswitch/branches/seven/libs/xmlrpc-c/debian/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/
   freeswitch/branches/seven/libs/xmlrpc-c/debian/README.Debian
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/README.Debian
   freeswitch/branches/seven/libs/xmlrpc-c/debian/changelog
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/changelog
   freeswitch/branches/seven/libs/xmlrpc-c/debian/control
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/control
   freeswitch/branches/seven/libs/xmlrpc-c/debian/copyright
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/copyright
   freeswitch/branches/seven/libs/xmlrpc-c/debian/postinst
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/postinst
   freeswitch/branches/seven/libs/xmlrpc-c/debian/postrm
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/postrm
   freeswitch/branches/seven/libs/xmlrpc-c/debian/rules
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/rules
   freeswitch/branches/seven/libs/xmlrpc-c/debian/xmlrpc-c-apps.files
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/xmlrpc-c-apps.files
   freeswitch/branches/seven/libs/xmlrpc-c/debian/xmlrpc-c-dev.files
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/xmlrpc-c-dev.files
   freeswitch/branches/seven/libs/xmlrpc-c/debian/xmlrpc-c0.docs
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/xmlrpc-c0.docs
   freeswitch/branches/seven/libs/xmlrpc-c/debian/xmlrpc-c0.examples
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/xmlrpc-c0.examples
   freeswitch/branches/seven/libs/xmlrpc-c/debian/xmlrpc-c0.files
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/debian/xmlrpc-c0.files
   freeswitch/branches/seven/libs/xmlrpc-c/dll-common.make
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/dll-common.make
   freeswitch/branches/seven/libs/xmlrpc-c/doc/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/doc/
   freeswitch/branches/seven/libs/xmlrpc-c/doc/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/doc/COPYING
   freeswitch/branches/seven/libs/xmlrpc-c/doc/CREDITS
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/doc/CREDITS
   freeswitch/branches/seven/libs/xmlrpc-c/doc/DEVELOPING
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/doc/DEVELOPING
   freeswitch/branches/seven/libs/xmlrpc-c/doc/HISTORY
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/doc/HISTORY
   freeswitch/branches/seven/libs/xmlrpc-c/doc/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/doc/INSTALL
   freeswitch/branches/seven/libs/xmlrpc-c/doc/SECURITY
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/doc/SECURITY
   freeswitch/branches/seven/libs/xmlrpc-c/doc/TESTING
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/doc/TESTING
   freeswitch/branches/seven/libs/xmlrpc-c/doc/TODO
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/doc/TODO
   freeswitch/branches/seven/libs/xmlrpc-c/doc/configure_doc
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/doc/configure_doc
   freeswitch/branches/seven/libs/xmlrpc-c/dylib-common.make
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/dylib-common.make
   freeswitch/branches/seven/libs/xmlrpc-c/examples/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/
   freeswitch/branches/seven/libs/xmlrpc-c/examples/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/examples/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/examples/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/README
   freeswitch/branches/seven/libs/xmlrpc-c/examples/auth_client.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/auth_client.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/cpp/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/cpp/
   freeswitch/branches/seven/libs/xmlrpc-c/examples/cpp/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/cpp/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/examples/cpp/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/cpp/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/examples/cpp/asynch_client.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/cpp/asynch_client.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/examples/cpp/meerkat-app-list.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/cpp/meerkat-app-list.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/examples/cpp/pstream_client.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/cpp/pstream_client.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/examples/cpp/pstream_inetd_server.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/cpp/pstream_inetd_server.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/examples/cpp/sample_add_client_complex.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/cpp/sample_add_client_complex.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/examples/cpp/xmlrpc_inetd_server.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/cpp/xmlrpc_inetd_server.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/examples/cpp/xmlrpc_loop_server.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/cpp/xmlrpc_loop_server.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_client.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_client.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/examples/gen_sample_add_xml.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/gen_sample_add_xml.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/interrupted_client.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/interrupted_client.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/interrupted_server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/interrupted_server.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/query-meerkat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/query-meerkat.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/synch_client.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/synch_client.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/xmlrpc_asynch_client.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/xmlrpc_asynch_client.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/xmlrpc_inetd_server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/xmlrpc_inetd_server.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/xmlrpc_loop_server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/xmlrpc_loop_server.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/xmlrpc_sample_add_client.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/xmlrpc_sample_add_client.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/xmlrpc_sample_add_server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/xmlrpc_sample_add_server.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/xmlrpc_sample_add_server_cgi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/xmlrpc_sample_add_server_cgi.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/xmlrpc_sample_add_server_w32httpsys.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/xmlrpc_sample_add_server_w32httpsys.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/xmlrpc_server_validatee.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/xmlrpc_server_validatee.c
   freeswitch/branches/seven/libs/xmlrpc-c/examples/xmlrpc_socket_server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/examples/xmlrpc_socket_server.c
   freeswitch/branches/seven/libs/xmlrpc-c/include/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/
   freeswitch/branches/seven/libs/xmlrpc-c/include/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/abyss.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/abyss.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/abyss_opensslsock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/abyss_opensslsock.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/abyss_unixsock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/abyss_unixsock.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/abyss_winsock.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/abyss_winsock.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/base.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/base.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/base.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/base.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/base64.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/base64.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/base_int.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/base_int.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/c_util.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/c_util.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/client.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/client.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/client.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/client.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/client_global.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/client_global.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/client_int.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/client_int.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/client_simple.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/client_simple.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/client_transport.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/client_transport.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/config.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/config.h.in
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/girerr.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/girerr.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/girmem.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/girmem.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/inttypes.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/inttypes.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/oldcppwrapper.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/oldcppwrapper.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/oldxmlrpc.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/oldxmlrpc.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/packetsocket.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/packetsocket.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/registry.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/registry.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/select_int.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/select_int.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/server.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/server.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/server_pstream.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/server_pstream.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/server_w32httpsys.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/server_w32httpsys.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/sleep_int.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/sleep_int.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/string_int.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/string_int.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/time_int.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/time_int.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/timeout.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/timeout.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/transport.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/transport.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/transport_int.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/transport_int.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/util.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/util.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/util_int.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/util_int.h
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/xml.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/xml.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/include/xmlrpc-c/xmlparser.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/include/xmlrpc-c/xmlparser.h
   freeswitch/branches/seven/libs/xmlrpc-c/install-sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/install-sh
   freeswitch/branches/seven/libs/xmlrpc-c/irix-common.make
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/irix-common.make
   freeswitch/branches/seven/libs/xmlrpc-c/lib/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/lib/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/HISTORY
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/HISTORY
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/README
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/change.log
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/change.log
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/conf/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/conf/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/conf/abyss.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/conf/abyss.conf
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/conf/mime.types
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/conf/mime.types
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/example/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/example/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/example/conf/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/example/conf/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/example/conf/abyss.conf
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/example/conf/abyss.conf
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/example/conf/mime.types
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/example/conf/mime.types
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/example/htdocs/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/example/htdocs/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/example/htdocs/index.htm
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/example/htdocs/index.htm
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/example/htdocs/pwrabyss.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/example/htdocs/pwrabyss.gif
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/htdocs/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/htdocs/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/htdocs/index.htm
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/htdocs/index.htm
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/htdocs/pwrabyss.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/htdocs/pwrabyss.gif
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/license.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/license.txt
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/patch_notes.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/patch_notes.txt
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/readme.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/readme.txt
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/Abyss.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/Abyss.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/Abyss.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/Abyss.dsw
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/abyss_info.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/abyss_info.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/channel.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/channel.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/channel.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/channel.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/chanswitch.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/chanswitch.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/chanswitch.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/chanswitch.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/conf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/conf.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/conn.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/conn.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/conn.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/conn.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/data.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/data.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/data.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/data.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/date.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/date.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/date.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/date.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/file.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/file.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/file.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/file.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/handler.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/handler.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/handler.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/handler.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/http.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/http.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/http.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/http.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/init.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/init.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/main.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/main.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/response.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/response.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/server.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/server.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/server.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/server.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/session.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/session.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/session.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/session.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/socket.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/socket.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/socket.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/socket.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/socket_openssl.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/socket_openssl.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/socket_unix.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/socket_unix.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/socket_unix.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/socket_unix.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/socket_win.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/socket_win.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/socket_win.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/socket_win.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/thread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/thread.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/thread.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/thread.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/thread_fork.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/thread_fork.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/thread_pthread.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/thread_pthread.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/thread_windows.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/thread_windows.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/token.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/token.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/token.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/token.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/trace.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/trace.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/src/trace.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/src/trace.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/abyss/version.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/abyss/version.txt
   freeswitch/branches/seven/libs/xmlrpc-c/lib/curl_transport/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/curl_transport/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/curl_transport/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/curl_transport/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/lib/curl_transport/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/curl_transport/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/Makefile.in
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/expat.dsw
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/expat.dsw
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/expat.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/expat.html
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/gennmtab/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/gennmtab/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/gennmtab/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/gennmtab/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/gennmtab/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/gennmtab/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/gennmtab/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/gennmtab/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/gennmtab/gennmtab.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/gennmtab/gennmtab.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/gennmtab/gennmtab.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/gennmtab/gennmtab.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/sample/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/sample/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/sample/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/sample/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/sample/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/sample/Makefile.in
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/sample/build.bat
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/sample/build.bat
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/sample/elements.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/sample/elements.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlparse/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlparse/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlparse/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlparse/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlparse/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlparse/Makefile.in
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/ascii.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/ascii.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/asciitab.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/asciitab.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/dllmain.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/dllmain.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/iasciitab.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/iasciitab.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/latin1tab.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/latin1tab.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/nametab.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/nametab.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/utf8tab.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/utf8tab.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/xmldef.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/xmldef.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/xmlrole.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/xmlrole.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/xmlrole.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/xmlrole.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/xmltok.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/xmltok.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/xmltok.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/xmltok.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/xmltok.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/xmltok.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmltok/xmltok_ns.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmltok/xmltok_ns.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/Makefile.in
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/codepage.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/codepage.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/codepage.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/codepage.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/filemap.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/filemap.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/readfilemap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/readfilemap.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/unixfilemap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/unixfilemap.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/win32filemap.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/win32filemap.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/xmltchar.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/xmltchar.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/xmlwf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/xmlwf.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/expat/xmlwf/xmlwf.dsp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/expat/xmlwf/xmlwf.dsp
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libutil/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libutil/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libutil/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libutil/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libutil/asprintf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libutil/asprintf.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libutil/error.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libutil/error.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libutil/make_printable.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libutil/make_printable.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libutil/memblock.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libutil/memblock.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libutil/select.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libutil/select.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libutil/sleep.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libutil/sleep.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libutil/time.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libutil/time.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libutil/utf8.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libutil/utf8.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libwww_transport/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libwww_transport/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libwww_transport/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libwww_transport/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libwww_transport/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libwww_transport/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/casprintf.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/casprintf.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/cmdline_parser.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/cmdline_parser.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/cmdline_parser_cpp.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/cmdline_parser_cpp.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/getoptx.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/getoptx.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/getoptx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/getoptx.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/assertx.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/assertx.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/bool.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/bool.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/c_util.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/c_util.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/casprintf.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/casprintf.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/cmdline_parser.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/cmdline_parser.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/cmdline_parser.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/cmdline_parser.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/girmath.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/girmath.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/girstring.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/girstring.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/inline.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/inline.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/int.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/int.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/linklist.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/linklist.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/mallocvar.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/mallocvar.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/pthreadx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/pthreadx.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/sstring.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/sstring.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/stdargx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/stdargx.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/string_parser.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/string_parser.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/include/unistdx.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/include/unistdx.h
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/pthreadx_win32.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/pthreadx_win32.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/string_parser.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/string_parser.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/util/stripcaseeq.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/util/stripcaseeq.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/wininet_transport/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/wininet_transport/
   freeswitch/branches/seven/libs/xmlrpc-c/lib/wininet_transport/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/wininet_transport/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.c
   freeswitch/branches/seven/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.h
   freeswitch/branches/seven/libs/xmlrpc-c/ltconfig
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/ltconfig
   freeswitch/branches/seven/libs/xmlrpc-c/missing
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/missing
   freeswitch/branches/seven/libs/xmlrpc-c/mkinstalldirs
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/mkinstalldirs
   freeswitch/branches/seven/libs/xmlrpc-c/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/
   freeswitch/branches/seven/libs/xmlrpc-c/src/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/src/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/src/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/XmlRpcCpp.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/XmlRpcCpp.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/base64.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/base64.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/client.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/client.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/client_simple.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/client_simple.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/cpptest.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/cpptest.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/curl.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/curl.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/env_wrap.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/env_wrap.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/env_wrap.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/env_wrap.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/fault.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/fault.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/girerr.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/girerr.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/girmem.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/girmem.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/libwww.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/libwww.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/outcome.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/outcome.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/packetsocket.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/packetsocket.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/param_list.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/param_list.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/pstream.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/pstream.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/registry.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/registry.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/server_abyss.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/server_abyss.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/server_pstream.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/server_pstream.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/registry.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/registry.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/registry.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/registry.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/server_abyss.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/server_abyss.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/server_abyss.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/server_abyss.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/server_pstream.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/server_pstream.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/server_pstream.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/server_pstream.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/test.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/test.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/testclient.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/testclient.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/testclient.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/testclient.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/testclient_dummy.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/testclient_dummy.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/tools.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/tools.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/test/tools.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/test/tools.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/value.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/value.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/wininet.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/wininet.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/cpp/xml.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/cpp/xml.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/src/double.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/double.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/double.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/double.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/method.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/method.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/method.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/method.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/parse_value.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/parse_value.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/parse_value.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/parse_value.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/registry.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/registry.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/registry.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/registry.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/resource.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/resource.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/system_method.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/system_method.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/system_method.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/system_method.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/abyss.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/abyss.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/abyss.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/abyss.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/cgi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/cgi.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/cgi.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/cgi.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/cgitest1.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/cgitest1.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/client.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/client.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/client.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/client.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/client_dummy.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/client_dummy.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/data/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/data/
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/data/req_no_params.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/data/req_no_params.xml
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/data/req_out_of_order.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/data/req_out_of_order.xml
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/data/req_value_name.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/data/req_value_name.xml
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/data/sample_add_call.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/data/sample_add_call.xml
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/eftest_wrapper.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/eftest_wrapper.sh
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/http-req-simple.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/http-req-simple.txt
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/method_registry.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/method_registry.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/method_registry.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/method_registry.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/parse_xml.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/parse_xml.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/parse_xml.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/parse_xml.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/req_no_params.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/req_no_params.xml
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/req_out_of_order.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/req_out_of_order.xml
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/req_value_name.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/req_value_name.xml
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/sample_add_call.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/sample_add_call.xml
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/serialize.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/serialize.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/serialize.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/serialize.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/serialize_value.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/serialize_value.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/serialize_value.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/serialize_value.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/server_abyss.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/server_abyss.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/server_abyss.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/server_abyss.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/test.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/test.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/test.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/test.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/value.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/value.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/value.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/value.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/xml_data.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/xml_data.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/test/xml_data.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/test/xml_data.h
   freeswitch/branches/seven/libs/xmlrpc-c/src/trace.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/trace.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/version.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/version.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_array.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_array.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_authcookie.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_authcookie.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_base64.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_base64.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_build.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_build.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_builddecomp.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_builddecomp.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_client.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_client.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_client_global.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_client_global.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_data.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_data.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_datetime.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_datetime.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_decompose.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_decompose.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_expat.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_expat.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_libxml2.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_libxml2.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_parse.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_parse.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_registry.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_registry.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_serialize.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_serialize.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_server_abyss.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_server_abyss.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_server_cgi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_server_cgi.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_server_info.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_server_info.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_server_w32httpsys.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_server_w32httpsys.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_string.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_string.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_struct.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_struct.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_strutil.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_strutil.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_support.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_support.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_transport.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_transport.c
   freeswitch/branches/seven/libs/xmlrpc-c/src/xmlrpc_utf8.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/src/xmlrpc_utf8.c
   freeswitch/branches/seven/libs/xmlrpc-c/stamp-h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/stamp-h.in
   freeswitch/branches/seven/libs/xmlrpc-c/tools/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/tools/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/tools/Makefile.common
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/Makefile.common
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/COPYING
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/COPYING
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/README
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/binmode-rpc-rfc.txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/binmode-rpc-rfc.txt
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/binmode-rpc2xml-rpc
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/binmode-rpc2xml-rpc
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-1.binmode
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-1.binmode
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-1.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-1.xml
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-2.binmode
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-2.binmode
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-2.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-2.xml
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-3.binmode
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-3.binmode
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-3.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-3.xml
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-4.binmode
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-4.binmode
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-4.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-4.xml
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-5.binmode
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-5.binmode
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-5.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-5.xml
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-6.binmode
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-6.binmode
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-6.xml
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/good-6.xml
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/invalid-1.binmode
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/invalid-1.binmode
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/invalid-2.binmode
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/invalid-2.binmode
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/invalid-3.binmode
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/invalid-3.binmode
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/invalid-4.binmode
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/invalid-4.binmode
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/invalid-5.binmode
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/examples/invalid-5.binmode
   freeswitch/branches/seven/libs/xmlrpc-c/tools/binmode-rpc-kit/oct2bin
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/binmode-rpc-kit/oct2bin
   freeswitch/branches/seven/libs/xmlrpc-c/tools/common.mk
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/common.mk
   freeswitch/branches/seven/libs/xmlrpc-c/tools/interop-server/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/interop-server/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/interop-server/interop-cgi.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/interop-server/interop-cgi.c
   freeswitch/branches/seven/libs/xmlrpc-c/tools/lib/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/lib/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/lib/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/lib/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/tools/lib/dumpvalue.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/lib/dumpvalue.c
   freeswitch/branches/seven/libs/xmlrpc-c/tools/lib/include/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/lib/include/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/lib/include/dumpvalue.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/lib/include/dumpvalue.h
   freeswitch/branches/seven/libs/xmlrpc-c/tools/perl_packetsocket/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/perl_packetsocket/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/perl_packetsocket/PacketSocket.pm
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/perl_packetsocket/PacketSocket.pm
   freeswitch/branches/seven/libs/xmlrpc-c/tools/turbocharger/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/turbocharger/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/turbocharger/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/turbocharger/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/tools/turbocharger/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/turbocharger/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/tools/turbocharger/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/turbocharger/README
   freeswitch/branches/seven/libs/xmlrpc-c/tools/turbocharger/mod_gzip.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/turbocharger/mod_gzip.c
   freeswitch/branches/seven/libs/xmlrpc-c/tools/turbocharger/mod_gzip.c.diff
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/turbocharger/mod_gzip.c.diff
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/DataType.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/DataType.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/DataType.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/DataType.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/README
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/SystemProxy.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/SystemProxy.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/SystemProxy.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/SystemProxy.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/XmlRpcClass.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/XmlRpcClass.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/XmlRpcClass.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/XmlRpcClass.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/XmlRpcFunction.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/XmlRpcFunction.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/XmlRpcFunction.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/XmlRpcFunction.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/xml-rpc-api2cpp.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/xml-rpc-api2cpp.1
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2cpp/xml-rpc-api2cpp.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2cpp/xml-rpc-api2cpp.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2txt
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2txt
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xml-rpc-api2txt.1
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xml-rpc-api2txt.1
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.c
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.html
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/proxyClass.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/proxyClass.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/proxyClass.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/proxyClass.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/systemProxy.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/systemProxy.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/systemProxy.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/systemProxy.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/xmlrpcMethod.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/xmlrpcMethod.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/xmlrpcMethod.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/xmlrpcMethod.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/xmlrpcType.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/xmlrpcType.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/xmlrpcType.hpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/xmlrpcType.hpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/xmlrpc_cpp_proxy.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/xmlrpc_cpp_proxy.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_pstream/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_pstream/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_pstream/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_pstream/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_pstream/test
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_pstream/test
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.html
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_transport/
      - copied from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_transport/
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_transport/.cvsignore
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_transport/.cvsignore
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile.depend
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile.depend
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport.c
   freeswitch/branches/seven/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport.html
   freeswitch/branches/seven/libs/xmlrpc-c/transport_config.make
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/transport_config.make
   freeswitch/branches/seven/libs/xmlrpc-c/unix-common.make
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/unix-common.make
   freeswitch/branches/seven/libs/xmlrpc-c/version.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/version.h
   freeswitch/branches/seven/libs/xmlrpc-c/xmlrpc-c-config.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/xmlrpc-c-config.in
   freeswitch/branches/seven/libs/xmlrpc-c/xmlrpc-c-config.main
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/xmlrpc-c-config.main
   freeswitch/branches/seven/libs/xmlrpc-c/xmlrpc-c-config.test.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/xmlrpc-c-config.test.in
   freeswitch/branches/seven/libs/xmlrpc-c/xmlrpc-c-config.test.main
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/xmlrpc-c-config.test.main
   freeswitch/branches/seven/libs/xmlrpc-c/xmlrpc_amconfig.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/xmlrpc_amconfig.h.in
   freeswitch/branches/seven/libs/xmlrpc-c/xmlrpc_config.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/xmlrpc-c/xmlrpc_config.h.in
   freeswitch/branches/seven/libs/yaml/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/yaml/
   freeswitch/branches/seven/libs/yaml/LICENSE
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/LICENSE
   freeswitch/branches/seven/libs/yaml/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/Makefile.am
   freeswitch/branches/seven/libs/yaml/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/Makefile.in
   freeswitch/branches/seven/libs/yaml/README
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/README
   freeswitch/branches/seven/libs/yaml/aclocal.m4
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/aclocal.m4
   freeswitch/branches/seven/libs/yaml/config/
      - copied from r11459, /freeswitch/trunk/libs/yaml/config/
   freeswitch/branches/seven/libs/yaml/config.h.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/config.h.in
   freeswitch/branches/seven/libs/yaml/config/config.guess
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/config/config.guess
   freeswitch/branches/seven/libs/yaml/config/config.sub
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/config/config.sub
   freeswitch/branches/seven/libs/yaml/config/depcomp
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/config/depcomp
   freeswitch/branches/seven/libs/yaml/config/install-sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/config/install-sh
   freeswitch/branches/seven/libs/yaml/config/ltmain.sh
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/config/ltmain.sh
   freeswitch/branches/seven/libs/yaml/config/missing
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/config/missing
   freeswitch/branches/seven/libs/yaml/configure
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/configure
   freeswitch/branches/seven/libs/yaml/configure.ac
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/configure.ac
   freeswitch/branches/seven/libs/yaml/doc/
      - copied from r11459, /freeswitch/trunk/libs/yaml/doc/
   freeswitch/branches/seven/libs/yaml/doc/doxygen.cfg
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/doxygen.cfg
   freeswitch/branches/seven/libs/yaml/doc/html/
      - copied from r11459, /freeswitch/trunk/libs/yaml/doc/html/
   freeswitch/branches/seven/libs/yaml/doc/html/annotated.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/annotated.html
   freeswitch/branches/seven/libs/yaml/doc/html/doxygen.css
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/doxygen.css
   freeswitch/branches/seven/libs/yaml/doc/html/doxygen.png
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/doxygen.png
   freeswitch/branches/seven/libs/yaml/doc/html/files.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/files.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x62.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x62.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x63.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x63.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x64.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x64.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x65.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x65.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x66.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x66.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x68.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x68.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x69.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x69.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x6b.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x6b.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x6c.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x6c.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x6d.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x6d.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x6e.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x6e.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x6f.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x6f.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x70.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x70.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x71.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x71.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x72.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x72.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x73.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x73.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x74.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x74.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x75.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x75.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x76.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x76.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_0x77.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_0x77.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x62.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x62.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x63.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x63.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x64.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x64.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x65.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x65.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x66.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x66.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x68.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x68.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x69.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x69.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x6b.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x6b.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x6c.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x6c.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x6d.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x6d.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x6e.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x6e.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x6f.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x6f.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x70.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x70.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x71.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x71.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x72.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x72.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x73.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x73.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x74.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x74.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x75.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x75.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x76.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x76.html
   freeswitch/branches/seven/libs/yaml/doc/html/functions_vars_0x77.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/functions_vars_0x77.html
   freeswitch/branches/seven/libs/yaml/doc/html/globals.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/globals.html
   freeswitch/branches/seven/libs/yaml/doc/html/globals_eval.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/globals_eval.html
   freeswitch/branches/seven/libs/yaml/doc/html/globals_func.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/globals_func.html
   freeswitch/branches/seven/libs/yaml/doc/html/globals_type.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/globals_type.html
   freeswitch/branches/seven/libs/yaml/doc/html/group__basic.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/group__basic.html
   freeswitch/branches/seven/libs/yaml/doc/html/group__emitter.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/group__emitter.html
   freeswitch/branches/seven/libs/yaml/doc/html/group__events.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/group__events.html
   freeswitch/branches/seven/libs/yaml/doc/html/group__export.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/group__export.html
   freeswitch/branches/seven/libs/yaml/doc/html/group__nodes.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/group__nodes.html
   freeswitch/branches/seven/libs/yaml/doc/html/group__parser.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/group__parser.html
   freeswitch/branches/seven/libs/yaml/doc/html/group__styles.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/group__styles.html
   freeswitch/branches/seven/libs/yaml/doc/html/group__tokens.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/group__tokens.html
   freeswitch/branches/seven/libs/yaml/doc/html/group__version.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/group__version.html
   freeswitch/branches/seven/libs/yaml/doc/html/index.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/index.html
   freeswitch/branches/seven/libs/yaml/doc/html/modules.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/modules.html
   freeswitch/branches/seven/libs/yaml/doc/html/structyaml__alias__data__s.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/structyaml__alias__data__s.html
   freeswitch/branches/seven/libs/yaml/doc/html/structyaml__document__s.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/structyaml__document__s.html
   freeswitch/branches/seven/libs/yaml/doc/html/structyaml__emitter__s.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/structyaml__emitter__s.html
   freeswitch/branches/seven/libs/yaml/doc/html/structyaml__event__s.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/structyaml__event__s.html
   freeswitch/branches/seven/libs/yaml/doc/html/structyaml__mark__s.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/structyaml__mark__s.html
   freeswitch/branches/seven/libs/yaml/doc/html/structyaml__node__pair__s.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/structyaml__node__pair__s.html
   freeswitch/branches/seven/libs/yaml/doc/html/structyaml__node__s.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/structyaml__node__s.html
   freeswitch/branches/seven/libs/yaml/doc/html/structyaml__parser__s.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/structyaml__parser__s.html
   freeswitch/branches/seven/libs/yaml/doc/html/structyaml__simple__key__s.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/structyaml__simple__key__s.html
   freeswitch/branches/seven/libs/yaml/doc/html/structyaml__tag__directive__s.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/structyaml__tag__directive__s.html
   freeswitch/branches/seven/libs/yaml/doc/html/structyaml__token__s.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/structyaml__token__s.html
   freeswitch/branches/seven/libs/yaml/doc/html/structyaml__version__directive__s.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/structyaml__version__directive__s.html
   freeswitch/branches/seven/libs/yaml/doc/html/tab_b.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/tab_b.gif
   freeswitch/branches/seven/libs/yaml/doc/html/tab_l.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/tab_l.gif
   freeswitch/branches/seven/libs/yaml/doc/html/tab_r.gif
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/tab_r.gif
   freeswitch/branches/seven/libs/yaml/doc/html/tabs.css
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/tabs.css
   freeswitch/branches/seven/libs/yaml/doc/html/yaml_8h.html
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/doc/html/yaml_8h.html
   freeswitch/branches/seven/libs/yaml/include/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/yaml/include/
   freeswitch/branches/seven/libs/yaml/include/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/include/Makefile.am
   freeswitch/branches/seven/libs/yaml/include/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/include/Makefile.in
   freeswitch/branches/seven/libs/yaml/include/yaml.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/include/yaml.h
   freeswitch/branches/seven/libs/yaml/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/yaml/src/
   freeswitch/branches/seven/libs/yaml/src/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/src/Makefile.am
   freeswitch/branches/seven/libs/yaml/src/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/src/Makefile.in
   freeswitch/branches/seven/libs/yaml/src/api.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/src/api.c
   freeswitch/branches/seven/libs/yaml/src/dumper.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/src/dumper.c
   freeswitch/branches/seven/libs/yaml/src/emitter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/src/emitter.c
   freeswitch/branches/seven/libs/yaml/src/loader.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/src/loader.c
   freeswitch/branches/seven/libs/yaml/src/parser.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/src/parser.c
   freeswitch/branches/seven/libs/yaml/src/reader.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/src/reader.c
   freeswitch/branches/seven/libs/yaml/src/scanner.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/src/scanner.c
   freeswitch/branches/seven/libs/yaml/src/writer.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/src/writer.c
   freeswitch/branches/seven/libs/yaml/src/yaml_private.h
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/src/yaml_private.h
   freeswitch/branches/seven/libs/yaml/tests/   (props changed)
      - copied from r11459, /freeswitch/trunk/libs/yaml/tests/
   freeswitch/branches/seven/libs/yaml/tests/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/Makefile.am
   freeswitch/branches/seven/libs/yaml/tests/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/Makefile.in
   freeswitch/branches/seven/libs/yaml/tests/example-deconstructor-alt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/example-deconstructor-alt.c
   freeswitch/branches/seven/libs/yaml/tests/example-deconstructor.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/example-deconstructor.c
   freeswitch/branches/seven/libs/yaml/tests/example-reformatter-alt.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/example-reformatter-alt.c
   freeswitch/branches/seven/libs/yaml/tests/example-reformatter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/example-reformatter.c
   freeswitch/branches/seven/libs/yaml/tests/run-dumper.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/run-dumper.c
   freeswitch/branches/seven/libs/yaml/tests/run-emitter.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/run-emitter.c
   freeswitch/branches/seven/libs/yaml/tests/run-loader.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/run-loader.c
   freeswitch/branches/seven/libs/yaml/tests/run-parser.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/run-parser.c
   freeswitch/branches/seven/libs/yaml/tests/run-scanner.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/run-scanner.c
   freeswitch/branches/seven/libs/yaml/tests/test-reader.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/test-reader.c
   freeswitch/branches/seven/libs/yaml/tests/test-version.c
      - copied unchanged from r11459, /freeswitch/trunk/libs/yaml/tests/test-version.c
   freeswitch/branches/seven/patches/
      - copied from r11459, /freeswitch/trunk/patches/
   freeswitch/branches/seven/scripts/   (props changed)
      - copied from r11459, /freeswitch/trunk/scripts/
   freeswitch/branches/seven/scripts/FreeSWITCH-GizmoConfig.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/FreeSWITCH-GizmoConfig.pl
   freeswitch/branches/seven/scripts/Makefile.gram
      - copied unchanged from r11459, /freeswitch/trunk/scripts/Makefile.gram
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/
      - copied from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/CHANGES
      - copied unchanged from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/CHANGES
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/INSTALL
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/LICENSE
      - copied unchanged from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/LICENSE
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/Makefile.PL
      - copied unchanged from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/Makefile.PL
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/README
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/TODO
      - copied unchanged from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/TODO
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/examples/
      - copied from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/examples/
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/examples/fsconsole.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/examples/fsconsole.pl
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/examples/poetest.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/examples/poetest.pl
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/lib/
      - copied from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/lib/
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/lib/POE/
      - copied from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/lib/POE/
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/lib/POE/Filter/
      - copied from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/lib/POE/Filter/
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/lib/POE/Filter/FSSocket.pm
      - copied unchanged from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/lib/POE/Filter/FSSocket.pm
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/t/
      - copied from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/t/
   freeswitch/branches/seven/scripts/POE-Filter-FSSocket/t/01_basic.t
      - copied unchanged from r11459, /freeswitch/trunk/scripts/POE-Filter-FSSocket/t/01_basic.t
   freeswitch/branches/seven/scripts/aadir/
      - copied from r11459, /freeswitch/trunk/scripts/aadir/
   freeswitch/branches/seven/scripts/aadir/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/aadir/README
   freeswitch/branches/seven/scripts/aadir/aadir.js
      - copied unchanged from r11459, /freeswitch/trunk/scripts/aadir/aadir.js
   freeswitch/branches/seven/scripts/api.js
      - copied unchanged from r11459, /freeswitch/trunk/scripts/api.js
   freeswitch/branches/seven/scripts/api.lua
      - copied unchanged from r11459, /freeswitch/trunk/scripts/api.lua
   freeswitch/branches/seven/scripts/build_freeswitch_svn
      - copied unchanged from r11459, /freeswitch/trunk/scripts/build_freeswitch_svn
   freeswitch/branches/seven/scripts/cdr.sql
      - copied unchanged from r11459, /freeswitch/trunk/scripts/cdr.sql
   freeswitch/branches/seven/scripts/combineconf.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/combineconf.pl
   freeswitch/branches/seven/scripts/contrib/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/
   freeswitch/branches/seven/scripts/contrib/Phil/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/Phil/
   freeswitch/branches/seven/scripts/contrib/Phil/pylons/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/Phil/pylons/
   freeswitch/branches/seven/scripts/contrib/dschreiber/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/dschreiber/
   freeswitch/branches/seven/scripts/contrib/dschreiber/mod_nibblebill/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/
   freeswitch/branches/seven/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c
   freeswitch/branches/seven/scripts/contrib/dschreiber/mod_nibblebill/nibblebill.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/nibblebill.conf.xml
   freeswitch/branches/seven/scripts/contrib/evildeshi/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/evildeshi/
   freeswitch/branches/seven/scripts/contrib/intralanman/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/intralanman/
   freeswitch/branches/seven/scripts/contrib/intralanman/C/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/intralanman/C/
   freeswitch/branches/seven/scripts/contrib/intralanman/C/lcr/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/intralanman/C/lcr/
   freeswitch/branches/seven/scripts/contrib/intralanman/C/lcr/sql/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/intralanman/C/lcr/sql/
   freeswitch/branches/seven/scripts/contrib/intralanman/C/lcr/sql/mysql-5.0.sql
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/C/lcr/sql/mysql-5.0.sql
   freeswitch/branches/seven/scripts/contrib/intralanman/C/lcr/sql/postgres-8.3.sql
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/C/lcr/sql/postgres-8.3.sql
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/acl.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/acl.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/conference.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/conference.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/console.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/console.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/dingaling.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/dingaling.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/iax.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/iax.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/ivr.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/ivr.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/limit.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/limit.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/local_stream.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/local_stream.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/post_load_modules.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/post_load_modules.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/rss.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/rss.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/sofia.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/sofia.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/spidermonkey.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/spidermonkey.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/voicemail.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/voicemail.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/configuration/xml_cdr.conf.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/configuration/xml_cdr.conf.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/dialplan_importer.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/dialplan_importer.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/dialplans/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/dialplans/
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/dialplans/lcr.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/dialplans/lcr.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/fs_configuration.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/fs_configuration.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/fs_curl.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/fs_curl.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/fs_dialplan.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/fs_dialplan.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/fs_directory.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/fs_directory.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/global_defines.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/global_defines.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/index.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/index.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/sql/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/sql/
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/sql/mysql-4.0-with-samples.sql
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/sql/mysql-4.0-with-samples.sql
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/sql/mysql-4.0.sql
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/sql/mysql-4.0.sql
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/sql/mysql-5.0-with-samples.sql
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/sql/mysql-5.0-with-samples.sql
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_curl/sql/mysql-5.0.sql
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_curl/sql/mysql-5.0.sql
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_sock/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_sock/
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_sock/fs_sock.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_sock/fs_sock.php
   freeswitch/branches/seven/scripts/contrib/intralanman/PHP/fs_sock/socktest.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/PHP/fs_sock/socktest.php
   freeswitch/branches/seven/scripts/contrib/intralanman/javascript/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/intralanman/javascript/
   freeswitch/branches/seven/scripts/contrib/intralanman/javascript/cnam.js
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/javascript/cnam.js
   freeswitch/branches/seven/scripts/contrib/intralanman/perl/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/intralanman/perl/
   freeswitch/branches/seven/scripts/contrib/intralanman/perl/fspb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/intralanman/perl/fspb
   freeswitch/branches/seven/scripts/contrib/jpalley/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/README
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/Rakefile
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/Rakefile
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/generators/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/generators/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/generators/voice_events_controller/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/generators/voice_events_controller/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/generators/voice_events_controller/templates/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/generators/voice_events_controller/templates/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/generators/voice_events_controller/templates/routes.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/generators/voice_events_controller/templates/routes.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/generators/voice_events_controller/templates/voice_events.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/generators/voice_events_controller/templates/voice_events.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/generators/voice_events_controller/voice_events_controller_generator.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/generators/voice_events_controller/voice_events_controller_generator.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/generators/voice_model/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/generators/voice_model/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/generators/voice_model/templates/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/generators/voice_model/templates/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/generators/voice_model/templates/model.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/generators/voice_model/templates/model.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/generators/voice_model/voice_model_generator.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/generators/voice_model/voice_model_generator.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/init.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/init.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/install.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/install.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/logger_overide.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/logger_overide.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/script_base.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/script_base.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/telegraph.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/telegraph.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_events/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_events/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_events/router.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_events/router.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_events/voice_events_base.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_events/voice_events_base.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/action_controller_extensions.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/action_controller_extensions.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/dispatcher.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/dispatcher.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/interface.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/interface.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/request.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/request.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/response.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/response.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/template.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/core/voice_view/template.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_events_server.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_events_server.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_model/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_model/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_model/voice_channel_model.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_model/voice_channel_model.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_model/voice_conference_model.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_model/voice_conference_model.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_model/voice_connector.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_model/voice_connector.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_model/voice_sip_model.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_model/voice_sip_model.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_view_interface.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_view_interface.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_view_server.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/freeswitch/voice_view_server.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/telegraph.yml
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/telegraph.yml
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/voice_events
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/voice_events
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/lib/voice_view
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/lib/voice_view
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/license.txt
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/license.txt
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/test/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/test/
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/test/ami_test.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/test/ami_test.rb
   freeswitch/branches/seven/scripts/contrib/jpalley/telegraph/trunk/test/rai_test.rb
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/jpalley/telegraph/trunk/test/rai_test.rb
   freeswitch/branches/seven/scripts/contrib/mcollins/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/mcollins/
   freeswitch/branches/seven/scripts/contrib/mcollins/uuid_send_dtmf.lua
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/mcollins/uuid_send_dtmf.lua
   freeswitch/branches/seven/scripts/contrib/mrene/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/mrene/
   freeswitch/branches/seven/scripts/contrib/seven/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/seven/
   freeswitch/branches/seven/scripts/contrib/seven/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/seven/README
   freeswitch/branches/seven/scripts/contrib/trixter/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/
   freeswitch/branches/seven/scripts/contrib/trixter/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/README
   freeswitch/branches/seven/scripts/contrib/trixter/asyncsock.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/asyncsock.pl
   freeswitch/branches/seven/scripts/contrib/trixter/call-progress.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/call-progress.pl
   freeswitch/branches/seven/scripts/contrib/trixter/callcredit.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/callcredit.pl
   freeswitch/branches/seven/scripts/contrib/trixter/calls.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/calls.pl
   freeswitch/branches/seven/scripts/contrib/trixter/conf-dtmf.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/conf-dtmf.pl
   freeswitch/branches/seven/scripts/contrib/trixter/dialplan/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/dialplan/
   freeswitch/branches/seven/scripts/contrib/trixter/dialplan/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/dialplan/README
   freeswitch/branches/seven/scripts/contrib/trixter/dialplan/dialplan.be.xml
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/dialplan/dialplan.be.xml
   freeswitch/branches/seven/scripts/contrib/trixter/dialplan/dialplan.de.xml
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/dialplan/dialplan.de.xml
   freeswitch/branches/seven/scripts/contrib/trixter/dialplan/dialplan.es.xml
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/dialplan/dialplan.es.xml
   freeswitch/branches/seven/scripts/contrib/trixter/dialplan/dialplan.ie.xml
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/dialplan/dialplan.ie.xml
   freeswitch/branches/seven/scripts/contrib/trixter/dialplan/dialplan.nanpa.xml
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/dialplan/dialplan.nanpa.xml
   freeswitch/branches/seven/scripts/contrib/trixter/dialplan/dialplan.nl.xml
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/dialplan/dialplan.nl.xml
   freeswitch/branches/seven/scripts/contrib/trixter/dialplan/dialplan.ve.xml
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/dialplan/dialplan.ve.xml
   freeswitch/branches/seven/scripts/contrib/trixter/dialplan/localized.dialplan.xml
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/dialplan/localized.dialplan.xml
   freeswitch/branches/seven/scripts/contrib/trixter/disa.js
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/disa.js
   freeswitch/branches/seven/scripts/contrib/trixter/faxlib.jm
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/faxlib.jm
   freeswitch/branches/seven/scripts/contrib/trixter/gcccpuopt
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/gcccpuopt
   freeswitch/branches/seven/scripts/contrib/trixter/jp.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/jp.pl
   freeswitch/branches/seven/scripts/contrib/trixter/makecombinedfsxml.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/makecombinedfsxml.pl
   freeswitch/branches/seven/scripts/contrib/trixter/regexptest.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/regexptest.pl
   freeswitch/branches/seven/scripts/contrib/trixter/softphone.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/softphone.pl
   freeswitch/branches/seven/scripts/contrib/trixter/validate-ivr.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/validate-ivr.pl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-cdr/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-cdr/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-cdr/Parse_XML_CDR.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-cdr/Parse_XML_CDR.php
   freeswitch/branches/seven/scripts/contrib/trixter/xml-cdr/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-cdr/README
   freeswitch/branches/seven/scripts/contrib/trixter/xml-cdr/cdr.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-cdr/cdr.php
   freeswitch/branches/seven/scripts/contrib/trixter/xml-cdr/testcdr.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-cdr/testcdr.php
   freeswitch/branches/seven/scripts/contrib/trixter/xml-cdr/testcdr.xml
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-cdr/testcdr.xml
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/.htaccess
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/.htaccess
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/.htpasswd
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/.htpasswd
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/README
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/curlrouting.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/curlrouting.php
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/freeswitch.xml
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/freeswitch.xml
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/modules/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/modules/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/modules/configuration.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/modules/configuration.php
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/modules/dialplan.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/modules/dialplan.php
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/modules/directory.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/modules/directory.php
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/modules/phrases.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/modules/phrases.php
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/alsa.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/alsa.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/conference.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/conference.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/console.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/console.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/default_context.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/default_context.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/dialplan_directory.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/dialplan_directory.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/dingaling.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/dingaling.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/directory.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/directory.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/enum.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/enum.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/event_multicast.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/event_multicast.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/event_socket.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/event_socket.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/freeswitch.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/freeswitch.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/iax.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/iax.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/ivr.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/ivr.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/mod_cdr.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/mod_cdr.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/portaudio.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/portaudio.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/post_load_modules.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/post_load_modules.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/rss.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/rss.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/sofia.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/sofia.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/spidermonkey.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/spidermonkey.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/switch.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/switch.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/syslog.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/syslog.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/voicemail.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/voicemail.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/wanpipe.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/wanpipe.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/woomera.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/woomera.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/xml_cdr.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/xml_cdr.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/xml_curl.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/xml_curl.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/xml_rpc.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/xml_rpc.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/xmpp_event.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/xmpp_event.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/zeroconf.conf.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/configuration/zeroconf.conf.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/dialplan/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/dialplan/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/dialplan/fail.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/dialplan/fail.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/dialplan/frompstn.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/dialplan/frompstn.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/directory/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/directory/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/directory/192.168.153.128.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/directory/192.168.153.128.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/phrases/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/phrases/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/phrases/lang_en.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/phrases/lang_en.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-curl/templates/switch1/phrases/lang_fr.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-curl/templates/switch1/phrases/lang_fr.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/README
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/fsxmlrpc.inc
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/fsxmlrpc.inc
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/index.php
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/index.php
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/templates_c/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/templates_c/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/default/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/default/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/default/channels.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/default/channels.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/default/conference.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/default/conference.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/default/errors.inc
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/default/errors.inc
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/default/errors.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/default/errors.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/default/images/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/default/images/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/default/images/submit.gif
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/default/images/submit.gif
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/default/index.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/default/index.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/default/style.css
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/default/style.css
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/es/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/es/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/es/channels.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/es/channels.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/es/conference.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/es/conference.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/es/errors.inc
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/es/errors.inc
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/es/errors.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/es/errors.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/es/images/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/es/images/
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/es/images/submit.gif
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/es/images/submit.gif
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/es/index.tpl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/es/index.tpl
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/themes/es/style.css
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/themes/es/style.css
   freeswitch/branches/seven/scripts/contrib/trixter/xml-rpc/xmlrpc.inc
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/trixter/xml-rpc/xmlrpc.inc
   freeswitch/branches/seven/scripts/contrib/verifier/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Call.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Call.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/CallManager.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/CallManager.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/CallStateEvent.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/CallStateEvent.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.Designer.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.Designer.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.resx
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.resx
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/EventWatcher.csproj
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/EventWatcher.csproj
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Extension.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Extension.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Form1.Designer.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Form1.Designer.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Form1.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Form1.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Form1.resx
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Form1.resx
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/LabelTextBox.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/LabelTextBox.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Program.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Program.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties/AssemblyInfo.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties/AssemblyInfo.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties/Resources.Designer.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties/Resources.Designer.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties/Resources.resx
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties/Resources.resx
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties/Settings.Designer.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties/Settings.Designer.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties/Settings.settings
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Properties/Settings.settings
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ReadMePlease.txt
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ReadMePlease.txt
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/EventSocket.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/EventSocket.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/FreeSwitch.EventSocket.Test.csproj
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/FreeSwitch.EventSocket.Test.csproj
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/ParserTest.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/ParserTest.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/Program.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/Program.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/Properties/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/Properties/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/Properties/AssemblyInfo.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/Properties/AssemblyInfo.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.sln
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.sln
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/ChannelEvent.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/ChannelEvent.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelAnswer.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelAnswer.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelApplication.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelApplication.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelBridge.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelBridge.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelCreate.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelCreate.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelDestroy.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelDestroy.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelExecute.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelExecute.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelExecuteComplete.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelExecuteComplete.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelHangup.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelHangup.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelOriginate.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelOriginate.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelOutgoing.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelOutgoing.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelPark.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelPark.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelProgress.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelProgress.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelState.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelState.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelUnbridge.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelUnbridge.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelUnpark.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelUnpark.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventCodec.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventCodec.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventDtmf.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventDtmf.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventDtmfStatus.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventDtmfStatus.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventSessionCrash.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventSessionCrash.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelInfo.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelInfo.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/AnyCommand.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/AnyCommand.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Api.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Api.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/AuthCommand.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/AuthCommand.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/CmdBase.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/CmdBase.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/CommandReply.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/CommandReply.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/DeflectCmd.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/DeflectCmd.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/ExecuteJavascript.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/ExecuteJavascript.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/GetVariable.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/GetVariable.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/HoldCmd.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/HoldCmd.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Originate.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Originate.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/ParkCmd.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/ParkCmd.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Playback.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Playback.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/RecordCmd.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/RecordCmd.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/SendEventCmd.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/SendEventCmd.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/SendMsg.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/SendMsg.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/SetVariable.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/SetVariable.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/SleepCmd.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/SleepCmd.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/TransferCmd.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/TransferCmd.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventManager.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventManager.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.pfx
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.pfx
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventApiCommand.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventApiCommand.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventBase.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventBase.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventHeartbeat.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventHeartbeat.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventMessageQuery.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventMessageQuery.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventMessageWaiting.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventMessageWaiting.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventReSchedule.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventReSchedule.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/FreeSwitch.EventSocket.csproj
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/FreeSwitch.EventSocket.csproj
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/General/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/General/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/General/Address.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/General/Address.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/General/ChannelVariable.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/General/ChannelVariable.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/General/SipAddress.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/General/SipAddress.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/General/SofiaSipAddress.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/General/SofiaSipAddress.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/DtmfEventArgs.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/DtmfEventArgs.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/IvrInterface.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/IvrInterface.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/IvrQueue.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/IvrQueue.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/PrivateWaitDtmf.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/PrivateWaitDtmf.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/LogWriterHandler.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/LogWriterHandler.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/PartyInfo.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/PartyInfo.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/PlainEventMsg.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/PlainEventMsg.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Program.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Program.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Properties/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Properties/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Properties/AssemblyInfo.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Properties/AssemblyInfo.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresence.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresence.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceIn.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceIn.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceOut.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceOut.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceProbe.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceProbe.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventRoster.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventRoster.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventSofiaExpire.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventSofiaExpire.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventSofiaRegister.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventSofiaRegister.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/SipEvent.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/SipEvent.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/StringHelper.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/StringHelper.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/StringParser.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/StringParser.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/IvrSocket/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/IvrSocket/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/IvrSocket/IvrSocket.csproj
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/IvrSocket/IvrSocket.csproj
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/IvrSocket/Program.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/IvrSocket/Program.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/IvrSocket/Properties/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/IvrSocket/Properties/
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/IvrSocket/Properties/AssemblyInfo.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/IvrSocket/Properties/AssemblyInfo.cs
   freeswitch/branches/seven/scripts/contrib/verifier/EventSocket/trunk/IvrSocket/Voicemail.cs
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/IvrSocket/Voicemail.cs
   freeswitch/branches/seven/scripts/contrib/vile/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/vile/
   freeswitch/branches/seven/scripts/contrib/vile/fnd762863yG.html
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/vile/fnd762863yG.html
   freeswitch/branches/seven/scripts/contrib/vile/fsconsole.c
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/vile/fsconsole.c
   freeswitch/branches/seven/scripts/contrib/wasim/
      - copied from r11459, /freeswitch/trunk/scripts/contrib/wasim/
   freeswitch/branches/seven/scripts/contrib/wasim/cFS.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/wasim/cFS.pl
   freeswitch/branches/seven/scripts/contrib/wasim/cdrload.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/wasim/cdrload.pl
   freeswitch/branches/seven/scripts/contrib/wasim/fshour.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/contrib/wasim/fshour.pl
   freeswitch/branches/seven/scripts/debug_sofia.sh
      - copied unchanged from r11459, /freeswitch/trunk/scripts/debug_sofia.sh
   freeswitch/branches/seven/scripts/dtmftest.js
      - copied unchanged from r11459, /freeswitch/trunk/scripts/dtmftest.js
   freeswitch/branches/seven/scripts/easyroute_mysql.sql
      - copied unchanged from r11459, /freeswitch/trunk/scripts/easyroute_mysql.sql
   freeswitch/branches/seven/scripts/extract_log_range.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/extract_log_range.pl
   freeswitch/branches/seven/scripts/freeswitch-gcore
      - copied unchanged from r11459, /freeswitch/trunk/scripts/freeswitch-gcore
   freeswitch/branches/seven/scripts/freeswitch-reporter
      - copied unchanged from r11459, /freeswitch/trunk/scripts/freeswitch-reporter
   freeswitch/branches/seven/scripts/freeswitch.sh
      - copied unchanged from r11459, /freeswitch/trunk/scripts/freeswitch.sh
   freeswitch/branches/seven/scripts/fsxs.in
      - copied unchanged from r11459, /freeswitch/trunk/scripts/fsxs.in
   freeswitch/branches/seven/scripts/gentls_cert.in
      - copied unchanged from r11459, /freeswitch/trunk/scripts/gentls_cert.in
   freeswitch/branches/seven/scripts/js_modules/
      - copied from r11459, /freeswitch/trunk/scripts/js_modules/
   freeswitch/branches/seven/scripts/js_modules/SpeechTools.jm
      - copied unchanged from r11459, /freeswitch/trunk/scripts/js_modules/SpeechTools.jm
   freeswitch/branches/seven/scripts/lua/
      - copied from r11459, /freeswitch/trunk/scripts/lua/
   freeswitch/branches/seven/scripts/lua/callback.lua
      - copied unchanged from r11459, /freeswitch/trunk/scripts/lua/callback.lua
   freeswitch/branches/seven/scripts/lua/helloworld.lua
      - copied unchanged from r11459, /freeswitch/trunk/scripts/lua/helloworld.lua
   freeswitch/branches/seven/scripts/lua/mwi_event.lua
      - copied unchanged from r11459, /freeswitch/trunk/scripts/lua/mwi_event.lua
   freeswitch/branches/seven/scripts/lua/originate.lua
      - copied unchanged from r11459, /freeswitch/trunk/scripts/lua/originate.lua
   freeswitch/branches/seven/scripts/m4a-to-wav.sh
      - copied unchanged from r11459, /freeswitch/trunk/scripts/m4a-to-wav.sh
   freeswitch/branches/seven/scripts/mklm
      - copied unchanged from r11459, /freeswitch/trunk/scripts/mklm
   freeswitch/branches/seven/scripts/multicast/
      - copied from r11459, /freeswitch/trunk/scripts/multicast/
   freeswitch/branches/seven/scripts/multicast/recv.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/multicast/recv.pl
   freeswitch/branches/seven/scripts/multicast/send.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/multicast/send.pl
   freeswitch/branches/seven/scripts/mytest.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/mytest.py
   freeswitch/branches/seven/scripts/perl/
      - copied from r11459, /freeswitch/trunk/scripts/perl/
   freeswitch/branches/seven/scripts/perl/mwi_event.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/perl/mwi_event.pl
   freeswitch/branches/seven/scripts/perl/originate.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/perl/originate.pl
   freeswitch/branches/seven/scripts/pizza.js
      - copied unchanged from r11459, /freeswitch/trunk/scripts/pizza.js
   freeswitch/branches/seven/scripts/ps_pizza.js
      - copied unchanged from r11459, /freeswitch/trunk/scripts/ps_pizza.js
   freeswitch/branches/seven/scripts/py_modules/
      - copied from r11459, /freeswitch/trunk/scripts/py_modules/
   freeswitch/branches/seven/scripts/py_modules/__init__.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/py_modules/__init__.py
   freeswitch/branches/seven/scripts/py_modules/speechtools.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/py_modules/speechtools.py
   freeswitch/branches/seven/scripts/quick_lm.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/quick_lm.pl
   freeswitch/branches/seven/scripts/recipewizard.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/recipewizard.py
   freeswitch/branches/seven/scripts/rss/
      - copied from r11459, /freeswitch/trunk/scripts/rss/
   freeswitch/branches/seven/scripts/rss/rss2ivr.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/rss/rss2ivr.pl
   freeswitch/branches/seven/scripts/rss/syncrss.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/rss/syncrss.pl
   freeswitch/branches/seven/scripts/s25vmail/
      - copied from r11459, /freeswitch/trunk/scripts/s25vmail/
   freeswitch/branches/seven/scripts/s25vmail/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/s25vmail/README
   freeswitch/branches/seven/scripts/s25vmail/s25vmail.js
      - copied unchanged from r11459, /freeswitch/trunk/scripts/s25vmail/s25vmail.js
   freeswitch/branches/seven/scripts/s25vmail/s25vmail_mwi.c
      - copied unchanged from r11459, /freeswitch/trunk/scripts/s25vmail/s25vmail_mwi.c
   freeswitch/branches/seven/scripts/scenario/
      - copied from r11459, /freeswitch/trunk/scripts/scenario/
   freeswitch/branches/seven/scripts/scenario/attended_transfer.button
      - copied unchanged from r11459, /freeswitch/trunk/scripts/scenario/attended_transfer.button
   freeswitch/branches/seven/scripts/scenario/blind_transfer.button
      - copied unchanged from r11459, /freeswitch/trunk/scripts/scenario/blind_transfer.button
   freeswitch/branches/seven/scripts/scenario/offhook.button
      - copied unchanged from r11459, /freeswitch/trunk/scripts/scenario/offhook.button
   freeswitch/branches/seven/scripts/scenario/phones.cfg
      - copied unchanged from r11459, /freeswitch/trunk/scripts/scenario/phones.cfg
   freeswitch/branches/seven/scripts/scenario/runscenario.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/scenario/runscenario.pl
   freeswitch/branches/seven/scripts/sendmail
      - copied unchanged from r11459, /freeswitch/trunk/scripts/sendmail
   freeswitch/branches/seven/scripts/sipsetup
      - copied unchanged from r11459, /freeswitch/trunk/scripts/sipsetup
   freeswitch/branches/seven/scripts/socket/   (props changed)
      - copied from r11459, /freeswitch/trunk/scripts/socket/
   freeswitch/branches/seven/scripts/socket/FreeSWITCH/
      - copied from r11459, /freeswitch/trunk/scripts/socket/FreeSWITCH/
   freeswitch/branches/seven/scripts/socket/FreeSWITCH/ChangeLog
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/FreeSWITCH/ChangeLog
   freeswitch/branches/seven/scripts/socket/FreeSWITCH/Client.pm
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/FreeSWITCH/Client.pm
   freeswitch/branches/seven/scripts/socket/FreeSWITCH/Makefile.PL
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/FreeSWITCH/Makefile.PL
   freeswitch/branches/seven/scripts/socket/FreeSWITCH/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/FreeSWITCH/README
   freeswitch/branches/seven/scripts/socket/FreeSWITCH/debian/
      - copied from r11459, /freeswitch/trunk/scripts/socket/FreeSWITCH/debian/
   freeswitch/branches/seven/scripts/socket/FreeSWITCH/debian/changelog
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/FreeSWITCH/debian/changelog
   freeswitch/branches/seven/scripts/socket/FreeSWITCH/debian/compat
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/FreeSWITCH/debian/compat
   freeswitch/branches/seven/scripts/socket/FreeSWITCH/debian/control
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/FreeSWITCH/debian/control
   freeswitch/branches/seven/scripts/socket/FreeSWITCH/debian/copyright
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/FreeSWITCH/debian/copyright
   freeswitch/branches/seven/scripts/socket/FreeSWITCH/debian/rules
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/FreeSWITCH/debian/rules
   freeswitch/branches/seven/scripts/socket/freepy/
      - copied from r11459, /freeswitch/trunk/scripts/socket/freepy/
   freeswitch/branches/seven/scripts/socket/freepy/INSTALL
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/INSTALL
   freeswitch/branches/seven/scripts/socket/freepy/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/README
   freeswitch/branches/seven/scripts/socket/freepy/__init__.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/__init__.py
   freeswitch/branches/seven/scripts/socket/freepy/apirequest.sm
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/apirequest.sm
   freeswitch/branches/seven/scripts/socket/freepy/apirequest_sm.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/apirequest_sm.py
   freeswitch/branches/seven/scripts/socket/freepy/bgapirequest.sm
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/bgapirequest.sm
   freeswitch/branches/seven/scripts/socket/freepy/bgapirequest_sm.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/bgapirequest_sm.py
   freeswitch/branches/seven/scripts/socket/freepy/fseventlistener.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/fseventlistener.py
   freeswitch/branches/seven/scripts/socket/freepy/fshelper.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/fshelper.py
   freeswitch/branches/seven/scripts/socket/freepy/globals.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/globals.py
   freeswitch/branches/seven/scripts/socket/freepy/loginrequest.sm
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/loginrequest.sm
   freeswitch/branches/seven/scripts/socket/freepy/loginrequest_sm.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/loginrequest_sm.py
   freeswitch/branches/seven/scripts/socket/freepy/models.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/models.py
   freeswitch/branches/seven/scripts/socket/freepy/request.py
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/freepy/request.py
   freeswitch/branches/seven/scripts/socket/fs.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/fs.pl
   freeswitch/branches/seven/scripts/socket/fsconsole.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/fsconsole.pl
   freeswitch/branches/seven/scripts/socket/sock.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/sock.pl
   freeswitch/branches/seven/scripts/socket/socket2me/   (props changed)
      - copied from r11459, /freeswitch/trunk/scripts/socket/socket2me/
   freeswitch/branches/seven/scripts/socket/socket2me/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/socket2me/Makefile
   freeswitch/branches/seven/scripts/socket/socket2me/README
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/socket2me/README
   freeswitch/branches/seven/scripts/socket/socket2me/socket2me.c
      - copied unchanged from r11459, /freeswitch/trunk/scripts/socket/socket2me/socket2me.c
   freeswitch/branches/seven/scripts/tonegen/
      - copied from r11459, /freeswitch/trunk/scripts/tonegen/
   freeswitch/branches/seven/scripts/tonegen/rtttl2tgml.pl
      - copied unchanged from r11459, /freeswitch/trunk/scripts/tonegen/rtttl2tgml.pl
   freeswitch/branches/seven/scripts/trace/
      - copied from r11459, /freeswitch/trunk/scripts/trace/
   freeswitch/branches/seven/scripts/trace/sipgrep
      - copied unchanged from r11459, /freeswitch/trunk/scripts/trace/sipgrep
   freeswitch/branches/seven/src/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/
   freeswitch/branches/seven/src/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/src/Makefile.am
   freeswitch/branches/seven/src/g711.c
      - copied unchanged from r11459, /freeswitch/trunk/src/g711.c
   freeswitch/branches/seven/src/include/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/include/
   freeswitch/branches/seven/src/include/SimpleGlob.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/SimpleGlob.h
   freeswitch/branches/seven/src/include/g711.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/g711.h
   freeswitch/branches/seven/src/include/private/
      - copied from r11459, /freeswitch/trunk/src/include/private/
   freeswitch/branches/seven/src/include/private/switch_core_pvt.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/private/switch_core_pvt.h
   freeswitch/branches/seven/src/include/switch.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch.h
   freeswitch/branches/seven/src/include/switch_am_config.h.in
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_am_config.h.in
   freeswitch/branches/seven/src/include/switch_apr.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_apr.h
   freeswitch/branches/seven/src/include/switch_bitpack.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_bitpack.h
   freeswitch/branches/seven/src/include/switch_buffer.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_buffer.h
   freeswitch/branches/seven/src/include/switch_caller.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_caller.h
   freeswitch/branches/seven/src/include/switch_channel.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_channel.h
   freeswitch/branches/seven/src/include/switch_config.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_config.h
   freeswitch/branches/seven/src/include/switch_console.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_console.h
   freeswitch/branches/seven/src/include/switch_core.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_core.h
   freeswitch/branches/seven/src/include/switch_core_db.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_core_db.h
   freeswitch/branches/seven/src/include/switch_core_event_hook.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_core_event_hook.h
   freeswitch/branches/seven/src/include/switch_cpp.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_cpp.h
   freeswitch/branches/seven/src/include/switch_dso.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_dso.h
   freeswitch/branches/seven/src/include/switch_event.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_event.h
   freeswitch/branches/seven/src/include/switch_frame.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_frame.h
   freeswitch/branches/seven/src/include/switch_ivr.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_ivr.h
   freeswitch/branches/seven/src/include/switch_loadable_module.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_loadable_module.h
   freeswitch/branches/seven/src/include/switch_log.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_log.h
   freeswitch/branches/seven/src/include/switch_module_interfaces.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_module_interfaces.h
   freeswitch/branches/seven/src/include/switch_odbc.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_odbc.h
   freeswitch/branches/seven/src/include/switch_platform.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_platform.h
   freeswitch/branches/seven/src/include/switch_regex.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_regex.h
   freeswitch/branches/seven/src/include/switch_resample.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_resample.h
   freeswitch/branches/seven/src/include/switch_rtp.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_rtp.h
   freeswitch/branches/seven/src/include/switch_scheduler.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_scheduler.h
   freeswitch/branches/seven/src/include/switch_stun.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_stun.h
   freeswitch/branches/seven/src/include/switch_types.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_types.h
   freeswitch/branches/seven/src/include/switch_utils.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_utils.h
   freeswitch/branches/seven/src/include/switch_version.h.template
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_version.h.template
   freeswitch/branches/seven/src/include/switch_xml.h
      - copied unchanged from r11459, /freeswitch/trunk/src/include/switch_xml.h
   freeswitch/branches/seven/src/inet_pton.c
      - copied unchanged from r11459, /freeswitch/trunk/src/inet_pton.c
   freeswitch/branches/seven/src/mod/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/
   freeswitch/branches/seven/src/mod/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/Makefile.am
   freeswitch/branches/seven/src/mod/applications/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/
   freeswitch/branches/seven/src/mod/applications/mod_commands/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_commands/
   freeswitch/branches/seven/src/mod/applications/mod_commands/mod_commands.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_commands/mod_commands.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c
   freeswitch/branches/seven/src/mod/applications/mod_commands/mod_commands.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_conference/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_conference/
   freeswitch/branches/seven/src/mod/applications/mod_conference/mod_conference.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_conference/mod_conference.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
   freeswitch/branches/seven/src/mod/applications/mod_conference/mod_conference.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_dptools/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_dptools/
   freeswitch/branches/seven/src/mod/applications/mod_dptools/mod_dptools.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_dptools/mod_dptools.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
   freeswitch/branches/seven/src/mod/applications/mod_dptools/mod_dptools.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_easyroute/
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_easyroute/
   freeswitch/branches/seven/src/mod/applications/mod_easyroute/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_easyroute/Makefile
   freeswitch/branches/seven/src/mod/applications/mod_easyroute/mod_easyroute.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c
   freeswitch/branches/seven/src/mod/applications/mod_enum/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_enum/
   freeswitch/branches/seven/src/mod/applications/mod_enum/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_enum/Makefile
   freeswitch/branches/seven/src/mod/applications/mod_enum/mod_enum.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_enum/mod_enum.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_enum/mod_enum.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_enum/mod_enum.c
   freeswitch/branches/seven/src/mod/applications/mod_enum/mod_enum.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_enum/mod_enum.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_esf/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_esf/
   freeswitch/branches/seven/src/mod/applications/mod_esf/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_esf/Makefile
   freeswitch/branches/seven/src/mod/applications/mod_esf/mod_esf.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_esf/mod_esf.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_esf/mod_esf.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_esf/mod_esf.c
   freeswitch/branches/seven/src/mod/applications/mod_esf/mod_esf.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_esf/mod_esf.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_expr/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/
   freeswitch/branches/seven/src/mod/applications/mod_expr/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/Makefile
   freeswitch/branches/seven/src/mod/applications/mod_expr/conio.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/conio.h
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprconf.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprconf.h
   freeswitch/branches/seven/src/mod/applications/mod_expr/expreval.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/expreval.c
   freeswitch/branches/seven/src/mod/applications/mod_expr/expreval.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/expreval.h
   freeswitch/branches/seven/src/mod/applications/mod_expr/expreval.html
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/expreval.html
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprfunc.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprfunc.c
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprilfs.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprilfs.h
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprincl.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprincl.h
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprinit.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprinit.c
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprmem.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprmem.c
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprmem.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprmem.h
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprobj.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprobj.c
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprpars.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprpars.c
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprpriv.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprpriv.h
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprtmpl.html
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprtmpl.html
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprutil.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprutil.c
   freeswitch/branches/seven/src/mod/applications/mod_expr/exprval.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/exprval.c
   freeswitch/branches/seven/src/mod/applications/mod_expr/license.txt
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/license.txt
   freeswitch/branches/seven/src/mod/applications/mod_expr/mod_expr.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/mod_expr.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_expr/mod_expr.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/mod_expr.c
   freeswitch/branches/seven/src/mod/applications/mod_expr/mod_expr.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/mod_expr.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_expr/readme.txt
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_expr/readme.txt
   freeswitch/branches/seven/src/mod/applications/mod_fax/
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_fax/
   freeswitch/branches/seven/src/mod/applications/mod_fax/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_fax/Makefile
   freeswitch/branches/seven/src/mod/applications/mod_fax/mod_fax.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c
   freeswitch/branches/seven/src/mod/applications/mod_fifo/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_fifo/
   freeswitch/branches/seven/src/mod/applications/mod_fifo/mod_fifo.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_fifo/mod_fifo.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c
   freeswitch/branches/seven/src/mod/applications/mod_fifo/mod_fifo.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_fsv/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_fsv/
   freeswitch/branches/seven/src/mod/applications/mod_fsv/mod_fsv.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_fsv/mod_fsv.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_fsv/mod_fsv.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_fsv/mod_fsv.c
   freeswitch/branches/seven/src/mod/applications/mod_fsv/mod_fsv.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_fsv/mod_fsv.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_http/
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_http/
   freeswitch/branches/seven/src/mod/applications/mod_http/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/Makefile
   freeswitch/branches/seven/src/mod/applications/mod_http/arraylist.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/arraylist.c
   freeswitch/branches/seven/src/mod/applications/mod_http/arraylist.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/arraylist.h
   freeswitch/branches/seven/src/mod/applications/mod_http/bits.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/bits.h
   freeswitch/branches/seven/src/mod/applications/mod_http/config.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/config.h
   freeswitch/branches/seven/src/mod/applications/mod_http/debug.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/debug.c
   freeswitch/branches/seven/src/mod/applications/mod_http/debug.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/debug.h
   freeswitch/branches/seven/src/mod/applications/mod_http/http_req.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/http_req.c
   freeswitch/branches/seven/src/mod/applications/mod_http/http_req.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/http_req.h
   freeswitch/branches/seven/src/mod/applications/mod_http/json.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/json.h
   freeswitch/branches/seven/src/mod/applications/mod_http/json_object.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/json_object.c
   freeswitch/branches/seven/src/mod/applications/mod_http/json_object.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/json_object.h
   freeswitch/branches/seven/src/mod/applications/mod_http/json_object_private.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/json_object_private.h
   freeswitch/branches/seven/src/mod/applications/mod_http/json_tokener.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/json_tokener.c
   freeswitch/branches/seven/src/mod/applications/mod_http/json_tokener.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/json_tokener.h
   freeswitch/branches/seven/src/mod/applications/mod_http/json_util.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/json_util.c
   freeswitch/branches/seven/src/mod/applications/mod_http/json_util.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/json_util.h
   freeswitch/branches/seven/src/mod/applications/mod_http/linkhash.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/linkhash.c
   freeswitch/branches/seven/src/mod/applications/mod_http/linkhash.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/linkhash.h
   freeswitch/branches/seven/src/mod/applications/mod_http/mod_http.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/mod_http.c
   freeswitch/branches/seven/src/mod/applications/mod_http/printbuf.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/printbuf.c
   freeswitch/branches/seven/src/mod/applications/mod_http/printbuf.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/printbuf.h
   freeswitch/branches/seven/src/mod/applications/mod_http/url_encoding.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/url_encoding.c
   freeswitch/branches/seven/src/mod/applications/mod_http/url_encoding.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_http/url_encoding.h
   freeswitch/branches/seven/src/mod/applications/mod_lcr/
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_lcr/
   freeswitch/branches/seven/src/mod/applications/mod_lcr/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_lcr/Makefile
   freeswitch/branches/seven/src/mod/applications/mod_lcr/mod_lcr.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c
   freeswitch/branches/seven/src/mod/applications/mod_limit/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_limit/
   freeswitch/branches/seven/src/mod/applications/mod_limit/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_limit/Makefile
   freeswitch/branches/seven/src/mod/applications/mod_limit/mod_limit.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_limit/mod_limit.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c
   freeswitch/branches/seven/src/mod/applications/mod_limit/mod_limit.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_rss/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_rss/
   freeswitch/branches/seven/src/mod/applications/mod_rss/mod_rss.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_rss/mod_rss.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c
   freeswitch/branches/seven/src/mod/applications/mod_rss/mod_rss.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_skel/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_skel/
   freeswitch/branches/seven/src/mod/applications/mod_skel/mod_skel.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_skel/mod_skel.c
   freeswitch/branches/seven/src/mod/applications/mod_snom/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_snom/
   freeswitch/branches/seven/src/mod/applications/mod_snom/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_snom/Makefile
   freeswitch/branches/seven/src/mod/applications/mod_snom/mod_snom.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_snom/mod_snom.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_snom/mod_snom.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_snom/mod_snom.c
   freeswitch/branches/seven/src/mod/applications/mod_soundtouch/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_soundtouch/
   freeswitch/branches/seven/src/mod/applications/mod_soundtouch/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_soundtouch/Makefile
   freeswitch/branches/seven/src/mod/applications/mod_soundtouch/mod_soundtouch.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_soundtouch/mod_soundtouch.cpp
   freeswitch/branches/seven/src/mod/applications/mod_stress/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_stress/
   freeswitch/branches/seven/src/mod/applications/mod_stress/FFTReal.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_stress/FFTReal.cpp
   freeswitch/branches/seven/src/mod/applications/mod_stress/FFTReal.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_stress/FFTReal.h
   freeswitch/branches/seven/src/mod/applications/mod_stress/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_stress/Makefile
   freeswitch/branches/seven/src/mod/applications/mod_stress/mod_stress.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_stress/mod_stress.cpp
   freeswitch/branches/seven/src/mod/applications/mod_vmd/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_vmd/
   freeswitch/branches/seven/src/mod/applications/mod_vmd/mod_vmd.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_vmd/mod_vmd.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_vmd/mod_vmd.c
   freeswitch/branches/seven/src/mod/applications/mod_voicemail/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/applications/mod_voicemail/
   freeswitch/branches/seven/src/mod/applications/mod_voicemail/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile
   freeswitch/branches/seven/src/mod/applications/mod_voicemail/mod_voicemail.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.2008.vcproj
   freeswitch/branches/seven/src/mod/applications/mod_voicemail/mod_voicemail.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c
   freeswitch/branches/seven/src/mod/applications/mod_voicemail/mod_voicemail.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.vcproj
   freeswitch/branches/seven/src/mod/asr_tts/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/asr_tts/
   freeswitch/branches/seven/src/mod/asr_tts/mod_cepstral/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_cepstral/
   freeswitch/branches/seven/src/mod/asr_tts/mod_cepstral/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_cepstral/Makefile
   freeswitch/branches/seven/src/mod/asr_tts/mod_cepstral/mod_cepstral.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_cepstral/mod_cepstral.2008.vcproj
   freeswitch/branches/seven/src/mod/asr_tts/mod_cepstral/mod_cepstral.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_cepstral/mod_cepstral.c
   freeswitch/branches/seven/src/mod/asr_tts/mod_cepstral/mod_cepstral.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_cepstral/mod_cepstral.vcproj
   freeswitch/branches/seven/src/mod/asr_tts/mod_flite/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_flite/
   freeswitch/branches/seven/src/mod/asr_tts/mod_flite/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_flite/Makefile
   freeswitch/branches/seven/src/mod/asr_tts/mod_flite/mod_flite.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_flite/mod_flite.2008.vcproj
   freeswitch/branches/seven/src/mod/asr_tts/mod_flite/mod_flite.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_flite/mod_flite.c
   freeswitch/branches/seven/src/mod/asr_tts/mod_pocketsphinx/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_pocketsphinx/
   freeswitch/branches/seven/src/mod/asr_tts/mod_pocketsphinx/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_pocketsphinx/Makefile
   freeswitch/branches/seven/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.2008.vcproj
   freeswitch/branches/seven/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c
   freeswitch/branches/seven/src/mod/codecs/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/codecs/
   freeswitch/branches/seven/src/mod/codecs/mod_amr/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/codecs/mod_amr/
   freeswitch/branches/seven/src/mod/codecs/mod_amr/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_amr/Makefile
   freeswitch/branches/seven/src/mod/codecs/mod_amr/mod_amr.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_amr/mod_amr.2008.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_amr/mod_amr.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_amr/mod_amr.c
   freeswitch/branches/seven/src/mod/codecs/mod_amr/mod_amr.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_amr/mod_amr.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_celt/
      - copied from r11459, /freeswitch/trunk/src/mod/codecs/mod_celt/
   freeswitch/branches/seven/src/mod/codecs/mod_celt/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_celt/Makefile
   freeswitch/branches/seven/src/mod/codecs/mod_celt/mod_celt.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_celt/mod_celt.c
   freeswitch/branches/seven/src/mod/codecs/mod_g723_1/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/codecs/mod_g723_1/
   freeswitch/branches/seven/src/mod/codecs/mod_g723_1/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_g723_1/Makefile
   freeswitch/branches/seven/src/mod/codecs/mod_g723_1/mod_g723_1.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_g723_1/mod_g723_1.2008.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_g723_1/mod_g723_1.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_g723_1/mod_g723_1.c
   freeswitch/branches/seven/src/mod/codecs/mod_g723_1/mod_g723_1.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_g723_1/mod_g723_1.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_g729/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/codecs/mod_g729/
   freeswitch/branches/seven/src/mod/codecs/mod_g729/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_g729/Makefile
   freeswitch/branches/seven/src/mod/codecs/mod_g729/mod_g729.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_g729/mod_g729.2008.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_g729/mod_g729.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_g729/mod_g729.c
   freeswitch/branches/seven/src/mod/codecs/mod_g729/mod_g729.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_g729/mod_g729.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_h26x/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/codecs/mod_h26x/
   freeswitch/branches/seven/src/mod/codecs/mod_h26x/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_h26x/Makefile
   freeswitch/branches/seven/src/mod/codecs/mod_h26x/mod_h26x.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_h26x/mod_h26x.2008.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_h26x/mod_h26x.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_h26x/mod_h26x.c
   freeswitch/branches/seven/src/mod/codecs/mod_h26x/mod_h26x.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_h26x/mod_h26x.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_ilbc/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/codecs/mod_ilbc/
   freeswitch/branches/seven/src/mod/codecs/mod_ilbc/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_ilbc/Makefile
   freeswitch/branches/seven/src/mod/codecs/mod_ilbc/mod_ilbc.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_ilbc/mod_ilbc.2008.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_ilbc/mod_ilbc.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_ilbc/mod_ilbc.c
   freeswitch/branches/seven/src/mod/codecs/mod_ilbc/mod_ilbc.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_ilbc/mod_ilbc.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_siren/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/codecs/mod_siren/
   freeswitch/branches/seven/src/mod/codecs/mod_siren/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_siren/Makefile
   freeswitch/branches/seven/src/mod/codecs/mod_siren/mod_siren.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_siren/mod_siren.2008.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_siren/mod_siren.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_siren/mod_siren.c
   freeswitch/branches/seven/src/mod/codecs/mod_speex/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/codecs/mod_speex/
   freeswitch/branches/seven/src/mod/codecs/mod_speex/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_speex/Makefile
   freeswitch/branches/seven/src/mod/codecs/mod_speex/mod_speex.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_speex/mod_speex.2008.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_speex/mod_speex.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_speex/mod_speex.c
   freeswitch/branches/seven/src/mod/codecs/mod_speex/mod_speex.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_speex/mod_speex.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_voipcodecs/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/codecs/mod_voipcodecs/
   freeswitch/branches/seven/src/mod/codecs/mod_voipcodecs/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_voipcodecs/Makefile
   freeswitch/branches/seven/src/mod/codecs/mod_voipcodecs/mod_voipcodecs.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_voipcodecs/mod_voipcodecs.2008.vcproj
   freeswitch/branches/seven/src/mod/codecs/mod_voipcodecs/mod_voipcodecs.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_voipcodecs/mod_voipcodecs.c
   freeswitch/branches/seven/src/mod/codecs/mod_voipcodecs/mod_voipcodecs.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/codecs/mod_voipcodecs/mod_voipcodecs.vcproj
   freeswitch/branches/seven/src/mod/dialplans/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/dialplans/
   freeswitch/branches/seven/src/mod/dialplans/mod_dialplan_asterisk/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/dialplans/mod_dialplan_asterisk/
   freeswitch/branches/seven/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.2008.vcproj
   freeswitch/branches/seven/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c
   freeswitch/branches/seven/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.vcproj
   freeswitch/branches/seven/src/mod/dialplans/mod_dialplan_directory/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/dialplans/mod_dialplan_directory/
   freeswitch/branches/seven/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.2008.vcproj
   freeswitch/branches/seven/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.c
   freeswitch/branches/seven/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.vcproj
   freeswitch/branches/seven/src/mod/dialplans/mod_dialplan_xml/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/dialplans/mod_dialplan_xml/
   freeswitch/branches/seven/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.2008.vcproj
   freeswitch/branches/seven/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c
   freeswitch/branches/seven/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.vcproj
   freeswitch/branches/seven/src/mod/directories/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/directories/
   freeswitch/branches/seven/src/mod/directories/mod_ldap/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/directories/mod_ldap/
   freeswitch/branches/seven/src/mod/directories/mod_ldap/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/directories/mod_ldap/Makefile
   freeswitch/branches/seven/src/mod/directories/mod_ldap/mod_ldap.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/directories/mod_ldap/mod_ldap.2008.vcproj
   freeswitch/branches/seven/src/mod/directories/mod_ldap/mod_ldap.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/directories/mod_ldap/mod_ldap.c
   freeswitch/branches/seven/src/mod/directories/mod_ldap/mod_ldap.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/directories/mod_ldap/mod_ldap.vcproj
   freeswitch/branches/seven/src/mod/endpoints/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/endpoints/
   freeswitch/branches/seven/src/mod/endpoints/mod_alsa/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/endpoints/mod_alsa/
   freeswitch/branches/seven/src/mod/endpoints/mod_alsa/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_alsa/Makefile
   freeswitch/branches/seven/src/mod/endpoints/mod_alsa/mod_alsa.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_alsa/mod_alsa.c
   freeswitch/branches/seven/src/mod/endpoints/mod_dingaling/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/endpoints/mod_dingaling/
   freeswitch/branches/seven/src/mod/endpoints/mod_dingaling/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_dingaling/Makefile
   freeswitch/branches/seven/src/mod/endpoints/mod_dingaling/mod_dingaling.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.2008.vcproj
   freeswitch/branches/seven/src/mod/endpoints/mod_dingaling/mod_dingaling.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c
   freeswitch/branches/seven/src/mod/endpoints/mod_dingaling/mod_dingaling.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.vcproj
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/Makefile
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/answer.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/answer.h
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/frame.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/frame.h
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/iax-client.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/iax-client.h
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/iax-mutex.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/iax-mutex.c
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/iax-mutex.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/iax-mutex.h
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/iax.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/iax.c
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/iax.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/iax.h
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/iax2-parser.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/iax2-parser.c
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/iax2-parser.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/iax2-parser.h
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/iax2.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/iax2.h
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/jitterbuf.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/jitterbuf.c
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/jitterbuf.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/jitterbuf.h
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/md5.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/md5.c
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/md5.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/md5.h
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/mod_iax.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/mod_iax.2008.vcproj
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/mod_iax.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/mod_iax.c
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/mod_iax.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/mod_iax.vcproj
   freeswitch/branches/seven/src/mod/endpoints/mod_iax/winpoop.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_iax/winpoop.h
   freeswitch/branches/seven/src/mod/endpoints/mod_loopback/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/endpoints/mod_loopback/
   freeswitch/branches/seven/src/mod/endpoints/mod_loopback/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_loopback/Makefile
   freeswitch/branches/seven/src/mod/endpoints/mod_loopback/mod_loopback.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.2008.vcproj
   freeswitch/branches/seven/src/mod/endpoints/mod_loopback/mod_loopback.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c
   freeswitch/branches/seven/src/mod/endpoints/mod_opal/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/endpoints/mod_opal/
   freeswitch/branches/seven/src/mod/endpoints/mod_opal/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_opal/Makefile
   freeswitch/branches/seven/src/mod/endpoints/mod_opal/mod_opal.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp
   freeswitch/branches/seven/src/mod/endpoints/mod_opal/mod_opal.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h
   freeswitch/branches/seven/src/mod/endpoints/mod_opal/mod_opal_2005.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal_2005.vcproj
   freeswitch/branches/seven/src/mod/endpoints/mod_opal/mod_opal_2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal_2008.vcproj
   freeswitch/branches/seven/src/mod/endpoints/mod_portaudio/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/endpoints/mod_portaudio/
   freeswitch/branches/seven/src/mod/endpoints/mod_portaudio/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_portaudio/Makefile
   freeswitch/branches/seven/src/mod/endpoints/mod_portaudio/mod_PortAudio.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_PortAudio.2008.vcproj
   freeswitch/branches/seven/src/mod/endpoints/mod_portaudio/mod_PortAudio.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_PortAudio.vcproj
   freeswitch/branches/seven/src/mod/endpoints/mod_portaudio/mod_portaudio.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
   freeswitch/branches/seven/src/mod/endpoints/mod_portaudio/pa_ringbuffer.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_portaudio/pa_ringbuffer.c
   freeswitch/branches/seven/src/mod/endpoints/mod_portaudio/pa_ringbuffer.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_portaudio/pa_ringbuffer.h
   freeswitch/branches/seven/src/mod/endpoints/mod_portaudio/pablio.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.c
   freeswitch/branches/seven/src/mod/endpoints/mod_portaudio/pablio.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_portaudio/pablio.h
   freeswitch/branches/seven/src/mod/endpoints/mod_reference/
      - copied from r11459, /freeswitch/trunk/src/mod/endpoints/mod_reference/
   freeswitch/branches/seven/src/mod/endpoints/mod_reference/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_reference/Makefile
   freeswitch/branches/seven/src/mod/endpoints/mod_reference/mod_reference.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_reference/mod_reference.c
   freeswitch/branches/seven/src/mod/endpoints/mod_sofia/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/endpoints/mod_sofia/
   freeswitch/branches/seven/src/mod/endpoints/mod_sofia/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_sofia/Makefile.am
   freeswitch/branches/seven/src/mod/endpoints/mod_sofia/mod_sofia.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.2008.vcproj
   freeswitch/branches/seven/src/mod/endpoints/mod_sofia/mod_sofia.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
   freeswitch/branches/seven/src/mod/endpoints/mod_sofia/mod_sofia.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
   freeswitch/branches/seven/src/mod/endpoints/mod_sofia/mod_sofia.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.vcproj
   freeswitch/branches/seven/src/mod/endpoints/mod_sofia/sofia.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
   freeswitch/branches/seven/src/mod/endpoints/mod_sofia/sofia_glue.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
   freeswitch/branches/seven/src/mod/endpoints/mod_sofia/sofia_presence.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c
   freeswitch/branches/seven/src/mod/endpoints/mod_sofia/sofia_reg.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c
   freeswitch/branches/seven/src/mod/endpoints/mod_unicall/
      - copied from r11459, /freeswitch/trunk/src/mod/endpoints/mod_unicall/
   freeswitch/branches/seven/src/mod/endpoints/mod_unicall/mod_unicall.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/endpoints/mod_unicall/mod_unicall.c
   freeswitch/branches/seven/src/mod/event_handlers/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/event_handlers/
   freeswitch/branches/seven/src/mod/event_handlers/mod_cdr_csv/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/
   freeswitch/branches/seven/src/mod/event_handlers/mod_cdr_csv/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/Makefile
   freeswitch/branches/seven/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.2008.vcproj
   freeswitch/branches/seven/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c
   freeswitch/branches/seven/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.vcproj
   freeswitch/branches/seven/src/mod/event_handlers/mod_erlang_event/
      - copied from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/
   freeswitch/branches/seven/src/mod/event_handlers/mod_erlang_event/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/Makefile
   freeswitch/branches/seven/src/mod/event_handlers/mod_erlang_event/ei_helpers.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c
   freeswitch/branches/seven/src/mod/event_handlers/mod_erlang_event/erlang_event.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/erlang_event.conf.xml
   freeswitch/branches/seven/src/mod/event_handlers/mod_erlang_event/handle_msg.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c
   freeswitch/branches/seven/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
   freeswitch/branches/seven/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h
   freeswitch/branches/seven/src/mod/event_handlers/mod_event_multicast/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_event_multicast/
   freeswitch/branches/seven/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.2008.vcproj
   freeswitch/branches/seven/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c
   freeswitch/branches/seven/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.vcproj
   freeswitch/branches/seven/src/mod/event_handlers/mod_event_socket/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_event_socket/
   freeswitch/branches/seven/src/mod/event_handlers/mod_event_socket/mod_event_socket.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.2008.vcproj
   freeswitch/branches/seven/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
   freeswitch/branches/seven/src/mod/event_handlers/mod_event_socket/mod_event_socket.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.vcproj
   freeswitch/branches/seven/src/mod/event_handlers/mod_event_test/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_event_test/
   freeswitch/branches/seven/src/mod/event_handlers/mod_event_test/mod_event_test.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_event_test/mod_event_test.c
   freeswitch/branches/seven/src/mod/event_handlers/mod_event_test/mod_event_test.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_event_test/mod_event_test.vcproj
   freeswitch/branches/seven/src/mod/event_handlers/mod_radius_cdr/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_radius_cdr/
   freeswitch/branches/seven/src/mod/event_handlers/mod_radius_cdr/Makefile.am
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_radius_cdr/Makefile.am
   freeswitch/branches/seven/src/mod/event_handlers/mod_radius_cdr/README
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_radius_cdr/README
   freeswitch/branches/seven/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c
   freeswitch/branches/seven/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.conf.xml
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.conf.xml
   freeswitch/branches/seven/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.h
   freeswitch/branches/seven/src/mod/event_handlers/mod_radius_cdr/radius/
      - copied from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_radius_cdr/radius/
   freeswitch/branches/seven/src/mod/event_handlers/mod_radius_cdr/radius/dictionary
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_radius_cdr/radius/dictionary
   freeswitch/branches/seven/src/mod/event_handlers/mod_zeroconf/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_zeroconf/
   freeswitch/branches/seven/src/mod/event_handlers/mod_zeroconf/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_zeroconf/Makefile
   freeswitch/branches/seven/src/mod/event_handlers/mod_zeroconf/mod_zeroconf.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_zeroconf/mod_zeroconf.2008.vcproj
   freeswitch/branches/seven/src/mod/event_handlers/mod_zeroconf/mod_zeroconf.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_zeroconf/mod_zeroconf.c
   freeswitch/branches/seven/src/mod/event_handlers/mod_zeroconf/mod_zeroconf.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/event_handlers/mod_zeroconf/mod_zeroconf.vcproj
   freeswitch/branches/seven/src/mod/formats/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/formats/
   freeswitch/branches/seven/src/mod/formats/mod_local_stream/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/formats/mod_local_stream/
   freeswitch/branches/seven/src/mod/formats/mod_local_stream/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_local_stream/Makefile
   freeswitch/branches/seven/src/mod/formats/mod_local_stream/mod_local_stream.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.2008.vcproj
   freeswitch/branches/seven/src/mod/formats/mod_local_stream/mod_local_stream.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.c
   freeswitch/branches/seven/src/mod/formats/mod_local_stream/mod_local_stream.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_local_stream/mod_local_stream.vcproj
   freeswitch/branches/seven/src/mod/formats/mod_native_file/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/formats/mod_native_file/
   freeswitch/branches/seven/src/mod/formats/mod_native_file/mod_native_file.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_native_file/mod_native_file.2008.vcproj
   freeswitch/branches/seven/src/mod/formats/mod_native_file/mod_native_file.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_native_file/mod_native_file.c
   freeswitch/branches/seven/src/mod/formats/mod_native_file/mod_native_file.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_native_file/mod_native_file.vcproj
   freeswitch/branches/seven/src/mod/formats/mod_shout/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/formats/mod_shout/
   freeswitch/branches/seven/src/mod/formats/mod_shout/MPGLIB_README
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_shout/MPGLIB_README
   freeswitch/branches/seven/src/mod/formats/mod_shout/MPGLIB_TODO
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_shout/MPGLIB_TODO
   freeswitch/branches/seven/src/mod/formats/mod_shout/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_shout/Makefile
   freeswitch/branches/seven/src/mod/formats/mod_shout/mod_shout.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c
   freeswitch/branches/seven/src/mod/formats/mod_shout/mod_shout.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.vcproj
   freeswitch/branches/seven/src/mod/formats/mod_sndfile/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/formats/mod_sndfile/
   freeswitch/branches/seven/src/mod/formats/mod_sndfile/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_sndfile/Makefile
   freeswitch/branches/seven/src/mod/formats/mod_sndfile/mod_sndfile.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_sndfile/mod_sndfile.2008.vcproj
   freeswitch/branches/seven/src/mod/formats/mod_sndfile/mod_sndfile.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_sndfile/mod_sndfile.c
   freeswitch/branches/seven/src/mod/formats/mod_sndfile/mod_sndfile.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_sndfile/mod_sndfile.vcproj
   freeswitch/branches/seven/src/mod/formats/mod_tone_stream/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/formats/mod_tone_stream/
   freeswitch/branches/seven/src/mod/formats/mod_tone_stream/mod_tone_stream.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_tone_stream/mod_tone_stream.2008.vcproj
   freeswitch/branches/seven/src/mod/formats/mod_tone_stream/mod_tone_stream.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_tone_stream/mod_tone_stream.c
   freeswitch/branches/seven/src/mod/formats/mod_tone_stream/mod_tone_stream.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/formats/mod_tone_stream/mod_tone_stream.vcproj
   freeswitch/branches/seven/src/mod/languages/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/
   freeswitch/branches/seven/src/mod/languages/mod_java/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_java/
   freeswitch/branches/seven/src/mod/languages/mod_java/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/Makefile.in
   freeswitch/branches/seven/src/mod/languages/mod_java/freeswitch_java.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/freeswitch_java.cpp
   freeswitch/branches/seven/src/mod/languages/mod_java/freeswitch_java.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/freeswitch_java.h
   freeswitch/branches/seven/src/mod/languages/mod_java/mod_java.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/mod_java.cpp
   freeswitch/branches/seven/src/mod/languages/mod_java/mod_java.i
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/mod_java.i
   freeswitch/branches/seven/src/mod/languages/mod_java/modjava.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/modjava.c
   freeswitch/branches/seven/src/mod/languages/mod_java/src/
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/DTMFCallback.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/DTMFCallback.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/Event.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/Event.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/FreeswitchScript.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/FreeswitchScript.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/HangupHook.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/HangupHook.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/Launcher.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/Launcher.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/API.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/API.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/DTMF.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/DTMF.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/Event.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/Event.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/EventConsumer.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/EventConsumer.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/IVRMenu.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/IVRMenu.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/JavaSession.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/JavaSession.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_JavaVM.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_JavaVM.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_channel_state_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_channel_state_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_channel_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_channel_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_core_session_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_core_session_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_event_node_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_event_node_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_event_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_event_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_event_types_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_event_types_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_input_args_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_input_args_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_input_type_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_input_type_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_priority_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_priority_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_queue_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_queue_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_size_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_size_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_status_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_status_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_stream_handle_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_stream_handle_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_uint32_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_uint32_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_void.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_void.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/Stream.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/Stream.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitch.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitch.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/input_callback_state_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/input_callback_state_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/src/org/freeswitch/swig/session_flag_t.java
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/session_flag_t.java
   freeswitch/branches/seven/src/mod/languages/mod_java/switch_swig_wrap.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp
   freeswitch/branches/seven/src/mod/languages/mod_lua/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/
   freeswitch/branches/seven/src/mod/languages/mod_lua/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_lua/freeswitch.i
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/freeswitch.i
   freeswitch/branches/seven/src/mod/languages/mod_lua/freeswitch_lua.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/freeswitch_lua.cpp
   freeswitch/branches/seven/src/mod/languages/mod_lua/freeswitch_lua.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/freeswitch_lua.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/hack.diff
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/hack.diff
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua-mode.el
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua-mode.el
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lapi.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lapi.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lapi.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lapi.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lauxlib.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lauxlib.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lauxlib.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lauxlib.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lbaselib.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lbaselib.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lcode.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lcode.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lcode.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lcode.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/ldblib.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/ldblib.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/ldebug.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/ldebug.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/ldebug.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/ldebug.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/ldo.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/ldo.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/ldo.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/ldo.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/ldump.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/ldump.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lfunc.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lfunc.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lfunc.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lfunc.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lgc.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lgc.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lgc.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lgc.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/linit.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/linit.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/liolib.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/liolib.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/llex.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/llex.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/llex.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/llex.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/llimits.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/llimits.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lmathlib.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lmathlib.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lmem.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lmem.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lmem.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lmem.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/loadlib.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/loadlib.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lobject.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lobject.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lobject.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lobject.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lopcodes.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lopcodes.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lopcodes.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lopcodes.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/loslib.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/loslib.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lparser.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lparser.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lparser.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lparser.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lstate.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lstate.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lstate.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lstate.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lstring.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lstring.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lstring.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lstring.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lstrlib.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lstrlib.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/ltable.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/ltable.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/ltable.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/ltable.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/ltablib.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/ltablib.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/ltm.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/ltm.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/ltm.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/ltm.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lua.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lua.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lua.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lua.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/luac.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/luac.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/luaconf.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/luaconf.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lualib.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lualib.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lundump.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lundump.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lundump.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lundump.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lvm.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lvm.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lvm.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lvm.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lzio.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lzio.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/lzio.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/lzio.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/lua/print.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/lua/print.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/mod_lua.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/mod_lua.2008.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_lua/mod_lua.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/mod_lua.cpp
   freeswitch/branches/seven/src/mod/languages/mod_lua/mod_lua.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/mod_lua.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_lua/mod_lua_extra.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_extra.c
   freeswitch/branches/seven/src/mod/languages/mod_lua/mod_lua_extra.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_extra.h
   freeswitch/branches/seven/src/mod/languages/mod_lua/mod_lua_wrap.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp
   freeswitch/branches/seven/src/mod/languages/mod_lua/my_swigable_cpp.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_lua/my_swigable_cpp.h
   freeswitch/branches/seven/src/mod/languages/mod_managed/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/
   freeswitch/branches/seven/src/mod/languages/mod_managed/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_managed/freeswitch.i
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/freeswitch.i
   freeswitch/branches/seven/src/mod/languages/mod_managed/freeswitch_managed.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_managed.cpp
   freeswitch/branches/seven/src/mod/languages/mod_managed/freeswitch_managed.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_managed.h
   freeswitch/branches/seven/src/mod/languages/mod_managed/freeswitch_wrap.cxx
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx
   freeswitch/branches/seven/src/mod/languages/mod_managed/managed/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/managed/
   freeswitch/branches/seven/src/mod/languages/mod_managed/managed/ApiFunction.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/managed/ApiFunction.cs
   freeswitch/branches/seven/src/mod/languages/mod_managed/managed/AppFunction.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/managed/AppFunction.cs
   freeswitch/branches/seven/src/mod/languages/mod_managed/managed/AssemblyInfo.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/managed/AssemblyInfo.cs
   freeswitch/branches/seven/src/mod/languages/mod_managed/managed/Demo.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/managed/Demo.cs
   freeswitch/branches/seven/src/mod/languages/mod_managed/managed/Extensions.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/managed/Extensions.cs
   freeswitch/branches/seven/src/mod/languages/mod_managed/managed/FreeSWITCH.Managed.csproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/managed/FreeSWITCH.Managed.csproj
   freeswitch/branches/seven/src/mod/languages/mod_managed/managed/Loader.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/managed/Loader.cs
   freeswitch/branches/seven/src/mod/languages/mod_managed/managed/Log.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/managed/Log.cs
   freeswitch/branches/seven/src/mod/languages/mod_managed/managed/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/managed/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_managed/managed/ManagedSession.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/managed/ManagedSession.cs
   freeswitch/branches/seven/src/mod/languages/mod_managed/managed/swig.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs
   freeswitch/branches/seven/src/mod/languages/mod_managed/mod_managed.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/mod_managed.cpp
   freeswitch/branches/seven/src/mod/languages/mod_managed/mod_managed.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/mod_managed.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_managed/mono.def
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/mono.def
   freeswitch/branches/seven/src/mod/languages/mod_managed/monolibx86.cmd
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/monolibx86.cmd
   freeswitch/branches/seven/src/mod/languages/mod_managed/runswig.cmd
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/runswig.cmd
   freeswitch/branches/seven/src/mod/languages/mod_managed/switch_platform.i
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_managed/switch_platform.i
   freeswitch/branches/seven/src/mod/languages/mod_mono/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/
   freeswitch/branches/seven/src/mod/languages/mod_mono/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_mono/freeswitch.i
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/freeswitch.i
   freeswitch/branches/seven/src/mod/languages/mod_mono/freeswitch_mono.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/freeswitch_mono.cpp
   freeswitch/branches/seven/src/mod/languages/mod_mono/freeswitch_mono.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/freeswitch_mono.h
   freeswitch/branches/seven/src/mod/languages/mod_mono/freeswitch_wrap.cxx
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/freeswitch_wrap.cxx
   freeswitch/branches/seven/src/mod/languages/mod_mono/mod_mono.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/mod_mono.cpp
   freeswitch/branches/seven/src/mod/languages/mod_mono/mod_mono.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/mod_mono.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_mono/mono.def
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/mono.def
   freeswitch/branches/seven/src/mod/languages/mod_mono/monolibx86.cmd
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/monolibx86.cmd
   freeswitch/branches/seven/src/mod/languages/mod_mono/runswig.cmd
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/runswig.cmd
   freeswitch/branches/seven/src/mod/languages/mod_mono/runswig.sh
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/runswig.sh
   freeswitch/branches/seven/src/mod/languages/mod_mono/switch_platform.i
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono/switch_platform.i
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/ApiFunction.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/ApiFunction.cs
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/AppFunction.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/AppFunction.cs
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/Demo.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/Demo.cs
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/Extensions.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/Extensions.cs
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/Loader.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/Loader.cs
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/Log.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/Log.cs
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/MonoSession.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/MonoSession.cs
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/Properties/
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/Properties/
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/Properties/AssemblyInfo.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/Properties/AssemblyInfo.cs
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/mod_mono_managed.csproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/mod_mono_managed.csproj
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/swig/
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/swig/
   freeswitch/branches/seven/src/mod/languages/mod_mono_managed/swig.cs
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_mono_managed/swig.cs
   freeswitch/branches/seven/src/mod/languages/mod_perl/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/
   freeswitch/branches/seven/src/mod/languages/mod_perl/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_perl/compiler.opts
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/compiler.opts
   freeswitch/branches/seven/src/mod/languages/mod_perl/compiler.opts.in
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/compiler.opts.in
   freeswitch/branches/seven/src/mod/languages/mod_perl/freeswitch.i
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/freeswitch.i
   freeswitch/branches/seven/src/mod/languages/mod_perl/freeswitch.pm
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/freeswitch.pm
   freeswitch/branches/seven/src/mod/languages/mod_perl/freeswitch_perl.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/freeswitch_perl.cpp
   freeswitch/branches/seven/src/mod/languages/mod_perl/freeswitch_perl.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/freeswitch_perl.h
   freeswitch/branches/seven/src/mod/languages/mod_perl/hack.diff
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/hack.diff
   freeswitch/branches/seven/src/mod/languages/mod_perl/mod_perl.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/mod_perl.c
   freeswitch/branches/seven/src/mod/languages/mod_perl/mod_perl.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/mod_perl.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_perl/mod_perl_extra.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_extra.c
   freeswitch/branches/seven/src/mod/languages/mod_perl/mod_perl_extra.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_extra.h
   freeswitch/branches/seven/src/mod/languages/mod_perl/mod_perl_wrap.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp
   freeswitch/branches/seven/src/mod/languages/mod_perl/perlibs.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/perlibs.h
   freeswitch/branches/seven/src/mod/languages/mod_perl/perlibs.h.in
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/perlibs.h.in
   freeswitch/branches/seven/src/mod/languages/mod_perl/perlxsi.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_perl/perlxsi.c
   freeswitch/branches/seven/src/mod/languages/mod_python/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_python/
   freeswitch/branches/seven/src/mod/languages/mod_python/Makefile.in
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_python/Makefile.in
   freeswitch/branches/seven/src/mod/languages/mod_python/freeswitch.py
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_python/freeswitch.py
   freeswitch/branches/seven/src/mod/languages/mod_python/freeswitch_python.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_python/freeswitch_python.cpp
   freeswitch/branches/seven/src/mod/languages/mod_python/freeswitch_python.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_python/freeswitch_python.h
   freeswitch/branches/seven/src/mod/languages/mod_python/hack.diff
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_python/hack.diff
   freeswitch/branches/seven/src/mod/languages/mod_python/mod_python.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_python/mod_python.c
   freeswitch/branches/seven/src/mod/languages/mod_python/mod_python.i
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_python/mod_python.i
   freeswitch/branches/seven/src/mod/languages/mod_python/mod_python_extra.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_python/mod_python_extra.c
   freeswitch/branches/seven/src/mod/languages/mod_python/mod_python_extra.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_python/mod_python_extra.h
   freeswitch/branches/seven/src/mod/languages/mod_python/mod_python_wrap.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp
   freeswitch/branches/seven/src/mod/languages/mod_python/python_example.py
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_python/python_example.py
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey/
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey/mod_spidermonkey.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.2008.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey/mod_spidermonkey.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey/sm.mak
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey/sm.mak
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_core_db/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_core_db/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.2008.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.c
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_curl/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_curl/
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_curl/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_curl/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_curl/mod_spidermonkey_curl.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_curl/mod_spidermonkey_curl.2008.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_curl/mod_spidermonkey_curl.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_curl/mod_spidermonkey_curl.c
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_curl/mod_spidermonkey_curl.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_curl/mod_spidermonkey_curl.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_odbc/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_odbc/
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_odbc/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_odbc/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_odbc/mod_spidermonkey_odbc.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_odbc/mod_spidermonkey_odbc.2008.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_odbc/mod_spidermonkey_odbc.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_odbc/mod_spidermonkey_odbc.c
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_odbc/mod_spidermonkey_odbc.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_odbc/mod_spidermonkey_odbc.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_skel/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_skel/
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_skel/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_skel/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_skel/mod_spidermonkey_skel.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_skel/mod_spidermonkey_skel.c
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_socket/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_socket/
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_socket/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_socket/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_socket/mod_spidermonkey_socket.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_socket/mod_spidermonkey_socket.2008.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_socket/mod_spidermonkey_socket.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_socket/mod_spidermonkey_socket.c
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_socket/mod_spidermonkey_socket.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_socket/mod_spidermonkey_socket.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_teletone/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_teletone/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.2008.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c
   freeswitch/branches/seven/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.vcproj
   freeswitch/branches/seven/src/mod/languages/mod_yaml/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/languages/mod_yaml/
   freeswitch/branches/seven/src/mod/languages/mod_yaml/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_yaml/Makefile
   freeswitch/branches/seven/src/mod/languages/mod_yaml/mod_yaml.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/languages/mod_yaml/mod_yaml.c
   freeswitch/branches/seven/src/mod/loggers/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/loggers/
   freeswitch/branches/seven/src/mod/loggers/mod_console/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/loggers/mod_console/
   freeswitch/branches/seven/src/mod/loggers/mod_console/mod_console.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/loggers/mod_console/mod_console.2008.vcproj
   freeswitch/branches/seven/src/mod/loggers/mod_console/mod_console.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/loggers/mod_console/mod_console.c
   freeswitch/branches/seven/src/mod/loggers/mod_console/mod_console.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/loggers/mod_console/mod_console.vcproj
   freeswitch/branches/seven/src/mod/loggers/mod_logfile/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/loggers/mod_logfile/
   freeswitch/branches/seven/src/mod/loggers/mod_logfile/mod_logfile.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/loggers/mod_logfile/mod_logfile.2008.vcproj
   freeswitch/branches/seven/src/mod/loggers/mod_logfile/mod_logfile.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/loggers/mod_logfile/mod_logfile.c
   freeswitch/branches/seven/src/mod/loggers/mod_logfile/mod_logfile.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/loggers/mod_logfile/mod_logfile.vcproj
   freeswitch/branches/seven/src/mod/loggers/mod_syslog/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/loggers/mod_syslog/
   freeswitch/branches/seven/src/mod/loggers/mod_syslog/mod_syslog.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/loggers/mod_syslog/mod_syslog.c
   freeswitch/branches/seven/src/mod/say/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/say/
   freeswitch/branches/seven/src/mod/say/mod_say_de/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/say/mod_say_de/
   freeswitch/branches/seven/src/mod/say/mod_say_de/mod_say_de.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_de/mod_say_de.2008.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_de/mod_say_de.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_de/mod_say_de.c
   freeswitch/branches/seven/src/mod/say/mod_say_de/mod_say_de.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_de/mod_say_de.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_en/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/say/mod_say_en/
   freeswitch/branches/seven/src/mod/say/mod_say_en/mod_say_en.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_en/mod_say_en.2008.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_en/mod_say_en.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_en/mod_say_en.c
   freeswitch/branches/seven/src/mod/say/mod_say_en/mod_say_en.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_en/mod_say_en.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_es/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/say/mod_say_es/
   freeswitch/branches/seven/src/mod/say/mod_say_es/mod_say_es.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_es/mod_say_es.2008.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_es/mod_say_es.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_es/mod_say_es.c
   freeswitch/branches/seven/src/mod/say/mod_say_es/mod_say_es.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_es/mod_say_es.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_fr/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/say/mod_say_fr/
   freeswitch/branches/seven/src/mod/say/mod_say_fr/mod_say_fr.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_fr/mod_say_fr.2008.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_fr/mod_say_fr.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_fr/mod_say_fr.c
   freeswitch/branches/seven/src/mod/say/mod_say_fr/mod_say_fr.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_fr/mod_say_fr.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_it/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/say/mod_say_it/
   freeswitch/branches/seven/src/mod/say/mod_say_it/mod_say_it.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_it/mod_say_it.2008.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_it/mod_say_it.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_it/mod_say_it.c
   freeswitch/branches/seven/src/mod/say/mod_say_it/mod_say_it.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_it/mod_say_it.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_nl/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/say/mod_say_nl/
   freeswitch/branches/seven/src/mod/say/mod_say_nl/mod_say_nl.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_nl/mod_say_nl.2008.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_nl/mod_say_nl.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_nl/mod_say_nl.c
   freeswitch/branches/seven/src/mod/say/mod_say_nl/mod_say_nl.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_nl/mod_say_nl.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_zh/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/say/mod_say_zh/
   freeswitch/branches/seven/src/mod/say/mod_say_zh/mod_say_zh.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_zh/mod_say_zh.2008.vcproj
   freeswitch/branches/seven/src/mod/say/mod_say_zh/mod_say_zh.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_zh/mod_say_zh.c
   freeswitch/branches/seven/src/mod/say/mod_say_zh/mod_say_zh.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/say/mod_say_zh/mod_say_zh.vcproj
   freeswitch/branches/seven/src/mod/timers/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/timers/
   freeswitch/branches/seven/src/mod/xml_int/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/xml_int/
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_cdr/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_cdr/
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_cdr/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_cdr/Makefile
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.2008.vcproj
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.vcproj
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_curl/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_curl/
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_curl/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_curl/Makefile
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_curl/mod_xml_curl.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_curl/mod_xml_curl.2008.vcproj
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_curl/mod_xml_curl.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_curl/mod_xml_curl.c
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_curl/mod_xml_curl.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_curl/mod_xml_curl.vcproj
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_ldap/
      - copied from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_ldap/
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_ldap/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_ldap/Makefile
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_ldap/fsv2.schema
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_ldap/fsv2.schema
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_ldap/lutil_ldap.h
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_ldap/lutil_ldap.h
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_ldap/mod_xml_curl.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_ldap/mod_xml_curl.2008.vcproj
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_ldap/mod_xml_curl.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_ldap/mod_xml_curl.vcproj
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_ldap/mod_xml_ldap.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_ldap/mod_xml_ldap.c
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_ldap/mod_xml_ldapv2.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_ldap/mod_xml_ldapv2.c
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_ldap/reallyconfusingslapcat
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_ldap/reallyconfusingslapcat
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_rpc/   (props changed)
      - copied from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_rpc/Makefile
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/Makefile
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2008.vcproj
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
   freeswitch/branches/seven/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.vcproj
   freeswitch/branches/seven/src/switch.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch.c
   freeswitch/branches/seven/src/switch_apr.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_apr.c
   freeswitch/branches/seven/src/switch_buffer.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_buffer.c
   freeswitch/branches/seven/src/switch_caller.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_caller.c
   freeswitch/branches/seven/src/switch_channel.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_channel.c
   freeswitch/branches/seven/src/switch_config.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_config.c
   freeswitch/branches/seven/src/switch_console.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_console.c
   freeswitch/branches/seven/src/switch_core.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core.c
   freeswitch/branches/seven/src/switch_core_asr.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_asr.c
   freeswitch/branches/seven/src/switch_core_codec.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_codec.c
   freeswitch/branches/seven/src/switch_core_db.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_db.c
   freeswitch/branches/seven/src/switch_core_directory.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_directory.c
   freeswitch/branches/seven/src/switch_core_event_hook.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_event_hook.c
   freeswitch/branches/seven/src/switch_core_file.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_file.c
   freeswitch/branches/seven/src/switch_core_hash.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_hash.c
   freeswitch/branches/seven/src/switch_core_io.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_io.c
   freeswitch/branches/seven/src/switch_core_media_bug.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_media_bug.c
   freeswitch/branches/seven/src/switch_core_memory.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_memory.c
   freeswitch/branches/seven/src/switch_core_port_allocator.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_port_allocator.c
   freeswitch/branches/seven/src/switch_core_rwlock.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_rwlock.c
   freeswitch/branches/seven/src/switch_core_session.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_session.c
   freeswitch/branches/seven/src/switch_core_speech.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_speech.c
   freeswitch/branches/seven/src/switch_core_sqldb.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_sqldb.c
   freeswitch/branches/seven/src/switch_core_state_machine.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_state_machine.c
   freeswitch/branches/seven/src/switch_core_timer.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_core_timer.c
   freeswitch/branches/seven/src/switch_cpp.cpp
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_cpp.cpp
   freeswitch/branches/seven/src/switch_dso.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_dso.c
   freeswitch/branches/seven/src/switch_event.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_event.c
   freeswitch/branches/seven/src/switch_ivr.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_ivr.c
   freeswitch/branches/seven/src/switch_ivr_async.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_ivr_async.c
   freeswitch/branches/seven/src/switch_ivr_bridge.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_ivr_bridge.c
   freeswitch/branches/seven/src/switch_ivr_menu.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_ivr_menu.c
   freeswitch/branches/seven/src/switch_ivr_originate.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_ivr_originate.c
   freeswitch/branches/seven/src/switch_ivr_play_say.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_ivr_play_say.c
   freeswitch/branches/seven/src/switch_loadable_module.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_loadable_module.c
   freeswitch/branches/seven/src/switch_log.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_log.c
   freeswitch/branches/seven/src/switch_odbc.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_odbc.c
   freeswitch/branches/seven/src/switch_pcm.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_pcm.c
   freeswitch/branches/seven/src/switch_regex.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_regex.c
   freeswitch/branches/seven/src/switch_resample.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_resample.c
   freeswitch/branches/seven/src/switch_rtp.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_rtp.c
   freeswitch/branches/seven/src/switch_scheduler.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_scheduler.c
   freeswitch/branches/seven/src/switch_stun.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_stun.c
   freeswitch/branches/seven/src/switch_swig.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_swig.c
   freeswitch/branches/seven/src/switch_swig.i
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_swig.i
   freeswitch/branches/seven/src/switch_time.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_time.c
   freeswitch/branches/seven/src/switch_utils.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_utils.c
   freeswitch/branches/seven/src/switch_xml.c
      - copied unchanged from r11459, /freeswitch/trunk/src/switch_xml.c
   freeswitch/branches/seven/support-d/
      - copied from r11459, /freeswitch/trunk/support-d/
   freeswitch/branches/seven/support-d/.bashrc
      - copied unchanged from r11459, /freeswitch/trunk/support-d/.bashrc
   freeswitch/branches/seven/support-d/.emacs
      - copied unchanged from r11459, /freeswitch/trunk/support-d/.emacs
   freeswitch/branches/seven/support-d/.screenrc
      - copied unchanged from r11459, /freeswitch/trunk/support-d/.screenrc
   freeswitch/branches/seven/support-d/freeswitch.pub
      - copied unchanged from r11459, /freeswitch/trunk/support-d/freeswitch.pub
   freeswitch/branches/seven/support-d/install-cc-mode.sh
      - copied unchanged from r11459, /freeswitch/trunk/support-d/install-cc-mode.sh
   freeswitch/branches/seven/support-d/prereq.sh
      - copied unchanged from r11459, /freeswitch/trunk/support-d/prereq.sh
   freeswitch/branches/seven/support-d/shinzon.pub
      - copied unchanged from r11459, /freeswitch/trunk/support-d/shinzon.pub
   freeswitch/branches/seven/w32/   (props changed)
      - copied from r11459, /freeswitch/trunk/w32/
   freeswitch/branches/seven/w32/Console/   (props changed)
      - copied from r11459, /freeswitch/trunk/w32/Console/
   freeswitch/branches/seven/w32/Console/FreeSwitchConsole.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/w32/Console/FreeSwitchConsole.2008.vcproj
   freeswitch/branches/seven/w32/Console/FreeSwitchConsole.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/w32/Console/FreeSwitchConsole.vcproj
   freeswitch/branches/seven/w32/Console/FreeSwitchConsole.vcproj.user
      - copied unchanged from r11459, /freeswitch/trunk/w32/Console/FreeSwitchConsole.vcproj.user
   freeswitch/branches/seven/w32/Library/   (props changed)
      - copied from r11459, /freeswitch/trunk/w32/Library/
   freeswitch/branches/seven/w32/Library/FreeSwitchCore.2008.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/w32/Library/FreeSwitchCore.2008.vcproj
   freeswitch/branches/seven/w32/Library/FreeSwitchCore.vcproj
      - copied unchanged from r11459, /freeswitch/trunk/w32/Library/FreeSwitchCore.vcproj
   freeswitch/branches/seven/w32/Setup/   (props changed)
      - copied from r11459, /freeswitch/trunk/w32/Setup/
   freeswitch/branches/seven/w32/Setup/Setup.2008.vdproj
      - copied unchanged from r11459, /freeswitch/trunk/w32/Setup/Setup.2008.vdproj
   freeswitch/branches/seven/w32/Setup/Setup.vdproj
      - copied unchanged from r11459, /freeswitch/trunk/w32/Setup/Setup.vdproj
   freeswitch/branches/seven/w32/Setup/freeswitch.aip
      - copied unchanged from r11459, /freeswitch/trunk/w32/Setup/freeswitch.aip
   freeswitch/branches/seven/w32/curl.vsprops
      - copied unchanged from r11459, /freeswitch/trunk/w32/curl.vsprops
   freeswitch/branches/seven/w32/module_debug.vsprops
      - copied unchanged from r11459, /freeswitch/trunk/w32/module_debug.vsprops
   freeswitch/branches/seven/w32/module_release.vsprops
      - copied unchanged from r11459, /freeswitch/trunk/w32/module_release.vsprops
   freeswitch/branches/seven/w32/modules.vsprops
      - copied unchanged from r11459, /freeswitch/trunk/w32/modules.vsprops
   freeswitch/branches/seven/w32/spidermonkey.vsprops
      - copied unchanged from r11459, /freeswitch/trunk/w32/spidermonkey.vsprops
   freeswitch/branches/seven/w32/winlibs.vsprops
      - copied unchanged from r11459, /freeswitch/trunk/w32/winlibs.vsprops
Modified:
   freeswitch/branches/seven/   (props changed)


From mrene at freeswitch.org  Fri Jan 23 06:16:34 2009
From: mrene at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 23 Jan 2009 08:16:34 -0600
Subject: [Freeswitch-svn] [commit] r11462 - freeswitch/trunk/src
Message-ID: 

Author: mrene
Date: Fri Jan 23 08:16:34 2009
New Revision: 11462

Log:
FSCORE-279 Prevent media setup on failed originates

Modified:
   freeswitch/trunk/src/switch_ivr_originate.c

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Fri Jan 23 08:16:34 2009
@@ -2044,7 +2044,7 @@
 		switch_ivr_sleep(*bleg, 0, SWITCH_TRUE, NULL);
 	}
 
-	if (oglobals.session) {
+	if (oglobals.session && status == SWITCH_STATUS_SUCCESS) {
 		switch_ivr_sleep(oglobals.session, 0, SWITCH_TRUE, NULL);
 	}
 


From mikej at freeswitch.org  Fri Jan 23 08:22:50 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 23 Jan 2009 10:22:50 -0600
Subject: [Freeswitch-svn] [commit] r11463 -
	freeswitch/trunk/src/mod/endpoints/mod_sofia
Message-ID: 

Author: mikej
Date: Fri Jan 23 10:22:50 2009
New Revision: 11463

Log:
mod_sofia: fix segfault due to missing contact header in invite (MODENDP-177) 

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	Fri Jan 23 10:22:50 2009
@@ -3769,6 +3769,12 @@
 		return;
 	}
 
+	if (!(sip->sip_contact && sip->sip_contact->m_url)) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "NO CONTACT!\n");
+		nua_respond(nh, 400, "Missing Contact Header", TAG_END());
+		return;
+	}
+
 	get_addr(network_ip, sizeof(network_ip), my_addrinfo->ai_addr, my_addrinfo->ai_addrlen);
 	network_port = ntohs(((struct sockaddr_in *) msg_addrinfo(nua_current_request(nua))->ai_addr)->sin_port);
 
@@ -3860,12 +3866,6 @@
 		is_auth++;
 	}
 
-	if (!(sip->sip_contact && sip->sip_contact->m_url)) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "NO CONTACT!\n");
-		nua_respond(nh, 400, "Missing Contact Header", TAG_END());
-		return;
-	}
-
 	if (sofia_endpoint_interface) {
 		if (profile->pflags & PFLAG_CALLID_AS_UUID) {
 			session = switch_core_session_request_uuid(sofia_endpoint_interface, NULL, sip->sip_call_id->i_id);


From anthm at freeswitch.org  Fri Jan 23 10:44:25 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 23 Jan 2009 12:44:25 -0600
Subject: [Freeswitch-svn] [commit] r11466 - in freeswitch/trunk/src: .
	include mod/applications/mod_fifo
Message-ID: 

Author: anthm
Date: Fri Jan 23 12:44:25 2009
New Revision: 11466

Log:
pause media bugs while not in a bridge while inside mod_fifo

Modified:
   freeswitch/trunk/src/include/switch_core.h
   freeswitch/trunk/src/include/switch_types.h
   freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c
   freeswitch/trunk/src/switch_core_media_bug.c

Modified: freeswitch/trunk/src/include/switch_core.h
==============================================================================
--- freeswitch/trunk/src/include/switch_core.h	(original)
+++ freeswitch/trunk/src/include/switch_core.h	Fri Jan 23 12:44:25 2009
@@ -143,6 +143,10 @@
 														  _In_ switch_media_bug_callback_t callback,
 														  _In_opt_ void *user_data,
 														  _In_ time_t stop_time, _In_ switch_media_bug_flag_t flags, _Out_ switch_media_bug_t **new_bug);
+
+SWITCH_DECLARE(void) switch_core_media_bug_pause(switch_core_session_t *session);
+SWITCH_DECLARE(void) switch_core_media_bug_resume(switch_core_session_t *session);
+
 /*!
   \brief Obtain private data from a media bug
   \param bug the bug to get the data from

Modified: freeswitch/trunk/src/include/switch_types.h
==============================================================================
--- freeswitch/trunk/src/include/switch_types.h	(original)
+++ freeswitch/trunk/src/include/switch_types.h	Fri Jan 23 12:44:25 2009
@@ -841,7 +841,7 @@
 	CF_INNER_BRIDGE,
 	CF_REQ_MEDIA,
 	CF_VERBOSE_EVENTS,
-
+	CF_PAUSE_BUGS,
 	/* WARNING: DO NOT ADD ANY FLAGS BELOW THIS LINE */
 	CF_FLAG_MAX
 } switch_channel_flag_t;

Modified: freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c	Fri Jan 23 12:44:25 2009
@@ -767,6 +767,8 @@
 	check_string(moh);
 	switch_assert(node);
 
+	switch_core_media_bug_pause(session);
+
 	if (!consumer) {
 		switch_core_session_t *other_session;
 		switch_channel_t *other_channel;
@@ -926,7 +928,7 @@
 
 		if (!aborted && switch_channel_ready(channel)) {
 			switch_channel_set_state(channel, CS_HIBERNATE);
-			return;
+			goto done;
 		} else {
 			ts = switch_timestamp_now();
 			switch_time_exp_lt(&tm, ts);
@@ -956,7 +958,8 @@
 			switch_ivr_session_transfer(session, cd.orbit_exten, NULL, NULL);
 		}
 
-		return;
+		goto done;
+
 	} else {					/* consumer */
 		void *pop = NULL;
 		switch_frame_t *read_frame;
@@ -987,7 +990,7 @@
 				strat = STRAT_WAITING_LONGER;
 			} else {
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid strategy\n");
-				return;
+				goto done;
 			}
 		}
 
@@ -996,7 +999,7 @@
 				do_wait = 0;
 			} else if (strcasecmp(argv[2], "wait")) {
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "USAGE %s\n", FIFO_USAGE);
-				return;
+				goto done;
 			}
 		}
 
@@ -1235,8 +1238,12 @@
 					switch_ivr_record_session(session, expanded, 0, NULL);
 				}
 
+				switch_core_media_bug_resume(session);
+				switch_core_media_bug_resume(other_session);
 				switch_ivr_multi_threaded_bridge(session, other_session, on_dtmf, other_session, session);
-
+				switch_core_media_bug_pause(session);
+				switch_core_media_bug_pause(other_session);
+				
 				if (record_template) {
 					switch_ivr_stop_record_session(session, expanded);
 					if (expanded != record_template) {
@@ -1299,7 +1306,7 @@
 				if (!switch_strlen_zero(fifo_consumer_wrapup_key) && strcmp(buf, fifo_consumer_wrapup_key)) {
 					while(switch_channel_ready(channel)) {
 						char terminator = 0;
-
+						
 						if (fifo_consumer_wrapup_time) {
 							wrapup_time_elapsed = (switch_timestamp_now() - wrapup_time_started) / 1000;
 							if (wrapup_time_elapsed > fifo_consumer_wrapup_time) {
@@ -1362,6 +1369,11 @@
 			}
 		}
 	}
+
+ done:
+
+	switch_core_media_bug_resume(session);
+
 }
 
 struct xml_helper {

Modified: freeswitch/trunk/src/switch_core_media_bug.c
==============================================================================
--- freeswitch/trunk/src/switch_core_media_bug.c	(original)
+++ freeswitch/trunk/src/switch_core_media_bug.c	Fri Jan 23 12:44:25 2009
@@ -46,6 +46,16 @@
 	}
 }
 
+SWITCH_DECLARE(void) switch_core_media_bug_pause(switch_core_session_t *session)
+{
+	switch_channel_set_flag(session->channel, CF_PAUSE_BUGS);
+}
+
+SWITCH_DECLARE(void) switch_core_media_bug_resume(switch_core_session_t *session)
+{
+	switch_channel_clear_flag(session->channel, CF_PAUSE_BUGS);
+}
+
 SWITCH_DECLARE(uint32_t) switch_core_media_bug_test_flag(switch_media_bug_t *bug, uint32_t flag)
 {
 	return switch_test_flag(bug, flag);


From brian at freeswitch.org  Fri Jan 23 12:33:25 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 23 Jan 2009 14:33:25 -0600
Subject: [Freeswitch-svn] [commit] r11467 - freeswitch/trunk/conf/dialplan
Message-ID: 

Author: brian
Date: Fri Jan 23 14:33:25 2009
New Revision: 11467

Log:
fix unloop bug

Modified:
   freeswitch/trunk/conf/dialplan/default.xml
   freeswitch/trunk/conf/dialplan/public.xml

Modified: freeswitch/trunk/conf/dialplan/default.xml
==============================================================================
--- freeswitch/trunk/conf/dialplan/default.xml	(original)
+++ freeswitch/trunk/conf/dialplan/default.xml	Fri Jan 23 14:33:25 2009
@@ -15,7 +15,7 @@
   
 
     
-      
+      
       
 	
       

Modified: freeswitch/trunk/conf/dialplan/public.xml
==============================================================================
--- freeswitch/trunk/conf/dialplan/public.xml	(original)
+++ freeswitch/trunk/conf/dialplan/public.xml	Fri Jan 23 14:33:25 2009
@@ -14,7 +14,7 @@
   
 
     
-      
+      
       
 	
       


From anthm at freeswitch.org  Fri Jan 23 12:33:30 2009
From: anthm at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 23 Jan 2009 14:33:30 -0600
Subject: [Freeswitch-svn] [commit] r11468 -
	freeswitch/trunk/src/mod/endpoints/mod_sofia
Message-ID: 

Author: anthm
Date: Fri Jan 23 14:33:30 2009
New Revision: 11468

Log:
allow  tag in gateways as well as  with direction inbound/outbound (default both) and call counter

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	Fri Jan 23 14:33:30 2009
@@ -1503,22 +1503,25 @@
 				switch_assert(gp->state < REG_STATE_LAST);
 
 				stream->write_function(stream, "%s\n", line);
-				stream->write_function(stream, "Name    \t\t%s\n", switch_str_nil(gp->name));
-				stream->write_function(stream, "Scheme  \t\t%s\n", switch_str_nil(gp->register_scheme));
-				stream->write_function(stream, "Realm   \t\t%s\n", switch_str_nil(gp->register_realm));
-				stream->write_function(stream, "Username\t\t%s\n", switch_str_nil(gp->register_username));
-				stream->write_function(stream, "Password\t\t%s\n", switch_strlen_zero(gp->register_password) ? "no" : "yes");
-				stream->write_function(stream, "From    \t\t%s\n", switch_str_nil(gp->register_from));
-				stream->write_function(stream, "Contact \t\t%s\n", switch_str_nil(gp->register_contact));
-				stream->write_function(stream, "To      \t\t%s\n", switch_str_nil(gp->register_to));
-				stream->write_function(stream, "Proxy   \t\t%s\n", switch_str_nil(gp->register_proxy));
-				stream->write_function(stream, "Context \t\t%s\n", switch_str_nil(gp->register_context));
-				stream->write_function(stream, "Expires \t\t%s\n", switch_str_nil(gp->expires_str));
-				stream->write_function(stream, "Freq    \t\t%d\n", gp->freq);
-				stream->write_function(stream, "Ping    \t\t%d\n", gp->ping);
-				stream->write_function(stream, "PingFreq\t\t%d\n", gp->ping_freq);
-				stream->write_function(stream, "State   \t\t%s\n", sofia_state_names[gp->state]);
-				stream->write_function(stream, "Status  \t\t%s%s\n", status_names[gp->status], gp->pinging ? " (ping)" : "");
+				stream->write_function(stream, "Name    \t%s\n", switch_str_nil(gp->name));
+				stream->write_function(stream, "Scheme  \t%s\n", switch_str_nil(gp->register_scheme));
+				stream->write_function(stream, "Realm   \t%s\n", switch_str_nil(gp->register_realm));
+				stream->write_function(stream, "Username\t%s\n", switch_str_nil(gp->register_username));
+				stream->write_function(stream, "Password\t%s\n", switch_strlen_zero(gp->register_password) ? "no" : "yes");
+				stream->write_function(stream, "From    \t%s\n", switch_str_nil(gp->register_from));
+				stream->write_function(stream, "Contact \t%s\n", switch_str_nil(gp->register_contact));
+				stream->write_function(stream, "Exten   \t%s\n", switch_str_nil(gp->extension));
+				stream->write_function(stream, "To      \t%s\n", switch_str_nil(gp->register_to));
+				stream->write_function(stream, "Proxy   \t%s\n", switch_str_nil(gp->register_proxy));
+				stream->write_function(stream, "Context \t%s\n", switch_str_nil(gp->register_context));
+				stream->write_function(stream, "Expires \t%s\n", switch_str_nil(gp->expires_str));
+				stream->write_function(stream, "Freq    \t%d\n", gp->freq);
+				stream->write_function(stream, "Ping    \t%d\n", gp->ping);
+				stream->write_function(stream, "PingFreq\t%d\n", gp->ping_freq);
+				stream->write_function(stream, "State   \t%s\n", sofia_state_names[gp->state]);
+				stream->write_function(stream, "Status  \t%s%s\n", status_names[gp->status], gp->pinging ? " (ping)" : "");
+				stream->write_function(stream, "CallsIN \t%d\n", gp->ib_calls);
+				stream->write_function(stream, "CallsOUT\t%d\n", gp->ob_calls);
 				stream->write_function(stream, "%s\n", line);
 				sofia_reg_release_gateway(gp);
 			} else {
@@ -1531,51 +1534,51 @@
 			if ((argv[1]) && (profile = sofia_glue_find_profile(argv[1]))) {
 				if (!argv[2] || strcasecmp(argv[2], "reg")) {
 					stream->write_function(stream, "%s\n", line);
-					stream->write_function(stream, "Name          \t\t%s\n", switch_str_nil(argv[1]));
-					stream->write_function(stream, "Domain Name   \t\t%s\n", profile->domain_name ? profile->domain_name : "N/A");
+					stream->write_function(stream, "Name             \t%s\n", switch_str_nil(argv[1]));
+					stream->write_function(stream, "Domain Name      \t%s\n", profile->domain_name ? profile->domain_name : "N/A");
 					if (strcasecmp(argv[1], profile->name)) {
-						stream->write_function(stream, "Alias Of      \t\t%s\n", switch_str_nil(profile->name));
+					stream->write_function(stream, "Alias Of         \t%s\n", switch_str_nil(profile->name));
 					}
-					stream->write_function(stream, "DBName        \t\t%s\n", switch_str_nil(profile->dbname));
-					stream->write_function(stream, "Pres Hosts    \t\t%s\n", switch_str_nil(profile->presence_hosts));
-					stream->write_function(stream, "Dialplan      \t\t%s\n", switch_str_nil(profile->dialplan));
-					stream->write_function(stream, "Context       \t\t%s\n", switch_str_nil(profile->context));
-					stream->write_function(stream, "Challenge Realm\t\t%s\n", 
+					stream->write_function(stream, "DBName           \t%s\n", switch_str_nil(profile->dbname));
+					stream->write_function(stream, "Pres Hosts       \t%s\n", switch_str_nil(profile->presence_hosts));
+					stream->write_function(stream, "Dialplan         \t%s\n", switch_str_nil(profile->dialplan));
+					stream->write_function(stream, "Context          \t%s\n", switch_str_nil(profile->context));
+					stream->write_function(stream, "Challenge Realm  \t%s\n", 
 										   switch_strlen_zero(profile->challenge_realm) ? "auto_to" : profile->challenge_realm);
-					stream->write_function(stream, "RTP-IP        \t\t%s\n", switch_str_nil(profile->rtpip));
+					stream->write_function(stream, "RTP-IP           \t%s\n", switch_str_nil(profile->rtpip));
 					if (profile->extrtpip) {
-						stream->write_function(stream, "Ext-RTP-IP    \t\t%s\n", profile->extrtpip);
+					stream->write_function(stream, "Ext-RTP-IP       \t%s\n", profile->extrtpip);
 					}
 
-					stream->write_function(stream, "SIP-IP        \t\t%s\n", switch_str_nil(profile->sipip));
+					stream->write_function(stream, "SIP-IP           \t%s\n", switch_str_nil(profile->sipip));
 					if (profile->extsipip) {
-						stream->write_function(stream, "Ext-SIP-IP    \t\t%s\n", profile->extsipip);
+					stream->write_function(stream, "Ext-SIP-IP       \t%s\n", profile->extsipip);
 					}
-					stream->write_function(stream, "URL           \t\t%s\n", switch_str_nil(profile->url));
-					stream->write_function(stream, "BIND-URL      \t\t%s\n", switch_str_nil(profile->bindurl));
+					stream->write_function(stream, "URL              \t%s\n", switch_str_nil(profile->url));
+					stream->write_function(stream, "BIND-URL         \t%s\n", switch_str_nil(profile->bindurl));
 					if (sofia_test_pflag(profile, PFLAG_TLS)) {
-						stream->write_function(stream, "TLS-URL      \t\t%s\n", switch_str_nil(profile->tls_url));
-						stream->write_function(stream, "TLS-BIND-URL      \t%s\n", switch_str_nil(profile->tls_bindurl));
+					stream->write_function(stream, "TLS-URL          \t%s\n", switch_str_nil(profile->tls_url));
+					stream->write_function(stream, "TLS-BIND-URL     \t%s\n", switch_str_nil(profile->tls_bindurl));
 					}
-					stream->write_function(stream, "HOLD-MUSIC    \t\t%s\n", switch_strlen_zero(profile->hold_music) ? "N/A" : profile->hold_music);
-					stream->write_function(stream, "CODECS        \t\t%s\n", switch_str_nil(profile->codec_string));
-					stream->write_function(stream, "TEL-EVENT     \t\t%d\n", profile->te);
+					stream->write_function(stream, "HOLD-MUSIC       \t%s\n", switch_strlen_zero(profile->hold_music) ? "N/A" : profile->hold_music);
+					stream->write_function(stream, "CODECS           \t%s\n", switch_str_nil(profile->codec_string));
+					stream->write_function(stream, "TEL-EVENT        \t%d\n", profile->te);
 					if (profile->dtmf_type == DTMF_2833) {
-						stream->write_function(stream, "DTMF-MODE     \t\trfc2833\n");
+					stream->write_function(stream, "DTMF-MODE        \trfc2833\n");
 					} else if (profile->dtmf_type == DTMF_INFO) {
-						stream->write_function(stream, "DTMF-MODE     \t\tinfo\n");
+					stream->write_function(stream, "DTMF-MODE        \tinfo\n");
 					} else {
-						stream->write_function(stream, "DTMF-MODE     \t\tnone\n");
+					stream->write_function(stream, "DTMF-MODE        \tnone\n");
 					}
-					stream->write_function(stream, "CNG           \t\t%d\n", profile->cng_pt);
-					stream->write_function(stream, "SESSION-TO    \t\t%d\n", profile->session_timeout);
-					stream->write_function(stream, "MAX-DIALOG    \t\t%d\n", profile->max_proceeding);
-					stream->write_function(stream, "NOMEDIA       \t\t%s\n", switch_test_flag(profile, TFLAG_INB_NOMEDIA) ? "true" : "false");
-					stream->write_function(stream, "LATE-NEG      \t\t%s\n", switch_test_flag(profile, TFLAG_LATE_NEGOTIATION) ? "true" : "false");
-					stream->write_function(stream, "PROXY-MEDIA   \t\t%s\n", switch_test_flag(profile, TFLAG_PROXY_MEDIA) ? "true" : "false");
-					stream->write_function(stream, "AGGRESSIVENAT \t\t%s\n", sofia_test_pflag(profile, PFLAG_AGGRESSIVE_NAT_DETECTION) ? "true" : "false");
-					stream->write_function(stream, "STUN_ENABLED \t\t%s\n", sofia_test_pflag(profile, PFLAG_STUN_ENABLED) ? "true" : "false");
-					stream->write_function(stream, "STUN_AUTO_DISABLE \t%s\n", sofia_test_pflag(profile, PFLAG_STUN_AUTO_DISABLE) ? "true" : "false");
+					stream->write_function(stream, "CNG              \t%d\n", profile->cng_pt);
+					stream->write_function(stream, "SESSION-TO       \t%d\n", profile->session_timeout);
+					stream->write_function(stream, "MAX-DIALOG       \t%d\n", profile->max_proceeding);
+					stream->write_function(stream, "NOMEDIA          \t%s\n", switch_test_flag(profile, TFLAG_INB_NOMEDIA) ? "true" : "false");
+					stream->write_function(stream, "LATE-NEG         \t%s\n", switch_test_flag(profile, TFLAG_LATE_NEGOTIATION) ? "true" : "false");
+					stream->write_function(stream, "PROXY-MEDIA      \t%s\n", switch_test_flag(profile, TFLAG_PROXY_MEDIA) ? "true" : "false");
+					stream->write_function(stream, "AGGRESSIVENAT    \t%s\n", sofia_test_pflag(profile, PFLAG_AGGRESSIVE_NAT_DETECTION) ? "true" : "false");
+					stream->write_function(stream, "STUN_ENABLED     \t%s\n", sofia_test_pflag(profile, PFLAG_STUN_ENABLED) ? "true" : "false");
+					stream->write_function(stream, "STUN_AUTO_DISABLE\t%s\n", sofia_test_pflag(profile, PFLAG_STUN_AUTO_DISABLE) ? "true" : "false");
 				}
 				stream->write_function(stream, "\nRegistrations:\n%s\n", line);
 
@@ -1695,6 +1698,7 @@
 				stream->write_function(stream, "%s\n", switch_strlen_zero(gp->register_password) ? "no" : "yes");
 				stream->write_function(stream, "%s\n", switch_amp_encode(switch_str_nil(gp->register_from),xmlbuf,buflen));
 				stream->write_function(stream, "%s\n", switch_amp_encode(switch_str_nil(gp->register_contact),xmlbuf,buflen));
+				stream->write_function(stream, "%s\n", switch_amp_encode(switch_str_nil(gp->extension),xmlbuf,buflen));
 				stream->write_function(stream, "%s\n", switch_str_nil(gp->register_to));
 				stream->write_function(stream, "%s\n", switch_str_nil(gp->register_proxy));
 				stream->write_function(stream, "%s\n", switch_str_nil(gp->register_context));
@@ -1704,6 +1708,8 @@
 				stream->write_function(stream, "%d\n", gp->ping_freq);
 				stream->write_function(stream, "%s\n", sofia_state_names[gp->state]);
 				stream->write_function(stream, "%s%s\n", status_names[gp->status], gp->pinging ? " (ping)" : "");
+				stream->write_function(stream, "%d\n", gp->ib_calls);
+				stream->write_function(stream, "%d\n", gp->ob_calls);
 				stream->write_function(stream, "\n");
 				sofia_reg_release_gateway(gp);
 			} else {
@@ -2424,10 +2430,12 @@
 		} else {
 			tech_pvt->invite_contact = switch_core_session_strdup(nsession, gateway_ptr->register_contact);
 		}
+		
+		gateway_ptr->ob_calls++;
 
-		if (gateway_ptr->vars) {
+		if (gateway_ptr->ob_vars) {
 			switch_event_header_t *hp;
-			for(hp = gateway_ptr->vars->headers; hp; hp = hp->next) {
+			for(hp = gateway_ptr->ob_vars->headers; hp; hp = hp->next) {
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s setting variable [%s]=[%s]\n",
 								  switch_channel_get_name(nchannel), hp->name, hp->value);
 				switch_channel_set_variable(nchannel, hp->name, hp->value);

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	Fri Jan 23 14:33:30 2009
@@ -315,6 +315,7 @@
 	char *register_password;
 	char *register_from;
 	char *register_contact;
+	char *extension;
 	char *register_to;
 	char *register_proxy;
 	char *register_sticky_proxy;
@@ -334,7 +335,10 @@
 	reg_state_t state;
 	switch_memory_pool_t *pool;
 	int deleted;
-	switch_event_t *vars;
+	switch_event_t *ib_vars;
+	switch_event_t *ob_vars;
+	uint32_t ib_calls;
+	uint32_t ob_calls;
 	char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
 	int failures;
 	struct sofia_gateway *next;

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	Fri Jan 23 14:33:30 2009
@@ -953,7 +953,7 @@
 
 static void parse_gateways(sofia_profile_t *profile, switch_xml_t gateways_tag)
 {
-	switch_xml_t gateway_tag, param, gw_subs_tag;
+	switch_xml_t gateway_tag, param = NULL, x_params, gw_subs_tag;
 	sofia_gateway_t *gp;
 
 	for (gateway_tag = switch_xml_child(gateways_tag, "gateway"); gateway_tag; gateway_tag = gateway_tag->next) {
@@ -1001,8 +1001,55 @@
 			gateway->next = NULL;
 			gateway->ping = 0;
 			gateway->ping_freq = 0;
+			
+			
+			if ((x_params = switch_xml_child(gateway_tag, "variables"))) {
+				param = switch_xml_child(x_params, "variable");
+			} else {
+				param = switch_xml_child(gateway_tag, "variable");
+			}
+			
+			
+			for (; param; param = param->next) {
+				const char *var = switch_xml_attr(param, "name");
+				const char *val = switch_xml_attr(param, "value");
+				const char *direction = switch_xml_attr(param, "direction");
+				int in = 0, out = 0;
+				
+				if (var && val) {
+					if (direction) {
+						if (!strcasecmp(direction, "inbound")) {
+							in = 1;
+						} else if (!strcasecmp(direction, "outbound")) {
+							out = 1;
+						}
+					} else {
+						in = out = 1;
+					}
+
+					if (in) {
+						if (!gateway->ib_vars) {
+							switch_event_create(&gateway->ib_vars, SWITCH_EVENT_GENERAL);
+						}
+						switch_event_add_header_string(gateway->ib_vars, SWITCH_STACK_BOTTOM, var, val);
+					}
+
+					if (out) {
+						if (!gateway->ob_vars) {
+							switch_event_create(&gateway->ob_vars, SWITCH_EVENT_GENERAL);
+						}
+						switch_event_add_header_string(gateway->ob_vars, SWITCH_STACK_BOTTOM, var, val);
+					}
+				}
+			}
 
-			for (param = switch_xml_child(gateway_tag, "param"); param; param = param->next) {
+			if ((x_params = switch_xml_child(gateway_tag, "params"))) {
+				param = switch_xml_child(x_params, "param");
+			} else {
+				param = switch_xml_child(gateway_tag, "param");
+			}
+			
+			for (; param; param = param->next) {
 				char *var = (char *) switch_xml_attr_soft(param, "name");
 				char *val = (char *) switch_xml_attr_soft(param, "value");
 				
@@ -1144,12 +1191,13 @@
 			gateway->register_from = switch_core_sprintf(gateway->pool, "", from_user, from_domain, register_transport);
 
 			sipip = profile->extsipip ?  profile->extsipip : profile->sipip;
-			format = strchr(sipip, ':') ? "" : "";
-			gateway->register_contact = switch_core_sprintf(gateway->pool, format, extension,
+			format = strchr(sipip, ':') ? "" : "";
+			gateway->extension = switch_core_strdup(gateway->pool, extension);
+			gateway->register_contact = switch_core_sprintf(gateway->pool, format, gateway->name,
 															sipip,
-															sofia_glue_transport_has_tls(gateway->register_transport) ? profile->tls_sip_port : profile->
-															sip_port, params);
-
+															sofia_glue_transport_has_tls(gateway->register_transport) ?
+															profile->tls_sip_port : profile->sip_port, params);
+			
 			if (!strncasecmp(proxy, "sip:", 4)) {
 				gateway->register_proxy = switch_core_strdup(gateway->pool, proxy);
 				gateway->register_to = switch_core_sprintf(gateway->pool, "sip:%s@%s", username, proxy + 4);
@@ -4024,6 +4072,7 @@
 		check_decode(destination_number, session);
 	}
 
+
 	if (sip->sip_to && sip->sip_to->a_url) {
 		const char *host, *user;
 		int port;
@@ -4174,20 +4223,6 @@
 		switch_channel_set_variable(channel, SWITCH_MAX_FORWARDS_VARIABLE, max_forwards);
 	}
 
-	if (sip->sip_request->rq_url) {
-		sofia_gateway_t *gateway;
-		char *from_key;
-		char *user = (char *) sip->sip_request->rq_url->url_user;
-		check_decode(user, session);
-		from_key = switch_core_session_sprintf(session, "sip:%s@%s", user, sip->sip_request->rq_url->url_host);
-
-		if ((gateway = sofia_reg_find_gateway(from_key))) {
-			context = gateway->register_context;
-			switch_channel_set_variable(channel, "sip_gateway", gateway->name);
-			sofia_reg_release_gateway(gateway);
-		}
-	}
-
 	if (!context) {
 		context = switch_channel_get_variable(channel, "user_context");
 	}
@@ -4220,6 +4255,35 @@
 		free(tmp);
 	}
 
+
+	if (strstr(destination_number, "gw+")) {
+		const char *gw_name = destination_number + 3;
+		sofia_gateway_t *gateway;
+		if (gw_name && (gateway = sofia_reg_find_gateway(gw_name))) {
+			context = switch_core_session_strdup(session, gateway->register_context);
+			switch_channel_set_variable(channel, "sip_gateway", gateway->name);
+
+			if (gateway->extension) {
+				destination_number = switch_core_session_strdup(session, gateway->extension);
+			}
+
+			gateway->ib_calls++;
+
+			if (gateway->ib_vars) {
+				switch_event_header_t *hp;
+				for(hp = gateway->ib_vars->headers; hp; hp = hp->next) {
+					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s setting variable [%s]=[%s]\n",
+									  switch_channel_get_name(channel), hp->name, hp->value);
+					switch_channel_set_variable(channel, hp->name, hp->value);
+				}
+			}
+
+			sofia_reg_release_gateway(gateway);
+		}
+	}
+
+
+
 	check_decode(displayname, session);
 	tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session),
 														 from_user,

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c	Fri Jan 23 14:33:30 2009
@@ -194,8 +194,11 @@
 			switch_core_hash_delete(mod_sofia_globals.gateway_hash, gateway_ptr->register_from);
 			switch_core_hash_delete(mod_sofia_globals.gateway_hash, gateway_ptr->register_contact);
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Deleted gateway %s\n", gateway_ptr->name);
-			if (gateway_ptr->vars) {
-				switch_event_destroy(&gateway_ptr->vars);
+			if (gateway_ptr->ob_vars) {
+				switch_event_destroy(&gateway_ptr->ob_vars);
+			}
+			if (gateway_ptr->ib_vars) {
+				switch_event_destroy(&gateway_ptr->ib_vars);
 			}
 		} else {
 			last = gateway_ptr;


From brian at freeswitch.org  Fri Jan 23 13:27:25 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 23 Jan 2009 15:27:25 -0600
Subject: [Freeswitch-svn] [commit] r11469 -
	freeswitch/trunk/src/mod/endpoints/mod_portaudio
Message-ID: 

Author: brian
Date: Fri Jan 23 15:27:24 2009
New Revision: 11469

Log:
remove rate option from call desc.

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Fri Jan 23 15:27:24 2009
@@ -1777,7 +1777,7 @@
 		"pa help\n"
 		"pa dump\n"
 		"pa rescan\n"
-		"pa call  [   ]\n"
+		"pa call  [  ]\n"
 		"pa answer []\n"
 		"pa hangup []\n"
 		"pa list\n"


From brian at freeswitch.org  Fri Jan 23 13:34:44 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 23 Jan 2009 15:34:44 -0600
Subject: [Freeswitch-svn] [commit] r11470 - in freeswitch/trunk:
	conf/autoload_configs src/mod/endpoints/mod_portaudio
Message-ID: 

Author: brian
Date: Fri Jan 23 15:34:43 2009
New Revision: 11470

Log:
make this param optional in the config on all platforms but solaris since it doesn't like it anyway

Modified:
   freeswitch/trunk/conf/autoload_configs/portaudio.conf.xml
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c

Modified: freeswitch/trunk/conf/autoload_configs/portaudio.conf.xml
==============================================================================
--- freeswitch/trunk/conf/autoload_configs/portaudio.conf.xml	(original)
+++ freeswitch/trunk/conf/autoload_configs/portaudio.conf.xml	Fri Jan 23 15:34:43 2009
@@ -15,6 +15,8 @@
     
     
     
+    
+    
 
     
     

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Fri Jan 23 15:34:43 2009
@@ -782,8 +782,6 @@
 	/* dual streams makes portaudio on solaris choke */
 #if defined(sun) || defined(__sun)
 	globals.dual_streams = 0;
-#else
-	globals.dual_streams = 1;
 #endif
 	
 	if ((status = load_config()) != SWITCH_STATUS_SUCCESS) {
@@ -863,6 +861,12 @@
 				set_global_ring_file(val);
 			} else if (!strcmp(var, "hold-file")) {
 				set_global_hold_file(val);
+			} else if (!strcmp(var, "dual-streams")) {
+				if (switch_true(val)) {
+					globals.dual_streams = 1;
+				} else {
+					globals.dual_streams = 0;
+				}
 			} else if (!strcmp(var, "timer-name")) {
 				set_global_timer_name(val);
 			} else if (!strcmp(var, "sample-rate")) {


From brian at freeswitch.org  Fri Jan 23 13:40:55 2009
From: brian at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 23 Jan 2009 15:40:55 -0600
Subject: [Freeswitch-svn] [commit] r11471 -
	freeswitch/trunk/src/mod/endpoints/mod_portaudio
Message-ID: 

Author: brian
Date: Fri Jan 23 15:40:54 2009
New Revision: 11471

Log:
lets default to zero

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Fri Jan 23 15:40:54 2009
@@ -919,6 +919,10 @@
 		globals.codec_ms = 20;
 	}
 
+	if (!globals.dual_streams) {
+		globals.dual_streams = 0;
+	}
+
 	if (!globals.ring_interval) {
 		globals.ring_interval = 5;
 	}


From mikej at freeswitch.org  Fri Jan 23 14:09:17 2009
From: mikej at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 23 Jan 2009 16:09:17 -0600
Subject: [Freeswitch-svn] [commit] r11472 -
	freeswitch/trunk/src/mod/endpoints/mod_portaudio
Message-ID: 

Author: mikej
Date: Fri Jan 23 16:09:17 2009
New Revision: 11472

Log:
mod_portaudio: default dual-streams to off

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Fri Jan 23 16:09:17 2009
@@ -845,6 +845,8 @@
 		return SWITCH_STATUS_TERM;
 	}
 
+	globals.dual_streams = 0;
+
 	globals.indev = globals.outdev = globals.ringdev = -1;
 	globals.sample_rate = 8000;
 
@@ -919,10 +921,6 @@
 		globals.codec_ms = 20;
 	}
 
-	if (!globals.dual_streams) {
-		globals.dual_streams = 0;
-	}
-
 	if (!globals.ring_interval) {
 		globals.ring_interval = 5;
 	}


From Phil at freeswitch.org  Fri Jan 23 15:08:59 2009
From: Phil at freeswitch.org (FreeSWITCH SVN)
Date: Fri, 23 Jan 2009 17:08:59 -0600
Subject: [Freeswitch-svn] [commit] r11473 -
	freeswitch/trunk/scripts/contrib/Phil/pylons
Message-ID: 

Author: Phil
Date: Fri Jan 23 17:08:59 2009
New Revision: 11473

Log:
pylons controllers for FS

Added:
   freeswitch/trunk/scripts/contrib/Phil/pylons/freeswitchcdr.py
   freeswitch/trunk/scripts/contrib/Phil/pylons/freeswitchdialplan.py
   freeswitch/trunk/scripts/contrib/Phil/pylons/freeswitchdirectory.py

Added: freeswitch/trunk/scripts/contrib/Phil/pylons/freeswitchcdr.py
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/contrib/Phil/pylons/freeswitchcdr.py	Fri Jan 23 17:08:59 2009
@@ -0,0 +1,60 @@
+import logging
+
+from freeswitch.lib.base import *
+
+
+import xml
+from xml.sax.handler import ContentHandler 
+
+
+log = logging.getLogger(__name__)
+
+
+class FreeswitchcdrController(BaseController):
+    
+
+    # simple method to display the uuid of a call that got terminated
+    def cdr(self):
+        
+        next = 0
+        uuid = []
+              
+        try:
+            cdr = request.POST.getone('cdr')
+            # needs to be casted to a string as the unicode string can't be parsed correctly by the sax parser
+            cdr = str(cdr)
+            
+            cdrHandler = CDR_XML_Handler()
+            xml.sax.parseString(cdr, cdrHandler) 
+            uuid = cdrHandler.uuid
+            print uuid
+
+            
+        except KeyError, e:
+            print e
+            return
+
+        
+        
+        
+class CDR_XML_Handler(ContentHandler):    
+
+    def __init__(self):
+        self.uuid = []
+        self.uuidString = ""
+        self.isUuidElement = 0
+        
+    def startElement(self, name, attrs):
+
+        if name == 'uuid':
+            self.isUuidElement = 1
+            uuidString = ""
+    
+    def characters(self, ch):
+        if self.isUuidElement == 1:
+            self.uuidString += ch
+
+    def endElement(self, name):
+        if name == 'uuid':
+            self.isUuidElement= 0 
+            self.uuid.append(self.uuidString)

Added: freeswitch/trunk/scripts/contrib/Phil/pylons/freeswitchdialplan.py
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/contrib/Phil/pylons/freeswitchdialplan.py	Fri Jan 23 17:08:59 2009
@@ -0,0 +1,154 @@
+import logging
+
+from freeswitch.lib.base import *
+
+
+
+log = logging.getLogger(__name__)
+
+class FreeswitchdialplanController(BaseController):
+    
+
+    
+
+    # needs to be checked what's the best return string when an error occures
+    error = '''\n'''\
+    '''\n'''\
+    '''
\n'''\ + '''
\n'''\ + '''
''' + + + + # the name forward is a bit confusing as it is actually a FS bridge + # the next two methods allow you to forward a single call to n number of outbound calls + def forwardCreate(self, number, gateway, forwardString): + if forwardString != '': + forwardString = forwardString + ',' + + return forwardString + '''sofia/gateway/%s/%s''' % (gateway, number) + + + + def forwardFinishCreate(self, didNumber, forwardString): + return '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''
\n''' % (didNumber, didNumber, forwardString) + + + # bridge one inbound call with a single outbound call + def bridge(self, didNumber, outboundNumber, gateway): + + return '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''
\n''' % (didNumber, didNumber, gateway, outboundNumber) + + + + def voicemail(self, didNumber, mailbox_id): + + return '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''
''' % (didNumber, didNumber, mailbox_id) + + def checkVoicemail(self, didNumber, mailbox_id): + + return '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''
''' % (didNumber, didNumber, mailbox_id) + + + # if you hungup the call before it has been answered a busy is issued + def busy(self, didNumber): + return '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''
\n''' % (destinationNumber, didNumber) + + + + + def dialplan(self): + + action = "voicemail" + + # replace with your sofia gateway + gateway = 'sipgate2' + + # replace with phone numbers + forwards = ['the did number extension - gateway', 'the number to forward to'] + + # that is the username of the mailbox + mailbox_id = 'test' + + + didNumber = str(request.POST.getone('Caller-Destination-Number')) + + + # ------------------------------------------------------------ Forward ------------------------------------------------------- + # if the action is forward, we forward to all numbers in forwards + if action == "forward": + + forwardString = '' + for f in forwards: + forwardString = self.forwardCreate(f, gateway, forwardString) + + return self.forwardFinishCreate(didNumber, forwardString) + + + + elif action == "checkVoicemail": + + return self.checkVoicemail(didNumber, mailbox_id) + + + + elif action == "voicemail": + + return self.voicemail(didNumber, mailbox_id) + + Added: freeswitch/trunk/scripts/contrib/Phil/pylons/freeswitchdirectory.py ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/Phil/pylons/freeswitchdirectory.py Fri Jan 23 17:08:59 2009 @@ -0,0 +1,67 @@ +import logging + +from freeswitch.lib.base import * + + + + +log = logging.getLogger(__name__) + +class FreeswitchdirectoryController(BaseController): + + bootReply = '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''
\n'''\ + '''
''' + + error = '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''
\n'''\ + '''
''' + + def user(self, didNumber, domain, mailbox_id): + test = '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''\n'''\ + '''
\n'''\ + '''
''' % (domain, mailbox_id, mailbox_id, mailbox_id, mailbox_id) + + return test + + + # a very simple reply that creates a user for the voicemail. + def directory(self): + + try: + return self.user(request.POST.getone('mailbox'), request.POST.getone('domain'), request.POST.getone('user')) + + except KeyError, e: + pass + + return self.bootReply + + From anthm at freeswitch.org Fri Jan 23 16:39:37 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Fri, 23 Jan 2009 18:39:37 -0600 Subject: [Freeswitch-svn] [commit] r11475 - in freeswitch/trunk: libs/portaudio/test src Message-ID: Author: anthm Date: Fri Jan 23 18:39:37 2009 New Revision: 11475 Log: evil line of code strikes again\! Modified: freeswitch/trunk/libs/portaudio/test/patest1.c freeswitch/trunk/libs/portaudio/test/patest_sine.c freeswitch/trunk/libs/portaudio/test/patest_sine8.c freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c freeswitch/trunk/src/switch_core_io.c Modified: freeswitch/trunk/libs/portaudio/test/patest1.c ============================================================================== --- freeswitch/trunk/libs/portaudio/test/patest1.c (original) +++ freeswitch/trunk/libs/portaudio/test/patest1.c Fri Jan 23 18:39:37 2009 @@ -49,7 +49,7 @@ #define M_PI (3.14159265) #endif -#define SAMPLE_RATE (44100) +#define SAMPLE_RATE (8000) typedef struct { Modified: freeswitch/trunk/libs/portaudio/test/patest_sine.c ============================================================================== --- freeswitch/trunk/libs/portaudio/test/patest_sine.c (original) +++ freeswitch/trunk/libs/portaudio/test/patest_sine.c Fri Jan 23 18:39:37 2009 @@ -45,9 +45,9 @@ #include #include "portaudio.h" -#define NUM_SECONDS (5) -#define SAMPLE_RATE (44100) -#define FRAMES_PER_BUFFER (64) +#define NUM_SECONDS (1) +#define SAMPLE_RATE (8000) +#define FRAMES_PER_BUFFER (160) #ifndef M_PI #define M_PI (3.14159265) Modified: freeswitch/trunk/libs/portaudio/test/patest_sine8.c ============================================================================== --- freeswitch/trunk/libs/portaudio/test/patest_sine8.c (original) +++ freeswitch/trunk/libs/portaudio/test/patest_sine8.c Fri Jan 23 18:39:37 2009 @@ -45,15 +45,15 @@ #include #include "portaudio.h" -#define NUM_SECONDS (8) +#define NUM_SECONDS (1) #define SAMPLE_RATE (44100) #define TABLE_SIZE (200) #define TEST_UNSIGNED (0) #if TEST_UNSIGNED -#define TEST_FORMAT paUInt8 +#define TEST_FORMAT paUInt16 #else -#define TEST_FORMAT paInt8 +#define TEST_FORMAT paInt16 #endif #ifndef M_PI Modified: freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c ============================================================================== --- freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c (original) +++ freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c Fri Jan 23 18:39:37 2009 @@ -43,10 +43,11 @@ #include #include #include "portaudio.h" +#include -#define NUM_SECONDS (10) -#define SAMPLE_RATE (44100) -#define FRAMES_PER_BUFFER (512) +#define NUM_SECONDS (20) +#define SAMPLE_RATE (8000) +#define FRAMES_PER_BUFFER (80) #define LEFT_FREQ (SAMPLE_RATE/256.0) /* So we hit 1.0 */ #define RIGHT_FREQ (500.0) #define AMPLITUDE (1.0) @@ -91,6 +92,8 @@ #endif +static int fd = 0; + typedef struct { double left_phase; @@ -120,14 +123,26 @@ { framesToCalc = data->framesToGo; data->framesToGo = 0; - finished = 1; + //finished = 1; } else { framesToCalc = framesPerBuffer; data->framesToGo -= framesPerBuffer; } + + + if (!fd) { + fd = open("/root/sr8k.raw", O_RDONLY, 0); + } + + printf("WTF %d\n", framesToCalc); + i = read(fd, outputBuffer, framesToCalc * 2); + + if (!i) finished = 1; + + /* for( i=0; ileft_phase += (LEFT_FREQ / SAMPLE_RATE); @@ -138,12 +153,16 @@ if( data->right_phase > 1.0) data->right_phase -= 1.0; *out++ = DOUBLE_TO_SAMPLE( AMPLITUDE * sin( (data->right_phase * M_PI * 2. ))); } + */ + /* zero remainder of final buffer */ +#if 0 for( ; i<(int)framesPerBuffer; i++ ) { *out++ = SAMPLE_ZERO; /* left */ *out++ = SAMPLE_ZERO; /* right */ } +#endif return finished; } /*******************************************************************/ @@ -165,7 +184,7 @@ outputParameters.device = Pa_GetDefaultOutputDevice(); /* Default output device. */ - outputParameters.channelCount = 2; /* Stereo output */ + outputParameters.channelCount = 1; /* Stereo output */ outputParameters.sampleFormat = TEST_FORMAT; /* Selected above. */ outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency; outputParameters.hostApiSpecificStreamInfo = NULL; Modified: freeswitch/trunk/src/switch_core_io.c ============================================================================== --- freeswitch/trunk/src/switch_core_io.c (original) +++ freeswitch/trunk/src/switch_core_io.c Fri Jan 23 18:39:37 2009 @@ -616,7 +616,8 @@ if ((session->write_codec && frame->codec && session->write_codec->implementation != frame->codec->implementation)) { - if (session->write_impl.microseconds_per_packet != frame->codec->implementation->microseconds_per_packet) { + if (session->write_impl.codec_id == frame->codec->implementation->codec_id || + session->write_impl.microseconds_per_packet != frame->codec->implementation->microseconds_per_packet) { ptime_mismatch = TRUE; if (switch_test_flag(frame->codec, SWITCH_CODEC_FLAG_PASSTHROUGH) || switch_test_flag(session->read_codec, SWITCH_CODEC_FLAG_PASSTHROUGH)) { status = perform_write(session, frame, flags, stream_id); From anthm at freeswitch.org Fri Jan 23 16:42:11 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Fri, 23 Jan 2009 18:42:11 -0600 Subject: [Freeswitch-svn] [commit] r11476 - freeswitch/trunk/libs/portaudio/test Message-ID: Author: anthm Date: Fri Jan 23 18:42:11 2009 New Revision: 11476 Log: doh Modified: freeswitch/trunk/libs/portaudio/test/patest1.c freeswitch/trunk/libs/portaudio/test/patest_sine.c freeswitch/trunk/libs/portaudio/test/patest_sine8.c freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c Modified: freeswitch/trunk/libs/portaudio/test/patest1.c ============================================================================== --- freeswitch/trunk/libs/portaudio/test/patest1.c (original) +++ freeswitch/trunk/libs/portaudio/test/patest1.c Fri Jan 23 18:42:11 2009 @@ -49,7 +49,7 @@ #define M_PI (3.14159265) #endif -#define SAMPLE_RATE (8000) +#define SAMPLE_RATE (44100) typedef struct { Modified: freeswitch/trunk/libs/portaudio/test/patest_sine.c ============================================================================== --- freeswitch/trunk/libs/portaudio/test/patest_sine.c (original) +++ freeswitch/trunk/libs/portaudio/test/patest_sine.c Fri Jan 23 18:42:11 2009 @@ -45,9 +45,9 @@ #include #include "portaudio.h" -#define NUM_SECONDS (1) -#define SAMPLE_RATE (8000) -#define FRAMES_PER_BUFFER (160) +#define NUM_SECONDS (5) +#define SAMPLE_RATE (44100) +#define FRAMES_PER_BUFFER (64) #ifndef M_PI #define M_PI (3.14159265) Modified: freeswitch/trunk/libs/portaudio/test/patest_sine8.c ============================================================================== --- freeswitch/trunk/libs/portaudio/test/patest_sine8.c (original) +++ freeswitch/trunk/libs/portaudio/test/patest_sine8.c Fri Jan 23 18:42:11 2009 @@ -45,15 +45,15 @@ #include #include "portaudio.h" -#define NUM_SECONDS (1) +#define NUM_SECONDS (8) #define SAMPLE_RATE (44100) #define TABLE_SIZE (200) #define TEST_UNSIGNED (0) #if TEST_UNSIGNED -#define TEST_FORMAT paUInt16 +#define TEST_FORMAT paUInt8 #else -#define TEST_FORMAT paInt16 +#define TEST_FORMAT paInt8 #endif #ifndef M_PI Modified: freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c ============================================================================== --- freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c (original) +++ freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c Fri Jan 23 18:42:11 2009 @@ -43,11 +43,10 @@ #include #include #include "portaudio.h" -#include -#define NUM_SECONDS (20) -#define SAMPLE_RATE (8000) -#define FRAMES_PER_BUFFER (80) +#define NUM_SECONDS (10) +#define SAMPLE_RATE (44100) +#define FRAMES_PER_BUFFER (512) #define LEFT_FREQ (SAMPLE_RATE/256.0) /* So we hit 1.0 */ #define RIGHT_FREQ (500.0) #define AMPLITUDE (1.0) @@ -92,8 +91,6 @@ #endif -static int fd = 0; - typedef struct { double left_phase; @@ -123,26 +120,14 @@ { framesToCalc = data->framesToGo; data->framesToGo = 0; - //finished = 1; + finished = 1; } else { framesToCalc = framesPerBuffer; data->framesToGo -= framesPerBuffer; } - - - if (!fd) { - fd = open("/root/sr8k.raw", O_RDONLY, 0); - } - - printf("WTF %d\n", framesToCalc); - i = read(fd, outputBuffer, framesToCalc * 2); - - if (!i) finished = 1; - - /* for( i=0; ileft_phase += (LEFT_FREQ / SAMPLE_RATE); @@ -153,16 +138,12 @@ if( data->right_phase > 1.0) data->right_phase -= 1.0; *out++ = DOUBLE_TO_SAMPLE( AMPLITUDE * sin( (data->right_phase * M_PI * 2. ))); } - */ - /* zero remainder of final buffer */ -#if 0 for( ; i<(int)framesPerBuffer; i++ ) { *out++ = SAMPLE_ZERO; /* left */ *out++ = SAMPLE_ZERO; /* right */ } -#endif return finished; } /*******************************************************************/ @@ -184,7 +165,7 @@ outputParameters.device = Pa_GetDefaultOutputDevice(); /* Default output device. */ - outputParameters.channelCount = 1; /* Stereo output */ + outputParameters.channelCount = 2; /* Stereo output */ outputParameters.sampleFormat = TEST_FORMAT; /* Selected above. */ outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency; outputParameters.hostApiSpecificStreamInfo = NULL; From andrew at freeswitch.org Fri Jan 23 17:04:59 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Fri, 23 Jan 2009 19:04:59 -0600 Subject: [Freeswitch-svn] [commit] r11477 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Fri Jan 23 19:04:59 2009 New Revision: 11477 Log: Initial support to spawn a process (module/function) outbound on a specified node. Also fix some bugs. Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c Fri Jan 23 19:04:59 2009 @@ -123,29 +123,29 @@ /* function to spawn a process on a remote node */ -int ei_spawn(struct ei_cnode_s *ec, int sockfd, char *module, char *function, int argc, char **argv) +int ei_spawn(struct ei_cnode_s *ec, int sockfd, erlang_ref *ref, char *module, char *function, int argc, char **argv) { ei_x_buff buf; ei_x_new_with_version(&buf); - erlang_ref ref; int i; ei_x_encode_tuple_header(&buf, 3); ei_x_encode_atom(&buf, "$gen_call"); ei_x_encode_tuple_header(&buf, 2); ei_x_encode_pid(&buf, ei_self(ec)); - /* TODO - use this reference to determine the response */ - ei_init_ref(ec, &ref); - ei_x_encode_ref(&buf, &ref); + ei_init_ref(ec, ref); + ei_x_encode_ref(&buf, ref); ei_x_encode_tuple_header(&buf, 5); ei_x_encode_atom(&buf, "spawn"); ei_x_encode_atom(&buf, module); ei_x_encode_atom(&buf, function); /* argument list */ - ei_x_encode_list_header(&buf, argc); - for(i = 0; i < argc && argv[i]; i++) { - ei_x_encode_atom(&buf, argv[i]); + if (argc < 0) { + ei_x_encode_list_header(&buf, argc); + for(i = 0; i < argc && argv[i]; i++) { + ei_x_encode_atom(&buf, argv[i]); + } } ei_x_encode_empty_list(&buf); @@ -156,12 +156,11 @@ ei_x_encode_pid(&buf, ei_self(ec)); /* should really be a valid group leader */ - char *pbuf = 0; - i = 1; - ei_s_print_term(&pbuf, buf.buff, &i); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "spawn returning %s\n", pbuf); - +#ifdef EI_DEBUG + ei_x_print_reg_msg(&buf, "net_kernel", 1); +#endif return ei_reg_send(ec, sockfd, "net_kernel", buf.buff, buf.index); + } @@ -196,6 +195,69 @@ } +void ei_x_print_reg_msg(ei_x_buff *buf, char *dest, int send) +{ + char *mbuf = NULL; + int i = 1; + + ei_s_print_term(&mbuf, buf->buff, &i); + + if (send) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending %s to %s\n", mbuf, dest); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Received %s from %s\n", mbuf, dest); + } + free(mbuf); +} + + +void ei_x_print_msg(ei_x_buff *buf, erlang_pid *pid, int send) +{ + char *pbuf = NULL; + int i = 0; + ei_x_buff pidbuf; + + ei_x_new(&pidbuf); + ei_x_encode_pid(&pidbuf, pid); + + ei_s_print_term(&pbuf, pidbuf.buff, &i); + + ei_x_print_reg_msg(buf, pbuf, send); + free(pbuf); +} + + +int ei_sendto(ei_cnode *ec, int fd, struct erlang_process *process, ei_x_buff *buf) +{ + int ret; + if (process->type == ERLANG_PID) { + ret = ei_send(fd, &process->pid, buf->buff, buf->index); +#ifdef EI_DEBUG + ei_x_print_msg(buf, &process->pid, 1); +#endif + } else if (process->type == ERLANG_REG_PROCESS) { + ret = ei_reg_send(ec, fd, process->reg_name, buf->buff, buf->index); +#ifdef EI_DEBUG + ei_x_print_reg_msg(buf, process->reg_name, 1); +#endif + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid process type!\n"); + /* wuh-oh */ + ret = -1; + } + + return ret; +} + + +/* convert an erlang reference to some kind of hashed string so we can store it as a hash key */ +void ei_hash_ref(erlang_ref *ref, char *output) +{ + /* very lazy */ + sprintf(output, "%d.%d.%d@%s", ref->n[0], ref->n[1], ref->n[2], ref->node); +} + + switch_status_t initialise_ei(struct ei_cnode_s *ec) { switch_status_t rv; Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c Fri Jan 23 19:04:59 2009 @@ -107,6 +107,9 @@ switch_mutex_lock(acs->listener->sock_mutex); ei_send(acs->listener->sockfd, &acs->pid, ebuf.buff, ebuf.index); switch_mutex_unlock(acs->listener->sock_mutex); +#ifdef EI_DEBUG + ei_x_print_msg(&ebuf, &acs->pid, 1); +#endif ei_x_free(&ebuf); } @@ -132,6 +135,9 @@ switch_mutex_lock(acs->listener->sock_mutex); ei_send(acs->listener->sockfd, &acs->pid, rbuf.buff, rbuf.index); switch_mutex_unlock(acs->listener->sock_mutex); +#ifdef EI_DEBUG + ei_x_print_msg(&rbuf, &acs->pid, 1); +#endif ei_x_free(&rbuf); } @@ -492,8 +498,6 @@ binding->process.pid = msg->from; binding->listener = listener; - switch_core_hash_init(&listener->fetch_reply_hash, listener->pool); - switch_mutex_lock(globals.listener_mutex); for (ptr = bindings.head; ptr && ptr->next; ptr = ptr->next); @@ -532,7 +536,7 @@ switch_core_session_t *session; if (!switch_strlen_zero(uuid_str) && (session = switch_core_session_locate(uuid_str))) { /* create a new session list element and attach it to this listener */ - if (attach_call_to_listener(listener,reg_name,session)) { + if (attach_call_to_registered_process(listener, reg_name, session)) { ei_x_encode_atom(rbuf, "ok"); } else { ei_x_encode_tuple_header(rbuf, 2); @@ -660,9 +664,48 @@ return ret; } + +static switch_status_t handle_ref_tuple(listener_t *listener, erlang_msg *msg, ei_x_buff *buf, ei_x_buff *rbuf) +{ + erlang_ref ref; + erlang_pid *pid2, *pid = switch_core_alloc(listener->pool, sizeof(erlang_pid)); + char hash[100]; + int arity; + + ei_decode_tuple_header(buf->buff, &buf->index, &arity); + + if (ei_decode_ref(buf->buff, &buf->index, &ref)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid reference\n"); + return SWITCH_STATUS_FALSE; + } + + if (ei_decode_pid(buf->buff, &buf->index, pid)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid pid in a reference/pid tuple\n"); + return SWITCH_STATUS_FALSE; + } + + ei_hash_ref(&ref, hash); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Hashed ref to %s\n", hash); + + if ((pid2 = (erlang_pid *) switch_core_hash_find(listener->spawn_pid_hash, hash))) { + if (pid2 == NULL) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Found unfilled slot for %s\n", hash); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Found filled slot for %s\n", hash); + } + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "No slot for %s\n", hash); + switch_core_hash_insert(listener->spawn_pid_hash, hash, pid); + } + + return SWITCH_STATUS_SUCCESS; +} + + int handle_msg(listener_t *listener, erlang_msg *msg, ei_x_buff *buf, ei_x_buff *rbuf) { - int type, size, version; + int type, type2, size, version, arity, tmpindex; switch_status_t ret = SWITCH_STATUS_SUCCESS; buf->index = 0; @@ -672,7 +715,27 @@ switch(type) { case ERL_SMALL_TUPLE_EXT : case ERL_LARGE_TUPLE_EXT : - ret = handle_msg_tuple(listener,msg,buf,rbuf); + tmpindex = buf->index; + ei_decode_tuple_header(buf->buff, &tmpindex, &arity); + ei_get_type(buf->buff, &tmpindex, &type2, &size); + + switch(type2) { + case ERL_ATOM_EXT: + ret = handle_msg_tuple(listener,msg,buf,rbuf); + break; + case ERL_REFERENCE_EXT : + case ERL_NEW_REFERENCE_EXT : + handle_ref_tuple(listener, msg, buf, rbuf); + return 0; + default : + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "WEEEEEEEE %d\n", type); + /* some other kind of erlang term */ + ei_x_encode_tuple_header(rbuf, 2); + ei_x_encode_atom(rbuf, "error"); + ei_x_encode_atom(rbuf, "undef"); + break; + } + break; case ERL_ATOM_EXT : @@ -687,17 +750,23 @@ break; } - if (SWITCH_STATUS_FALSE==ret) + if (SWITCH_STATUS_FALSE==ret) { return 0; - else { + } else if (rbuf->index > 1) { switch_mutex_lock(listener->sock_mutex); ei_send(listener->sockfd, &msg->from, rbuf->buff, rbuf->index); switch_mutex_unlock(listener->sock_mutex); +#ifdef EI_DEBUG + ei_x_print_msg(rbuf, &msg->from, 1); +#endif if (SWITCH_STATUS_SUCCESS==ret) return 0; else /* SWITCH_STATUS_TERM */ return 1; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Empty reply, supressing\n"); + return 0; } } Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Fri Jan 23 19:04:59 2009 @@ -346,7 +346,7 @@ /*switch_core_hash_insert(ptr->reply_hash, uuid_str, );*/ switch_mutex_lock(ptr->listener->sock_mutex); - ei_send(ptr->listener->sockfd, &ptr->process.pid, buf.buff, buf.index); + ei_sendto(ptr->listener->ec, ptr->listener->sockfd, &ptr->process, &buf); switch_mutex_unlock(ptr->listener->sock_mutex); int i = 0; @@ -418,16 +418,13 @@ ei_encode_switch_event(&lbuf, call_event); switch_mutex_lock(listener->sock_mutex); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending initial call event\n"); - if (process.type == ERLANG_PID) { - result = ei_send(listener->sockfd, &process.pid, lbuf.buff, lbuf.index); - } else { - result = ei_reg_send(listener->ec, listener->sockfd, process.reg_name, lbuf.buff, lbuf.index); - } + result = ei_sendto(listener->ec, listener->sockfd, &process, &lbuf); + + switch_mutex_unlock(listener->sock_mutex); if (result) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to send call event\n"); } - switch_mutex_unlock(listener->sock_mutex); ei_x_free(&lbuf); return SWITCH_STATUS_SUCCESS; @@ -467,11 +464,7 @@ ei_encode_switch_event(&ebuf, pevent); switch_mutex_lock(listener->sock_mutex); - if (sp->process.type == ERLANG_PID) { - ei_send(listener->sockfd, &sp->process.pid, ebuf.buff, ebuf.index); - } else { - ei_reg_send(listener->ec, listener->sockfd, sp->process.reg_name, ebuf.buff, ebuf.index); - } + ei_sendto(listener->ec, listener->sockfd, &sp->process, &ebuf); switch_mutex_unlock(listener->sock_mutex); /* event is a hangup, so this session can be removed */ @@ -484,8 +477,11 @@ else listener->session_list = sp->next; + + switch_channel_clear_flag(switch_core_session_get_channel(sp->session), CF_CONTROLLED); /* this allows the application threads to exit */ - switch_clear_flag_locked(sp, LFLAG_SESSION_ALIVE); + switch_clear_flag_locked(sp, LFLAG_SESSION_ALIVE); + switch_core_session_rwunlock(sp->session); /* TODO if this listener was created outbound, and the last session has been detached @@ -546,11 +542,7 @@ ei_x_encode_empty_list(&lbuf); switch_mutex_lock(listener->sock_mutex); - if (listener->log_process.type == ERLANG_PID) { - ei_send(listener->sockfd, &listener->log_process.pid, lbuf.buff, lbuf.index); - } else { - ei_reg_send(listener->ec, listener->sockfd, listener->log_process.reg_name, lbuf.buff, lbuf.index); - } + ei_sendto(listener->ec, listener->sockfd, &listener->log_process, &lbuf); switch_mutex_unlock(listener->sock_mutex); ei_x_free(&lbuf); @@ -576,11 +568,7 @@ ei_encode_switch_event(&ebuf, pevent); switch_mutex_lock(listener->sock_mutex); - if (listener->log_process.type == ERLANG_PID) { - ei_send(listener->sockfd, &listener->log_process.pid, ebuf.buff, ebuf.index); - } else { - ei_reg_send(listener->ec, listener->sockfd, listener->log_process.reg_name, ebuf.buff, ebuf.index); - } + ei_sendto(listener->ec, listener->sockfd, &listener->log_process, &ebuf); switch_mutex_unlock(listener->sock_mutex); ei_x_free(&ebuf); @@ -592,8 +580,6 @@ static void listener_main_loop(listener_t *listener) { int status = 1; - /*int i = 1;*/ - /*char *pbuf = 0;*/ while ((status >= 0 || erl_errno == ETIMEDOUT || erl_errno == EAGAIN) && !prefs.done) { erlang_msg msg; @@ -614,20 +600,27 @@ case ERL_MSG : switch(msg.msgtype) { case ERL_SEND : - /*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_send\n");*/ - /*i = 1;*/ +#ifdef EI_DEBUG + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_send\n"); + + ei_x_print_msg(&buf, &msg.from, 0); /*ei_s_print_term(&pbuf, buf.buff, &i);*/ /*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_send was message %s\n", pbuf);*/ +#endif if (handle_msg(listener, &msg, &buf, &rbuf)) { return; } break; case ERL_REG_SEND : - /*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_reg_send to %s\n", msg.toname);*/ +#ifdef EI_DEBUG + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_reg_send to %s\n", msg.toname); + + ei_x_print_reg_msg(&buf, msg.toname, 0); /*i = 1;*/ /*ei_s_print_term(&pbuf, buf.buff, &i);*/ /*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_reg_send was message %s\n", pbuf);*/ +#endif if (handle_msg(listener, &msg, &buf, &rbuf)) { return; @@ -695,6 +688,9 @@ ei_x_encode_atom(&rbuf, "acldeny"); ei_send(listener->sockfd, &msg.from, rbuf.buff, rbuf.index); +#ifdef EI_DEBUG + ei_x_print_msg(&rbuf, &msg.from, 1); +#endif ei_x_free(&rbuf); } @@ -718,6 +714,9 @@ prefs.threads++; switch_mutex_unlock(globals.listener_mutex); + switch_core_hash_init(&listener->fetch_reply_hash, listener->pool); + switch_core_hash_init(&listener->spawn_pid_hash, listener->pool); + switch_assert(listener != NULL); if (check_inbound_acl(listener)) { @@ -896,7 +895,7 @@ return listener; } -session_elem_t* attach_call_to_listener(listener_t* listener, char* reg_name, switch_core_session_t *session) +session_elem_t* attach_call_to_registered_process(listener_t* listener, char* reg_name, switch_core_session_t *session) { /* create a session list element */ session_elem_t* session_element=NULL; @@ -922,32 +921,92 @@ return session_element; } +session_elem_t* attach_call_to_spawned_process(listener_t* listener, char *module, char *function, switch_core_session_t *session) +{ + /* create a session list element */ + session_elem_t* session_element=NULL; + if (!(session_element = switch_core_alloc(switch_core_session_get_pool(session), sizeof(*session_element)))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to allocate session element\n"); + } + else { + if (SWITCH_STATUS_SUCCESS != switch_core_session_read_lock(session)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to get session read lock\n"); + } + else { + char *argv[1], hash[100]; + int i = 0; + session_element->session = session; + erlang_pid *pid; + erlang_ref ref; + + ei_spawn(listener->ec, listener->sockfd, &ref, module, function, 0, argv); + ei_hash_ref(&ref, hash); + + while (!(pid = (erlang_pid *) switch_core_hash_find(listener->spawn_pid_hash, hash))) { + if (i > 50) { /* half a second timeout */ + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "timed out!\n"); + return NULL; + } + i++; + switch_yield(10000); /* 10ms */ + } + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got pid!\n"); + + session_element->process.type = ERLANG_PID; + memcpy(&session_element->process.pid, pid, sizeof(erlang_pid)); + switch_set_flag(session_element, LFLAG_SESSION_ALIVE); + switch_clear_flag(session_element, LFLAG_OUTBOUND_INIT); + switch_queue_create(&session_element->event_queue, SWITCH_CORE_QUEUE_LEN, switch_core_session_get_pool(session)); + switch_mutex_init(&session_element->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session)); + /* attach the session to the listener */ + add_session_elem_to_listener(listener,session_element); + } + } + return session_element; +} + + /* Module Hooks */ /* Entry point for outbound mode */ SWITCH_STANDARD_APP(erlang_outbound_function) { - char *reg_name, *node; + char *reg_name = NULL, *node, *module = NULL, *function = NULL; listener_t *listener; - int argc = 0; - char *argv[80] = { 0 }; - char *mydata; + int argc = 0, argc2=0; + char *argv[80] = { 0 }, *argv2[80] = { 0 }; + char *mydata, *myarg; switch_bool_t new_session = SWITCH_FALSE; session_elem_t* session_element=NULL; /* process app arguments */ if (data && (mydata = switch_core_session_strdup(session, data))) { argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); - } + } /* XXX else? */ if (argc < 2) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error - need registered name and node!\n"); return; } - reg_name = argv[0]; - if (switch_strlen_zero(reg_name)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing registered name!\n"); + if (switch_strlen_zero(argv[0])) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing registered name or module:function!\n"); return; } + + if ((myarg = switch_core_session_strdup(session, argv[0]))) { + argc2 = switch_separate_string(myarg, ':', argv2, (sizeof(argv2) / sizeof(argv2[0]))); + } + + if (argc2 == 2) { + /* mod:fun style */ + module = argv2[0]; + function = argv2[1]; + } else { + /* registered name style */ + reg_name = argv[0]; + } + + node = argv[1]; if (switch_strlen_zero(node)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing node name!\n"); @@ -967,17 +1026,27 @@ else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Using existing listener for session\n"); } - if (listener && - (session_element=attach_call_to_listener(listener,reg_name,session)) != NULL) { - - if (new_session) - launch_listener_thread(listener); - switch_ivr_park(session, NULL); - /* keep app thread running for lifetime of session */ - if (switch_channel_get_state(switch_core_session_get_channel(session)) >= CS_HANGUP) { - while (switch_test_flag(session_element, LFLAG_SESSION_ALIVE)) { - switch_yield(100000); + if (listener) { + if (module && function) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating new spawned session for listener\n"); + session_element=attach_call_to_spawned_process(listener, module, function, session); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating new registered session for listener\n"); + session_element=attach_call_to_registered_process(listener, reg_name, session); + } + + if (session_element) { + + if (new_session) + launch_listener_thread(listener); + switch_ivr_park(session, NULL); + + /* keep app thread running for lifetime of session */ + if (switch_channel_get_state(switch_core_session_get_channel(session)) >= CS_HANGUP) { + while (switch_test_flag(session_element, LFLAG_SESSION_ALIVE)) { + switch_yield(100000); + } } } } Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Fri Jan 23 19:04:59 2009 @@ -32,6 +32,7 @@ * */ +#define EI_DEBUG typedef enum { LFLAG_OUTBOUND_INIT = (1 << 0), /* Erlang peer has been notified of this session */ @@ -93,6 +94,7 @@ uint8_t event_list[SWITCH_EVENT_ALL + 1]; switch_hash_t *event_hash; switch_hash_t *fetch_reply_hash; + switch_hash_t *spawn_pid_hash; switch_thread_rwlock_t *rwlock; switch_mutex_t *session_mutex; session_elem_t *session_list; @@ -186,13 +188,18 @@ void ei_link(listener_t *listener, erlang_pid *from, erlang_pid *to); void ei_encode_switch_event_headers(ei_x_buff *ebuf, switch_event_t *event); void ei_encode_switch_event_tag(ei_x_buff *ebuf, switch_event_t *event, char *tag); -int ei_spawn(struct ei_cnode_s *ec, int sockfd, char *module, char *function, int argc, char **argv); +int ei_spawn(struct ei_cnode_s *ec, int sockfd, erlang_ref *ref, char *module, char *function, int argc, char **argv); void ei_init_ref(struct ei_cnode_s *ec, erlang_ref *ref); +void ei_x_print_reg_msg(ei_x_buff *buf, char *dest, int send); +void ei_x_print_msg(ei_x_buff *buf, erlang_pid *pid, int send); +int ei_sendto(ei_cnode *ec, int fd, struct erlang_process *process, ei_x_buff *buf); +void ei_hash_ref(erlang_ref *ref, char *output); switch_status_t initialise_ei(struct ei_cnode_s *ec); #define ei_encode_switch_event(_b, _e) ei_encode_switch_event_tag(_b, _e, "event") /* mod_erlang_event.c */ -session_elem_t* attach_call_to_listener(listener_t* listener, char* reg_name, switch_core_session_t *session); +session_elem_t* attach_call_to_registered_process(listener_t* listener, char* reg_name, switch_core_session_t *session); +session_elem_t* attach_call_to_spawned_process(listener_t* listener, char *module, char *function, switch_core_session_t *session); /* For Emacs: * Local Variables: From silik0n at freeswitch.org Fri Jan 23 17:14:11 2009 From: silik0n at freeswitch.org (FreeSWITCH SVN) Date: Fri, 23 Jan 2009 19:14:11 -0600 Subject: [Freeswitch-svn] [commit] r11478 - freeswitch/trunk/src/mod/applications/mod_easyroute Message-ID: Author: silik0n Date: Fri Jan 23 19:14:10 2009 New Revision: 11478 Log: fix build error when --enable-core-odbc-support not used at configure time Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c (original) +++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c Fri Jan 23 19:14:10 2009 @@ -197,8 +197,8 @@ static switch_status_t route_lookup(char *dn, easyroute_results_t *results, int noat, char *seperator) { -#ifdef SWITCH_HAVE_ODBC switch_status_t sstatus = SWITCH_STATUS_SUCCESS; +#ifdef SWITCH_HAVE_ODBC char *sql = NULL; route_callback_t pdata; From andrew at freeswitch.org Fri Jan 23 18:08:06 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Fri, 23 Jan 2009 20:08:06 -0600 Subject: [Freeswitch-svn] [commit] r11479 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Fri Jan 23 20:08:06 2009 New Revision: 11479 Log: Fix some issues with standing up a new outbound listener and cleaning up after a failed session (more issues remain) Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Fri Jan 23 20:08:06 2009 @@ -864,10 +864,11 @@ switch_queue_create(&listener->event_queue, SWITCH_CORE_QUEUE_LEN, listener_pool); switch_queue_create(&listener->log_queue, SWITCH_CORE_QUEUE_LEN, listener_pool); - listener->ec = ec; listener->sockfd = clientfd; listener->pool = listener_pool; listener_pool = NULL; + listener->ec = switch_core_alloc(listener->pool, sizeof(ei_cnode)); + memcpy(listener->ec, ec, sizeof(ei_cnode)); listener->level = SWITCH_LOG_DEBUG; switch_mutex_init(&listener->flag_mutex, SWITCH_MUTEX_NESTED, listener->pool); switch_mutex_init(&listener->sock_mutex, SWITCH_MUTEX_NESTED, listener->pool); @@ -945,6 +946,7 @@ while (!(pid = (erlang_pid *) switch_core_hash_find(listener->spawn_pid_hash, hash))) { if (i > 50) { /* half a second timeout */ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "timed out!\n"); + switch_core_session_rwunlock(session); return NULL; } i++; @@ -1013,7 +1015,7 @@ return; } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "enter erlang_outbound_function %s %s\n",reg_name, node); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "enter erlang_outbound_function %s %s\n",argv[0], node); /* first work out if there is a listener already talking to the node we want to talk to */ listener = find_listener(node); @@ -1022,6 +1024,7 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating new listener for session\n"); new_session = SWITCH_TRUE; listener = new_outbound_listener(node); + add_listener(listener); } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Using existing listener for session\n"); From intralanman at freeswitch.org Fri Jan 23 18:34:56 2009 From: intralanman at freeswitch.org (FreeSWITCH SVN) Date: Fri, 23 Jan 2009 20:34:56 -0600 Subject: [Freeswitch-svn] [commit] r11480 - freeswitch/trunk/src/mod/endpoints/mod_sofia Message-ID: Author: intralanman Date: Fri Jan 23 20:34:55 2009 New Revision: 11480 Log: seems like snom is the only one that DOES support this Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Fri Jan 23 20:34:55 2009 @@ -4474,8 +4474,8 @@ switch_channel_t *channel = switch_core_session_get_channel(bleg); const char *ua = switch_channel_get_variable(channel, "sip_user_agent"); - if (ua && switch_stristr("cisco", ua)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "If you were using some other phone besides a Cisco, we would have updated the caller id display on your phone for you!\n"); + if (ua && !switch_stristr("snom", ua)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "If you were using a Snom phone, we would have updated the caller id display on your phone for you!\n"); return; } @@ -4494,6 +4494,7 @@ } } } + /* * This subroutine will take the a_params of a sip_addr_s structure and spin through them. * Each param will be used to create a channel variable. From ctrix at freeswitch.org Sat Jan 24 07:50:34 2009 From: ctrix at freeswitch.org (FreeSWITCH SVN) Date: Sat, 24 Jan 2009 09:50:34 -0600 Subject: [Freeswitch-svn] [commit] r11481 - freeswitch/branches/ctrix/mod_airpe Message-ID: Author: ctrix Date: Sat Jan 24 09:50:34 2009 New Revision: 11481 Log: Fix this test before complete rework Modified: freeswitch/branches/ctrix/mod_airpe/Makefile freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c Modified: freeswitch/branches/ctrix/mod_airpe/Makefile ============================================================================== --- freeswitch/branches/ctrix/mod_airpe/Makefile (original) +++ freeswitch/branches/ctrix/mod_airpe/Makefile Sat Jan 24 09:50:34 2009 @@ -10,7 +10,8 @@ #LOCAL_LDFLAGS=-lX11 #--------------------------------- OSX -LOCAL_LDFLAGS=-framework Skype -framework CoreFoundation +#LOCAL_LDFLAGS=-framework CoreFoundation +LOCAL_LDFLAGS=-framework Skype -framework CoreFoundation -framework Carbon include ../../../../build/modmake.rules Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c ============================================================================== --- freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c (original) +++ freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c Sat Jan 24 09:50:34 2009 @@ -4,6 +4,7 @@ #if defined (MACOSX) || defined(DARWIN) #include "Skype/SkypeAPI-Carbon.h" +#include struct skype_window_handler_s { struct SkypeDelegate delegate; @@ -43,18 +44,22 @@ string = CFStringCreateWithCString(NULL, message_P, kCFStringEncodingUTF8 ); SendSkypeCommand(string); CFRelease(string); + RunCurrentEventLoop(0.01); return SWITCH_STATUS_SUCCESS; } switch_status_t airpe_skype_avalaible(skype_window_handler_t *window) { +/* if ( IsSkypeAvailable() ) { return SWITCH_STATUS_SUCCESS; } else { return SWITCH_STATUS_FALSE; } +*/ + return SWITCH_STATUS_FALSE; } @@ -62,20 +67,16 @@ /***************************************************************************** THREADS *****************************************************************************/ -static void IncomingMessage(CFStringRef aNotificationString) { +static int attached = -1; +static void IncomingMessage(CFStringRef aNotificationString) { ADEBUG("Incoming message"); - -// char *string; -// airpe_manage_skype_msg( airpe, string); - } static void AttachResponse(unsigned int aAttachResponseCode) { ADEBUG("Attach: %d\n", aAttachResponseCode); + attached = aAttachResponseCode; } - - void *SWITCH_THREAD_FUNC airpe_skype_thread(switch_thread_t * thread, void *obj) { airpe_interface_t *airpe = NULL; struct SkypeDelegate *del; @@ -85,13 +86,17 @@ if ( !IsSkypeAvailable() ) { ADEBUG("Sorry, not available\n"); - return NULL; + goto done; } - + RunCurrentEventLoop(0.1); +/* if ( !IsSkypeRunning() ) { ADEBUG("Sorry, not running\n"); - return NULL; + goto done; } + RunCurrentEventLoop(0.1); +*/ + airpe->running = 1; del = &airpe->skype_window->delegate; del->clientApplicationName=CFSTR("airpe"); @@ -99,26 +104,37 @@ del->SkypeAttachResponse=AttachResponse; SetSkypeDelegate(del); + RunCurrentEventLoop(0.1); ConnectToSkype(); + RunCurrentEventLoop(0.1); + + while ( airpe->running && attached !=1 ) { +// ADEBUG("Sorry, not attached\n"); + RunCurrentEventLoop(0.01); + } + + if ( !attached && airpe->running ) { + ADEBUG("Sorry, not attached\n"); + goto done; + } if ( airpe_on_connect_messages( airpe, 6 ) != SWITCH_STATUS_SUCCESS ) { switch_log_printf( SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe client %s. Failed to send handshake messages\n", airpe->name); - return NULL; + goto done; } - airpe->running = 1; while ( airpe->running ) { - switch_sleep(1000000); + RunCurrentEventLoop(0.01); } DisconnectFromSkype(); RemoveSkypeDelegate(); + done: ADEBUG("Exiting\n"); - airpe->airpe_thread_skype = NULL; return NULL; From anthm at freeswitch.org Sat Jan 24 10:11:42 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Sat, 24 Jan 2009 12:11:42 -0600 Subject: [Freeswitch-svn] [commit] r11482 - in freeswitch/trunk/src: . mod/formats/mod_shout Message-ID: Author: anthm Date: Sat Jan 24 12:11:42 2009 New Revision: 11482 Log: add error checking Modified: freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c freeswitch/trunk/src/switch_core_file.c Modified: freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c ============================================================================== --- freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c (original) +++ freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c Sat Jan 24 12:11:42 2009 @@ -876,6 +876,10 @@ *len = 0; + if (!context || context->err) { + return SWITCH_STATUS_FALSE; + } + if (context->fd) { rb = decode_fd(context, data, bytes); } else { @@ -923,7 +927,16 @@ return SWITCH_STATUS_FALSE; } + if (context->err) { + return SWITCH_STATUS_FALSE; + } + if (context->shout && !context->shout_init) { + + if (!context->gfp) { + return SWITCH_STATUS_FALSE; + } + context->shout_init++; if (shout_open(context->shout) != SHOUTERR_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error opening stream: %s\n", shout_get_error(context->shout)); Modified: freeswitch/trunk/src/switch_core_file.c ============================================================================== --- freeswitch/trunk/src/switch_core_file.c (original) +++ freeswitch/trunk/src/switch_core_file.c Sat Jan 24 12:11:42 2009 @@ -45,6 +45,11 @@ char stream_name[128] = ""; char *rhs = NULL; + if (switch_test_flag(fh, SWITCH_FILE_OPEN)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Handle already open\n"); + return SWITCH_STATUS_FALSE; + } + if (switch_strlen_zero(file_path)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Filename\n"); return SWITCH_STATUS_FALSE; @@ -140,6 +145,10 @@ switch_assert(fh != NULL); switch_assert(fh->file_interface != NULL); + if (!switch_test_flag(fh, SWITCH_FILE_OPEN)) { + return SWITCH_STATUS_FALSE; + } + top: if (fh->buffer && switch_buffer_inuse(fh->buffer) >= *len * 2) { @@ -253,6 +262,10 @@ switch_assert(fh != NULL); switch_assert(fh->file_interface != NULL); + if (!switch_test_flag(fh, SWITCH_FILE_OPEN)) { + return SWITCH_STATUS_FALSE; + } + if (!fh->file_interface->file_write) { return SWITCH_STATUS_FALSE; } From anthm at freeswitch.org Sat Jan 24 10:38:45 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Sat, 24 Jan 2009 12:38:45 -0600 Subject: [Freeswitch-svn] [commit] r11483 - freeswitch/trunk/src/mod/formats/mod_shout Message-ID: Author: anthm Date: Sat Jan 24 12:38:45 2009 New Revision: 11483 Log: update Modified: freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c Modified: freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c ============================================================================== --- freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c (original) +++ freeswitch/trunk/src/mod/formats/mod_shout/mod_shout.c Sat Jan 24 12:38:45 2009 @@ -544,6 +544,12 @@ { shout_context_t *context = (shout_context_t *) obj; + if (context->thread_running) { + context->thread_running++; + } else { + return NULL; + } + if (!context->lame_ready) { lame_init_params(context->gfp); lame_print_config(context->gfp); @@ -620,6 +626,7 @@ { switch_thread_t *thread; switch_threadattr_t *thd_attr = NULL; + int sanity = 10; if (context->err) { return; @@ -630,6 +637,11 @@ switch_threadattr_detach_set(thd_attr, 1); switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); switch_thread_create(&thread, thd_attr, write_stream_thread, context, context->memory_pool); + + while (context->thread_running && context->thread_running != 2) { + switch_yield(100000); + if (!--sanity) break; + } } #define TC_BUFFER_SIZE 1024 * 32 From brian at freeswitch.org Sat Jan 24 17:40:51 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Sat, 24 Jan 2009 19:40:51 -0600 Subject: [Freeswitch-svn] [commit] r11484 - freeswitch/trunk/src Message-ID: Author: brian Date: Sat Jan 24 19:40:50 2009 New Revision: 11484 Log: temp fix for 8k to 48k popping. Modified: freeswitch/trunk/src/switch_resample.c Modified: freeswitch/trunk/src/switch_resample.c ============================================================================== --- freeswitch/trunk/src/switch_resample.c (original) +++ freeswitch/trunk/src/switch_resample.c Sat Jan 24 19:40:50 2009 @@ -137,9 +137,9 @@ s[i] = (short) (ft - 0.5); } if ((float) s[i] > MAXSAMPLE) - s[i] = (short) MAXSAMPLE; + s[i] = (short) MAXSAMPLE / 2; if (s[i] < (short) -MAXSAMPLE) - s[i] = (short) -MAXSAMPLE; + s[i] = (short) -MAXSAMPLE / 2; } return len; } From anthm at freeswitch.org Sun Jan 25 13:15:38 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Sun, 25 Jan 2009 15:15:38 -0600 Subject: [Freeswitch-svn] [commit] r11485 - freeswitch/trunk/src/mod/endpoints/mod_portaudio Message-ID: Author: anthm Date: Sun Jan 25 15:15:37 2009 New Revision: 11485 Log: try closing the device when not in use again Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c Sun Jan 25 15:15:37 2009 @@ -127,8 +127,7 @@ switch_timer_t timer; switch_timer_t hold_timer; int dual_streams; - int monitor_running; - int deactivate_timer; + time_t deactivate_timer; } globals; @@ -290,7 +289,7 @@ } if (ring_file) { - //deactivate_ring_device(); + deactivate_ring_device(); switch_core_file_close(&fh); } @@ -327,6 +326,8 @@ return; } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stop audio device.\n"); + switch_mutex_lock(globals.device_lock); /* LOCKED ************************************************************************************************** */ @@ -372,6 +373,7 @@ return; } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stop ring device.\n"); switch_mutex_lock(globals.device_lock); if (globals.ring_stream && globals.ring_stream != globals.audio_stream) { CloseAudioStream(globals.ring_stream); @@ -424,8 +426,6 @@ } } - globals.deactivate_timer = 0; - switch_mutex_unlock(globals.pvt_lock); } @@ -449,7 +449,8 @@ if (globals.call_list) { switch_set_flag_locked(globals.call_list, TFLAG_MASTER); } else { - globals.deactivate_timer = 5; + globals.deactivate_timer = switch_timestamp(NULL) + 2; + deactivate_audio_device(); } switch_mutex_unlock(globals.pvt_lock); @@ -963,18 +964,6 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_portaudio_shutdown) { -#if 0 - if (globals.monitor_running == 1) { - int sanity = 20; - globals.monitor_running = -1; - while(globals.monitor_running) { - switch_yield(1000000); - if (!--sanity) { - break; - } - } - } -#endif deactivate_audio_device(); deactivate_ring_device(); @@ -988,26 +977,6 @@ return SWITCH_STATUS_SUCCESS; } -#if 0 -SWITCH_MODULE_RUNTIME_FUNCTION(mod_portaudio_runtime) -{ - globals.monitor_running = 1; - while(globals.monitor_running == 1) { - switch_mutex_lock(globals.pvt_lock); - if (!globals.call_list && globals.deactivate_timer > 0) { - if (!--globals.deactivate_timer) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "No more channels, deactivating audio\n"); - deactivate_audio_device(); - } - } - switch_mutex_unlock(globals.pvt_lock); - switch_yield(1000000); - } - globals.monitor_running = 0; - return SWITCH_STATUS_TERM; -} -#endif - static int get_dev_by_number(char *numstr, int in) { int numDevices = Pa_GetDeviceCount(); @@ -1289,6 +1258,12 @@ int sample_rate = globals.sample_rate; int codec_ms = globals.codec_ms; + switch_mutex_lock(globals.device_lock); + while (globals.deactivate_timer > switch_timestamp(NULL)) { + switch_yield(1000000); + } + switch_mutex_unlock(globals.device_lock); + if (restart) { deactivate_audio_device(); @@ -1552,6 +1527,7 @@ switch_channel_t *channel = switch_core_session_get_channel(tp->session); switch_set_flag_locked(tp, TFLAG_ANSWER); add_pvt(tp, PA_MASTER); + deactivate_ring_device(); switch_channel_mark_answered(channel); } } else { @@ -1566,6 +1542,7 @@ switch_channel_t *channel = switch_core_session_get_channel(tp->session); switch_set_flag_locked(tp, TFLAG_ANSWER); add_pvt(tp, PA_MASTER); + deactivate_ring_device(); switch_channel_mark_answered(channel); x++; break; @@ -1747,6 +1724,7 @@ tech_pvt->session = session; if ((status = engage_device(0)) == SWITCH_STATUS_SUCCESS) { switch_set_flag_locked(tech_pvt, TFLAG_ANSWER); + deactivate_ring_device(); switch_channel_mark_answered(channel); switch_channel_set_state(channel, CS_INIT); if (switch_core_session_thread_launch(tech_pvt->session) != SWITCH_STATUS_SUCCESS) { @@ -1903,7 +1881,7 @@ devname = "indev"; if (devval > -1) { globals.indev = devval; - engage_device(1); + //engage_device(1); } } else if (argv[1] && !strcmp(argv[0], "outdev")) { @@ -1920,7 +1898,7 @@ devname = "outdev"; if (devval > -1) { globals.outdev = devval; - engage_device(1); + //engage_device(1); } } else if (argv[1] && !strcmp(argv[0], "ringdev")) { @@ -1937,7 +1915,7 @@ devname = "ringdev"; if (devval > -1) { globals.ringdev = devval; - engage_device(1); + //engage_device(1); } } else if ((argv[1] && !strcasecmp(argv[0], "play"))) { switch_file_handle_t fh = { 0 }; @@ -1988,6 +1966,7 @@ } switch_core_file_close(&fh); + deactivate_audio_device(); } else { stream->write_function(stream, "Cannot play requested file %s\n", argv[1]); } @@ -2016,6 +1995,7 @@ if (!success) { stream->write_function(stream, "Failed to read any bytes from indev\n"); } + deactivate_audio_device(); } else { stream->write_function(stream, "Failed to engage audio device\n"); } From anthm at freeswitch.org Sun Jan 25 13:23:07 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Sun, 25 Jan 2009 15:23:07 -0600 Subject: [Freeswitch-svn] [commit] r11486 - in freeswitch/trunk: scripts/contrib/dschreiber/mod_nibblebill src src/include src/mod/applications/mod_commands src/mod/applications/mod_dptools src/mod/applications/mod_enum src/mod/applications/mod_esf src/mod/applications/mod_fifo src/mod/applications/mod_fsv src/mod/applications/mod_limit src/mod/applications/mod_rss src/mod/applications/mod_voicemail src/mod/endpoints/mod_alsa src/mod/endpoints/mod_dingaling src/mod/endpoints/mod_portaudio src/mod/endpoints/mod_sofia src/mod/event_handlers/mod_cdr_csv src/mod/event_handlers/mod_erlang_event src/mod/event_handlers/mod_event_socket src/mod/languages/mod_spidermonkey src/mod/loggers/mod_logfile src/mod/say/mod_say_de src/mod/say/mod_say_en src/mod/say/mod_say_es src/mod/say/mod_say_fr src/mod/say/mod_say_it src/mod/say/mod_say_nl src/mod/say/mod_say_zh Message-ID: Author: anthm Date: Sun Jan 25 15:23:07 2009 New Revision: 11486 Log: change low res sleep func api names Modified: freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c freeswitch/trunk/src/include/switch_core.h freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c freeswitch/trunk/src/mod/applications/mod_enum/mod_enum.c freeswitch/trunk/src/mod/applications/mod_esf/mod_esf.c freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c freeswitch/trunk/src/mod/applications/mod_fsv/mod_fsv.c freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c freeswitch/trunk/src/mod/endpoints/mod_alsa/mod_alsa.c freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c freeswitch/trunk/src/mod/loggers/mod_logfile/mod_logfile.c freeswitch/trunk/src/mod/say/mod_say_de/mod_say_de.c freeswitch/trunk/src/mod/say/mod_say_en/mod_say_en.c freeswitch/trunk/src/mod/say/mod_say_es/mod_say_es.c freeswitch/trunk/src/mod/say/mod_say_fr/mod_say_fr.c freeswitch/trunk/src/mod/say/mod_say_it/mod_say_it.c freeswitch/trunk/src/mod/say/mod_say_nl/mod_say_nl.c freeswitch/trunk/src/mod/say/mod_say_zh/mod_say_zh.c freeswitch/trunk/src/switch_channel.c freeswitch/trunk/src/switch_console.c freeswitch/trunk/src/switch_core.c freeswitch/trunk/src/switch_core_io.c freeswitch/trunk/src/switch_core_port_allocator.c freeswitch/trunk/src/switch_core_session.c freeswitch/trunk/src/switch_core_sqldb.c freeswitch/trunk/src/switch_event.c freeswitch/trunk/src/switch_ivr.c freeswitch/trunk/src/switch_ivr_async.c freeswitch/trunk/src/switch_ivr_originate.c freeswitch/trunk/src/switch_ivr_play_say.c freeswitch/trunk/src/switch_log.c freeswitch/trunk/src/switch_resample.c freeswitch/trunk/src/switch_rtp.c freeswitch/trunk/src/switch_scheduler.c freeswitch/trunk/src/switch_stun.c freeswitch/trunk/src/switch_time.c freeswitch/trunk/src/switch_utils.c Modified: freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c ============================================================================== --- freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c (original) +++ freeswitch/trunk/scripts/contrib/dschreiber/mod_nibblebill/mod_nibblebill.c Sun Jan 25 15:23:07 2009 @@ -307,7 +307,7 @@ /* Local vars */ nibble_data_t *nibble_data; - switch_time_t ts = switch_timestamp_now(); + switch_time_t ts = switch_micro_time_now(); float billamount; char date[80] = ""; char *tmp; @@ -476,7 +476,7 @@ static void nibblebill_pause(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); - switch_time_t ts = switch_timestamp_now(); + switch_time_t ts = switch_micro_time_now(); nibble_data_t *nibble_data; if (!channel) { @@ -512,7 +512,7 @@ static void nibblebill_resume(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); - switch_time_t ts = switch_timestamp_now(); + switch_time_t ts = switch_micro_time_now(); nibble_data_t *nibble_data; if (!channel) { @@ -555,7 +555,7 @@ static void nibblebill_reset(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); - switch_time_t ts = switch_timestamp_now(); + switch_time_t ts = switch_micro_time_now(); nibble_data_t *nibble_data; if (!channel) { Modified: freeswitch/trunk/src/include/switch_core.h ============================================================================== --- freeswitch/trunk/src/include/switch_core.h (original) +++ freeswitch/trunk/src/include/switch_core.h Sun Jan 25 15:23:07 2009 @@ -1690,14 +1690,14 @@ SWITCH_DECLARE(switch_loadable_module_interface_t *) switch_loadable_module_create_module_interface(switch_memory_pool_t *pool, const char *name); SWITCH_DECLARE(void *) switch_loadable_module_create_interface(switch_loadable_module_interface_t *mod, switch_module_interface_name_t iname); -SWITCH_DECLARE(switch_time_t) switch_timestamp_now(void); +SWITCH_DECLARE(switch_time_t) switch_micro_time_now(void); SWITCH_DECLARE(void) switch_core_memory_reclaim(void); SWITCH_DECLARE(void) switch_core_memory_reclaim_events(void); SWITCH_DECLARE(void) switch_core_memory_reclaim_logger(void); SWITCH_DECLARE(void) switch_core_memory_reclaim_all(void); SWITCH_DECLARE(void) switch_core_setrlimits(void); SWITCH_DECLARE(void) switch_time_sync(void); -SWITCH_DECLARE(time_t) switch_timestamp(time_t *t); +SWITCH_DECLARE(time_t) switch_epoch_time_now(time_t *t); SWITCH_DECLARE(switch_status_t) switch_strftime_tz(const char *tz, const char *format, char *date, size_t len, switch_time_t thetime); SWITCH_DECLARE(switch_status_t) switch_time_exp_tz_name(const char *tz, switch_time_exp_t *tm, switch_time_t thetime); SWITCH_DECLARE(void) switch_load_network_lists(switch_bool_t reload); Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c (original) +++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c Sun Jan 25 15:23:07 2009 @@ -1384,13 +1384,13 @@ uint32_t mto; if (*argv[4] == '+') { if ((mto = atoi(argv[4] + 1)) > 0) { - to = switch_timestamp(NULL) + mto; + to = switch_epoch_time_now(NULL) + mto; } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID Timeout!\n"); goto done; } } else { - if ((to = atoi(argv[4])) < switch_timestamp(NULL)) { + if ((to = atoi(argv[4])) < switch_epoch_time_now(NULL)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID Timeout!\n"); to = 0; goto done; @@ -1520,7 +1520,7 @@ time_t when; if (*argv[0] == '+') { - when = switch_timestamp(NULL) + atol(argv[0] + 1); + when = switch_epoch_time_now(NULL) + atol(argv[0] + 1); } else { when = atol(argv[0]); } @@ -1558,7 +1558,7 @@ switch_call_cause_t cause = SWITCH_CAUSE_ALLOTTED_TIMEOUT; if (*argv[0] == '+') { - when = switch_timestamp(NULL) + atol(argv[0] + 1); + when = switch_epoch_time_now(NULL) + atol(argv[0] + 1); } else { when = atol(argv[0]); } @@ -1665,7 +1665,7 @@ time_t when; if (*argv[0] == '+') { - when = switch_timestamp(NULL) + atol(argv[0] + 1); + when = switch_epoch_time_now(NULL) + atol(argv[0] + 1); } else { when = atol(argv[0]); } @@ -2205,7 +2205,7 @@ switch_safe_free(cmd); if (api_task->recur) { - task->runtime = switch_timestamp(NULL) + api_task->recur; + task->runtime = switch_epoch_time_now(NULL) + api_task->recur; } @@ -2252,10 +2252,10 @@ if (*tm == '+') { - when = switch_timestamp(NULL) + atol(tm + 1); + when = switch_epoch_time_now(NULL) + atol(tm + 1); } else if (*tm == '@') { recur = (uint32_t) atol(tm + 1); - when = switch_timestamp(NULL) + recur; + when = switch_epoch_time_now(NULL) + recur; } else { when = atol(tm); } Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c (original) +++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c Sun Jan 25 15:23:07 2009 @@ -473,7 +473,7 @@ time_t when; if (*argv[0] == '+') { - when = switch_timestamp(NULL) + atol(argv[0] + 1); + when = switch_epoch_time_now(NULL) + atol(argv[0] + 1); } else { when = atol(argv[0]); } @@ -498,7 +498,7 @@ switch_bool_t bleg = SWITCH_FALSE; if (*argv[0] == '+') { - when = switch_timestamp(NULL) + atol(argv[0] + 1); + when = switch_epoch_time_now(NULL) + atol(argv[0] + 1); } else { when = atol(argv[0]); } @@ -530,7 +530,7 @@ switch_media_flag_t flags = SMF_NONE; if (*argv[0] == '+') { - when = switch_timestamp(NULL) + atol(argv[0] + 1); + when = switch_epoch_time_now(NULL) + atol(argv[0] + 1); } else { when = atol(argv[0]); } @@ -981,7 +981,7 @@ switch_time_exp_t tm; char date[80] = ""; - switch_time_exp_lt(&tm, switch_timestamp_now()); + switch_time_exp_lt(&tm, switch_micro_time_now()); switch_strftime(date, &retsize, sizeof(date), argv[1], &tm); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "SET [%s]=[%s]\n", argv[0], date); switch_channel_set_variable(switch_core_session_get_channel(session), argv[0], date); @@ -993,7 +993,7 @@ switch_time_t out; if (switch_strlen_zero(cmd)) { - out = switch_timestamp_now(); + out = switch_micro_time_now(); } else { out = switch_str_time(cmd); } @@ -1014,7 +1014,7 @@ thetime = switch_time_make(atoi(cmd), 0); cmd = p + 1; } else { - thetime = switch_timestamp_now(); + thetime = switch_micro_time_now(); } switch_time_exp_lt(&tm, thetime); if (switch_strlen_zero(cmd)) { @@ -1207,12 +1207,12 @@ uint32_t mto; if (*argv[3] == '+') { if ((mto = atol(argv[3] + 1)) > 0) { - to = switch_timestamp(NULL) + mto; + to = switch_epoch_time_now(NULL) + mto; } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID Timeout!\n"); } } else { - if ((to = atol(argv[3])) < switch_timestamp(NULL)) { + if ((to = atol(argv[3])) < switch_epoch_time_now(NULL)) { if (to >= 1) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID Timeout!\n"); } Modified: freeswitch/trunk/src/mod/applications/mod_enum/mod_enum.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_enum/mod_enum.c (original) +++ freeswitch/trunk/src/mod/applications/mod_enum/mod_enum.c Sun Jan 25 15:23:07 2009 @@ -531,7 +531,7 @@ tv.tv_sec = i; tv.tv_usec = 0; i = select((int) (fd + 1), &fds, 0, 0, &tv); - now = switch_timestamp(NULL); + now = switch_epoch_time_now(NULL); if (i > 0) { dns_ioevent(nctx, now); } Modified: freeswitch/trunk/src/mod/applications/mod_esf/mod_esf.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_esf/mod_esf.c (original) +++ freeswitch/trunk/src/mod/applications/mod_esf/mod_esf.c Sun Jan 25 15:23:07 2009 @@ -205,7 +205,7 @@ } } - control_packet.unique_id = htonl((u_long) switch_timestamp(NULL)); + control_packet.unique_id = htonl((u_long) switch_epoch_time_now(NULL)); control_packet.command = htonl(LS_START_BCAST); control_packet.ip = inet_addr(mcast_ip); control_packet.port = htonl(mcast_port); @@ -233,7 +233,7 @@ } } - control_packet.unique_id = htonl((u_long) switch_timestamp(NULL)); + control_packet.unique_id = htonl((u_long) switch_epoch_time_now(NULL)); control_packet.command = htonl(LS_STOP_BCAST); bytes = 8; switch_socket_sendto(socket, control_packet_addr, 0, (void *) &control_packet, &bytes); Modified: freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c (original) +++ freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c Sun Jan 25 15:23:07 2009 @@ -195,7 +195,7 @@ return SWITCH_STATUS_SUCCESS; } - if (cd->total && switch_timestamp(NULL) >= cd->next) { + if (cd->total && switch_epoch_time_now(NULL) >= cd->next) { if (cd->index == MAX_CHIME || cd->index == cd->total || !cd->list[cd->index]) { cd->index = 0; } @@ -213,10 +213,10 @@ cd->abort = 1; return SWITCH_STATUS_FALSE; } - cd->next = switch_timestamp(NULL) + cd->freq; + cd->next = switch_epoch_time_now(NULL) + cd->freq; cd->index++; } - } else if (cd->orbit_timeout && switch_timestamp(NULL) >= cd->orbit_timeout) { + } else if (cd->orbit_timeout && switch_epoch_time_now(NULL) >= cd->orbit_timeout) { cd->do_orbit = 1; return SWITCH_STATUS_FALSE; } @@ -418,7 +418,7 @@ if (state == CS_HANGUP || state == CS_ROUTING) { if ((uuid = switch_channel_get_variable(channel, "fifo_outbound_uuid"))) { switch_snprintf(sql, sizeof(sql), "update fifo_outbound set use_count=use_count-1, outbound_call_count=outbound_call_count+1, next_avail=%ld + lag where uuid='%s'", - (long)switch_timestamp(NULL), uuid); + (long)switch_epoch_time_now(NULL), uuid); fifo_execute_sql(sql, globals.sql_mutex); } @@ -451,7 +451,7 @@ if (switch_ivr_originate(NULL, &session, &cause, h->originate_string, h->timeout, NULL, NULL, NULL, NULL, NULL, SOF_NONE) != SWITCH_STATUS_SUCCESS) { switch_snprintf(sql, sizeof(sql), "update fifo_outbound set use_count=use_count-1, outbound_fail_count=outbound_fail_count+1, next_avail=%ld + lag where uuid='%s'", - (long)switch_timestamp(NULL), h->uuid); + (long)switch_epoch_time_now(NULL), h->uuid); fifo_execute_sql(sql, globals.sql_mutex); goto end; } @@ -512,7 +512,7 @@ sql = switch_mprintf("select uuid, fifo_name, originate_string, simo_count, use_count, timeout, lag, " "next_avail, expires, static, outbound_call_count, outbound_fail_count, hostname " "from fifo_outbound where (use_count < simo_count) and (next_avail = 0 or next_avail <= %ld) order by outbound_call_count", - (long) switch_timestamp(NULL)); + (long) switch_epoch_time_now(NULL)); switch_assert(sql); fifo_execute_sql_callback(globals.sql_mutex, sql, place_call_callback, &need); free(sql); @@ -668,7 +668,7 @@ switch_event_t *event = NULL; char date[80] = ""; switch_time_exp_t tm; - switch_time_t ts = switch_timestamp_now(); + switch_time_t ts = switch_micro_time_now(); switch_size_t retsize; char *list_string; int nlist_count; @@ -796,7 +796,7 @@ to = 60; } } - cd.orbit_timeout = switch_timestamp(NULL) + to; + cd.orbit_timeout = switch_epoch_time_now(NULL) + to; } } @@ -823,7 +823,7 @@ } if (!node_consumer_wait_count(node)) { - node->start_waiting = switch_timestamp_now(); + node->start_waiting = switch_micro_time_now(); } if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) { @@ -843,7 +843,7 @@ switch_mutex_unlock(node->mutex); - ts = switch_timestamp_now(); + ts = switch_micro_time_now(); switch_time_exp_lt(&tm, ts); switch_strftime_nocheck(date, &retsize, sizeof(date), "%Y-%m-%d %T", &tm); switch_channel_set_variable(channel, "fifo_status", "WAITING"); @@ -856,7 +856,7 @@ char *list_dup = switch_core_session_strdup(session, chime_list); cd.total = switch_separate_string(list_dup, ',', cd.list, (sizeof(cd.list) / sizeof(cd.list[0]))); cd.freq = freq; - cd.next = switch_timestamp(NULL) + cd.freq; + cd.next = switch_epoch_time_now(NULL) + cd.freq; } send_presence(node); @@ -930,7 +930,7 @@ switch_channel_set_state(channel, CS_HIBERNATE); goto done; } else { - ts = switch_timestamp_now(); + ts = switch_micro_time_now(); switch_time_exp_lt(&tm, ts); switch_strftime_nocheck(date, &retsize, sizeof(date), "%Y-%m-%d %T", &tm); switch_channel_set_variable(channel, "fifo_status", cd.do_orbit ? "TIMEOUT" : "ABORTED"); @@ -1027,7 +1027,7 @@ switch_event_fire(&event); } - ts = switch_timestamp_now(); + ts = switch_micro_time_now(); switch_time_exp_lt(&tm, ts); switch_strftime_nocheck(date, &retsize, sizeof(date), "%Y-%m-%d %T", &tm); switch_channel_set_variable(channel, "fifo_status", "WAITING"); @@ -1220,7 +1220,7 @@ switch_assert(cloned_profile->next == NULL); switch_channel_set_originatee_caller_profile(channel, cloned_profile); - ts = switch_timestamp_now(); + ts = switch_micro_time_now(); switch_time_exp_lt(&tm, ts); switch_strftime_nocheck(date, &retsize, sizeof(date), "%Y-%m-%d %T", &tm); switch_channel_set_variable(channel, "fifo_status", "TALKING"); @@ -1251,7 +1251,7 @@ } } - ts = switch_timestamp_now(); + ts = switch_micro_time_now(); switch_time_exp_lt(&tm, ts); switch_strftime_nocheck(date, &retsize, sizeof(date), "%Y-%m-%d %T", &tm); switch_channel_set_variable(channel, "fifo_status", "WAITING"); @@ -1300,7 +1300,7 @@ } if (fifo_consumer_wrapup_time) { - wrapup_time_started = switch_timestamp_now(); + wrapup_time_started = switch_micro_time_now(); } if (!switch_strlen_zero(fifo_consumer_wrapup_key) && strcmp(buf, fifo_consumer_wrapup_key)) { @@ -1308,7 +1308,7 @@ char terminator = 0; if (fifo_consumer_wrapup_time) { - wrapup_time_elapsed = (switch_timestamp_now() - wrapup_time_started) / 1000; + wrapup_time_elapsed = (switch_micro_time_now() - wrapup_time_started) / 1000; if (wrapup_time_elapsed > fifo_consumer_wrapup_time) { break; } else { @@ -1324,7 +1324,7 @@ } } else if (fifo_consumer_wrapup_time && (switch_strlen_zero(fifo_consumer_wrapup_key) || !strcmp(buf, fifo_consumer_wrapup_key))) { while(switch_channel_ready(channel)) { - wrapup_time_elapsed = (switch_timestamp_now() - wrapup_time_started) / 1000; + wrapup_time_elapsed = (switch_micro_time_now() - wrapup_time_started) / 1000; if (wrapup_time_elapsed > fifo_consumer_wrapup_time) { break; } @@ -1949,7 +1949,7 @@ lag = atoi(argv[5]); } if (argc > 6) { - expires = switch_timestamp(NULL) + atoi(argv[6]); + expires = switch_epoch_time_now(NULL) + atoi(argv[6]); } if (simo_count < 0) { simo_count = 1; Modified: freeswitch/trunk/src/mod/applications/mod_fsv/mod_fsv.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_fsv/mod_fsv.c (original) +++ freeswitch/trunk/src/mod/applications/mod_fsv/mod_fsv.c Sun Jan 25 15:23:07 2009 @@ -140,7 +140,7 @@ vid_codec = switch_core_session_get_video_read_codec(session); h.version = VERSION; - h.created = switch_timestamp_now(); + h.created = switch_micro_time_now(); switch_set_string(h.video_codec_name, vid_codec->implementation->iananame); if (vid_codec->fmtp_in) { switch_set_string(h.video_fmtp, vid_codec->fmtp_in); Modified: freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c (original) +++ freeswitch/trunk/src/mod/applications/mod_limit/mod_limit.c Sun Jan 25 15:23:07 2009 @@ -811,7 +811,7 @@ char *szinterval = NULL; limit_hash_item_t *item = NULL; switch_channel_t *channel = switch_core_session_get_channel(session); - time_t now = switch_timestamp(NULL); + time_t now = switch_epoch_time_now(NULL); switch_hash_t *channel_hash = NULL; uint8_t increment = 1; uint8_t new_channel = 0; Modified: freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c (original) +++ freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c Sun Jan 25 15:23:07 2009 @@ -478,7 +478,7 @@ switch_size_t retsize; char dtmf[5] = ""; - switch_time_exp_lt(&tm, switch_timestamp_now()); + switch_time_exp_lt(&tm, switch_micro_time_now()); switch_strftime_nocheck(date, &retsize, sizeof(date), "%I:%M %p", &tm); Modified: freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c (original) +++ freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c Sun Jan 25 15:23:07 2009 @@ -1767,7 +1767,7 @@ } } switch_snprintf(sql, sizeof(sql), "update voicemail_msgs set read_epoch=%ld where username='%s' and domain='%s' and flags='save'", - (long) switch_timestamp(NULL), myid, domain_name); + (long) switch_epoch_time_now(NULL), myid, domain_name); vm_execute_sql(profile, sql, profile->mutex); switch_snprintf(sql, sizeof(sql), "select file_path from voicemail_msgs where username='%s' and domain='%s' and flags='delete'", myid, domain_name); @@ -2309,11 +2309,11 @@ switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "VM-Flags", read_flags); switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "VM-Folder", myfolder); switch_event_add_header(message_event, SWITCH_STACK_BOTTOM, "VM-Message-Len", "%u", message_len); - switch_event_add_header(message_event, SWITCH_STACK_BOTTOM, "VM-Timestamp", "%lu", (unsigned long) switch_timestamp(NULL)); + switch_event_add_header(message_event, SWITCH_STACK_BOTTOM, "VM-Timestamp", "%lu", (unsigned long) switch_epoch_time_now(NULL)); switch_event_fire(&message_event); - usql = switch_mprintf("insert into voicemail_msgs values(%ld,0,'%q','%q','%q','%q','%q','%q','%q','%u','','%q')", (long) switch_timestamp(NULL), + usql = switch_mprintf("insert into voicemail_msgs values(%ld,0,'%q','%q','%q','%q','%q','%q','%q','%u','','%q')", (long) switch_epoch_time_now(NULL), myid, domain_name, uuid_str, caller_id_name, caller_id_number, myfolder, file_path, message_len, read_flags); @@ -2346,7 +2346,7 @@ &total_new_urgent_messages, &total_saved_urgent_messages); if (switch_strlen_zero(vm_timezone) || (switch_strftime_tz(vm_timezone, profile->date_fmt, date, sizeof(date), 0) != SWITCH_STATUS_SUCCESS)) { - switch_time_exp_lt(&tm, switch_timestamp_now()); + switch_time_exp_lt(&tm, switch_micro_time_now()); switch_strftime(date, &retsize, sizeof(date), profile->date_fmt, &tm); } @@ -2696,7 +2696,7 @@ switch_time_exp_t tm; char date[80] = ""; switch_size_t retsize; - switch_time_t ts = switch_timestamp_now(); + switch_time_t ts = switch_micro_time_now(); char *dbuf = NULL; char *vm_storage_dir = NULL; char *record_macro = VM_RECORD_MESSAGE_MACRO; @@ -3271,7 +3271,7 @@ struct holder holder; sql = switch_mprintf("update voicemail_msgs set read_epoch=%ld where username='%s' and domain='%s' and file_path like '%%%s'", - (long) switch_timestamp(NULL), user, domain, file); + (long) switch_epoch_time_now(NULL), user, domain, file); vm_execute_sql(profile, sql, profile->mutex); free(sql); Modified: freeswitch/trunk/src/mod/endpoints/mod_alsa/mod_alsa.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_alsa/mod_alsa.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_alsa/mod_alsa.c Sun Jan 25 15:23:07 2009 @@ -180,7 +180,7 @@ assert(channel != NULL); - last = switch_timestamp_now() - waitsec; + last = switch_micro_time_now() - waitsec; @@ -243,7 +243,7 @@ switch_channel_mark_ring_ready(channel); while (switch_channel_get_state(channel) == CS_INIT && !switch_test_flag(tech_pvt, TFLAG_ANSWER)) { - if (switch_timestamp_now() - last >= waitsec) { + if (switch_micro_time_now() - last >= waitsec) { char buf[512]; switch_event_t *event; @@ -257,7 +257,7 @@ } switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s\n", buf); - last = switch_timestamp_now(); + last = switch_micro_time_now(); if (ring_file) { unsigned int pos = 0; switch_core_file_seek(&fh, &pos, 0, SEEK_SET); Modified: freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c Sun Jan 25 15:23:07 2009 @@ -1070,7 +1070,7 @@ switch_set_flag_locked(tech_pvt, TFLAG_IO); - started = switch_timestamp_now(); + started = switch_micro_time_now(); /* jingle has no ringing indication so we will just pretend that we got one */ switch_core_session_queue_indication(session, SWITCH_MESSAGE_INDICATE_RINGING); @@ -1088,7 +1088,7 @@ switch_test_flag(tech_pvt, TFLAG_RTP_READY) && switch_test_flag(tech_pvt, TFLAG_ANSWER) && switch_test_flag(tech_pvt, TFLAG_TRANSPORT_ACCEPT) && tech_pvt->remote_ip && tech_pvt->remote_port && switch_test_flag(tech_pvt, TFLAG_TRANSPORT))) { - now = switch_timestamp_now(); + now = switch_micro_time_now(); elapsed = (unsigned int) ((now - started) / 1000); if (switch_channel_get_state(channel) >= CS_HANGUP || switch_test_flag(tech_pvt, TFLAG_BYE)) { @@ -1340,7 +1340,7 @@ #if 0 if (tech_pvt->last_read) { - elapsed = (unsigned int) ((switch_timestamp_now() - tech_pvt->last_read) / 1000); + elapsed = (unsigned int) ((switch_micro_time_now() - tech_pvt->last_read) / 1000); if (elapsed > 60000) { return SWITCH_STATUS_TIMEOUT; } @@ -1368,7 +1368,7 @@ payload = tech_pvt->read_frame.payload; #if 0 - elapsed = (unsigned int) ((switch_timestamp_now() - started) / 1000); + elapsed = (unsigned int) ((switch_micro_time_now() - started) / 1000); if (timeout > -1) { if (elapsed >= (unsigned int) timeout) { @@ -1376,7 +1376,7 @@ } } - elapsed = (unsigned int) ((switch_timestamp_now() - last_act) / 1000); + elapsed = (unsigned int) ((switch_micro_time_now() - last_act) / 1000); if (elapsed >= hard_timeout) { return SWITCH_STATUS_BREAK; } Modified: freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_portaudio/mod_portaudio.c Sun Jan 25 15:23:07 2009 @@ -182,7 +182,7 @@ switch_assert(tech_pvt != NULL); - last = switch_timestamp_now() - waitsec; + last = switch_micro_time_now() - waitsec; if ((val = switch_channel_get_variable(channel, "pa_hold_file"))) { hold_file = val; @@ -251,7 +251,7 @@ while (switch_channel_get_state(channel) == CS_INIT && !switch_test_flag(tech_pvt, TFLAG_ANSWER)) { switch_size_t olen = globals.timer.samples; - if (switch_timestamp_now() - last >= waitsec) { + if (switch_micro_time_now() - last >= waitsec) { char buf[512]; switch_event_t *event; @@ -264,7 +264,7 @@ switch_event_fire(&event); } switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s\n", buf); - last = switch_timestamp_now(); + last = switch_micro_time_now(); } if (ring_file) { @@ -449,7 +449,7 @@ if (globals.call_list) { switch_set_flag_locked(globals.call_list, TFLAG_MASTER); } else { - globals.deactivate_timer = switch_timestamp(NULL) + 2; + globals.deactivate_timer = switch_epoch_time_now(NULL) + 2; deactivate_audio_device(); } @@ -1259,7 +1259,7 @@ int codec_ms = globals.codec_ms; switch_mutex_lock(globals.device_lock); - while (globals.deactivate_timer > switch_timestamp(NULL)) { + while (globals.deactivate_timer > switch_epoch_time_now(NULL)) { switch_yield(1000000); } switch_mutex_unlock(globals.device_lock); Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c Sun Jan 25 15:23:07 2009 @@ -1650,7 +1650,7 @@ switch_assert(gp->state < REG_STATE_LAST); stream->write_function(stream, "%25s\t%s\t %32s\t%s", gp->name, "gateway", gp->register_to, sofia_state_names[gp->state]); if (gp->state == REG_STATE_FAILED || gp->state == REG_STATE_TRYING) { - time_t now = switch_timestamp(NULL); + time_t now = switch_epoch_time_now(NULL); if (gp->retry > now) { stream->write_function(stream, " (retry: %ds)", gp->retry - now); } else { @@ -1842,7 +1842,7 @@ switch_assert(gp->state < REG_STATE_LAST); stream->write_function(stream, "\n%s\n%s\n%s\n%s\n\n", gp->name, "gateway", gp->register_to, sofia_state_names[gp->state]); if (gp->state == REG_STATE_FAILED || gp->state == REG_STATE_TRYING) { - time_t now = switch_timestamp(NULL); + time_t now = switch_epoch_time_now(NULL); if (gp->retry > now) { stream->write_function(stream, " (retry: %ds)", gp->retry - now); } else { @@ -2042,7 +2042,7 @@ if (!strcasecmp(argv[1], "stop") || !strcasecmp(argv[1], "restart")) { int rsec = 10; - int diff = (int) (switch_timestamp(NULL) - profile->started); + int diff = (int) (switch_epoch_time_now(NULL) - profile->started); int remain = rsec - diff; if (diff < rsec) { stream->write_function(stream, "Profile %s must be up for at least %d seconds to stop/restart.\nPlease wait %d second%s\n", Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Sun Jan 25 15:23:07 2009 @@ -284,11 +284,11 @@ void sofia_wait_for_reply(struct private_object *tech_pvt, nua_event_t event, uint32_t timeout) { - time_t exp = switch_timestamp(NULL) + timeout; + time_t exp = switch_epoch_time_now(NULL) + timeout; tech_pvt->want_event = event; - while(switch_channel_ready(tech_pvt->channel) && tech_pvt->want_event && switch_timestamp(NULL) < exp) { + while(switch_channel_ready(tech_pvt->channel) && tech_pvt->want_event && switch_epoch_time_now(NULL) < exp) { switch_yield(100000); } @@ -522,7 +522,7 @@ char *rpid = switch_event_get_header(event, "orig-rpid"); char *call_id = switch_event_get_header(event, "orig-call-id"); char *user_agent = switch_event_get_header(event, "user-agent"); - long expires = (long) switch_timestamp(NULL); + long expires = (long) switch_epoch_time_now(NULL); char *profile_name = switch_event_get_header(event, "orig-profile-name"); char *to_user = switch_event_get_header(event, "orig-to-user"); char *presence_hosts = switch_event_get_header(event, "presence-hosts"); @@ -601,12 +601,12 @@ if (++loops >= 100) { if (++ireg_loops >= IREG_SECONDS) { - sofia_reg_check_expire(profile, switch_timestamp(NULL), 0); + sofia_reg_check_expire(profile, switch_epoch_time_now(NULL), 0); ireg_loops = 0; } if (++gateway_loops >= GATEWAY_SECONDS) { - sofia_reg_check_gateway(profile, switch_timestamp(NULL)); + sofia_reg_check_gateway(profile, switch_epoch_time_now(NULL)); gateway_loops = 0; } sofia_sub_check_gateway(profile, time(NULL)); @@ -778,7 +778,7 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Starting thread for %s\n", profile->name); - profile->started = switch_timestamp(NULL); + profile->started = switch_epoch_time_now(NULL); sofia_set_pflag_locked(profile, PFLAG_RUNNING); launch_sofia_worker_thread(profile); @@ -1104,7 +1104,7 @@ if (ping_freq) { if (ping_freq >= 5) { gateway->ping_freq = ping_freq; - gateway->ping = switch_timestamp(NULL) + ping_freq; + gateway->ping = switch_epoch_time_now(NULL) + ping_freq; } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ERROR: invalid ping!\n"); } @@ -2350,12 +2350,12 @@ gateway->state = REG_STATE_FAILED; } } - gateway->ping = switch_timestamp(NULL) + gateway->ping_freq; + gateway->ping = switch_epoch_time_now(NULL) + gateway->ping_freq; sofia_reg_release_gateway(gateway); gateway->pinging = 0; } else if ((profile->pflags & PFLAG_UNREG_OPTIONS_FAIL) && status != 200 && sip && sip->sip_to) { char *sql; - time_t now = switch_timestamp(NULL); + time_t now = switch_epoch_time_now(NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Expire registration '%s@%s' due to options failure\n", sip->sip_to->a_url->url_user, sip->sip_to->a_url->url_host); Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c Sun Jan 25 15:23:07 2009 @@ -55,7 +55,7 @@ } if (!tech_pvt->owner_id) { - tech_pvt->owner_id = (uint32_t) switch_timestamp(NULL) - port; + tech_pvt->owner_id = (uint32_t) switch_epoch_time_now(NULL) - port; } if (!tech_pvt->session_id) { @@ -145,7 +145,7 @@ } if (!tech_pvt->owner_id) { - tech_pvt->owner_id = (uint32_t) switch_timestamp(NULL) - port; + tech_pvt->owner_id = (uint32_t) switch_epoch_time_now(NULL) - port; } if (!tech_pvt->session_id) { @@ -2902,7 +2902,7 @@ switch_hash_this(hi, &var, NULL, &val); if ((pptr = (sofia_profile_t *) val)) { int rsec = 10; - int diff = (int) (switch_timestamp(NULL) - pptr->started); + int diff = (int) (switch_epoch_time_now(NULL) - pptr->started); int remain = rsec - diff; if (sofia_test_pflag(pptr, PFLAG_RESPAWN) || !sofia_test_pflag(pptr, PFLAG_RUNNING)) { continue; Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c Sun Jan 25 15:23:07 2009 @@ -946,7 +946,7 @@ char *open; char *prpid; const char *ct = "no/idea"; - time_t exptime = switch_timestamp(NULL) + 3600; + time_t exptime = switch_epoch_time_now(NULL) + 3600; int is_dialog = 0; sofia_profile_t *ext_profile = NULL, *profile = helper->profile; char sstr[128] = ""; @@ -990,7 +990,7 @@ if (expires) { long tmp = atol(expires); if (tmp > 0) { - exptime = tmp - switch_timestamp(NULL) - SUB_OVERLAP; + exptime = tmp - switch_epoch_time_now(NULL) - SUB_OVERLAP; } else { exptime = tmp; } @@ -1281,7 +1281,7 @@ } id = switch_mprintf("sip:%s@%s", sub_to_user, sub_to_host); - expire_sec = (int) (expire_sec - switch_timestamp(NULL)); + expire_sec = (int) (expire_sec - switch_epoch_time_now(NULL)); if (expire_sec < 0) { expire_sec = 3600; } @@ -1585,7 +1585,7 @@ exp_delta = profile->force_subscription_expires ? profile->force_subscription_expires : (sip->sip_expires ? sip->sip_expires->ex_delta : 3600); if (exp_delta) { - exp_abs = (long) switch_timestamp(NULL) + exp_delta; + exp_abs = (long) switch_epoch_time_now(NULL) + exp_delta; } else { exp_abs = 0; sub_state = nua_substate_terminated; @@ -1859,7 +1859,7 @@ } exp_delta = (sip->sip_expires ? sip->sip_expires->ex_delta : 3600); - exp = (long) switch_timestamp(NULL) + exp_delta; + exp = (long) switch_epoch_time_now(NULL) + exp_delta; if ((sql = switch_mprintf("delete from sip_presence where sip_user='%q' and sip_host='%q' " Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c Sun Jan 25 15:23:07 2009 @@ -612,7 +612,7 @@ switch_uuid_format(uuid_str, &uuid); sql = switch_mprintf("insert into sip_authentication (nonce,expires,profile_name,hostname) " - "values('%q', %ld, '%q', '%q')", uuid_str, switch_timestamp(NULL) + profile->nonce_ttl, profile->name, mod_sofia_globals.hostname); + "values('%q', %ld, '%q', '%q')", uuid_str, switch_epoch_time_now(NULL) + profile->nonce_ttl, profile->name, mod_sofia_globals.hostname); switch_assert(sql != NULL); sofia_glue_actually_execute_sql(profile, SWITCH_FALSE, sql, profile->ireg_mutex); switch_safe_free(sql); @@ -940,7 +940,7 @@ "(call_id,sip_user,sip_host,presence_hosts,contact,status,rpid,expires,user_agent,server_user,server_host,profile_name,hostname) " "values ('%q','%q', '%q','%q','%q','%q', '%q', %ld, '%q', '%q', '%q', '%q', '%q')", call_id, to_user, reg_host, profile->presence_hosts ? profile->presence_hosts : reg_host, - contact_str, reg_desc, rpid, (long) switch_timestamp(NULL) + (long) exptime * 2, + contact_str, reg_desc, rpid, (long) switch_epoch_time_now(NULL) + (long) exptime * 2, agent, from_user, guess_ip4, profile->name, mod_sofia_globals.hostname); if (sql) { @@ -1091,7 +1091,7 @@ } } - switch_rfc822_date(date, switch_timestamp_now()); + switch_rfc822_date(date, switch_micro_time_now()); nua_respond(nh, SIP_200_OK, SIPTAG_CONTACT(sip->sip_contact), TAG_IF(path_val, SIPTAG_PATH_STR(path_val)), NUTAG_WITH_THIS(nua), Modified: freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c Sun Jan 25 15:23:07 2009 @@ -99,7 +99,7 @@ fd->fd = -1; if (globals.rotate) { - switch_time_exp_lt(&tm, switch_timestamp_now()); + switch_time_exp_lt(&tm, switch_micro_time_now()); switch_strftime_nocheck(date, &retsize, sizeof(date), "%Y-%m-%d-%H-%M-%S", &tm); len = strlen(fd->path) + strlen(date) + 2; Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Sun Jan 25 15:23:07 2009 @@ -196,7 +196,7 @@ continue; } - if (switch_test_flag(l, LFLAG_STATEFUL) && l->timeout && switch_timestamp(NULL) - l->last_flush > l->timeout) { + if (switch_test_flag(l, LFLAG_STATEFUL) && l->timeout && switch_epoch_time_now(NULL) - l->last_flush > l->timeout) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Stateful Listener %u has expired\n", l->id); remove_listener(l); expire_listener(&l); Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_event_socket/mod_event_socket.c Sun Jan 25 15:23:07 2009 @@ -231,7 +231,7 @@ continue; } - if (switch_test_flag(l, LFLAG_STATEFUL) && l->timeout && switch_timestamp(NULL) - l->last_flush > l->timeout) { + if (switch_test_flag(l, LFLAG_STATEFUL) && l->timeout && switch_epoch_time_now(NULL) - l->last_flush > l->timeout) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Stateful Listener %u has expired\n", l->id); remove_listener(l); expire_listener(&l); @@ -718,7 +718,7 @@ switch_thread_rwlock_create(&listener->rwlock, listener->pool); listener->id = next_id(); listener->timeout = 60; - listener->last_flush = switch_timestamp(NULL); + listener->last_flush = switch_epoch_time_now(NULL); if (events) { char delim = ','; @@ -820,7 +820,7 @@ goto end; } - listener->last_flush = switch_timestamp(NULL); + listener->last_flush = switch_epoch_time_now(NULL); stream->write_function(stream, "\n Current Events Follow\n"); xmlize_listener(listener, stream); @@ -963,7 +963,7 @@ int clen = 0; *event = NULL; - start = switch_timestamp(NULL); + start = switch_epoch_time_now(NULL); ptr = mbuf; @@ -1074,7 +1074,7 @@ } if (timeout) { - elapsed = (uint32_t) (switch_timestamp(NULL) - start); + elapsed = (uint32_t) (switch_epoch_time_now(NULL) - start); if (elapsed >= timeout) { switch_clear_flag_locked(listener, LFLAG_RUNNING); return SWITCH_STATUS_FALSE; Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c ============================================================================== --- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c (original) +++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c Sun Jan 25 15:23:07 2009 @@ -2118,7 +2118,7 @@ channel = switch_core_session_get_channel(jss->session); CHANNEL_MEDIA_SANITY_CHECK(); - started = switch_timestamp_now(); + started = switch_micro_time_now(); if (argc > 0) { JS_ValueToInt32(cx, argv[0], &timeout); @@ -2132,7 +2132,7 @@ } saveDepth = JS_SuspendRequest(cx); for (;;) { - if (((elapsed = (unsigned int) ((switch_timestamp_now() - started) / 1000)) > (switch_time_t) timeout) + if (((elapsed = (unsigned int) ((switch_micro_time_now() - started) / 1000)) > (switch_time_t) timeout) || switch_channel_get_state(channel) >= CS_HANGUP) { *rval = BOOLEAN_TO_JSVAL(JS_FALSE); break; @@ -2165,7 +2165,7 @@ METHOD_SANITY_CHECK(); channel = switch_core_session_get_channel(jss->session); - started = switch_timestamp_now(); + started = switch_micro_time_now(); if (argc > 0) { JS_ValueToInt32(cx, argv[0], &timeout); @@ -2180,7 +2180,7 @@ saveDepth = JS_SuspendRequest(cx); for (;;) { - if (((elapsed = (unsigned int) ((switch_timestamp_now() - started) / 1000)) > (switch_time_t) timeout) + if (((elapsed = (unsigned int) ((switch_micro_time_now() - started) / 1000)) > (switch_time_t) timeout) || switch_channel_get_state(channel) >= CS_HANGUP) { *rval = BOOLEAN_TO_JSVAL(JS_FALSE); break; Modified: freeswitch/trunk/src/mod/loggers/mod_logfile/mod_logfile.c ============================================================================== --- freeswitch/trunk/src/mod/loggers/mod_logfile/mod_logfile.c (original) +++ freeswitch/trunk/src/mod/loggers/mod_logfile/mod_logfile.c Sun Jan 25 15:23:07 2009 @@ -124,7 +124,7 @@ switch_mutex_lock(globals.mutex); - switch_time_exp_lt(&tm, switch_timestamp_now()); + switch_time_exp_lt(&tm, switch_micro_time_now()); switch_strftime_nocheck(date, &retsize, sizeof(date), "%Y-%m-%d-%H-%M-%S", &tm); profile->log_size = 0; Modified: freeswitch/trunk/src/mod/say/mod_say_de/mod_say_de.c ============================================================================== --- freeswitch/trunk/src/mod/say/mod_say_de/mod_say_de.c (original) +++ freeswitch/trunk/src/mod/say/mod_say_de/mod_say_de.c Sun Jan 25 15:23:07 2009 @@ -303,7 +303,7 @@ } } else { if ((seconds = atoi(tosay)) <= 0) { - seconds = (int64_t) switch_timestamp(NULL); + seconds = (int64_t) switch_epoch_time_now(NULL); } if (seconds >= 60) { @@ -361,7 +361,7 @@ if ((t = atoi(tosay)) > 0) { target = switch_time_make(t, 0); } else { - target = switch_timestamp_now(); + target = switch_micro_time_now(); } switch_time_exp_lt(&tm, target); Modified: freeswitch/trunk/src/mod/say/mod_say_en/mod_say_en.c ============================================================================== --- freeswitch/trunk/src/mod/say/mod_say_en/mod_say_en.c (original) +++ freeswitch/trunk/src/mod/say/mod_say_en/mod_say_en.c Sun Jan 25 15:23:07 2009 @@ -294,7 +294,7 @@ } } else { if ((seconds = atol(tosay)) <= 0) { - seconds = (int64_t) switch_timestamp(NULL); + seconds = (int64_t) switch_epoch_time_now(NULL); } if (seconds >= 60) { @@ -352,7 +352,7 @@ if ((t = atol(tosay)) > 0) { target = switch_time_make(t, 0); } else { - target = switch_timestamp_now(); + target = switch_micro_time_now(); } if (tz) { Modified: freeswitch/trunk/src/mod/say/mod_say_es/mod_say_es.c ============================================================================== --- freeswitch/trunk/src/mod/say/mod_say_es/mod_say_es.c (original) +++ freeswitch/trunk/src/mod/say/mod_say_es/mod_say_es.c Sun Jan 25 15:23:07 2009 @@ -292,7 +292,7 @@ } } else { if ((seconds = atoi(tosay)) <= 0) { - seconds = (int64_t) switch_timestamp(NULL); + seconds = (int64_t) switch_epoch_time_now(NULL); } if (seconds >= 60) { @@ -350,7 +350,7 @@ if ((t = atoi(tosay)) > 0) { target = switch_time_make(t, 0); } else { - target = switch_timestamp_now(); + target = switch_micro_time_now(); } switch_time_exp_lt(&tm, target); Modified: freeswitch/trunk/src/mod/say/mod_say_fr/mod_say_fr.c ============================================================================== --- freeswitch/trunk/src/mod/say/mod_say_fr/mod_say_fr.c (original) +++ freeswitch/trunk/src/mod/say/mod_say_fr/mod_say_fr.c Sun Jan 25 15:23:07 2009 @@ -292,7 +292,7 @@ } } else { if ((seconds = atoi(tosay)) <= 0) { - seconds = (int64_t) switch_timestamp(NULL); + seconds = (int64_t) switch_epoch_time_now(NULL); } if (seconds >= 60) { @@ -350,7 +350,7 @@ if ((t = atoi(tosay)) > 0) { target = switch_time_make(t, 0); } else { - target = switch_timestamp_now(); + target = switch_micro_time_now(); } switch_time_exp_lt(&tm, target); Modified: freeswitch/trunk/src/mod/say/mod_say_it/mod_say_it.c ============================================================================== --- freeswitch/trunk/src/mod/say/mod_say_it/mod_say_it.c (original) +++ freeswitch/trunk/src/mod/say/mod_say_it/mod_say_it.c Sun Jan 25 15:23:07 2009 @@ -292,7 +292,7 @@ } } else { if ((seconds = atoi(tosay)) <= 0) { - seconds = (int64_t) switch_timestamp(NULL); + seconds = (int64_t) switch_epoch_time_now(NULL); } if (seconds >= 60) { @@ -350,7 +350,7 @@ if ((t = atoi(tosay)) > 0) { target = switch_time_make(t, 0); } else { - target = switch_timestamp_now(); + target = switch_micro_time_now(); } switch_time_exp_lt(&tm, target); Modified: freeswitch/trunk/src/mod/say/mod_say_nl/mod_say_nl.c ============================================================================== --- freeswitch/trunk/src/mod/say/mod_say_nl/mod_say_nl.c (original) +++ freeswitch/trunk/src/mod/say/mod_say_nl/mod_say_nl.c Sun Jan 25 15:23:07 2009 @@ -292,7 +292,7 @@ } } else { if ((seconds = atoi(tosay)) <= 0) { - seconds = (int64_t) switch_timestamp(NULL); + seconds = (int64_t) switch_epoch_time_now(NULL); } if (seconds >= 60) { @@ -350,7 +350,7 @@ if ((t = atoi(tosay)) > 0) { target = switch_time_make(t, 0); } else { - target = switch_timestamp_now(); + target = switch_micro_time_now(); } switch_time_exp_lt(&tm, target); Modified: freeswitch/trunk/src/mod/say/mod_say_zh/mod_say_zh.c ============================================================================== --- freeswitch/trunk/src/mod/say/mod_say_zh/mod_say_zh.c (original) +++ freeswitch/trunk/src/mod/say/mod_say_zh/mod_say_zh.c Sun Jan 25 15:23:07 2009 @@ -367,7 +367,7 @@ } } else { if ((seconds = atoi(tosay)) <= 0) { - seconds = (int64_t) switch_timestamp(NULL); + seconds = (int64_t) switch_epoch_time_now(NULL); } if (seconds >= 60) { @@ -425,7 +425,7 @@ if ((t = atoi(tosay)) > 0) target = switch_time_make(t, 0); else - target = switch_timestamp_now(); + target = switch_micro_time_now(); switch_time_exp_lt(&tm, target); switch (type) { @@ -455,7 +455,7 @@ #if 0 tm = *localtime(&then); - this_morning = switch_timestamp_now(); + this_morning = switch_micro_time_now(); switch_time_exp_lt(&tm2, this_morning); tm2->tm_hour = 0; tm2->tm_min = 0; Modified: freeswitch/trunk/src/switch_channel.c ============================================================================== --- freeswitch/trunk/src/switch_channel.c (original) +++ freeswitch/trunk/src/switch_channel.c Sun Jan 25 15:23:07 2009 @@ -1328,7 +1328,7 @@ } caller_profile->times = (switch_channel_timetable_t *) switch_core_session_alloc(channel->session, sizeof(*caller_profile->times)); - caller_profile->times->profile_created = switch_timestamp_now(); + caller_profile->times->profile_created = switch_micro_time_now(); if (channel->caller_profile && channel->caller_profile->times) { channel->caller_profile->times->transferred = caller_profile->times->profile_created; @@ -1341,7 +1341,7 @@ switch_caller_extension_clone(&caller_profile->caller_extension, channel->caller_profile->caller_extension, caller_profile->pool); } } else { - caller_profile->times->created = switch_timestamp_now(); + caller_profile->times->created = switch_micro_time_now(); } caller_profile->next = channel->caller_profile; @@ -1534,7 +1534,7 @@ if (channel->caller_profile && channel->caller_profile->times && !channel->caller_profile->times->hungup) { switch_mutex_lock(channel->profile_mutex); - channel->caller_profile->times->hungup = switch_timestamp_now(); + channel->caller_profile->times->hungup = switch_micro_time_now(); switch_mutex_unlock(channel->profile_mutex); } @@ -1580,7 +1580,7 @@ switch_channel_set_flag(channel, CF_RING_READY); if (channel->caller_profile && channel->caller_profile->times) { switch_mutex_lock(channel->profile_mutex); - channel->caller_profile->times->progress = switch_timestamp_now(); + channel->caller_profile->times->progress = switch_micro_time_now(); if (channel->caller_profile->originator_caller_profile) { switch_core_session_t *other_session; if ((other_session = switch_core_session_locate(channel->caller_profile->originator_caller_profile->uuid))) { @@ -1638,7 +1638,7 @@ if (channel->caller_profile && channel->caller_profile->times) { switch_mutex_lock(channel->profile_mutex); - channel->caller_profile->times->progress_media = switch_timestamp_now(); + channel->caller_profile->times->progress_media = switch_micro_time_now(); if (channel->caller_profile->originator_caller_profile) { switch_core_session_t *osession; if ((osession = switch_core_session_locate(channel->caller_profile->originator_caller_profile->uuid))) { @@ -1756,7 +1756,7 @@ if (channel->caller_profile && channel->caller_profile->times) { switch_mutex_lock(channel->profile_mutex); - channel->caller_profile->times->answered = switch_timestamp_now(); + channel->caller_profile->times->answered = switch_micro_time_now(); switch_mutex_unlock(channel->profile_mutex); } Modified: freeswitch/trunk/src/switch_console.c ============================================================================== --- freeswitch/trunk/src/switch_console.c (original) +++ freeswitch/trunk/src/switch_console.c Sun Jan 25 15:23:07 2009 @@ -296,7 +296,7 @@ goto done; } - switch_time_exp_lt(&tm, switch_timestamp_now()); + switch_time_exp_lt(&tm, switch_micro_time_now()); switch_strftime_nocheck(date, &retsize, sizeof(date), "%Y-%m-%d %T", &tm); if (channel == SWITCH_CHANNEL_ID_LOG) { Modified: freeswitch/trunk/src/switch_core.c ============================================================================== --- freeswitch/trunk/src/switch_core.c (original) +++ freeswitch/trunk/src/switch_core.c Sun Jan 25 15:23:07 2009 @@ -136,7 +136,7 @@ check_ip(); /* reschedule this task */ - task->runtime = switch_timestamp(NULL) + 20; + task->runtime = switch_epoch_time_now(NULL) + 20; } @@ -1088,7 +1088,7 @@ switch_scheduler_task_thread_start(); runtime.initiated = switch_time_now(); - switch_scheduler_add_task(switch_timestamp(NULL), heartbeat_callback, "heartbeat", "core", 0, NULL, SSHF_NONE | SSHF_NO_DEL); + switch_scheduler_add_task(switch_epoch_time_now(NULL), heartbeat_callback, "heartbeat", "core", 0, NULL, SSHF_NONE | SSHF_NO_DEL); switch_uuid_get(&uuid); switch_uuid_format(runtime.uuid_str, &uuid); @@ -1323,7 +1323,7 @@ SWITCH_DECLARE(switch_time_t) switch_core_uptime(void) { - return switch_timestamp_now() - runtime.initiated; + return switch_micro_time_now() - runtime.initiated; } SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, int32_t *val) Modified: freeswitch/trunk/src/switch_core_io.c ============================================================================== --- freeswitch/trunk/src/switch_core_io.c (original) +++ freeswitch/trunk/src/switch_core_io.c Sun Jan 25 15:23:07 2009 @@ -353,7 +353,7 @@ } } - if (bp->stop_time && bp->stop_time <= switch_timestamp(NULL)) { + if (bp->stop_time && bp->stop_time <= switch_epoch_time_now(NULL)) { ok = SWITCH_FALSE; } @@ -502,7 +502,7 @@ switch_mutex_lock(bp->read_mutex); if (bp->callback) { if (bp->callback(bp, bp->user_data, SWITCH_ABC_TYPE_READ_PING) == SWITCH_FALSE - || (bp->stop_time && bp->stop_time <= switch_timestamp(NULL))) { + || (bp->stop_time && bp->stop_time <= switch_epoch_time_now(NULL))) { ok = SWITCH_FALSE; } } @@ -775,7 +775,7 @@ } } - if (bp->stop_time && bp->stop_time <= switch_timestamp(NULL)) { + if (bp->stop_time && bp->stop_time <= switch_epoch_time_now(NULL)) { ok = SWITCH_FALSE; } Modified: freeswitch/trunk/src/switch_core_port_allocator.c ============================================================================== --- freeswitch/trunk/src/switch_core_port_allocator.c (original) +++ freeswitch/trunk/src/switch_core_port_allocator.c Sun Jan 25 15:23:07 2009 @@ -118,7 +118,7 @@ int odd = switch_test_flag(alloc, SPF_ODD); switch_mutex_lock(alloc->mutex); - srand(getpid() + (unsigned) switch_timestamp(NULL)); + srand(getpid() + (unsigned) switch_epoch_time_now(NULL)); while (alloc->track_used < alloc->track_len) { uint32_t index; Modified: freeswitch/trunk/src/switch_core_session.c ============================================================================== --- freeswitch/trunk/src/switch_core_session.c (original) +++ freeswitch/trunk/src/switch_core_session.c Sun Jan 25 15:23:07 2009 @@ -874,7 +874,7 @@ switch_event_fire(&event); /* reschedule this task */ - task->runtime = switch_timestamp(NULL) + session->track_duration; + task->runtime = switch_epoch_time_now(NULL) + session->track_duration; switch_core_session_rwunlock(session); } @@ -892,7 +892,7 @@ { switch_core_session_unsched_heartbeat(session); - session->track_id = switch_scheduler_add_task(switch_timestamp(NULL), sch_heartbeat_callback, (char *) __SWITCH_FUNC__, + session->track_id = switch_scheduler_add_task(switch_epoch_time_now(NULL), sch_heartbeat_callback, (char *) __SWITCH_FUNC__, switch_core_session_get_uuid(session), 0, strdup(switch_core_session_get_uuid(session)), SSHF_FREE_ARG); } Modified: freeswitch/trunk/src/switch_core_sqldb.c ============================================================================== --- freeswitch/trunk/src/switch_core_sqldb.c (original) +++ freeswitch/trunk/src/switch_core_sqldb.c Sun Jan 25 15:23:07 2009 @@ -278,7 +278,7 @@ sql = switch_mprintf("insert into channels (uuid,created,created_epoch, name,state,dialplan,context) values('%q','%q','%ld','%q','%q','%q','%q')", switch_event_get_header_nil(event, "unique-id"), switch_event_get_header_nil(event, "event-date-local"), - (long)switch_timestamp(NULL), + (long)switch_epoch_time_now(NULL), switch_event_get_header_nil(event, "channel-name"), switch_event_get_header_nil(event, "channel-state"), switch_event_get_header_nil(event, "caller-dialplan"), @@ -339,7 +339,7 @@ case SWITCH_EVENT_CHANNEL_BRIDGE: sql = switch_mprintf("insert into calls values ('%s', '%ld', '%s','%q','%q','%q','%q','%s','%q','%q','%q','%q','%s')", switch_event_get_header_nil(event, "event-date-local"), - (long)switch_timestamp(NULL), + (long)switch_epoch_time_now(NULL), switch_event_get_header_nil(event, "event-calling-function"), switch_event_get_header_nil(event, "caller-caller-id-name"), switch_event_get_header_nil(event, "caller-caller-id-number"), Modified: freeswitch/trunk/src/switch_event.c ============================================================================== --- freeswitch/trunk/src/switch_event.c (original) +++ freeswitch/trunk/src/switch_event.c Sun Jan 25 15:23:07 2009 @@ -1019,7 +1019,7 @@ switch_time_exp_t tm; char date[80] = ""; switch_size_t retsize; - switch_time_t ts = switch_timestamp_now(); + switch_time_t ts = switch_micro_time_now(); switch_assert(BLOCK != NULL); switch_assert(RUNTIME_POOL != NULL); Modified: freeswitch/trunk/src/switch_ivr.c ============================================================================== --- freeswitch/trunk/src/switch_ivr.c (original) +++ freeswitch/trunk/src/switch_ivr.c Sun Jan 25 15:23:07 2009 @@ -42,7 +42,7 @@ { switch_channel_t *channel = switch_core_session_get_channel(session); switch_status_t status = SWITCH_STATUS_SUCCESS; - switch_time_t start = switch_timestamp_now(), now, done = switch_timestamp_now() + (ms * 1000); + switch_time_t start = switch_micro_time_now(), now, done = switch_micro_time_now() + (ms * 1000); switch_frame_t *read_frame, cng_frame = { 0 }; int32_t left, elapsed; char data[2] = ""; @@ -114,7 +114,7 @@ } for (;;) { - now = switch_timestamp_now(); + now = switch_micro_time_now(); elapsed = (int32_t) ((now - start) / 1000); left = ms - elapsed; @@ -452,9 +452,9 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Command Execute %s(%s)\n", switch_channel_get_name(channel), app_name, switch_str_nil(app_arg)); - b4 = switch_timestamp_now(); + b4 = switch_micro_time_now(); switch_core_session_exec(session, application_interface, app_arg); - aftr = switch_timestamp_now(); + aftr = switch_micro_time_now(); if (!switch_channel_ready(channel) || switch_channel_test_flag(channel, CF_STOP_BROADCAST) || aftr - b4 < 500000) { break; } @@ -593,7 +593,7 @@ if ((timeout = atoi(to)) < 0) { timeout = 0; } else { - expires = switch_timestamp(NULL) + timeout; + expires = switch_epoch_time_now(NULL) + timeout; } } @@ -610,7 +610,7 @@ break; } - if (expires && switch_timestamp(NULL) >= expires) { + if (expires && switch_epoch_time_now(NULL) >= expires) { switch_channel_hangup(channel, SWITCH_CAUSE_RECOVERY_ON_TIMER_EXPIRE); break; } @@ -733,7 +733,7 @@ } if (timeout) { - started = switch_timestamp_now(); + started = switch_micro_time_now(); } while (switch_channel_ready(channel)) { @@ -748,7 +748,7 @@ } if (timeout) { - elapsed = (uint32_t) ((switch_timestamp_now() - started) / 1000); + elapsed = (uint32_t) ((switch_micro_time_now() - started) / 1000); if (elapsed >= timeout) { break; } @@ -855,7 +855,7 @@ } if (abs_timeout) { - started = switch_timestamp_now(); + started = switch_micro_time_now(); } if (digit_timeout && first_timeout) { @@ -868,14 +868,14 @@ if (eff_timeout) { - digit_started = switch_timestamp_now(); + digit_started = switch_micro_time_now(); } while (switch_channel_ready(channel)) { switch_frame_t *read_frame; if (abs_timeout) { - abs_elapsed = (uint32_t) ((switch_timestamp_now() - started) / 1000); + abs_elapsed = (uint32_t) ((switch_micro_time_now() - started) / 1000); if (abs_elapsed >= abs_timeout) { break; } @@ -887,7 +887,7 @@ if (eff_timeout) { - digit_elapsed = (uint32_t) ((switch_timestamp_now() - digit_started) / 1000); + digit_elapsed = (uint32_t) ((switch_micro_time_now() - digit_started) / 1000); if (digit_elapsed >= eff_timeout) { status = SWITCH_STATUS_TIMEOUT; break; @@ -900,7 +900,7 @@ if (eff_timeout) { eff_timeout = digit_timeout; - digit_started = switch_timestamp_now(); + digit_started = switch_micro_time_now(); } for (y = 0; y <= maxdigits; y++) { @@ -1476,12 +1476,12 @@ stream->digits = tmp; *(stream->digits + (len++)) = digit; *(stream->digits + len) = '\0'; - stream->last_digit_time = switch_timestamp_now() / 1000; + stream->last_digit_time = switch_micro_time_now() / 1000; } } } /* don't allow collected digit string testing if there are varying sized keys until timeout */ - if (parser->maxlen - parser->minlen > 0 && (switch_timestamp_now() / 1000) - stream->last_digit_time < parser->digit_timeout_ms) { + if (parser->maxlen - parser->minlen > 0 && (switch_micro_time_now() / 1000) - stream->last_digit_time < parser->digit_timeout_ms) { len = 0; } /* if we have digits to test */ Modified: freeswitch/trunk/src/switch_ivr_async.c ============================================================================== --- freeswitch/trunk/src/switch_ivr_async.c (original) +++ freeswitch/trunk/src/switch_ivr_async.c Sun Jan 25 15:23:07 2009 @@ -378,7 +378,7 @@ switch_channel_pre_answer(channel); if (limit) { - to = switch_timestamp(NULL) + limit; + to = switch_epoch_time_now(NULL) + limit; } if (flags && strchr(flags, 'm')) { @@ -892,7 +892,7 @@ } if (limit) { - to = switch_timestamp(NULL) + limit; + to = switch_epoch_time_now(NULL) + limit; } if ((status = switch_core_media_bug_add(session, record_callback, fh, to, flags, &bug)) != SWITCH_STATUS_SUCCESS) { @@ -1525,7 +1525,7 @@ { switch_channel_t *channel = switch_core_session_get_channel(session); dtmf_meta_data_t *md = switch_channel_get_private(channel, SWITCH_META_VAR_KEY); - time_t now = switch_timestamp(NULL); + time_t now = switch_epoch_time_now(NULL); char digit[2] = ""; int dval; Modified: freeswitch/trunk/src/switch_ivr_originate.c ============================================================================== --- freeswitch/trunk/src/switch_ivr_originate.c (original) +++ freeswitch/trunk/src/switch_ivr_originate.c Sun Jan 25 15:23:07 2009 @@ -219,7 +219,7 @@ time_t start) { int x = 0,i; - time_t elapsed = switch_timestamp(NULL) - start; + time_t elapsed = switch_epoch_time_now(NULL) - start; for (i = 0; i < max; i++) { if (originate_status[i].peer_channel && switch_channel_get_state(originate_status[i].peer_channel) < CS_HANGUP) { @@ -592,7 +592,7 @@ } timelimit *= 1000000; - start = switch_timestamp_now(); + start = switch_micro_time_now(); if (caller_channel) { if (switch_channel_test_flag(caller_channel, CF_ANSWERED)) { @@ -708,7 +708,7 @@ while (switch_channel_ready(peer_channel) && !(switch_channel_test_flag(peer_channel, CF_ANSWERED) || switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA))) { - int diff = (int) (switch_timestamp_now() - start); + int diff = (int) (switch_micro_time_now() - start); if (diff > timelimit) { status = SWITCH_STATUS_TIMEOUT; @@ -1486,7 +1486,7 @@ } } - switch_timestamp(&start); + switch_epoch_time_now(&start); for (;;) { uint32_t valid_channels = 0; @@ -1514,7 +1514,7 @@ goto notready; } - elapsed = switch_timestamp(NULL) - start; + elapsed = switch_epoch_time_now(NULL) - start; if (elapsed > (time_t) timelimit_sec) { to++; @@ -1653,7 +1653,7 @@ } while ((!caller_channel || switch_channel_ready(caller_channel)) && check_channel_status(&oglobals, originate_status, and_argc)) { - time_t elapsed = switch_timestamp(NULL) - start; + time_t elapsed = switch_epoch_time_now(NULL) - start; if (caller_channel && !oglobals.sent_ring && oglobals.ring_ready && !oglobals.return_ring_ready) { switch_channel_ring_ready(caller_channel); oglobals.sent_ring = 1; Modified: freeswitch/trunk/src/switch_ivr_play_say.c ============================================================================== --- freeswitch/trunk/src/switch_ivr_play_say.c (original) +++ freeswitch/trunk/src/switch_ivr_play_say.c Sun Jan 25 15:23:07 2009 @@ -497,7 +497,7 @@ } if (limit) { - start = switch_timestamp(NULL); + start = switch_epoch_time_now(NULL); } if (fh->thresh) { @@ -531,7 +531,7 @@ switch_ivr_parse_all_events(session); } - if (start && (switch_timestamp(NULL) - start) > limit) { + if (start && (switch_epoch_time_now(NULL) - start) > limit) { break; } Modified: freeswitch/trunk/src/switch_log.c ============================================================================== --- freeswitch/trunk/src/switch_log.c (original) +++ freeswitch/trunk/src/switch_log.c Sun Jan 25 15:23:07 2009 @@ -246,7 +246,7 @@ const char *filep = (file ? switch_cut_path(file) : ""); const char *funcp = (func ? func : ""); char *content = NULL; - switch_time_t now = switch_timestamp_now(); + switch_time_t now = switch_micro_time_now(); uint32_t len; const char *extra_fmt = "%s [%s] %s:%d %s()%c%s"; Modified: freeswitch/trunk/src/switch_resample.c ============================================================================== --- freeswitch/trunk/src/switch_resample.c (original) +++ freeswitch/trunk/src/switch_resample.c Sun Jan 25 15:23:07 2009 @@ -206,7 +206,7 @@ int16_t x; uint32_t i; int sum_rnd = 0; - int16_t rnd2 = (int16_t) switch_timestamp_now(); + int16_t rnd2 = (int16_t) switch_micro_time_now(); assert(divisor); Modified: freeswitch/trunk/src/switch_rtp.c ============================================================================== --- freeswitch/trunk/src/switch_rtp.c (original) +++ freeswitch/trunk/src/switch_rtp.c Sun Jan 25 15:23:07 2009 @@ -228,7 +228,7 @@ #if 0 if (rtp_session->last_stun) { - elapsed = (unsigned int) ((switch_timestamp_now() - rtp_session->last_stun) / 1000); + elapsed = (unsigned int) ((switch_micro_time_now() - rtp_session->last_stun) / 1000); if (elapsed > 30000) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No stun for a long time (PUNT!)\n"); @@ -282,7 +282,7 @@ } if (rtp_session->last_stun) { - elapsed = (unsigned int) ((switch_timestamp_now() - rtp_session->last_stun) / 1000); + elapsed = (unsigned int) ((switch_micro_time_now() - rtp_session->last_stun) / 1000); if (elapsed > 30000) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No stun for a long time (PUNT!)\n"); @@ -310,7 +310,7 @@ return; } - rtp_session->last_stun = switch_timestamp_now(); + rtp_session->last_stun = switch_micro_time_now(); } static void handle_ice(switch_rtp_t *rtp_session, void *data, switch_size_t len) @@ -346,7 +346,7 @@ } end_buf = buf + ((sizeof(buf) > packet->header.length) ? packet->header.length : sizeof(buf)); - rtp_session->last_stun = switch_timestamp_now(); + rtp_session->last_stun = switch_micro_time_now(); switch_stun_packet_first_attribute(packet, attr); @@ -830,7 +830,7 @@ rtp_session->seq = (uint16_t) rand(); - rtp_session->ssrc = (uint32_t) ((intptr_t) &rtp_session + (uint32_t) switch_timestamp(NULL)); + rtp_session->ssrc = (uint32_t) ((intptr_t) &rtp_session + (uint32_t) switch_epoch_time_now(NULL)); rtp_session->send_msg.header.ssrc = htonl(rtp_session->ssrc); rtp_session->send_msg.header.ts = 0; rtp_session->send_msg.header.m = 0; @@ -1967,7 +1967,7 @@ } if (!rtp_session->timer.interval && - ((unsigned)((switch_timestamp_now() - rtp_session->last_write_timestamp))) > (rtp_session->ms_per_packet *2)) { + ((unsigned)((switch_micro_time_now() - rtp_session->last_write_timestamp))) > (rtp_session->ms_per_packet *2)) { m++; } @@ -1995,7 +1995,7 @@ uint32_t rate = 0; uint32_t codec_flags = 0; uint32_t len = sizeof(decoded); - time_t now = switch_timestamp(NULL); + time_t now = switch_epoch_time_now(NULL); send = 0; if (rtp_session->vad_data.scan_freq && rtp_session->vad_data.next_scan <= now) { @@ -2132,7 +2132,7 @@ if (rtp_session->timer.interval) { rtp_session->last_write_samplecount = rtp_session->timer.samplecount; } else { - rtp_session->last_write_timestamp = (uint32_t) switch_timestamp_now(); + rtp_session->last_write_timestamp = (uint32_t) switch_micro_time_now(); } rtp_session->last_write_ts = this_ts; @@ -2209,7 +2209,7 @@ rtp_session->vad_data.cng_freq = 50; rtp_session->vad_data.ts = 1; rtp_session->vad_data.start = 0; - rtp_session->vad_data.next_scan = switch_timestamp(NULL); + rtp_session->vad_data.next_scan = switch_epoch_time_now(NULL); rtp_session->vad_data.scan_freq = 0; switch_set_flag_locked(rtp_session, SWITCH_RTP_FLAG_VAD); switch_set_flag(&rtp_session->vad_data, SWITCH_VAD_FLAG_CNG); Modified: freeswitch/trunk/src/switch_scheduler.c ============================================================================== --- freeswitch/trunk/src/switch_scheduler.c (original) +++ freeswitch/trunk/src/switch_scheduler.c Sun Jan 25 15:23:07 2009 @@ -107,7 +107,7 @@ if (done) { tp->destroyed = 1; } else { - int64_t now = switch_timestamp(NULL); + int64_t now = switch_epoch_time_now(NULL); if (now >= tp->task.runtime && !tp->in_thread) { int32_t diff = (int32_t) (now - tp->task.runtime); if (diff > 1) { @@ -190,7 +190,7 @@ switch_zmalloc(container, sizeof(*container)); switch_assert(func); container->func = func; - container->task.created = switch_timestamp(NULL); + container->task.created = switch_epoch_time_now(NULL); container->task.runtime = task_runtime; container->task.group = strdup(group ? group : "none"); container->task.cmd_id = cmd_id; Modified: freeswitch/trunk/src/switch_stun.c ============================================================================== --- freeswitch/trunk/src/switch_stun.c (original) +++ freeswitch/trunk/src/switch_stun.c Sun Jan 25 15:23:07 2009 @@ -105,7 +105,7 @@ max = (int) strlen(set); - srand((unsigned int) switch_timestamp_now()); + srand((unsigned int) switch_micro_time_now()); for (x = 0; x < len; x++) { int j = (int) (max * 1.0 * rand() / (RAND_MAX + 1.0)); @@ -510,7 +510,7 @@ } switch_socket_sendto(sock, remote_addr, 0, (void *) packet, &bytes); - started = switch_timestamp_now(); + started = switch_micro_time_now(); *ip = NULL; *port = 0; @@ -522,7 +522,7 @@ break; } - if ((elapsed = (unsigned int) ((switch_timestamp_now() - started) / 1000)) > 5000) { + if ((elapsed = (unsigned int) ((switch_micro_time_now() - started) / 1000)) > 5000) { *err = "Timeout"; switch_socket_shutdown(sock, SWITCH_SHUTDOWN_READWRITE); switch_socket_close(sock); Modified: freeswitch/trunk/src/switch_time.c ============================================================================== --- freeswitch/trunk/src/switch_time.c (original) +++ freeswitch/trunk/src/switch_time.c Sun Jan 25 15:23:07 2009 @@ -111,15 +111,15 @@ } -SWITCH_DECLARE(switch_time_t) switch_timestamp_now(void) +SWITCH_DECLARE(switch_time_t) switch_micro_time_now(void) { return runtime.timestamp ? runtime.timestamp : switch_time_now(); } -SWITCH_DECLARE(time_t) switch_timestamp(time_t *t) +SWITCH_DECLARE(time_t) switch_epoch_time_now(time_t *t) { - time_t now = switch_timestamp_now() / APR_USEC_PER_SEC; + time_t now = switch_micro_time_now() / APR_USEC_PER_SEC; if (t) { *t = now; } @@ -671,7 +671,7 @@ time_t timep; if (!thetime) { - thetime = switch_timestamp_now(); + thetime = switch_micro_time_now(); } timep = (thetime) / (int64_t) (1000000); @@ -707,7 +707,7 @@ switch_time_exp_t stm; if (!thetime) { - thetime = switch_timestamp_now(); + thetime = switch_micro_time_now(); } timep = (thetime) / (int64_t) (1000000); Modified: freeswitch/trunk/src/switch_utils.c ============================================================================== --- freeswitch/trunk/src/switch_utils.c (original) +++ freeswitch/trunk/src/switch_utils.c Sun Jan 25 15:23:07 2009 @@ -377,7 +377,7 @@ unsigned char in[B64BUFFLEN]; unsigned char out[B64BUFFLEN + 512]; - switch_snprintf(filename, 80, "%smail.%d%04x", SWITCH_GLOBAL_dirs.temp_dir, (int) switch_timestamp(NULL), rand() & 0xffff); + switch_snprintf(filename, 80, "%smail.%d%04x", SWITCH_GLOBAL_dirs.temp_dir, (int) switch_epoch_time_now(NULL), rand() & 0xffff); if ((fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644))) { if (file) { @@ -828,7 +828,7 @@ switch_time_t ret = 0; char *pattern = "^(\\d+)-(\\d+)-(\\d+)\\s*(\\d*):{0,1}(\\d*):{0,1}(\\d*)"; - switch_time_exp_lt(&tm, switch_timestamp_now()); + switch_time_exp_lt(&tm, switch_micro_time_now()); tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = 0; if ((proceed = switch_regex_perform(in, pattern, &re, ovector, sizeof(ovector) / sizeof(ovector[0])))) { From anthm at freeswitch.org Sun Jan 25 13:24:05 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Sun, 25 Jan 2009 15:24:05 -0600 Subject: [Freeswitch-svn] [commit] r11487 - in freeswitch/trunk/src/mod/languages/mod_managed: . managed Message-ID: Author: anthm Date: Sun Jan 25 15:24:05 2009 New Revision: 11487 Log: swigall Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx ============================================================================== --- freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx (original) +++ freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx Sun Jan 25 15:24:05 2009 @@ -4876,6 +4876,22 @@ } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_media_bug_pause(void * jarg1) { + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + + arg1 = (switch_core_session_t *)jarg1; + switch_core_media_bug_pause(arg1); +} + + +SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_media_bug_resume(void * jarg1) { + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + + arg1 = (switch_core_session_t *)jarg1; + switch_core_media_bug_resume(arg1); +} + + SWIGEXPORT void * SWIGSTDCALL CSharp_switch_core_media_bug_get_user_data(void * jarg1) { void * jresult ; switch_media_bug_t *arg1 = (switch_media_bug_t *) 0 ; @@ -7604,11 +7620,11 @@ } -SWIGEXPORT void * SWIGSTDCALL CSharp_switch_timestamp_now() { +SWIGEXPORT void * SWIGSTDCALL CSharp_switch_micro_time_now() { void * jresult ; switch_time_t result; - result = switch_timestamp_now(); + result = switch_micro_time_now(); jresult = new switch_time_t((switch_time_t &)result); return jresult; } @@ -7644,13 +7660,13 @@ } -SWIGEXPORT void * SWIGSTDCALL CSharp_switch_timestamp(void * jarg1) { +SWIGEXPORT void * SWIGSTDCALL CSharp_switch_epoch_time_now(void * jarg1) { void * jresult ; time_t *arg1 = (time_t *) 0 ; time_t result; arg1 = (time_t *)jarg1; - result = switch_timestamp(arg1); + result = switch_epoch_time_now(arg1); jresult = new time_t((time_t &)result); return jresult; } @@ -8315,6 +8331,30 @@ } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_string_var_check_const(char * jarg1) { + int jresult ; + char *arg1 = (char *) 0 ; + switch_bool_t result; + + arg1 = (char *)jarg1; + result = (switch_bool_t)switch_string_var_check_const((char const *)arg1); + jresult = result; + return jresult; +} + + +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_var_clean_string(char * jarg1) { + char * jresult ; + char *arg1 = (char *) 0 ; + char *result = 0 ; + + arg1 = (char *)jarg1; + result = (char *)switch_var_clean_string(arg1); + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT char * SWIGSTDCALL CSharp_switch_clean_string(char * jarg1) { char * jresult ; char *arg1 = (char *) 0 ; @@ -18613,6 +18653,40 @@ } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_set_app_flag(void * jarg1, unsigned long jarg2) { + switch_channel_t *arg1 = (switch_channel_t *) 0 ; + uint32_t arg2 ; + + arg1 = (switch_channel_t *)jarg1; + arg2 = (uint32_t)jarg2; + switch_channel_set_app_flag(arg1,arg2); +} + + +SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_clear_app_flag(void * jarg1, unsigned long jarg2) { + switch_channel_t *arg1 = (switch_channel_t *) 0 ; + uint32_t arg2 ; + + arg1 = (switch_channel_t *)jarg1; + arg2 = (uint32_t)jarg2; + switch_channel_clear_app_flag(arg1,arg2); +} + + +SWIGEXPORT int SWIGSTDCALL CSharp_switch_channel_test_app_flag(void * jarg1, unsigned long jarg2) { + int jresult ; + switch_channel_t *arg1 = (switch_channel_t *) 0 ; + uint32_t arg2 ; + int result; + + arg1 = (switch_channel_t *)jarg1; + arg2 = (uint32_t)jarg2; + result = (int)switch_channel_test_app_flag(arg1,arg2); + jresult = result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_buffer_create(void * jarg1, void * jarg2, void * jarg3) { int jresult ; switch_memory_pool_t *arg1 = (switch_memory_pool_t *) 0 ; Modified: freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs ============================================================================== --- freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs (original) +++ freeswitch/trunk/src/mod/languages/mod_managed/managed/swig.cs Sun Jan 25 15:24:05 2009 @@ -869,6 +869,14 @@ return ret; } + public static void switch_core_media_bug_pause(SWIGTYPE_p_switch_core_session session) { + freeswitchPINVOKE.switch_core_media_bug_pause(SWIGTYPE_p_switch_core_session.getCPtr(session)); + } + + public static void switch_core_media_bug_resume(SWIGTYPE_p_switch_core_session session) { + freeswitchPINVOKE.switch_core_media_bug_resume(SWIGTYPE_p_switch_core_session.getCPtr(session)); + } + public static SWIGTYPE_p_void switch_core_media_bug_get_user_data(SWIGTYPE_p_switch_media_bug bug) { IntPtr cPtr = freeswitchPINVOKE.switch_core_media_bug_get_user_data(SWIGTYPE_p_switch_media_bug.getCPtr(bug)); SWIGTYPE_p_void ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_void(cPtr, false); @@ -1850,8 +1858,8 @@ return ret; } - public static SWIGTYPE_p_switch_time_t switch_timestamp_now() { - SWIGTYPE_p_switch_time_t ret = new SWIGTYPE_p_switch_time_t(freeswitchPINVOKE.switch_timestamp_now(), true); + public static SWIGTYPE_p_switch_time_t switch_micro_time_now() { + SWIGTYPE_p_switch_time_t ret = new SWIGTYPE_p_switch_time_t(freeswitchPINVOKE.switch_micro_time_now(), true); return ret; } @@ -1879,8 +1887,8 @@ freeswitchPINVOKE.switch_time_sync(); } - public static SWIGTYPE_p_time_t switch_timestamp(SWIGTYPE_p_time_t t) { - SWIGTYPE_p_time_t ret = new SWIGTYPE_p_time_t(freeswitchPINVOKE.switch_timestamp(SWIGTYPE_p_time_t.getCPtr(t)), true); + public static SWIGTYPE_p_time_t switch_epoch_time_now(SWIGTYPE_p_time_t t) { + SWIGTYPE_p_time_t ret = new SWIGTYPE_p_time_t(freeswitchPINVOKE.switch_epoch_time_now(SWIGTYPE_p_time_t.getCPtr(t)), true); return ret; } @@ -2099,6 +2107,16 @@ return ret; } + public static switch_bool_t switch_string_var_check_const(string s) { + switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_string_var_check_const(s); + return ret; + } + + public static string switch_var_clean_string(string s) { + string ret = freeswitchPINVOKE.switch_var_clean_string(s); + return ret; + } + public static string switch_clean_string(string s) { string ret = freeswitchPINVOKE.switch_clean_string(s); return ret; @@ -2631,6 +2649,19 @@ return ret; } + public static void switch_channel_set_app_flag(SWIGTYPE_p_switch_channel channel, uint flags) { + freeswitchPINVOKE.switch_channel_set_app_flag(SWIGTYPE_p_switch_channel.getCPtr(channel), flags); + } + + public static void switch_channel_clear_app_flag(SWIGTYPE_p_switch_channel channel, uint flags) { + freeswitchPINVOKE.switch_channel_clear_app_flag(SWIGTYPE_p_switch_channel.getCPtr(channel), flags); + } + + public static int switch_channel_test_app_flag(SWIGTYPE_p_switch_channel channel, uint flags) { + int ret = freeswitchPINVOKE.switch_channel_test_app_flag(SWIGTYPE_p_switch_channel.getCPtr(channel), flags); + return ret; + } + public static switch_status_t switch_buffer_create(SWIGTYPE_p_apr_pool_t pool, SWIGTYPE_p_p_switch_buffer buffer, SWIGTYPE_p_switch_size_t max_len) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_buffer_create(SWIGTYPE_p_apr_pool_t.getCPtr(pool), SWIGTYPE_p_p_switch_buffer.getCPtr(buffer), SWIGTYPE_p_switch_size_t.getCPtr(max_len)); if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); @@ -5542,6 +5573,12 @@ [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_add")] public static extern int switch_core_media_bug_add(HandleRef jarg1, HandleRef jarg2, HandleRef jarg3, HandleRef jarg4, uint jarg5, HandleRef jarg6); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_pause")] + public static extern void switch_core_media_bug_pause(HandleRef jarg1); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_resume")] + public static extern void switch_core_media_bug_resume(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_get_user_data")] public static extern IntPtr switch_core_media_bug_get_user_data(HandleRef jarg1); @@ -6133,8 +6170,8 @@ [DllImport("mod_managed", EntryPoint="CSharp_switch_loadable_module_create_interface")] public static extern IntPtr switch_loadable_module_create_interface(HandleRef jarg1, int jarg2); - [DllImport("mod_managed", EntryPoint="CSharp_switch_timestamp_now")] - public static extern IntPtr switch_timestamp_now(); + [DllImport("mod_managed", EntryPoint="CSharp_switch_micro_time_now")] + public static extern IntPtr switch_micro_time_now(); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_memory_reclaim")] public static extern void switch_core_memory_reclaim(); @@ -6154,8 +6191,8 @@ [DllImport("mod_managed", EntryPoint="CSharp_switch_time_sync")] public static extern void switch_time_sync(); - [DllImport("mod_managed", EntryPoint="CSharp_switch_timestamp")] - public static extern IntPtr switch_timestamp(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_epoch_time_now")] + public static extern IntPtr switch_epoch_time_now(HandleRef jarg1); [DllImport("mod_managed", EntryPoint="CSharp_switch_strftime_tz")] public static extern int switch_strftime_tz(string jarg1, string jarg2, string jarg3, uint jarg4, HandleRef jarg5); @@ -6292,6 +6329,12 @@ [DllImport("mod_managed", EntryPoint="CSharp_switch_string_var_check")] public static extern int switch_string_var_check(string jarg1, int jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_string_var_check_const")] + public static extern int switch_string_var_check_const(string jarg1); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_var_clean_string")] + public static extern string switch_var_clean_string(string jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_clean_string")] public static extern string switch_clean_string(string jarg1); @@ -8824,6 +8867,15 @@ [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_test_private_flag")] public static extern int switch_channel_test_private_flag(HandleRef jarg1, uint jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_set_app_flag")] + public static extern void switch_channel_set_app_flag(HandleRef jarg1, uint jarg2); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_clear_app_flag")] + public static extern void switch_channel_clear_app_flag(HandleRef jarg1, uint jarg2); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_test_app_flag")] + public static extern int switch_channel_test_app_flag(HandleRef jarg1, uint jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_buffer_create")] public static extern int switch_buffer_create(HandleRef jarg1, HandleRef jarg2, HandleRef jarg3); @@ -17171,6 +17223,21 @@ namespace FreeSWITCH.Native { +public enum switch_channel_app_flag_t { + CF_APP_TAGGED = (1 << 0) +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 1.3.35 + * + * 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_channel_flag_t { CF_ANSWERED = 1, CF_OUTBOUND, @@ -17202,6 +17269,7 @@ CF_INNER_BRIDGE, CF_REQ_MEDIA, CF_VERBOSE_EVENTS, + CF_PAUSE_BUGS, CF_FLAG_MAX } From andrew at freeswitch.org Sun Jan 25 13:35:27 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Sun, 25 Jan 2009 15:35:27 -0600 Subject: [Freeswitch-svn] [commit] r11488 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Sun Jan 25 15:35:27 2009 New Revision: 11488 Log: Fix setting up a listener for an outbound session if one doesn't already exist, add beginnings of 'erlang' console command Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Sun Jan 25 15:35:27 2009 @@ -886,7 +886,7 @@ if (SWITCH_STATUS_SUCCESS==initialise_ei(&ec)) { errno = 0; - if ((clientfd=ei_connect(&ec,node)) == ERL_ERROR) { + if ((clientfd=ei_connect(&ec,node)) < 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error connecting to node %s (erl_errno=%d, errno=%d)!\n",node,erl_errno,errno); return NULL; } @@ -899,7 +899,7 @@ session_elem_t* attach_call_to_registered_process(listener_t* listener, char* reg_name, switch_core_session_t *session) { /* create a session list element */ - session_elem_t* session_element=NULL; + session_elem_t* session_element = NULL; if (!(session_element = switch_core_alloc(switch_core_session_get_pool(session), sizeof(*session_element)))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to allocate session element\n"); } @@ -969,6 +969,25 @@ } +int count_listener_sessions(listener_t *listener) { + session_elem_t *last,*sp; + int count = 0; + + switch_mutex_lock(listener->session_mutex); + sp = listener->session_list; + last = NULL; + while(sp) { + count++; + last = sp; + sp = sp->next; + } + + switch_mutex_unlock(listener->session_mutex); + + return count; +} + + /* Module Hooks */ /* Entry point for outbound mode */ @@ -1024,13 +1043,17 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating new listener for session\n"); new_session = SWITCH_TRUE; listener = new_outbound_listener(node); - add_listener(listener); } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Using existing listener for session\n"); } if (listener) { + if (new_session == SWITCH_TRUE) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Launching new listener\n"); + launch_listener_thread(listener); + } + if (module && function) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating new spawned session for listener\n"); session_element=attach_call_to_spawned_process(listener, module, function, session); @@ -1041,8 +1064,6 @@ if (session_element) { - if (new_session) - launch_listener_thread(listener); switch_ivr_park(session, NULL); /* keep app thread running for lifetime of session */ @@ -1057,9 +1078,57 @@ } +/* 'erlang' console stuff */ +SWITCH_STANDARD_API(erlang_cmd) +{ + char *argv[1024] = { 0 }; + int argc = 0; + char *mycmd = NULL; + switch_status_t status = SWITCH_STATUS_SUCCESS; + + const char *usage_string = "Supply some arguments, maybe?"; + + if (switch_strlen_zero(cmd)) { + stream->write_function(stream, "%s", usage_string); + goto done; + } + + + if (!(mycmd = strdup(cmd))) { + status = SWITCH_STATUS_MEMERR; + goto done; + } + + if (!(argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) { + stream->write_function(stream, "%s", usage_string); + goto done; + } + + if (!strcasecmp(argv[0], "listeners")) { + + listener_t *l; + switch_mutex_lock(globals.listener_mutex); + + for (l = listen_list.listeners; l; l = l->next) { + stream->write_function(stream, "Listener to %s with %d outbound sessions\n", l->peer_nodename, count_listener_sessions(l)); + } + + switch_mutex_unlock(globals.listener_mutex); + } else { + stream->write_function(stream, "I don't care for those arguments at all, sorry"); + goto done; + } + +done: + switch_safe_free(mycmd); + return status; +} + + SWITCH_MODULE_LOAD_FUNCTION(mod_erlang_event_load) { switch_application_interface_t *app_interface; + switch_api_interface_t *api_interface; switch_mutex_init(&globals.listener_mutex, SWITCH_MUTEX_NESTED, pool); @@ -1091,6 +1160,8 @@ *module_interface = switch_loadable_module_create_module_interface(pool, modname); SWITCH_ADD_APP(app_interface, "erlang", "Connect to an erlang node", "Connect to erlang", erlang_outbound_function, " ", SAF_SUPPORT_NOMEDIA); + SWITCH_ADD_API(api_interface, "erlang", "PortAudio", erlang_cmd, " []"); + switch_console_set_complete("add erlang listeners"); /* indicate that the module should continue to be loaded */ return SWITCH_STATUS_SUCCESS; From andrew at freeswitch.org Sun Jan 25 20:09:08 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Sun, 25 Jan 2009 22:09:08 -0600 Subject: [Freeswitch-svn] [commit] r11489 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Sun Jan 25 22:09:08 2009 New Revision: 11489 Log: Monitor spawned outbound processes for premature exits Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c Sun Jan 25 22:09:08 2009 @@ -258,6 +258,19 @@ } +int ei_compare_pids(erlang_pid *pid1, erlang_pid *pid2) +{ + if ((!strcmp(pid1->node, pid2->node)) && + pid1->creation == pid2->creation && + pid1->num == pid2->num && + pid1->serial == pid2->serial) { + return 0; + } else { + return 1; + } +} + + switch_status_t initialise_ei(struct ei_cnode_s *ec) { switch_status_t rv; Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Sun Jan 25 22:09:08 2009 @@ -114,7 +114,7 @@ for (ptr = bindings.head; ptr; lst = ptr, ptr = ptr->next) { if ((listener && ptr->listener == listener) || - (pid && (&ptr->process.type == ERLANG_PID) && (!strcmp(pid->node, ptr->process.pid.node)) && pid->creation == ptr->process.pid.creation && pid->num == ptr->process.pid.num && pid->serial == ptr->process.pid.serial)) { + (pid && (ptr->process.type == ERLANG_PID) && !ei_compare_pids(&ptr->process.pid, pid))) { if (bindings.head == ptr) { if (ptr->next) { bindings.head = ptr->next; @@ -301,6 +301,49 @@ switch_mutex_unlock(listener->session_mutex); } +static void remove_session_elem_from_listener(listener_t *listener, session_elem_t *session) +{ + session_elem_t *s, *last = NULL; + + if(!session) + return; + + switch_mutex_lock(listener->session_mutex); + for(s = listener->session_list; s; s = s->next) { + if (s == session) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Removing session\n"); + if (last) { + last->next = s->next; + } else { + listener->session_list = s->next; + } + switch_channel_clear_flag(switch_core_session_get_channel(s->session), CF_CONTROLLED); + /* this allows the application threads to exit */ + switch_clear_flag_locked(s, LFLAG_SESSION_ALIVE); + switch_core_session_rwunlock(s->session); + } + last = s; + } + switch_mutex_unlock(listener->session_mutex); +} + + +session_elem_t * find_session_elem_by_pid(listener_t *listener, erlang_pid *pid) +{ + session_elem_t *s = NULL; + + switch_mutex_lock(listener->session_mutex); + for (s = listener->session_list; s; s = s->next) { + if (s->process.type == ERLANG_PID && ei_compare_pids(pid, &s->process.pid)) { + break; + } + } + switch_mutex_unlock(listener->session_mutex); + + return s; +} + + static switch_xml_t erlang_fetch(const char *sectionstr, const char *tag_name, const char *key_name, const char *key_value, switch_event_t *params, void *user_data) { @@ -635,6 +678,8 @@ case ERL_EXIT : switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_exit from %s <%d.%d.%d>\n", msg.from.node, msg.from.creation, msg.from.num, msg.from.serial); remove_binding(NULL, &msg.from); + /* TODO - if a spawned process that was handling an outbound call fails.. what do we do with the call? */ + remove_session_elem_from_listener(listener, find_session_elem_by_pid(listener, &msg.from)); /* TODO - check if this linked pid is any of the log/event handler processes and cleanup if it is. */ break; default : @@ -955,6 +1000,8 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got pid!\n"); + ei_link(listener, pid, ei_self(listener->ec)); + session_element->process.type = ERLANG_PID; memcpy(&session_element->process.pid, pid, sizeof(erlang_pid)); switch_set_flag(session_element, LFLAG_SESSION_ALIVE); Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Sun Jan 25 22:09:08 2009 @@ -54,7 +54,6 @@ switch_core_session_t *session; switch_mutex_t *flag_mutex; uint32_t flags; - /* registered process name that will receive call notifications from this session */ struct erlang_process process; switch_queue_t *event_queue; struct session_elem *next; @@ -194,6 +193,7 @@ void ei_x_print_msg(ei_x_buff *buf, erlang_pid *pid, int send); int ei_sendto(ei_cnode *ec, int fd, struct erlang_process *process, ei_x_buff *buf); void ei_hash_ref(erlang_ref *ref, char *output); +int ei_compare_pids(erlang_pid *pid1, erlang_pid *pid2); switch_status_t initialise_ei(struct ei_cnode_s *ec); #define ei_encode_switch_event(_b, _e) ei_encode_switch_event_tag(_b, _e, "event") From anthm at freeswitch.org Mon Jan 26 08:47:00 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 10:47:00 -0600 Subject: [Freeswitch-svn] [commit] r11490 - freeswitch/trunk/src Message-ID: Author: anthm Date: Mon Jan 26 10:47:00 2009 New Revision: 11490 Log: add missing code Modified: freeswitch/trunk/src/switch_core_io.c Modified: freeswitch/trunk/src/switch_core_io.c ============================================================================== --- freeswitch/trunk/src/switch_core_io.c (original) +++ freeswitch/trunk/src/switch_core_io.c Mon Jan 26 10:47:00 2009 @@ -328,7 +328,7 @@ } } - if (session->bugs) { + if (session->bugs && !switch_channel_test_flag(session->channel, CF_PAUSE_BUGS)) { switch_media_bug_t *bp, *dp, *last = NULL; switch_bool_t ok = SWITCH_TRUE; switch_thread_rwlock_rdlock(session->bug_rwlock); @@ -493,7 +493,7 @@ if (flag & SFF_CNG) { switch_set_flag((*frame), SFF_CNG); } - if (session->bugs) { + if (session->bugs && !switch_channel_test_flag(session->channel, CF_PAUSE_BUGS)) { switch_media_bug_t *bp, *dp, *last = NULL; switch_bool_t ok = SWITCH_TRUE; switch_thread_rwlock_rdlock(session->bug_rwlock); @@ -745,7 +745,7 @@ switch_mutex_unlock(session->resample_mutex); } - if (session->bugs) { + if (session->bugs && !switch_channel_test_flag(session->channel, CF_PAUSE_BUGS)) { switch_media_bug_t *bp, *dp, *last = NULL; switch_thread_rwlock_rdlock(session->bug_rwlock); From anthm at freeswitch.org Mon Jan 26 10:05:00 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 12:05:00 -0600 Subject: [Freeswitch-svn] [commit] r11491 - freeswitch/trunk/src Message-ID: Author: anthm Date: Mon Jan 26 12:05:00 2009 New Revision: 11491 Log: bang it all, MODAPP-205 Modified: freeswitch/trunk/src/switch_core_file.c Modified: freeswitch/trunk/src/switch_core_file.c ============================================================================== --- freeswitch/trunk/src/switch_core_file.c (original) +++ freeswitch/trunk/src/switch_core_file.c Mon Jan 26 12:05:00 2009 @@ -395,7 +395,7 @@ while((rlen = switch_buffer_inuse(fh->pre_buffer))) { blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen); - if (asis) blen /= 2; + if (!asis) blen /= 2; if (fh->channels) blen /= fh->channels; if (fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen) != SWITCH_STATUS_SUCCESS) { break; From anthm at freeswitch.org Mon Jan 26 10:10:19 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 12:10:19 -0600 Subject: [Freeswitch-svn] [commit] r11492 - in freeswitch/trunk/libs/esl: . src Message-ID: Author: anthm Date: Mon Jan 26 12:10:19 2009 New Revision: 11492 Log: make err more obvious Modified: freeswitch/trunk/libs/esl/fs_cli.c freeswitch/trunk/libs/esl/src/esl.c Modified: freeswitch/trunk/libs/esl/fs_cli.c ============================================================================== --- freeswitch/trunk/libs/esl/fs_cli.c (original) +++ freeswitch/trunk/libs/esl/fs_cli.c Mon Jan 26 12:10:19 2009 @@ -619,7 +619,7 @@ } if (esl_connect(&handle, profile->host, profile->port, profile->pass)) { - esl_global_set_default_logger(3); + esl_global_set_default_logger(7); esl_log(ESL_LOG_ERROR, "Error Connecting [%s]\n", handle.err); return -1; } Modified: freeswitch/trunk/libs/esl/src/esl.c ============================================================================== --- freeswitch/trunk/libs/esl/src/esl.c (original) +++ freeswitch/trunk/libs/esl/src/esl.c Mon Jan 26 12:10:19 2009 @@ -648,7 +648,7 @@ if (esl_recv(handle)) { - snprintf(handle->err, sizeof(handle->err), "Connection Error"); + snprintf(handle->err, sizeof(handle->err), "Authentication Error"); goto fail; } @@ -656,7 +656,7 @@ hval = esl_event_get_header(handle->last_event, "reply-text"); if (strcasecmp(hval, "+OK accepted")) { - snprintf(handle->err, sizeof(handle->err), "Connection Error"); + snprintf(handle->err, sizeof(handle->err), "Authentication Error"); goto fail; } From andrew at freeswitch.org Mon Jan 26 12:50:17 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 14:50:17 -0600 Subject: [Freeswitch-svn] [commit] r11493 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Mon Jan 26 14:50:17 2009 New Revision: 11493 Log: Fix a couple minor bugs Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Mon Jan 26 14:50:17 2009 @@ -334,7 +334,7 @@ switch_mutex_lock(listener->session_mutex); for (s = listener->session_list; s; s = s->next) { - if (s->process.type == ERLANG_PID && ei_compare_pids(pid, &s->process.pid)) { + if (s->process.type == ERLANG_PID && !ei_compare_pids(pid, &s->process.pid)) { break; } } @@ -1000,7 +1000,7 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got pid!\n"); - ei_link(listener, pid, ei_self(listener->ec)); + ei_link(listener, ei_self(listener->ec), pid); session_element->process.type = ERLANG_PID; memcpy(&session_element->process.pid, pid, sizeof(erlang_pid)); From intralanman at freeswitch.org Mon Jan 26 13:54:37 2009 From: intralanman at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 15:54:37 -0600 Subject: [Freeswitch-svn] [commit] r11494 - freeswitch/trunk/scripts/contrib/jmesquita Message-ID: Author: intralanman Date: Mon Jan 26 15:54:37 2009 New Revision: 11494 Log: adding contrib dir for jmesquita Added: freeswitch/trunk/scripts/contrib/jmesquita/ From andrew at freeswitch.org Mon Jan 26 15:31:40 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 17:31:40 -0600 Subject: [Freeswitch-svn] [commit] r11495 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Mon Jan 26 17:31:40 2009 New Revision: 11495 Log: Allow the event encoding strategy to be configurable; choices are string or binary Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/erlang_event.conf.xml freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c Mon Jan 26 17:31:40 2009 @@ -41,18 +41,19 @@ * */ #define put8(s,n) do { \ - (s)[0] = (char)((n) & 0xff); \ - (s) += 1; \ + (s)[0] = (char)((n) & 0xff); \ + (s) += 1; \ } while (0) #define put32be(s,n) do { \ - (s)[0] = ((n) >> 24) & 0xff; \ - (s)[1] = ((n) >> 16) & 0xff; \ - (s)[2] = ((n) >> 8) & 0xff; \ - (s)[3] = (n) & 0xff; \ - (s) += 4; \ + (s)[0] = ((n) >> 24) & 0xff; \ + (s)[1] = ((n) >> 16) & 0xff; \ + (s)[2] = ((n) >> 8) & 0xff; \ + (s)[3] = (n) & 0xff; \ + (s) += 4; \ } while (0) + void ei_link(listener_t *listener, erlang_pid *from, erlang_pid *to) { char msgbuf[2048]; char *s; @@ -92,21 +93,21 @@ ei_x_encode_list_header(ebuf, i+1); if (uuid) { - ei_x_encode_string(ebuf, switch_event_get_header(event, "unique-id")); + _ei_x_encode_string(ebuf, switch_event_get_header(event, "unique-id")); } else { ei_x_encode_atom(ebuf, "undefined"); } for (hp = event->headers; hp; hp = hp->next) { ei_x_encode_tuple_header(ebuf, 2); - ei_x_encode_string(ebuf, hp->name); - ei_x_encode_string(ebuf, hp->value); + _ei_x_encode_string(ebuf, hp->name); + _ei_x_encode_string(ebuf, hp->value); } if (event->body) { ei_x_encode_tuple_header(ebuf, 2); - ei_x_encode_string(ebuf, "body"); - ei_x_encode_string(ebuf, event->body); + _ei_x_encode_string(ebuf, "body"); + _ei_x_encode_string(ebuf, event->body); } ei_x_encode_empty_list(ebuf); Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/erlang_event.conf.xml ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/erlang_event.conf.xml (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/erlang_event.conf.xml Mon Jan 26 17:31:40 2009 @@ -3,7 +3,10 @@ - - + + + + + Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c Mon Jan 26 17:31:40 2009 @@ -101,8 +101,8 @@ else ei_x_encode_atom(&ebuf, "bgerror"); - ei_x_encode_string(&ebuf, acs->uuid_str); - ei_x_encode_string(&ebuf, reply); + _ei_x_encode_string(&ebuf, acs->uuid_str); + _ei_x_encode_string(&ebuf, reply); switch_mutex_lock(acs->listener->sock_mutex); ei_send(acs->listener->sockfd, &acs->pid, ebuf.buff, ebuf.index); @@ -129,7 +129,7 @@ ei_x_encode_atom(&rbuf, "error"); } - ei_x_encode_string(&rbuf, reply); + _ei_x_encode_string(&rbuf, reply); switch_mutex_lock(acs->listener->sock_mutex); @@ -360,7 +360,7 @@ ei_x_encode_tuple_header(rbuf, 2); ei_x_encode_atom(rbuf, "ok"); - ei_x_encode_string(rbuf, acs->uuid_str); + _ei_x_encode_string(rbuf, acs->uuid_str); } return SWITCH_STATUS_SUCCESS; } Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Mon Jan 26 17:31:40 2009 @@ -380,10 +380,10 @@ ei_x_encode_tuple_header(&buf, 7); ei_x_encode_atom(&buf, "fetch"); ei_x_encode_atom(&buf, sectionstr); - ei_x_encode_string(&buf, tag_name ? tag_name : "undefined"); - ei_x_encode_string(&buf, key_name ? key_name : "undefined"); - ei_x_encode_string(&buf, key_value ? key_value : "undefined"); - ei_x_encode_string(&buf, uuid_str); + _ei_x_encode_string(&buf, tag_name ? tag_name : "undefined"); + _ei_x_encode_string(&buf, key_name ? key_name : "undefined"); + _ei_x_encode_string(&buf, key_value ? key_value : "undefined"); + _ei_x_encode_string(&buf, uuid_str); ei_encode_switch_event_headers(&buf, params); /*switch_core_hash_insert(ptr->reply_hash, uuid_str, );*/ @@ -840,6 +840,7 @@ memset(&prefs, 0, sizeof(prefs)); prefs.shortname = SWITCH_TRUE; + prefs.encoding = ERLANG_STRING; if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Open of %s failed\n", cf); @@ -859,6 +860,14 @@ set_pref_nodename(val); } else if (!strcmp(var, "shortname")) { prefs.shortname = switch_true(val); + } else if (!strcmp(var, "encoding")) { + if (!strcasecmp(val, "string")) { + prefs.encoding = ERLANG_STRING; + } else if (!strcasecmp(val, "binary")) { + prefs.encoding = ERLANG_BINARY; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid encoding strategy '%s' specified\n", val); + } } else if (!strcasecmp(var, "apply-inbound-acl")) { if (prefs.acl_count < MAX_ACL) { prefs.acl[prefs.acl_count++] = strdup(val); Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Mon Jan 26 17:31:40 2009 @@ -44,6 +44,11 @@ ERLANG_REG_PROCESS } process_type; +typedef enum { + ERLANG_STRING = 0, + ERLANG_BINARY +} erlang_encoding_t; + struct erlang_process { process_type type; char *reg_name; @@ -163,6 +168,7 @@ char *acl[MAX_ACL]; uint32_t acl_count; uint32_t id; + erlang_encoding_t encoding; }; typedef struct prefs_struct prefs_t; @@ -197,6 +203,16 @@ switch_status_t initialise_ei(struct ei_cnode_s *ec); #define ei_encode_switch_event(_b, _e) ei_encode_switch_event_tag(_b, _e, "event") +/* crazy macro for toggling encoding type */ +#define _ei_x_encode_string(buf, string) switch (prefs.encoding) { \ + case ERLANG_BINARY: \ + ei_x_encode_binary(buf, string, strlen(string)); \ + break; \ + default: \ + ei_x_encode_string(buf, string); \ + break; \ +} + /* mod_erlang_event.c */ session_elem_t* attach_call_to_registered_process(listener_t* listener, char* reg_name, switch_core_session_t *session); session_elem_t* attach_call_to_spawned_process(listener_t* listener, char *module, char *function, switch_core_session_t *session); From andrew at freeswitch.org Mon Jan 26 16:25:02 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 18:25:02 -0600 Subject: [Freeswitch-svn] [commit] r11496 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Mon Jan 26 18:25:01 2009 New Revision: 11496 Log: Allow certain tuple elements to be binaries or strings, to reduce conversion requirements on the erlang side Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c Mon Jan 26 18:25:01 2009 @@ -272,6 +272,28 @@ } +int ei_decode_string_or_binary(char *buf, int *index, int maxlen, char *dst) { + int type, size, res; + long len; + + ei_get_type(buf, index, &type, &size); + + if (type != ERL_STRING_EXT && type != ERL_BINARY_EXT) { + return -1; + } else if (size > maxlen) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Requested decoding of %s with size %d into a buffer of size %d\n", type == ERL_BINARY_EXT ? "binary" : "string", size, maxlen); + return -1; + } else if (type == ERL_BINARY_EXT) { + res = ei_decode_binary(buf, index, dst, &len); + dst[len] = '\0'; /* binaries aren't null terminated */ + } else { + res = ei_decode_string(buf, index, dst); + } + + return res; +} + + switch_status_t initialise_ei(struct ei_cnode_s *ec) { switch_status_t rv; Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c Mon Jan 26 18:25:01 2009 @@ -164,12 +164,11 @@ { char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1]; - if (ei_decode_string(buf->buff, &buf->index, uuid_str)) { + if (ei_decode_string_or_binary(buf->buff, &buf->index, SWITCH_UUID_FORMATTED_LENGTH, uuid_str)) { ei_x_encode_tuple_header(rbuf, 2); ei_x_encode_atom(rbuf, "error"); ei_x_encode_atom(rbuf, "badarg"); - } - else { + } else { ei_x_buff *nbuf = switch_core_alloc(listener->pool, sizeof(nbuf)); nbuf->buff = switch_core_alloc(listener->pool, buf->buffsz); memcpy(nbuf->buff, buf->buff, buf->buffsz); @@ -414,10 +413,10 @@ static switch_status_t handle_msg_sendmsg(listener_t *listener, int arity, ei_x_buff *buf, ei_x_buff *rbuf) { - char uuid[37]; + char uuid[SWITCH_UUID_FORMATTED_LENGTH + 1]; int headerlength; - if (ei_decode_string(buf->buff, &buf->index, uuid) || + if (ei_decode_string_or_binary(buf->buff, &buf->index, SWITCH_UUID_FORMATTED_LENGTH, uuid) || ei_decode_list_header(buf->buff, &buf->index, &headerlength)) { ei_x_encode_tuple_header(rbuf, 2); ei_x_encode_atom(rbuf, "error"); @@ -527,7 +526,7 @@ char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1]; if (arity != 3 || - ei_decode_string(buf->buff, &buf->index, uuid_str) || + ei_decode_string_or_binary(buf->buff, &buf->index, SWITCH_UUID_FORMATTED_LENGTH, uuid_str) || ei_decode_atom(buf->buff, &buf->index, reg_name)) { ei_x_encode_tuple_header(rbuf, 2); ei_x_encode_atom(rbuf, "error"); Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Mon Jan 26 18:25:01 2009 @@ -408,12 +408,12 @@ ei_get_type(rep->buff, &rep->index, &type, &size); - if (type != ERL_STRING_EXT) /* XXX no unicode or character codes > 255 */ + if (type != ERL_STRING_EXT && type != ERL_BINARY_EXT) /* XXX no unicode or character codes > 255 */ return NULL; char *xmlstr = switch_core_alloc(ptr->listener->pool, size + 1); - ei_decode_string(rep->buff, &rep->index, xmlstr); + ei_decode_string_or_binary(rep->buff, &rep->index, size, xmlstr); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got data %s after %d milliseconds!\n", xmlstr, i*10); Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Mon Jan 26 18:25:01 2009 @@ -200,6 +200,7 @@ int ei_sendto(ei_cnode *ec, int fd, struct erlang_process *process, ei_x_buff *buf); void ei_hash_ref(erlang_ref *ref, char *output); int ei_compare_pids(erlang_pid *pid1, erlang_pid *pid2); +int ei_decode_string_or_binary(char *buf, int *index, int maxlen, char *dst); switch_status_t initialise_ei(struct ei_cnode_s *ec); #define ei_encode_switch_event(_b, _e) ei_encode_switch_event_tag(_b, _e, "event") From jmesquita at freeswitch.org Mon Jan 26 16:48:49 2009 From: jmesquita at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 18:48:49 -0600 Subject: [Freeswitch-svn] [commit] r11497 - freeswitch/trunk/scripts/contrib/jmesquita/fsgui Message-ID: Author: jmesquita Date: Mon Jan 26 18:48:49 2009 New Revision: 11497 Log: Initial commit of FSGui. It works only for send_recv events and not multithreaded. Added: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.cpp freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.h freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.cpp freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.h freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.pro freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.ui freeswitch/trunk/scripts/contrib/jmesquita/fsgui/main.cpp freeswitch/trunk/scripts/contrib/jmesquita/fsgui/serverlogin.cpp freeswitch/trunk/scripts/contrib/jmesquita/fsgui/serverlogin.h freeswitch/trunk/scripts/contrib/jmesquita/fsgui/serverlogin.ui Added: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.cpp ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.cpp Mon Jan 26 18:48:49 2009 @@ -0,0 +1,88 @@ +#include "conn_event_handler.h" + + +conn_event_handler::conn_event_handler() +{ + memset(&handle, 0, sizeof(esl_handle_t)); +} + +conn_event_handler::~conn_event_handler(void){ + getDisconnected(); + delete &handle; +} + +void conn_event_handler::getDisconnected(){ + esl_disconnect(&handle); +} + +void conn_event_handler::getConnected(QString hostname, int port, QString password){ + QByteArray h = hostname.toAscii(); + QByteArray p = password.toAscii(); + const char * Hostname = h.data(); + const char * Password = p.data(); + esl_status_t status = esl_connect(&handle, Hostname, port, Password); + if ( status != ESL_SUCCESS) + { + QString errDesc = handle.err; + emit connectionError(errDesc); + } + else + { + emit gotConnected(); + } +} + +void conn_event_handler::handleError(){ + return; +} + +void conn_event_handler::readClient() +{ + return; +} + +void conn_event_handler::sendMessage(QString message) +{ + if (isConnected()) + { + esl_status_t status = esl_send_recv(&handle, message.toAscii()); + QString reply; + if (status != ESL_FAIL) + { + if (message.contains("nolog") || + message.contains("event") || + message.contains("noevent") || + message.contains("nixevent") || + message.contains("log") || + message.contains("nolog") || + message.contains("filter") + ) + { + reply = handle.last_sr_reply; + reply+="\n"; + } + else if (message.contains("exit")) + { + emit connectionError("Disconnected!"); + handle.connected = ESL_FALSE; + reply = "See you!\n"; + } + else + { + reply = handle.last_sr_event->body; + } + } + emit messageSignal(reply); + } + return; +} + +void conn_event_handler::handleRecvMessage(QString msg) +{ + return; +} + +bool conn_event_handler::isConnected() +{ + return handle.connected; +} Added: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.h ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.h Mon Jan 26 18:48:49 2009 @@ -0,0 +1,39 @@ +#ifndef CONN_EVENT_HANDLER_H +#define CONN_EVENT_HANDLER_H + +#include + +extern "C" { + #include "esl.h" + #include "esl_event.h" + #include "esl_threadmutex.h" + #include "esl_config.h" +} + + +class conn_event_handler : public QObject +{ + + Q_OBJECT + +public: + conn_event_handler(); + ~conn_event_handler(); + void getConnected(QString, int, QString); + void getDisconnected(void); + bool isConnected(void); +private slots: + void handleError(); + void readClient(void); +public slots: + void sendMessage(QString); +private: + void handleRecvMessage(QString); + esl_handle_t handle; +signals: + void connectionError(QString); + void gotConnected(void); + void messageSignal(QString); +}; + +#endif // CONN_EVENT_HANDLER_H Added: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.cpp ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.cpp Mon Jan 26 18:48:49 2009 @@ -0,0 +1,80 @@ +#include "fsgui.h" +#include "ui_fsgui.h" +#include "serverlogin.h" + +FSGui::FSGui(QWidget *parent) + : QMainWindow(parent), ui(new Ui::FSGuiClass) +{ + ui->setupUi(this); + serverLogin = new ServerLogin(this); + serverLogin->show(); + + connect( serverLogin , SIGNAL(acceptedSignal(QString, QString, QString)), + this, SLOT(connectSlot(QString, QString, QString)) ); + + connect(ui->btnSend, SIGNAL(clicked()), this, SLOT(btnSendClickedSlot())); + connect(ui->lineCmd, SIGNAL(textChanged(QString)), this, SLOT(lineCmdEditedSlot(QString))); + connect(ui->actionQuit, SIGNAL(triggered()), this, SLOT(close())); + connect(ui->actionConnect, SIGNAL(triggered()), serverLogin, SLOT(show())); + +} + +FSGui::~FSGui() +{ + delete socket; + delete ui; +} + +void FSGui::error(QString msg){ + ui->statusBar->showMessage(msg); +} + +void FSGui::connectSlot(QString hostname, QString port, QString password){ + socket = new conn_event_handler(); + connect( socket , SIGNAL( connectionError(QString) ), + this, SLOT( error(QString) ) ); + connect(socket , SIGNAL( gotConnected() ), + this, SLOT(connectionSuccessful())); + connect(socket , SIGNAL( messageSignal(QString) ), + this, SLOT( messageSlot(QString) )); + connect(this, SIGNAL(btnSendClickedSignal(QString)), + socket, SLOT(sendMessage(QString))); + socket->getConnected(hostname, port.toInt(), password); + ui->btnSend->setEnabled(true); +} + +void FSGui::connectionSuccessful(void){ + ui->statusBar->showMessage(tr("Connected!")); +} + +void FSGui::btnSendClickedSlot() +{ + emit btnSendClickedSignal(ui->lineCmd->text()); + ui->lineCmd->clear(); +} + +void FSGui::lineCmdEditedSlot(QString text) +{ + if (socket->isConnected() && !text.isEmpty()) + { + ui->btnSend->setEnabled(true); + } + else + { + ui->btnSend->setEnabled(false); + } +} + +void FSGui::messageSlot(QString msg) +{ + if (!msg.isEmpty()) + { + QTime timestamp = QTime::currentTime(); + QStringList msgList = msg.split("\n", QString::SkipEmptyParts); + for (int i = 0 ; i < msgList.size() ; ++i) + { + QString message = timestamp.toString("hh:mm:ss.zzz") + " : " + msgList[i] + "\n"; + ui->textConsole->insertPlainText(message); + } + } +} Added: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.h ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.h Mon Jan 26 18:48:49 2009 @@ -0,0 +1,40 @@ +#ifndef FSGUI_H +#define FSGUI_H + +#include +#include "conn_event_handler.h" + + +namespace Ui +{ + class FSGuiClass; +} + +class FSGui : public QMainWindow +{ + Q_OBJECT + +public: + FSGui(QWidget *parent = 0); + ~FSGui(); + +private: + Ui::FSGuiClass *ui; + conn_event_handler* socket; + QDialog * serverLogin; + QLabel * statusBarLabel; + +private slots: + void error(QString); + void connectionSuccessful(void); + void connectSlot(QString, QString, QString); + void btnSendClickedSlot(); + void lineCmdEditedSlot(QString); + void messageSlot(QString); + +signals: + void btnSendClickedSignal(QString); + +}; + +#endif // FSGUI_H Added: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.pro ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.pro Mon Jan 26 18:48:49 2009 @@ -0,0 +1,24 @@ +# ------------------------------------------------- +# Project created by QtCreator 2009-01-18T13:57:52 +# ------------------------------------------------- +TARGET = fs_gui +TEMPLATE = app + +SOURCES += main.cpp \ + fsgui.cpp \ + conn_event_handler.cpp \ + serverlogin.cpp + +INCLUDEPATH = ./../../../libs/esl/src/include + +HEADERS += fsgui.h \ + conn_event_handler.h \ + serverlogin.h \ + esl.h \ + esl_threadmutex.h \ + esl_config.h + +FORMS += fsgui.ui \ + serverlogin.ui + +LIBS += -L.. -lesl Added: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.ui ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.ui Mon Jan 26 18:48:49 2009 @@ -0,0 +1,109 @@ + + + FSGuiClass + + + + 0 + 0 + 600 + 400 + + + + FSGui - The console for humans + + + + + + + false + + + true + + + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + + + + + + + + + false + + + Send + + + Return + + + false + + + false + + + + + + + + + 0 + 0 + 600 + 22 + + + + + &File + + + + + + + + &Help + + + + + + + + + + &Quit + + + + + &About + + + + + &Connect + + + Ctrl+C + + + + + + lineCmd + textConsole + btnSend + + + + Added: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/main.cpp ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/main.cpp Mon Jan 26 18:48:49 2009 @@ -0,0 +1,10 @@ +#include +#include "fsgui.h" + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + FSGui w; + w.show(); + return a.exec(); +} Added: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/serverlogin.cpp ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/serverlogin.cpp Mon Jan 26 18:48:49 2009 @@ -0,0 +1,33 @@ +#include "serverlogin.h" +#include "ui_serverlogin.h" + +ServerLogin::ServerLogin(QWidget *parent) : + QDialog(parent), + m_ui(new Ui::ServerLogin) +{ + m_ui->setupUi(this); + this->setModal(true); + + connect (this, SIGNAL(accepted()), this, SLOT(acceptedSlot())); +} + +ServerLogin::~ServerLogin() +{ + delete m_ui; +} + +void ServerLogin::changeEvent(QEvent *e) +{ + switch (e->type()) { + case QEvent::LanguageChange: + m_ui->retranslateUi(this); + break; + default: + break; + } +} + +void ServerLogin::acceptedSlot() +{ + emit acceptedSignal(m_ui->editHostname->text(), m_ui->editPort->text(), m_ui->editPassword->text()); +} Added: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/serverlogin.h ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/serverlogin.h Mon Jan 26 18:48:49 2009 @@ -0,0 +1,30 @@ +#ifndef SERVERLOGIN_H +#define SERVERLOGIN_H + +#include + +namespace Ui { + class ServerLogin; +} + +class ServerLogin : public QDialog { + Q_OBJECT + Q_DISABLE_COPY(ServerLogin) +public: + explicit ServerLogin(QWidget *parent = 0); + virtual ~ServerLogin(); + +protected: + virtual void changeEvent(QEvent *e); + +private: + Ui::ServerLogin *m_ui; + +private slots: + void acceptedSlot(); + +signals: + void acceptedSignal(QString, QString, QString); +}; + +#endif // SERVERLOGIN_H Added: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/serverlogin.ui ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/serverlogin.ui Mon Jan 26 18:48:49 2009 @@ -0,0 +1,112 @@ + + + ServerLogin + + + + 0 + 0 + 218 + 148 + + + + Server Login + + + + + + + + Hostname: + + + + + + + 32767 + + + + + + + Port: + + + + + + + 999999; + + + + + + + Password: + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + true + + + + + + + buttonBox + + + + + buttonBox + accepted() + ServerLogin + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ServerLogin + reject() + + + 316 + 260 + + + 286 + 274 + + + + + From mrene at freeswitch.org Mon Jan 26 17:00:29 2009 From: mrene at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 19:00:29 -0600 Subject: [Freeswitch-svn] [commit] r11498 - freeswitch/trunk/scripts/contrib/jmesquita/fsgui Message-ID: Author: mrene Date: Mon Jan 26 19:00:29 2009 New Revision: 11498 Log: Fix build and remove extra delete Modified: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.cpp freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.pro Modified: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.cpp ============================================================================== --- freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.cpp (original) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.cpp Mon Jan 26 19:00:29 2009 @@ -8,7 +8,6 @@ conn_event_handler::~conn_event_handler(void){ getDisconnected(); - delete &handle; } void conn_event_handler::getDisconnected(){ Modified: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.pro ============================================================================== --- freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.pro (original) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.pro Mon Jan 26 19:00:29 2009 @@ -9,7 +9,7 @@ conn_event_handler.cpp \ serverlogin.cpp -INCLUDEPATH = ./../../../libs/esl/src/include +INCLUDEPATH += ../../../../libs/esl/src/include HEADERS += fsgui.h \ conn_event_handler.h \ @@ -21,4 +21,4 @@ FORMS += fsgui.ui \ serverlogin.ui -LIBS += -L.. -lesl +LIBS += -L../../../../libs/esl -lesl From andrew at freeswitch.org Mon Jan 26 17:13:59 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 19:13:59 -0600 Subject: [Freeswitch-svn] [commit] r11499 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Mon Jan 26 19:13:59 2009 New Revision: 11499 Log: Support sending a message to a registered process to request a pid (when spawning won't cut it) Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Mon Jan 26 19:13:59 2009 @@ -899,6 +899,7 @@ return 0; } + static listener_t* new_listener(struct ei_cnode_s *ec, int clientfd) { switch_memory_pool_t *listener_pool = NULL; @@ -950,6 +951,7 @@ return listener; } + session_elem_t* attach_call_to_registered_process(listener_t* listener, char* reg_name, switch_core_session_t *session) { /* create a session list element */ @@ -976,6 +978,7 @@ return session_element; } + session_elem_t* attach_call_to_spawned_process(listener_t* listener, char *module, char *function, switch_core_session_t *session) { /* create a session list element */ @@ -993,8 +996,26 @@ session_element->session = session; erlang_pid *pid; erlang_ref ref; - - ei_spawn(listener->ec, listener->sockfd, &ref, module, function, 0, argv); + + if (!strcmp(function, "!")) { + /* send a message to request a pid */ + ei_x_buff rbuf; + ei_x_new_with_version(&rbuf); + + ei_init_ref(listener->ec, &ref); + ei_x_encode_tuple_header(&rbuf, 3); + ei_x_encode_atom(&rbuf, "new_pid"); + ei_x_encode_ref(&rbuf, &ref); + ei_x_encode_pid(&rbuf, ei_self(listener->ec)); + ei_reg_send(listener->ec, listener->sockfd, module, rbuf.buff, rbuf.index); +#ifdef EI_DEBUG + ei_x_print_reg_msg(&rbuf, module, 1); +#endif + ei_x_free(&rbuf); + } else { + ei_spawn(listener->ec, listener->sockfd, &ref, module, function, 0, argv); + } + ei_hash_ref(&ref, hash); while (!(pid = (erlang_pid *) switch_core_hash_find(listener->spawn_pid_hash, hash))) { From andrew at freeswitch.org Mon Jan 26 17:50:12 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 19:50:12 -0600 Subject: [Freeswitch-svn] [commit] r11500 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Mon Jan 26 19:50:12 2009 New Revision: 11500 Log: Ensure events received while a pid session is being created aren't discarded but are queued instead Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Mon Jan 26 19:50:12 2009 @@ -487,6 +487,10 @@ sp = listener->session_list; last = NULL; while(sp) { + if (switch_test_flag(sp, LFLAG_WAITING_FOR_PID)) { + break; + } + if (!switch_test_flag(sp, LFLAG_OUTBOUND_INIT)) { status = notify_new_session(listener, sp->session, sp->process); if (status != SWITCH_STATUS_SUCCESS) @@ -494,7 +498,7 @@ switch_set_flag(sp, LFLAG_OUTBOUND_INIT); } /* check event queue for this session */ - if (switch_queue_trypop(sp->event_queue, &pop) == SWITCH_STATUS_SUCCESS) { + if (switch_queue_trypop(sp->event_queue, &pop) == SWITCH_STATUS_SUCCESS) { switch_event_t *pevent = (switch_event_t *) pop; /* events from attached sessions are wrapped in a {call_event,} tuple @@ -997,6 +1001,12 @@ erlang_pid *pid; erlang_ref ref; + switch_set_flag(session_element, LFLAG_WAITING_FOR_PID); + switch_queue_create(&session_element->event_queue, SWITCH_CORE_QUEUE_LEN, switch_core_session_get_pool(session)); + switch_mutex_init(&session_element->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session)); + /* attach the session to the listener */ + add_session_elem_to_listener(listener,session_element); + if (!strcmp(function, "!")) { /* send a message to request a pid */ ei_x_buff rbuf; @@ -1022,6 +1032,7 @@ if (i > 50) { /* half a second timeout */ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "timed out!\n"); switch_core_session_rwunlock(session); + remove_session_elem_from_listener(listener,session_element); return NULL; } i++; @@ -1030,16 +1041,13 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got pid!\n"); - ei_link(listener, ei_self(listener->ec), pid); - session_element->process.type = ERLANG_PID; memcpy(&session_element->process.pid, pid, sizeof(erlang_pid)); switch_set_flag(session_element, LFLAG_SESSION_ALIVE); switch_clear_flag(session_element, LFLAG_OUTBOUND_INIT); - switch_queue_create(&session_element->event_queue, SWITCH_CORE_QUEUE_LEN, switch_core_session_get_pool(session)); - switch_mutex_init(&session_element->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session)); - /* attach the session to the listener */ - add_session_elem_to_listener(listener,session_element); + switch_clear_flag(session_element, LFLAG_WAITING_FOR_PID); + + ei_link(listener, ei_self(listener->ec), pid); } } return session_element; Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Mon Jan 26 19:50:12 2009 @@ -35,8 +35,9 @@ #define EI_DEBUG typedef enum { - LFLAG_OUTBOUND_INIT = (1 << 0), /* Erlang peer has been notified of this session */ - LFLAG_SESSION_ALIVE + LFLAG_WAITING_FOR_PID = (1 << 0), /* waiting for a node to return a pid */ + LFLAG_OUTBOUND_INIT = (1 << 1), /* Erlang peer has been notified of this session */ + LFLAG_SESSION_ALIVE = (1 << 2), } session_flag_t; typedef enum { From mrene at freeswitch.org Mon Jan 26 19:07:20 2009 From: mrene at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 21:07:20 -0600 Subject: [Freeswitch-svn] [commit] r11501 - freeswitch/trunk/libs/esl/src/include Message-ID: Author: mrene Date: Mon Jan 26 21:07:20 2009 New Revision: 11501 Log: its __cplusplus not _cplusplus Modified: freeswitch/trunk/libs/esl/src/include/esl.h freeswitch/trunk/libs/esl/src/include/esl_config.h freeswitch/trunk/libs/esl/src/include/esl_event.h freeswitch/trunk/libs/esl/src/include/esl_threadmutex.h Modified: freeswitch/trunk/libs/esl/src/include/esl.h ============================================================================== --- freeswitch/trunk/libs/esl/src/include/esl.h (original) +++ freeswitch/trunk/libs/esl/src/include/esl.h Mon Jan 26 21:07:20 2009 @@ -36,9 +36,9 @@ #include -#ifdef _cplusplus +#ifdef __cplusplus extern "C" { -#endif /* defined(_cplusplus) */ +#endif /* defined(__cplusplus) */ #define esl_copy_string(_x, _y, _z) strncpy(_x, _y, _z - 1) #define esl_set_string(_x, _y) esl_copy_string(_x, _y, sizeof(_x)) @@ -341,9 +341,9 @@ #define esl_recv_timed(_h, _ms) esl_recv_event_timed(_h, _ms, NULL) -#ifdef _cplusplus +#ifdef __cplusplus } -#endif /* defined(_cplusplus) */ +#endif /* defined(__cplusplus) */ #endif /* defined(_ESL_H_) */ Modified: freeswitch/trunk/libs/esl/src/include/esl_config.h ============================================================================== --- freeswitch/trunk/libs/esl/src/include/esl_config.h (original) +++ freeswitch/trunk/libs/esl/src/include/esl_config.h Mon Jan 26 21:07:20 2009 @@ -54,9 +54,9 @@ #include "esl.h" -#ifdef _cplusplus +#ifdef __cplusplus extern "C" { -#endif /* defined(_cplusplus) */ +#endif /* defined(__cplusplus) */ #define ESL_URL_SEPARATOR "://" @@ -160,9 +160,9 @@ /** @} */ -#ifdef _cplusplus +#ifdef __cplusplus } -#endif /* defined(_cplusplus) */ +#endif /* defined(__cplusplus) */ #endif /* defined(ESL_CONFIG_H) */ Modified: freeswitch/trunk/libs/esl/src/include/esl_event.h ============================================================================== --- freeswitch/trunk/libs/esl/src/include/esl_event.h (original) +++ freeswitch/trunk/libs/esl/src/include/esl_event.h Mon Jan 26 21:07:20 2009 @@ -36,9 +36,9 @@ #include -#ifdef _cplusplus +#ifdef __cplusplus extern "C" { -#endif /* defined(_cplusplus) */ +#endif /* defined(__cplusplus) */ typedef enum { ESL_STACK_BOTTOM, @@ -272,9 +272,9 @@ ///\} -#ifdef _cplusplus +#ifdef __cplusplus } -#endif /* defined(_cplusplus) */ +#endif /* defined(__cplusplus) */ #endif /* defined(ESL_EVENT_H) */ Modified: freeswitch/trunk/libs/esl/src/include/esl_threadmutex.h ============================================================================== --- freeswitch/trunk/libs/esl/src/include/esl_threadmutex.h (original) +++ freeswitch/trunk/libs/esl/src/include/esl_threadmutex.h Mon Jan 26 21:07:20 2009 @@ -23,9 +23,9 @@ #include "esl.h" -#ifdef _cplusplus +#ifdef __cplusplus extern "C" { -#endif /* defined(_cplusplus) */ +#endif /* defined(__cplusplus) */ typedef struct esl_mutex esl_mutex_t; typedef struct esl_thread esl_thread_t; @@ -40,9 +40,9 @@ ESL_DECLARE(esl_status_t) esl_mutex_trylock(esl_mutex_t *mutex); ESL_DECLARE(esl_status_t) esl_mutex_unlock(esl_mutex_t *mutex); -#ifdef _cplusplus +#ifdef __cplusplus } -#endif /* defined(_cplusplus) */ +#endif /* defined(__cplusplus) */ #endif /* defined(_ESL_THREADMUTEX_H) */ From mrene at freeswitch.org Mon Jan 26 19:09:18 2009 From: mrene at freeswitch.org (FreeSWITCH SVN) Date: Mon, 26 Jan 2009 21:09:18 -0600 Subject: [Freeswitch-svn] [commit] r11502 - freeswitch/trunk/scripts/contrib/jmesquita/fsgui Message-ID: Author: mrene Date: Mon Jan 26 21:09:18 2009 New Revision: 11502 Log: Refactor Modified: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.cpp freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.h freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.cpp freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.h Modified: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.cpp ============================================================================== --- freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.cpp (original) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.cpp Mon Jan 26 21:09:18 2009 @@ -6,29 +6,32 @@ memset(&handle, 0, sizeof(esl_handle_t)); } -conn_event_handler::~conn_event_handler(void){ - getDisconnected(); +conn_event_handler::~conn_event_handler(void) +{ + if (isConnected()) { + Disconnect(); + } } -void conn_event_handler::getDisconnected(){ +void conn_event_handler::Disconnect() +{ esl_disconnect(&handle); } -void conn_event_handler::getConnected(QString hostname, int port, QString password){ - QByteArray h = hostname.toAscii(); - QByteArray p = password.toAscii(); - const char * Hostname = h.data(); - const char * Password = p.data(); - esl_status_t status = esl_connect(&handle, Hostname, port, Password); - if ( status != ESL_SUCCESS) - { - QString errDesc = handle.err; - emit connectionError(errDesc); - } - else - { - emit gotConnected(); - } +void conn_event_handler::Connect(const QString& hostname, int port, const QString& password) +{ + + esl_status_t status = esl_connect(&handle, hostname.toAscii().data(), port, password.toAscii().data()); + + if ( status != ESL_SUCCESS) + { + QString errDesc = handle.err; + emit connectionError(errDesc); + } + else + { + emit onConnected(); + } } void conn_event_handler::handleError(){ @@ -40,7 +43,7 @@ return; } -void conn_event_handler::sendMessage(QString message) +void conn_event_handler::sendMessage(const QString& message) { if (isConnected()) { @@ -76,12 +79,11 @@ return; } -void conn_event_handler::handleRecvMessage(QString msg) +void conn_event_handler::handleRecvMessage(const QString &msg) { - return; } -bool conn_event_handler::isConnected() +bool conn_event_handler::isConnected() const { return handle.connected; } Modified: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.h ============================================================================== --- freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.h (original) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.h Mon Jan 26 21:09:18 2009 @@ -3,37 +3,33 @@ #include -extern "C" { - #include "esl.h" - #include "esl_event.h" - #include "esl_threadmutex.h" - #include "esl_config.h" -} - +#include "esl.h" +#include "esl_event.h" +#include "esl_threadmutex.h" +#include "esl_config.h" class conn_event_handler : public QObject { - Q_OBJECT public: conn_event_handler(); ~conn_event_handler(); - void getConnected(QString, int, QString); - void getDisconnected(void); - bool isConnected(void); + void Connect(const QString&, int, const QString&); + void Disconnect(void); + bool isConnected(void) const; private slots: void handleError(); void readClient(void); public slots: - void sendMessage(QString); + void sendMessage(const QString&); private: - void handleRecvMessage(QString); + void handleRecvMessage(const QString&); esl_handle_t handle; signals: - void connectionError(QString); - void gotConnected(void); - void messageSignal(QString); + void connectionError(const QString&); + void onConnected(void); + void messageSignal(const QString&); }; #endif // CONN_EVENT_HANDLER_H Modified: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.cpp ============================================================================== --- freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.cpp (original) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.cpp Mon Jan 26 21:09:18 2009 @@ -25,21 +25,21 @@ delete ui; } -void FSGui::error(QString msg){ +void FSGui::error(const QString &msg){ ui->statusBar->showMessage(msg); } -void FSGui::connectSlot(QString hostname, QString port, QString password){ +void FSGui::connectSlot(const QString& hostname, const QString& port, const QString& password){ socket = new conn_event_handler(); connect( socket , SIGNAL( connectionError(QString) ), this, SLOT( error(QString) ) ); - connect(socket , SIGNAL( gotConnected() ), + connect(socket , SIGNAL( onConnected() ), this, SLOT(connectionSuccessful())); connect(socket , SIGNAL( messageSignal(QString) ), this, SLOT( messageSlot(QString) )); connect(this, SIGNAL(btnSendClickedSignal(QString)), socket, SLOT(sendMessage(QString))); - socket->getConnected(hostname, port.toInt(), password); + socket->Connect(hostname, port.toInt(), password); ui->btnSend->setEnabled(true); } @@ -53,7 +53,7 @@ ui->lineCmd->clear(); } -void FSGui::lineCmdEditedSlot(QString text) +void FSGui::lineCmdEditedSlot(const QString& text) { if (socket->isConnected() && !text.isEmpty()) { @@ -65,7 +65,7 @@ } } -void FSGui::messageSlot(QString msg) +void FSGui::messageSlot(const QString& msg) { if (!msg.isEmpty()) { Modified: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.h ============================================================================== --- freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.h (original) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/fsgui.h Mon Jan 26 21:09:18 2009 @@ -4,7 +4,6 @@ #include #include "conn_event_handler.h" - namespace Ui { class FSGuiClass; @@ -25,15 +24,15 @@ QLabel * statusBarLabel; private slots: - void error(QString); + void error(const QString&); void connectionSuccessful(void); - void connectSlot(QString, QString, QString); + void connectSlot(const QString&, const QString&, const QString&); void btnSendClickedSlot(); - void lineCmdEditedSlot(QString); - void messageSlot(QString); + void lineCmdEditedSlot(const QString&); + void messageSlot(const QString&); signals: - void btnSendClickedSignal(QString); + void btnSendClickedSignal(const QString&); }; From gmaruzz at freeswitch.org Tue Jan 27 04:32:01 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 06:32:01 -0600 Subject: [Freeswitch-svn] [commit] r11503 - freeswitch/branches/gmaruzz/mod_skypiax Message-ID: Author: gmaruzz Date: Tue Jan 27 06:32:01 2009 New Revision: 11503 Log: skypiax: preparing for standalone module Added: freeswitch/branches/gmaruzz/mod_skypiax/ - copied from r11502, /freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/ From gmaruzz at freeswitch.org Tue Jan 27 04:45:27 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 06:45:27 -0600 Subject: [Freeswitch-svn] [commit] r11504 - in freeswitch/branches/gmaruzz: . build conf debian docs dtd freeswitch.xcodeproj htdocs libs patches scripts src support-d w32 Message-ID: Author: gmaruzz Date: Tue Jan 27 06:45:27 2009 New Revision: 11504 Log: preparing for standalone module Removed: freeswitch/branches/gmaruzz/Freeswitch.2005.unsupported.sln freeswitch/branches/gmaruzz/Freeswitch.2008.express.sln freeswitch/branches/gmaruzz/Freeswitch.2008.sln freeswitch/branches/gmaruzz/INSTALL freeswitch/branches/gmaruzz/Makefile.am freeswitch/branches/gmaruzz/acinclude.m4 freeswitch/branches/gmaruzz/bootstrap.sh freeswitch/branches/gmaruzz/build/ freeswitch/branches/gmaruzz/conf/ freeswitch/branches/gmaruzz/configure.in freeswitch/branches/gmaruzz/debian/ freeswitch/branches/gmaruzz/docs/ freeswitch/branches/gmaruzz/dtd/ freeswitch/branches/gmaruzz/freeswitch.spec freeswitch/branches/gmaruzz/freeswitch.xcodeproj/ freeswitch/branches/gmaruzz/htdocs/ freeswitch/branches/gmaruzz/libs/ freeswitch/branches/gmaruzz/modules.conf freeswitch/branches/gmaruzz/patches/ freeswitch/branches/gmaruzz/scripts/ freeswitch/branches/gmaruzz/src/ freeswitch/branches/gmaruzz/support-d/ freeswitch/branches/gmaruzz/w32/ From brian at freeswitch.org Tue Jan 27 06:34:10 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 08:34:10 -0600 Subject: [Freeswitch-svn] [commit] r11505 - in freeswitch/trunk: scripts/aadir src/mod/endpoints/mod_sofia Message-ID: Author: brian Date: Tue Jan 27 08:34:10 2009 New Revision: 11505 Log: FSSCRIPTS-14 Modified: freeswitch/trunk/scripts/aadir/aadir.js freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Modified: freeswitch/trunk/scripts/aadir/aadir.js ============================================================================== --- freeswitch/trunk/scripts/aadir/aadir.js (original) +++ freeswitch/trunk/scripts/aadir/aadir.js Tue Jan 27 08:34:10 2009 @@ -57,7 +57,7 @@ re = /[^A-Z0-9\s]/gi; - for each (var variables in xdir.user.variables) { + for each (var variables in xdir.groups.group.users.user.variables) { name = ""; number = ""; Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Tue Jan 27 08:34:10 2009 @@ -4282,7 +4282,54 @@ } } + if (sip->sip_replaces) { + nua_handle_t *bnh; + if ((bnh = nua_handle_by_replaces(nua, sip->sip_replaces))) { + sofia_private_t *b_private = NULL; + if ((b_private = nua_handle_magic(bnh))) { + switch_core_session_t *b_session = NULL; + if ((b_session = switch_core_session_locate(b_private->uuid))) { + switch_channel_t *b_channel = switch_core_session_get_channel(b_session); + const char *uuid; + int one_leg = 1; + + if ((uuid = switch_channel_get_variable(b_channel, SWITCH_SIGNAL_BOND_VARIABLE))) { + one_leg = 0; + } else { + uuid = switch_core_session_get_uuid(b_session); + } + + if (uuid) { + switch_core_session_t *c_session = NULL; + int do_conf = 0; + + if ((c_session = switch_core_session_locate(uuid))) { + switch_channel_t *c_channel = switch_core_session_get_channel(c_session); + if (!one_leg && !switch_channel_test_flag(b_channel, CF_HOLD)) { + char *ext = switch_core_session_sprintf(b_session, "conference:%s", uuid); + switch_channel_set_flag(c_channel, CF_REDIRECT); + switch_ivr_session_transfer(b_session, ext, "inline", NULL); + switch_ivr_session_transfer(c_session, ext, "inline", NULL); + switch_channel_clear_flag(c_channel, CF_REDIRECT); + do_conf = 1; + } + switch_core_session_rwunlock(c_session); + } + if (do_conf) { + destination_number = switch_core_session_sprintf(b_session, "answer,conference:%s", uuid); + } else { + destination_number = switch_core_session_sprintf(b_session, "answer,intercept:%s", uuid); + } + + dialplan = "inline"; + } + switch_core_session_rwunlock(b_session); + } + } + nua_handle_unref(bnh); + } + } check_decode(displayname, session); tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session), From brian at freeswitch.org Tue Jan 27 06:38:38 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 08:38:38 -0600 Subject: [Freeswitch-svn] [commit] r11506 - freeswitch/trunk/src/mod/endpoints/mod_sofia Message-ID: Author: brian Date: Tue Jan 27 08:38:37 2009 New Revision: 11506 Log: revert Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Tue Jan 27 08:38:37 2009 @@ -4282,54 +4282,7 @@ } } - if (sip->sip_replaces) { - nua_handle_t *bnh; - if ((bnh = nua_handle_by_replaces(nua, sip->sip_replaces))) { - sofia_private_t *b_private = NULL; - if ((b_private = nua_handle_magic(bnh))) { - switch_core_session_t *b_session = NULL; - if ((b_session = switch_core_session_locate(b_private->uuid))) { - switch_channel_t *b_channel = switch_core_session_get_channel(b_session); - const char *uuid; - int one_leg = 1; - - if ((uuid = switch_channel_get_variable(b_channel, SWITCH_SIGNAL_BOND_VARIABLE))) { - one_leg = 0; - } else { - uuid = switch_core_session_get_uuid(b_session); - } - - if (uuid) { - switch_core_session_t *c_session = NULL; - int do_conf = 0; - - if ((c_session = switch_core_session_locate(uuid))) { - switch_channel_t *c_channel = switch_core_session_get_channel(c_session); - if (!one_leg && !switch_channel_test_flag(b_channel, CF_HOLD)) { - char *ext = switch_core_session_sprintf(b_session, "conference:%s", uuid); - switch_channel_set_flag(c_channel, CF_REDIRECT); - switch_ivr_session_transfer(b_session, ext, "inline", NULL); - switch_ivr_session_transfer(c_session, ext, "inline", NULL); - switch_channel_clear_flag(c_channel, CF_REDIRECT); - do_conf = 1; - } - switch_core_session_rwunlock(c_session); - } - if (do_conf) { - destination_number = switch_core_session_sprintf(b_session, "answer,conference:%s", uuid); - } else { - destination_number = switch_core_session_sprintf(b_session, "answer,intercept:%s", uuid); - } - - dialplan = "inline"; - } - switch_core_session_rwunlock(b_session); - } - } - nua_handle_unref(bnh); - } - } check_decode(displayname, session); tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session), From andrew at freeswitch.org Tue Jan 27 09:43:18 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 11:43:18 -0600 Subject: [Freeswitch-svn] [commit] r11507 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Tue Jan 27 11:43:18 2009 New Revision: 11507 Log: This shouldn't be here Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Tue Jan 27 11:43:18 2009 @@ -32,8 +32,6 @@ * */ -#define EI_DEBUG - typedef enum { LFLAG_WAITING_FOR_PID = (1 << 0), /* waiting for a node to return a pid */ LFLAG_OUTBOUND_INIT = (1 << 1), /* Erlang peer has been notified of this session */ From brian at freeswitch.org Tue Jan 27 09:58:53 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 11:58:53 -0600 Subject: [Freeswitch-svn] [commit] r11508 - freeswitch/trunk Message-ID: Author: brian Date: Tue Jan 27 11:58:53 2009 New Revision: 11508 Log: fix spec file Modified: freeswitch/trunk/freeswitch.spec Modified: freeswitch/trunk/freeswitch.spec ============================================================================== --- freeswitch/trunk/freeswitch.spec (original) +++ freeswitch/trunk/freeswitch.spec Tue Jan 27 11:58:53 2009 @@ -281,7 +281,6 @@ %dir %attr(0750, freeswitch, daemon) %{prefix}/conf/directory %dir %attr(0750, freeswitch, daemon) %{prefix}/conf/directory/default %dir %attr(0750, freeswitch, daemon) %{prefix}/conf/lang -%dir %attr(0750, freeswitch, daemon) %{prefix}/conf/mrcp_profiles %dir %attr(0750, freeswitch, daemon) %{prefix}/conf/sip_profiles %dir %attr(0750, freeswitch, daemon) %{prefix}/conf/dialplan/default %dir %attr(0750, freeswitch, daemon) %{prefix}/conf/dialplan/public @@ -342,7 +341,6 @@ %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/dialplan/public/*.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/directory/*.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/directory/default/* -%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/mrcp_profiles/*.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/sip_profiles/*.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/sip_profiles/internal/*.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/sip_profiles/external/*.xml From brian at freeswitch.org Tue Jan 27 10:01:17 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 12:01:17 -0600 Subject: [Freeswitch-svn] [commit] r11509 - freeswitch/trunk/libs/srtp/crypto/cipher Message-ID: Author: brian Date: Tue Jan 27 12:01:17 2009 New Revision: 11509 Log: FSCORE-280 Modified: freeswitch/trunk/libs/srtp/crypto/cipher/aes_icm.c Modified: freeswitch/trunk/libs/srtp/crypto/cipher/aes_icm.c ============================================================================== --- freeswitch/trunk/libs/srtp/crypto/cipher/aes_icm.c (original) +++ freeswitch/trunk/libs/srtp/crypto/cipher/aes_icm.c Tue Jan 27 12:01:17 2009 @@ -98,15 +98,15 @@ uint8_t *pointer; int tmp; - debug_print(mod_aes_icm, - "allocating cipher with key length %d", key_len); + debug_print(mod_aes_icm, "allocating cipher with key length %d", key_len); - // Ismacryp, for example, uses 16 byte key + 8 byte - // salt so this function is called with key_len = 24. - // The check for key_len = 30 does not apply. Our usage - // of aes functions with key_len = values other than 30 - // has not broken anything. Don't know what would be the - // effect of skipping this check for srtp in general. + /* Ismacryp, for example, uses 16 byte key + 8 byte + salt so this function is called with key_len = 24. + The check for key_len = 30 does not apply. Our usage + of aes functions with key_len = values other than 30 + has not broken anything. Don't know what would be the + effect of skipping this check for srtp in general. + */ if (!forIsmacryp && key_len != 30) return err_status_bad_param; @@ -300,7 +300,7 @@ if (forIsmacryp) { uint32_t temp; - //alex's clock counter forward + /* alex's clock counter forward */ temp = ntohl(c->counter.v32[3]); c->counter.v32[3] = htonl(++temp); } else { From gmaruzz at freeswitch.org Tue Jan 27 10:04:52 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 12:04:52 -0600 Subject: [Freeswitch-svn] [commit] r11510 - freeswitch/branches/gmaruzz/mod_skypiax Message-ID: Author: gmaruzz Date: Tue Jan 27 12:04:52 2009 New Revision: 11510 Log: skypiax: if it do not find the X server or the Skype client at startup, exit with an error Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c Tue Jan 27 12:04:52 2009 @@ -28,7 +28,7 @@ int option_debug = 100; switch_endpoint_interface_t *skypiax_endpoint_interface; switch_memory_pool_t *skypiax_module_pool = NULL; -int running = 1; +int running = 0; SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_dialplan, globals.dialplan); SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_context, globals.context); @@ -880,10 +880,17 @@ skypiax_skypeaudio_init(&globals.SKYPIAX_INTERFACES[interface_id]); - while (globals.SKYPIAX_INTERFACES[interface_id].SkypiaxHandles.api_connected == 0) { + i=0; + while (globals.SKYPIAX_INTERFACES[interface_id].SkypiaxHandles.api_connected == 0 && running && i < 6000) { // 60sec switch_sleep(1000); + i++; } - NOTICA("STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id); + if(globals.SKYPIAX_INTERFACES[interface_id].SkypiaxHandles.api_connected){ + NOTICA("STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id); + } else { + ERRORA("interface_id=%d has not been started\n", SKYPIAX_P_LOG, interface_id); + break; + } } else { ERRORA("interface id %d is higher than SKYPIAX_MAX_INTERFACES (%d)\n", @@ -926,6 +933,8 @@ memset(&globals, '\0', sizeof(globals)); + running = 1; + load_config(); *module_interface = switch_loadable_module_create_module_interface(pool, modname); @@ -936,8 +945,11 @@ skypiax_endpoint_interface->state_handler = &skypiax_state_handlers; DEBUGA_SKYPE("EXITING FUNC!\n", SKYPIAX_P_LOG); + if(running) /* indicate that the module should continue to be loaded */ return SWITCH_STATUS_SUCCESS; + else + return SWITCH_STATUS_FALSE; } SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skypiax_shutdown) Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Tue Jan 27 12:04:52 2009 @@ -933,6 +933,7 @@ if (!disp) { ERRORA("Cannot open X Display '%s', exiting skype thread\n", SKYPIAX_P_LOG, tech_pvt->X11_display); + running=0; return NULL; } else { DEBUGA_SKYPE("X Display '%s' opened\n", SKYPIAX_P_LOG, tech_pvt->X11_display); @@ -963,6 +964,7 @@ ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n", SKYPIAX_P_LOG); DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + running=0; return NULL; } @@ -972,6 +974,7 @@ ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n", SKYPIAX_P_LOG); DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + running=0; return NULL; } @@ -1019,9 +1022,11 @@ ERRORA ("Skype is not running, maybe crashed. Please run/restart Skype and relaunch Skypiax\n", SKYPIAX_P_LOG); + running=0; return NULL; } DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + running=0; return NULL; } From gmaruzz at freeswitch.org Tue Jan 27 10:11:30 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 12:11:30 -0600 Subject: [Freeswitch-svn] [commit] r11511 - freeswitch/branches/gmaruzz/mod_skypiax Message-ID: Author: gmaruzz Date: Tue Jan 27 12:11:30 2009 New Revision: 11511 Log: skypiax: report the svn version of skypiax as part of logging Modified: freeswitch/branches/gmaruzz/mod_skypiax/Makefile freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h Modified: freeswitch/branches/gmaruzz/mod_skypiax/Makefile ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/Makefile (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/Makefile Tue Jan 27 12:11:30 2009 @@ -1,4 +1,6 @@ MODNAME=mod_skypiax +SVNDEF := -D'SKYPIAX_SVN_VERSION="$(shell svnversion -n .)"' +LOCAL_CFLAGS += $(SVNDEF) LOCAL_LDFLAGS=-lX11 LOCAL_OBJS=skypiax_protocol.o include ../../../../build/modmake.rules Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h Tue Jan 27 12:11:30 2009 @@ -51,7 +51,10 @@ #define SAMPLERATE_SKYPIAX 16000 #define SAMPLES_PER_FRAME SAMPLERATE_SKYPIAX/50 + +#ifndef SKYPIAX_SVN_VERSION #define SKYPIAX_SVN_VERSION SWITCH_VERSION_REVISION +#endif /* SKYPIAX_SVN_VERSION */ typedef enum { TFLAG_IO = (1 << 0), From gmaruzz at freeswitch.org Tue Jan 27 10:20:42 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 12:20:42 -0600 Subject: [Freeswitch-svn] [commit] r11512 - freeswitch/branches/gmaruzz/mod_skypiax Message-ID: Author: gmaruzz Date: Tue Jan 27 12:20:42 2009 New Revision: 11512 Log: skypiax: cosmetics Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c Tue Jan 27 12:20:42 2009 @@ -854,7 +854,7 @@ DEBUGA_SKYPE ("interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].context=%s\n", SKYPIAX_P_LOG, interface_id, globals.SKYPIAX_INTERFACES[interface_id].context); - NOTICA("STARTING interface_id=%d\n", SKYPIAX_P_LOG, interface_id); + NOTICA("Trying to START interface_id=%d\n", SKYPIAX_P_LOG, interface_id); switch_threadattr_create(&skypiax_skypeapi_thread_attr, skypiax_module_pool); switch_threadattr_stacksize_set(skypiax_skypeapi_thread_attr, @@ -888,7 +888,7 @@ if(globals.SKYPIAX_INTERFACES[interface_id].SkypiaxHandles.api_connected){ NOTICA("STARTED interface_id=%d\n", SKYPIAX_P_LOG, interface_id); } else { - ERRORA("interface_id=%d has not been started\n", SKYPIAX_P_LOG, interface_id); + ERRORA("FAILED to start interface_id=%d\n", SKYPIAX_P_LOG, interface_id); break; } From mrene at freeswitch.org Tue Jan 27 13:15:40 2009 From: mrene at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 15:15:40 -0600 Subject: [Freeswitch-svn] [commit] r11513 - freeswitch/trunk/scripts/contrib/jmesquita/fsgui Message-ID: Author: mrene Date: Tue Jan 27 15:15:40 2009 New Revision: 11513 Log: including esl.h is enough Modified: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.h Modified: freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.h ============================================================================== --- freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.h (original) +++ freeswitch/trunk/scripts/contrib/jmesquita/fsgui/conn_event_handler.h Tue Jan 27 15:15:40 2009 @@ -4,9 +4,6 @@ #include #include "esl.h" -#include "esl_event.h" -#include "esl_threadmutex.h" -#include "esl_config.h" class conn_event_handler : public QObject { From mrene at freeswitch.org Tue Jan 27 13:19:40 2009 From: mrene at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 15:19:40 -0600 Subject: [Freeswitch-svn] [commit] r11514 - in freeswitch/trunk/src: . include Message-ID: Author: mrene Date: Tue Jan 27 15:19:40 2009 New Revision: 11514 Log: Add doxygen comments and const to switch_ivr_schedule_broadcast Modified: freeswitch/trunk/src/include/switch_ivr.h freeswitch/trunk/src/switch_ivr_async.c Modified: freeswitch/trunk/src/include/switch_ivr.h ============================================================================== --- freeswitch/trunk/src/include/switch_ivr.h (original) +++ freeswitch/trunk/src/include/switch_ivr.h Tue Jan 27 15:19:40 2009 @@ -107,6 +107,7 @@ \brief Wait for time to pass for a specified number of milliseconds \param session the session to wait for. \param ms the number of milliseconds + \param sync synchronize the channel's audio before waiting \param args arguements to pass for callbacks etc \return SWITCH_STATUS_SUCCESS if the channel is still up */ @@ -389,6 +390,7 @@ \param cid_name_override override the caller id name \param cid_num_override override the caller id number \param caller_profile_override override the entire calling caller profile + \param ovars variables to be set on the outgoing channel \param flags flags to pass \return SWITCH_STATUS_SUCCESS if bleg is a running session. \note bleg will be read locked which must be unlocked with switch_core_session_rwunlock() before losing scope @@ -524,7 +526,7 @@ \param flags flags to send to the request (SMF_ECHO_BRIDGED to send the broadcast to both sides of the call) \return the id of the task */ -SWITCH_DECLARE(uint32_t) switch_ivr_schedule_broadcast(time_t runtime, char *uuid, char *path, switch_media_flag_t flags); +SWITCH_DECLARE(uint32_t) switch_ivr_schedule_broadcast(time_t runtime, const char *uuid, const char *path, switch_media_flag_t flags); /*! \brief Signal the session to broadcast audio Modified: freeswitch/trunk/src/switch_ivr_async.c ============================================================================== --- freeswitch/trunk/src/switch_ivr_async.c (original) +++ freeswitch/trunk/src/switch_ivr_async.c Tue Jan 27 15:19:40 2009 @@ -2147,7 +2147,7 @@ switch_ivr_broadcast(helper->uuid_str, helper->path, helper->flags); } -SWITCH_DECLARE(uint32_t) switch_ivr_schedule_broadcast(time_t runtime, char *uuid, char *path, switch_media_flag_t flags) +SWITCH_DECLARE(uint32_t) switch_ivr_schedule_broadcast(time_t runtime, const char *uuid, const char *path, switch_media_flag_t flags) { struct broadcast_helper *helper; size_t len = sizeof(*helper) + strlen(path) + 1; From mrene at freeswitch.org Tue Jan 27 13:32:15 2009 From: mrene at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 15:32:15 -0600 Subject: [Freeswitch-svn] [commit] r11515 - freeswitch/trunk/src/mod/applications/mod_skel Message-ID: Author: mrene Date: Tue Jan 27 15:32:15 2009 New Revision: 11515 Log: Add a couple comments to mod_skel Modified: freeswitch/trunk/src/mod/applications/mod_skel/mod_skel.c Modified: freeswitch/trunk/src/mod/applications/mod_skel/mod_skel.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_skel/mod_skel.c (original) +++ freeswitch/trunk/src/mod/applications/mod_skel/mod_skel.c Tue Jan 27 15:32:15 2009 @@ -32,12 +32,17 @@ */ #include +/* Prototypes */ //SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skel_shutdown); //SWITCH_MODULE_RUNTIME_FUNCTION(mod_skel_runtime); - SWITCH_MODULE_LOAD_FUNCTION(mod_skel_load); + +/* SWITCH_MODULE_DEFINITION(name, load, shutdown, runtime) + * Defines a switch_loadable_module_function_table_t and a static const char[] modname + */ SWITCH_MODULE_DEFINITION(mod_skel, mod_skel_load, NULL, NULL); +/* Macro expands to: switch_status_t mod_skel_load(switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool) */ SWITCH_MODULE_LOAD_FUNCTION(mod_skel_load) { /* connect my internal structure to the blank pointer passed to me */ @@ -51,6 +56,7 @@ /* Called when the system shuts down + Macro expands to: switch_status_t mod_skel_shutdown() SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skel_shutdown) { return SWITCH_STATUS_SUCCESS; @@ -60,6 +66,7 @@ /* If it exists, this is called in it's own thread when the module-load completes If it returns anything but SWITCH_STATUS_TERM it will be called again automatically + Macro expands to: switch_status_t mod_skel_runtime() SWITCH_MODULE_RUNTIME_FUNCTION(mod_skel_runtime) { while(looping) From andrew at freeswitch.org Tue Jan 27 13:39:29 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 15:39:29 -0600 Subject: [Freeswitch-svn] [commit] r11516 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Tue Jan 27 15:39:29 2009 New Revision: 11516 Log: Cleanup after log/event handler process exit, fix event handler stuff to work again and do some minor tweaks Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c Tue Jan 27 15:39:29 2009 @@ -605,20 +605,23 @@ } else if (!strncmp(atom, "nolog", MAXATOMLEN)) { if (switch_test_flag(listener, LFLAG_LOG)) { + void *pop; + /*purge the log queue */ + while (switch_queue_trypop(listener->log_queue, &pop) == SWITCH_STATUS_SUCCESS); switch_clear_flag_locked(listener, LFLAG_LOG); } ei_x_encode_atom(rbuf, "ok"); } else if (!strncmp(atom, "register_log_handler", MAXATOMLEN)) { ei_link(listener, ei_self(listener->ec), &msg->from); listener->log_process.type = ERLANG_PID; - listener->log_process.pid = msg->from; + memcpy(&listener->log_process.pid, &msg->from, sizeof(erlang_pid)); listener->level = SWITCH_LOG_DEBUG; switch_set_flag(listener, LFLAG_LOG); ei_x_encode_atom(rbuf, "ok"); } else if (!strncmp(atom, "register_event_handler", MAXATOMLEN)) { ei_link(listener, ei_self(listener->ec), &msg->from); listener->event_process.type = ERLANG_PID; - listener->event_process.pid = msg->from; + memcpy(&listener->event_process.pid, &msg->from, sizeof(erlang_pid)); if (!switch_test_flag(listener, LFLAG_EVENTS)) { switch_set_flag_locked(listener, LFLAG_EVENTS); } Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Tue Jan 27 15:39:29 2009 @@ -190,12 +190,13 @@ /* test all of the sessions attached to this event in case one of them should receive it as well */ + send_event_to_attached_sessions(l,event); if (!switch_test_flag(l, LFLAG_EVENTS)) { continue; } - + if (switch_test_flag(l, LFLAG_STATEFUL) && l->timeout && switch_epoch_time_now(NULL) - l->last_flush > l->timeout) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Stateful Listener %u has expired\n", l->id); remove_listener(l); @@ -210,6 +211,7 @@ send = 1; } } + if (send) { if (switch_event_dup(&clone, event) == SWITCH_STATUS_SUCCESS) { @@ -397,7 +399,7 @@ /*int index = 3;*/ while (!(rep = (ei_x_buff *) switch_core_hash_find(ptr->listener->fetch_reply_hash, uuid_str))) { if (i > 50) { /* half a second timeout */ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "timed out!\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Timed out when waiting for XML fetch response!\n"); return NULL; } i++; @@ -603,10 +605,11 @@ static void check_event_queue(listener_t *listener) { void* pop; + /* send out any pending crap in the event queue */ if (switch_test_flag(listener, LFLAG_EVENTS)) { if (switch_queue_trypop(listener->event_queue, &pop) == SWITCH_STATUS_SUCCESS) { - + switch_event_t *pevent = (switch_event_t *) pop; ei_x_buff ebuf; @@ -615,7 +618,7 @@ ei_encode_switch_event(&ebuf, pevent); switch_mutex_lock(listener->sock_mutex); - ei_sendto(listener->ec, listener->sockfd, &listener->log_process, &ebuf); + ei_sendto(listener->ec, listener->sockfd, &listener->event_process, &ebuf); switch_mutex_unlock(listener->sock_mutex); ei_x_free(&ebuf); @@ -624,6 +627,50 @@ } } +static void handle_exit(listener_t *listener, erlang_pid *pid) +{ + session_elem_t *s; + + remove_binding(NULL, pid); /* TODO - why don't we pass the listener as the first argument? */ + if ((s = find_session_elem_by_pid(listener, pid))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Outbound session for %s exited unexpectedly!\n", + switch_core_session_get_uuid(s->session)); + /* TODO - if a spawned process that was handling an outbound call fails.. what do we do with the call? */ + remove_session_elem_from_listener(listener, s); + } + + if (listener->log_process.type == ERLANG_PID && !ei_compare_pids(&listener->log_process.pid, pid)) { + void *pop; + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Log handler process for node %s exited\n", pid->node); + /*purge the log queue */ + while (switch_queue_trypop(listener->log_queue, &pop) == SWITCH_STATUS_SUCCESS); + + if (switch_test_flag(listener, LFLAG_LOG)) { + switch_clear_flag_locked(listener, LFLAG_LOG); + } + } + + if (listener->event_process.type == ERLANG_PID && !ei_compare_pids(&listener->event_process.pid, pid)) { + void *pop; + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Event handler process for node %s exited\n", pid->node); + /*purge the event queue */ + while (switch_queue_trypop(listener->event_queue, &pop) == SWITCH_STATUS_SUCCESS); + + if (switch_test_flag(listener, LFLAG_EVENTS)) { + uint8_t x = 0; + switch_clear_flag_locked(listener, LFLAG_EVENTS); + for (x = 0; x <= SWITCH_EVENT_ALL; x++) { + listener->event_list[x] = 0; + } + /* wipe the hash */ + switch_core_hash_destroy(&listener->event_hash); + switch_core_hash_init(&listener->event_hash, listener->pool); + } + } +} + static void listener_main_loop(listener_t *listener) { int status = 1; @@ -681,10 +728,7 @@ break; case ERL_EXIT : switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_exit from %s <%d.%d.%d>\n", msg.from.node, msg.from.creation, msg.from.num, msg.from.serial); - remove_binding(NULL, &msg.from); - /* TODO - if a spawned process that was handling an outbound call fails.. what do we do with the call? */ - remove_session_elem_from_listener(listener, find_session_elem_by_pid(listener, &msg.from)); - /* TODO - check if this linked pid is any of the log/event handler processes and cleanup if it is. */ + handle_exit(listener, &msg.from); break; default : switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "unexpected msg type %d\n", (int)(msg.msgtype)); @@ -1030,7 +1074,7 @@ while (!(pid = (erlang_pid *) switch_core_hash_find(listener->spawn_pid_hash, hash))) { if (i > 50) { /* half a second timeout */ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "timed out!\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Timed out when waiting for outbound pid\n"); switch_core_session_rwunlock(session); remove_session_elem_from_listener(listener,session_element); return NULL; From gmaruzz at freeswitch.org Tue Jan 27 13:59:01 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 15:59:01 -0600 Subject: [Freeswitch-svn] [commit] r11517 - freeswitch/branches/gmaruzz/mod_skypiax Message-ID: Author: gmaruzz Date: Tue Jan 27 15:59:00 2009 New Revision: 11517 Log: skypiax: moving switch specific things out of skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c Tue Jan 27 15:59:00 2009 @@ -293,7 +293,7 @@ tech_pvt->read_frame.flags = SFF_NONE; *frame = NULL; - if (skypiax_skypeaudio_read(tech_pvt) != SWITCH_STATUS_SUCCESS) { + if (!skypiax_skypeaudio_read(tech_pvt)) { ERRORA("skypiax_skypeaudio_read ERROR\n", SKYPIAX_P_LOG); @@ -861,7 +861,7 @@ SWITCH_THREAD_STACKSIZE); switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id]. skypiax_skypeapi_thread, skypiax_skypeapi_thread_attr, - skypiax_skypeapi_thread_func, + skypiax_do_skypeapi_thread, &globals.SKYPIAX_INTERFACES[interface_id], skypiax_module_pool); @@ -1013,6 +1013,23 @@ return SWITCH_STATUS_SUCCESS; } +void *SWITCH_THREAD_FUNC skypiax_do_tcp_srv_thread(switch_thread_t * thread, + void *obj) +{ + return skypiax_do_tcp_srv_thread_func(obj); +} +void *SWITCH_THREAD_FUNC skypiax_do_tcp_cli_thread(switch_thread_t * thread, + void *obj) +{ + return skypiax_do_tcp_cli_thread_func(obj); +} +void *SWITCH_THREAD_FUNC skypiax_do_skypeapi_thread(switch_thread_t * thread, + void *obj) +{ + return skypiax_do_skypeapi_thread_func(obj); +} + + /* For Emacs: * Local Variables: * mode:c Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h Tue Jan 27 15:59:00 2009 @@ -237,7 +237,7 @@ void *SWITCH_THREAD_FUNC skypiax_skypeapi_thread_func(switch_thread_t * thread, void *obj); void skypiax_tech_init(private_t * tech_pvt, switch_core_session_t * session); -switch_status_t skypiax_skypeaudio_read(private_t * tech_pvt); +int skypiax_skypeaudio_read(private_t * tech_pvt); int skypiax_skypeaudio_init(private_t * tech_pvt); int skypiax_skype_write(private_t * tech_pvt, char *msg_to_skype); int skypiax_skype_read(private_t * tech_pvt); @@ -245,3 +245,13 @@ int skypiax_skype_call(private_t * tech_pvt, char *idest, int timeout, switch_core_session_t * session); int skypiax_skype_senddigit(private_t * tech_pvt, char digit); + +#define skypiax_sleep switch_sleep +void * skypiax_do_tcp_srv_thread_func(void *obj); +void *SWITCH_THREAD_FUNC skypiax_do_tcp_srv_thread(switch_thread_t * thread, void *obj); + +void * skypiax_do_tcp_cli_thread_func(void *obj); +void *SWITCH_THREAD_FUNC skypiax_do_tcp_cli_thread(switch_thread_t * thread, void *obj); + +void * skypiax_do_skypeapi_thread_func(void *obj); +void *SWITCH_THREAD_FUNC skypiax_do_skypeapi_thread(switch_thread_t * thread, void *obj); Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Tue Jan 27 15:59:00 2009 @@ -12,8 +12,7 @@ #endif /* WIN32 */ /*************************************/ -static void *SWITCH_THREAD_FUNC skypiax_do_tcp_srv_thread(switch_thread_t * thread, - void *obj) +void * skypiax_do_tcp_srv_thread_func(void *obj) { private_t *tech_pvt = obj; int s; @@ -155,7 +154,7 @@ } else if (len == 0) { DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG); - switch_sleep(1000); + skypiax_sleep(1000); } else { ERRORA("len=%d\n", SKYPIAX_P_LOG, len); exit = 1; @@ -205,7 +204,7 @@ } else if (len == 0) { DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG); - switch_sleep(1000); + skypiax_sleep(1000); } else { ERRORA("SRV len=%d\n", SKYPIAX_P_LOG, len); exit = 1; @@ -218,7 +217,7 @@ } else { if (rt) ERRORA("SRV rt=%d\n", SKYPIAX_P_LOG, rt); - switch_sleep(10000); + skypiax_sleep(10000); } } #ifdef WIN32 @@ -263,8 +262,7 @@ } return NULL; } -static void *SWITCH_THREAD_FUNC skypiax_do_tcp_cli_thread(switch_thread_t * thread, - void *obj) +void * skypiax_do_tcp_cli_thread_func(void *obj) { private_t *tech_pvt = obj; int s; @@ -383,7 +381,7 @@ break; } } else { - switch_sleep(1000); + skypiax_sleep(1000); ERRORA("CLI PIPE give us: %u\n", SKYPIAX_P_LOG, got); } } else if (SAMPLERATE_SKYPIAX == 16000) { @@ -412,13 +410,13 @@ break; } } else { - switch_sleep(1000); + skypiax_sleep(1000); ERRORA("CLI PIPE give us: %u\n", SKYPIAX_P_LOG, got); } } } else { - switch_sleep(1000); + skypiax_sleep(1000); if (rt) ERRORA("select give us: %u\n", SKYPIAX_P_LOG, rt); } @@ -473,7 +471,7 @@ return 0; } -switch_status_t skypiax_skypeaudio_read(private_t * tech_pvt) +int skypiax_skypeaudio_read(private_t * tech_pvt) { //private_t *p; unsigned int samples; @@ -508,7 +506,7 @@ //if (samples) //ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG, samples, SAMPLES_PER_FRAME * sizeof(short)); assert(samples == SAMPLES_PER_FRAME * sizeof(short)); //do a crash, please - //do nothing + return 0; } else { /* A real frame */ tech_pvt->read_frame.datalen = samples; @@ -516,8 +514,9 @@ } else { if (rt) DEBUGA_SKYPE("select returned %d\n", SKYPIAX_P_LOG, rt); + //do nothing } - return SWITCH_STATUS_SUCCESS; + return 1; } #ifdef WIN32 @@ -619,7 +618,7 @@ DEBUGA_SKYPE ("\n\n\tIf I do not (almost) immediately connect to Skype API,\n\tplease give the Skype client authorization to be connected \n\tby Asterisk and to not ask you again.\n\n", SKYPIAX_P_LOG); - switch_sleep(5000); + skypiax_sleep(5000); if (!tech_pvt->SkypiaxHandles.api_connected) { SendMessage(HWND_BROADCAST, tech_pvt->SkypiaxHandles. @@ -636,7 +635,7 @@ break; case SKYPECONTROLAPI_ATTACH_API_AVAILABLE: DEBUGA_SKYPE("Skype API available\n", SKYPIAX_P_LOG); - switch_sleep(5000); + skypiax_sleep(5000); if (!tech_pvt->SkypiaxHandles.api_connected) { SendMessage(HWND_BROADCAST, tech_pvt->SkypiaxHandles. @@ -731,7 +730,7 @@ DWORD win32_dwThreadId; -void *SWITCH_THREAD_FUNC skypiax_skypeapi_thread_func(switch_thread_t * thread, void *obj) +void * skypiax_do_skypeapi_thread_func(void *obj) { /* create window class */ /* create dummy/hidden window for processing messages */ @@ -751,7 +750,7 @@ tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover = RegisterWindowMessage("SkypeControlAPIDiscover"); - switch_sleep(2000000); + skypiax_sleep(2000000); if (tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0 && tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) { @@ -909,10 +908,10 @@ DEBUGA_SKYPE("NOT destroyed disp\n", SKYPIAX_P_LOG); } DEBUGA_SKYPE("OUT destroyed disp\n", SKYPIAX_P_LOG); - switch_sleep(1000); + skypiax_sleep(1000); } -void *SWITCH_THREAD_FUNC skypiax_skypeapi_thread_func(switch_thread_t * thread, void *obj) +void * skypiax_do_skypeapi_thread_func(void *obj) { private_t *tech_pvt = obj; @@ -1156,9 +1155,9 @@ DEBUGA_SKYPE ("If I don't connect immediately, please give the Skype client authorization to be connected by Skypiax (and to not ask you again)\n", SKYPIAX_P_LOG); - switch_sleep(1000000); + skypiax_sleep(1000000); skypiax_skype_write(tech_pvt, "PROTOCOL 6"); - switch_sleep(10000); + skypiax_sleep(10000); return 0; } @@ -1400,15 +1399,15 @@ tech_pvt->interface_state = SKYPIAX_STATE_RING; /* no owner, no active call, let's answer */ skypiax_skype_write(tech_pvt, "SET AGC OFF"); - switch_sleep(10000); + skypiax_sleep(10000); skypiax_skype_write(tech_pvt, "SET AEC OFF"); - switch_sleep(10000); + skypiax_sleep(10000); sprintf(msg_to_skype, "GET CALL %s PARTNER_DISPNAME", id); skypiax_skype_write(tech_pvt, msg_to_skype); - switch_sleep(10000); + skypiax_sleep(10000); sprintf(msg_to_skype, "GET CALL %s PARTNER_HANDLE", id); skypiax_skype_write(tech_pvt, msg_to_skype); - switch_sleep(10000); + skypiax_sleep(10000); sprintf(msg_to_skype, "ALTER CALL %s ANSWER", id); skypiax_skype_write(tech_pvt, msg_to_skype); if (option_debug) @@ -1420,7 +1419,7 @@ /* we're owned, we're in a call, let's refuse */ sprintf(msg_to_skype, "ALTER CALL %s END HANGUP", id); skypiax_skype_write(tech_pvt, msg_to_skype); - switch_sleep(10000); + skypiax_sleep(10000); DEBUGA_SKYPE ("We have NOT answered a Skype RING on skype_call %s, because we are already in a skypiax call\n", SKYPIAX_P_LOG, id); @@ -1552,15 +1551,15 @@ skypiax_do_tcp_cli_thread, tech_pvt, skypiax_module_pool); DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG); - switch_sleep(100000); + skypiax_sleep(100000); sprintf(msg_to_skype, "ALTER CALL %s SET_OUTPUT PORT=\"%d\"", id, tech_pvt->tcp_srv_port); skypiax_skype_write(tech_pvt, msg_to_skype); - switch_sleep(100000); + skypiax_sleep(100000); sprintf(msg_to_skype, "ALTER CALL %s SET_INPUT PORT=\"%d\"", id, tech_pvt->tcp_cli_port); skypiax_skype_write(tech_pvt, msg_to_skype); - switch_sleep(100000); + skypiax_sleep(100000); } tech_pvt->skype_callflow = SKYPIAX_STATE_UP; @@ -1698,16 +1697,16 @@ if (option_debug > 10) { DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); } - switch_sleep(5000); + skypiax_sleep(5000); rdest = strchr(idest, '/'); *rdest++ = '\0'; DEBUGA_SKYPE("Calling Skype, rdest is: %s\n", SKYPIAX_P_LOG, rdest); skypiax_skype_write(tech_pvt, "SET AGC OFF"); - switch_sleep(10000); + skypiax_sleep(10000); skypiax_skype_write(tech_pvt, "SET AEC OFF"); - switch_sleep(10000); + skypiax_sleep(10000); sprintf(msg_to_skype, "CALL %s", rdest); if (skypiax_skype_write(tech_pvt, msg_to_skype) < 0) { From mikej at freeswitch.org Tue Jan 27 14:59:00 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 16:59:00 -0600 Subject: [Freeswitch-svn] [commit] r11518 - in freeswitch/trunk/libs/sofia-sip: . libsofia-sip-ua/nta Message-ID: Author: mikej Date: Tue Jan 27 16:59:00 2009 New Revision: 11518 Log: sofia-sip: fix gcc 4.3 build (FSBUILD-105) Modified: freeswitch/trunk/libs/sofia-sip/.update freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_print.c Modified: freeswitch/trunk/libs/sofia-sip/.update ============================================================================== --- freeswitch/trunk/libs/sofia-sip/.update (original) +++ freeswitch/trunk/libs/sofia-sip/.update Tue Jan 27 16:59:00 2009 @@ -1 +1 @@ -Thur Jan 20 17:23:18 CST 2009 +Tue Jan 27 15:54:10 MST 2009 Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_print.c ============================================================================== --- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_print.c (original) +++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nta/sl_utils_print.c Tue Jan 27 16:59:00 2009 @@ -211,17 +211,18 @@ issize_t sl_payload_print(FILE *stream, char const *prefix, sip_payload_t const *pl) { char *s = pl->pl_data, *end = pl->pl_data + pl->pl_len; - size_t n, total = 0, crlf = 1; + size_t n, total = 0, crlf = 1, actual; while (s < end && *s != '\0') { n = strncspn(s, end - s, "\r\n"); crlf = strnspn(s + n, end - s - n, "\r\n"); if (prefix) fputs(prefix, stream), total += strlen(prefix); - if (fwrite(s, 1, n + crlf, stream) < 0) - return -1; - s += n + crlf; - total += n + crlf; + actual = fwrite(s, 1, n + crlf, stream) ; + if (actual == 0) + return -1; + s += actual; + total += actual; } if (crlf == 0) fputs("\n", stream), total++; From gmaruzz at freeswitch.org Tue Jan 27 15:00:57 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 17:00:57 -0600 Subject: [Freeswitch-svn] [commit] r11519 - freeswitch/branches/gmaruzz/mod_skypiax Message-ID: Author: gmaruzz Date: Tue Jan 27 17:00:57 2009 New Revision: 11519 Log: skypiax: moving switch specific things out of skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c Tue Jan 27 17:00:57 2009 @@ -545,7 +545,19 @@ return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; } - skypiax_skype_call(tech_pvt, caller_profile->destination_number, 30, *new_session); + char *rdest; + + rdest = strchr(caller_profile->destination_number, '/'); + *rdest++ = '\0'; + + + skypiax_skype_call(tech_pvt, rdest, 30); + + switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(*new_session), + sizeof(tech_pvt->session_uuid_str)); + caller_profile = tech_pvt->caller_profile; + caller_profile->destination_number = rdest; + switch_channel_set_flag(channel, CF_OUTBOUND); switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND); Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h Tue Jan 27 17:00:57 2009 @@ -242,8 +242,7 @@ int skypiax_skype_write(private_t * tech_pvt, char *msg_to_skype); int skypiax_skype_read(private_t * tech_pvt); -int skypiax_skype_call(private_t * tech_pvt, char *idest, int timeout, - switch_core_session_t * session); +int skypiax_skype_call(private_t * tech_pvt, char *idest, int timeout); int skypiax_skype_senddigit(private_t * tech_pvt, char digit); #define skypiax_sleep switch_sleep Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Tue Jan 27 17:00:57 2009 @@ -1684,13 +1684,11 @@ return 0; } -int skypiax_skype_call(private_t * tech_pvt, char *idest, int timeout, - switch_core_session_t * session) +int skypiax_skype_call(private_t * tech_pvt, char *rdest, int timeout) { - char *rdest; char msg_to_skype[1024]; //private_t *tech_pvt; - switch_caller_profile_t *caller_profile; + //switch_caller_profile_t *caller_profile; //tech_pvt = p; @@ -1698,10 +1696,6 @@ DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); } skypiax_sleep(5000); - - rdest = strchr(idest, '/'); - *rdest++ = '\0'; - DEBUGA_SKYPE("Calling Skype, rdest is: %s\n", SKYPIAX_P_LOG, rdest); skypiax_skype_write(tech_pvt, "SET AGC OFF"); skypiax_sleep(10000); @@ -1717,11 +1711,6 @@ } return -1; } - switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(session), - sizeof(tech_pvt->session_uuid_str)); - caller_profile = tech_pvt->caller_profile; - caller_profile->destination_number = rdest; - //FIXME ast_queue_control(tech_pvt->owner, SKYPIAX_CONTROL_RINGING); return 0; } From gmaruzz at freeswitch.org Tue Jan 27 15:12:50 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 17:12:50 -0600 Subject: [Freeswitch-svn] [commit] r11520 - freeswitch/branches/gmaruzz/mod_skypiax Message-ID: Author: gmaruzz Date: Tue Jan 27 17:12:50 2009 New Revision: 11520 Log: skypiax: compiles on win32 Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c Tue Jan 27 17:12:50 2009 @@ -476,6 +476,7 @@ private_t *tech_pvt; switch_channel_t *channel; switch_caller_profile_t *caller_profile; + char *rdest; switch_core_session_add_stream(*new_session, NULL); @@ -545,7 +546,6 @@ return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; } - char *rdest; rdest = strchr(caller_profile->destination_number, '/'); *rdest++ = '\0'; @@ -630,6 +630,7 @@ switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, skypiax_module_pool); if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) { ERRORA("open of %s failed\n", SKYPIAX_P_LOG, cf); + running=0; return SWITCH_STATUS_TERM; } Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Tue Jan 27 17:12:50 2009 @@ -778,7 +778,7 @@ } } - switch_thread_exit(thread, SWITCH_STATUS_SUCCESS); + //switch_thread_exit(thread, SWITCH_STATUS_SUCCESS); return NULL; } From mikej at freeswitch.org Tue Jan 27 15:15:42 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 17:15:42 -0600 Subject: [Freeswitch-svn] [commit] r11521 - freeswitch/trunk/libs/js/src Message-ID: Author: mikej Date: Tue Jan 27 17:15:42 2009 New Revision: 11521 Log: libjs: fix build warning under gcc 4.3 Modified: freeswitch/trunk/libs/js/src/jsapi.c Modified: freeswitch/trunk/libs/js/src/jsapi.c ============================================================================== --- freeswitch/trunk/libs/js/src/jsapi.c (original) +++ freeswitch/trunk/libs/js/src/jsapi.c Tue Jan 27 17:15:42 2009 @@ -4076,12 +4076,13 @@ { jschar *chars; JSBool ok; + size_t slength = length; CHECK_REQUEST(cx); - chars = js_InflateString(cx, bytes, &length); + chars = js_InflateString(cx, bytes, &slength); if (!chars) return JS_FALSE; - ok = JS_EvaluateUCScript(cx, obj, chars, length, filename, lineno, rval); + ok = JS_EvaluateUCScript(cx, obj, chars, slength, filename, lineno, rval); JS_free(cx, chars); return ok; } @@ -4095,12 +4096,13 @@ { jschar *chars; JSBool ok; + size_t slength = length; CHECK_REQUEST(cx); - chars = js_InflateString(cx, bytes, &length); + chars = js_InflateString(cx, bytes, &slength); if (!chars) return JS_FALSE; - ok = JS_EvaluateUCScriptForPrincipals(cx, obj, principals, chars, length, + ok = JS_EvaluateUCScriptForPrincipals(cx, obj, principals, chars, slength, filename, lineno, rval); JS_free(cx, chars); return ok; From mikej at freeswitch.org Tue Jan 27 15:20:23 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 17:20:23 -0600 Subject: [Freeswitch-svn] [commit] r11522 - freeswitch/trunk/libs/js/src Message-ID: Author: mikej Date: Tue Jan 27 17:20:23 2009 New Revision: 11522 Log: libjs: fix build warning under gcc 4.3 Modified: freeswitch/trunk/libs/js/src/jsapi.c freeswitch/trunk/libs/js/src/jsdbgapi.c Modified: freeswitch/trunk/libs/js/src/jsapi.c ============================================================================== --- freeswitch/trunk/libs/js/src/jsapi.c (original) +++ freeswitch/trunk/libs/js/src/jsapi.c Tue Jan 27 17:20:23 2009 @@ -4574,12 +4574,13 @@ #if JS_HAS_REGEXPS jschar *chars; JSObject *obj; + size_t slength = length; CHECK_REQUEST(cx); - chars = js_InflateString(cx, bytes, &length); + chars = js_InflateString(cx, bytes, &slength); if (!chars) return NULL; - obj = js_NewRegExpObject(cx, NULL, chars, length, flags); + obj = js_NewRegExpObject(cx, NULL, chars, slength, flags); JS_free(cx, chars); return obj; #else Modified: freeswitch/trunk/libs/js/src/jsdbgapi.c ============================================================================== --- freeswitch/trunk/libs/js/src/jsdbgapi.c (original) +++ freeswitch/trunk/libs/js/src/jsdbgapi.c Tue Jan 27 17:20:23 2009 @@ -939,11 +939,12 @@ { jschar *chars; JSBool ok; + size_t slength = length; - chars = js_InflateString(cx, bytes, &length); + chars = js_InflateString(cx, bytes, &slength); if (!chars) return JS_FALSE; - ok = JS_EvaluateUCInStackFrame(cx, fp, chars, length, filename, lineno, + ok = JS_EvaluateUCInStackFrame(cx, fp, chars, slength, filename, lineno, rval); JS_free(cx, chars); From brian at freeswitch.org Tue Jan 27 15:34:43 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 17:34:43 -0600 Subject: [Freeswitch-svn] [commit] r11523 - freeswitch/trunk/src/mod/applications/mod_conference Message-ID: Author: brian Date: Tue Jan 27 17:34:43 2009 New Revision: 11523 Log: MINTWO flag to kick both out if its two Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c (original) +++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Tue Jan 27 17:34:43 2009 @@ -140,7 +140,8 @@ MFLAG_ENDCONF = (1 << 9), MFLAG_HAS_AUDIO = (1 << 10), MFLAG_TALKING = (1 << 11), - MFLAG_RESTART = (1 << 12) + MFLAG_RESTART = (1 << 12), + MFLAG_MINTWO = (1 << 13) } member_flag_t; typedef enum { @@ -4307,6 +4308,10 @@ if (strstr(flags, "endconf")) { *f |= MFLAG_ENDCONF; } + + if (strstr(flags, "mintwo")) { + *f |= MFLAG_MINTWO; + } } } @@ -4815,6 +4820,10 @@ set_mflags(flags_str, &mflags); switch_set_flag_locked((&member), MFLAG_RUNNING | mflags); + if (mflags & MFLAG_MINTWO) { + conference->min = 2; + } + /* Add the caller to the conference */ if (conference_add_member(conference, &member) != SWITCH_STATUS_SUCCESS) { switch_core_codec_destroy(&member.read_codec); From mikej at freeswitch.org Tue Jan 27 15:58:50 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 17:58:50 -0600 Subject: [Freeswitch-svn] [commit] r11524 - in freeswitch/trunk/libs/apr: . build Message-ID: Author: mikej Date: Tue Jan 27 17:58:49 2009 New Revision: 11524 Log: libapr: fix configure when -Werror is in CFLAGS Modified: freeswitch/trunk/libs/apr/build/apr_common.m4 freeswitch/trunk/libs/apr/build/apr_network.m4 freeswitch/trunk/libs/apr/build/apr_threads.m4 freeswitch/trunk/libs/apr/configure.in Modified: freeswitch/trunk/libs/apr/build/apr_common.m4 ============================================================================== --- freeswitch/trunk/libs/apr/build/apr_common.m4 (original) +++ freeswitch/trunk/libs/apr/build/apr_common.m4 Tue Jan 27 17:58:49 2009 @@ -461,7 +461,9 @@ AC_CACHE_VAL(AC_CV_NAME, [AC_TRY_RUN([#include $1 -main() +#include + +int main(void) { FILE *f=fopen("conftestval","w"); if (!f) exit(1); @@ -517,7 +519,7 @@ #include #include #include -main() +int main(void) { char buf[1024]; if (strerror_r(ERANGE, buf, sizeof buf) < 1) { @@ -942,7 +944,7 @@ dnl should be available everywhere! cat > conftest.c < - int main() { return 0; } + int main(void) { return 0; } EOF MKDEP="true" for i in "$CC -MM" "$CC -M" "$CPP -MM" "$CPP -M" "cpp -M"; do Modified: freeswitch/trunk/libs/apr/build/apr_network.m4 ============================================================================== --- freeswitch/trunk/libs/apr/build/apr_network.m4 (original) +++ freeswitch/trunk/libs/apr/build/apr_network.m4 Tue Jan 27 17:58:49 2009 @@ -41,7 +41,7 @@ #include #endif -void main(void) { +int main(void) { struct addrinfo hints, *ai; int error; @@ -129,7 +129,7 @@ #include #endif -void main(void) { +int main(void) { struct sockaddr_in sa; char hbuf[256]; int error; @@ -172,7 +172,7 @@ #include #endif -void main(void) { +int main(void) { if (EAI_ADDRFAMILY < 0) { exit(0); } Modified: freeswitch/trunk/libs/apr/build/apr_threads.m4 ============================================================================== --- freeswitch/trunk/libs/apr/build/apr_threads.m4 (original) +++ freeswitch/trunk/libs/apr/build/apr_threads.m4 Tue Jan 27 17:58:49 2009 @@ -100,7 +100,7 @@ return data; } -int main() { +int main(void) { pthread_t thd; pthread_mutexattr_t mattr; pthread_once_t once_init = PTHREAD_ONCE_INIT; @@ -228,7 +228,7 @@ #include #include -int main() { +int main(void) { pthread_mutexattr_t attr; pthread_mutex_t m; Modified: freeswitch/trunk/libs/apr/configure.in ============================================================================== --- freeswitch/trunk/libs/apr/configure.in (original) +++ freeswitch/trunk/libs/apr/configure.in Tue Jan 27 17:58:49 2009 @@ -455,7 +455,7 @@ #include #include -void main(void) +int main(void) { int fd, ret = 0; struct stat64 st; From andrew at freeswitch.org Tue Jan 27 16:15:05 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 18:15:05 -0600 Subject: [Freeswitch-svn] [commit] r11525 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Tue Jan 27 18:15:05 2009 New Revision: 11525 Log: Add freeswitch.erl - An erlang module to make talking to mod_erlang_event more painless Added: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/freeswitch.erl Added: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/freeswitch.erl ============================================================================== --- (empty file) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/freeswitch.erl Tue Jan 27 18:15:05 2009 @@ -0,0 +1,265 @@ +%% The contents of this file are subject to the Mozilla Public License +%% Version 1.1 (the "License"); you may not use this file except in +%% compliance with the License. You may obtain a copy of the License at +%% http://www.mozilla.org/MPL/ +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +%% License for the specific language governing rights and limitations +%% under the License. +%% +%% @author Andrew Thompson +%% @copyright 2008-2009 Andrew Thompson +%% @doc A module for interfacing with FreeSWITCH using mod_erlang_event. + +-module(freeswitch). + +-export([send/2, api/3, bgapi/3, event/2, + nixevent/2, noevents/1, close/1, + get_event_header/2, get_event_body/1, + get_event_name/1, start_fetch_handler/4, + start_log_handler/3, start_event_handler/3]). +-define(TIMEOUT, 10000). + +%% @doc Return the value for a specific header in an event or `{error,notfound}'. +get_event_header([], _Needle) -> + {error, notfound}; +get_event_header({event, Headers}, Needle) when is_list(Headers) -> + get_event_header(Headers, Needle); +get_event_header([undefined | Headers], Needle) -> + get_event_header(Headers, Needle); +get_event_header([UUID | Headers], Needle) when is_list(UUID) -> + get_event_header(Headers, Needle); +get_event_header([{Key,Value} | Headers], Needle) -> + case Key of + Needle -> + Value; + _ -> + get_event_header(Headers, Needle) + end. + +%% @doc Return the name of the event. +get_event_name(Event) -> + get_event_header(Event, "Event-Name"). + +%% @doc Return the body of the event or `{error, notfound}' if no event body. +get_event_body(Event) -> + get_event_header(Event, "body"). + +%% @doc Send a raw term to FreeSWITCH. Returns the reply or `timeout' on a +%% timeout. +send(Node, Term) -> + {send, Node} ! Term, + receive + Response -> + Response + after ?TIMEOUT -> + timeout + end. + +%% @doc Make a blocking API call to FreeSWITCH. The result of the API call is +%% returned or `timeout' if FreeSWITCH fails to respond. +api(Node, Cmd, Args) -> + {api, Node} ! {api, Cmd, Args}, + receive + X -> X + after ?TIMEOUT -> + timeout + end. + +%% @doc Make a backgrounded API call to FreeSWITCH. The asynchronous reply is +%% sent to calling process after it is received. This function +%% returns the result of the initial bgapi call or `timeout' if FreeSWITCH fails +%% to respond. +bgapi(Node, Cmd, Args) -> + Self = self(), + % spawn a new process so that both responses go here instead of directly to + % the calling process. + spawn(fun() -> + {bgapi, Node} ! {bgapi, Cmd, Args}, + receive + {error, Reason} -> + % send the error condition to the calling process + Self ! {api, {error, Reason}}; + {ok, JobID} -> + % send the reply to the calling process + Self ! {api, ok}, + receive % wait for the job's reply + {bgok, JobID, Reply} -> + % send the actual command output back to the calling process + Self ! {bgok, Reply}; + {bgerror, JobID, Reply} -> + Self ! {bgerror, Reply} + end + after ?TIMEOUT -> + % send a timeout to the calling process + Self ! {api, timeout} + end + end), + + % get the initial result of the command, NOT the asynchronous response, and + % return it + receive + {api, X} -> X + end. + +%% @doc Request to receive any events in the list `List'. +event(Node, Events) when is_list(Events) -> + {event, Node} ! list_to_tuple(lists:append([event], Events)), + receive + X -> X + after ?TIMEOUT -> + timeout + end; +event(Node, Event) when is_atom(Event) -> + event(Node, [Event]). + +%% @doc Stop receiving any events in the list `Events' from `Node'. +nixevent(Node, Events) when is_list(Events) -> + {nixevent, Node} ! list_to_tuple(lists:append([nixevent], Events)), + receive + X -> X + after ?TIMEOUT -> + timeout + end; +nixevent(Node, Event) when is_atom(Event) -> + nixevent(Node, [Event]). + +%% @doc Stop receiving any events from `Node'. +noevents(Node) -> + {noevents, Node} ! noevents, + receive + X -> X + after ?TIMEOUT -> + timeout + end. + +%% @doc Close the connection to `Node'. +close(Node) -> + {close, Node} ! exit, + receive + X -> X + after ?TIMEOUT -> + timeout + end. + +%% @doc Send an event to FreeSWITCH. `EventName' is the name of the event and +%% `Headers' is a list of `{Key, Value}' string tuples. See the mod_event_socket +%% documentation for more information. +sendevent(Node, EventName, Headers) -> + {sendevent, Node} ! {sendevent, EventName, Headers}, + receive + X -> X + after ?TIMEOUT -> + timeout + end. + +%% @doc Send a message to the call identified by `UUID'. `Headers' is a list of +%% `{Key, Value}' string tuples. +sendmsg(Node, UUID, Headers) -> + {sendmsg, Node} ! {sendmsg, UUID, Headers}, + receive + X -> X + after ?TIMEOUT -> + timeout + end. + + +%% @doc Get the fake pid of the FreeSWITCH node at `Node'. This can be helpful +%% for linking to the process. Returns `{ok, Pid}' or `timeout'. +getpid(Node) -> + {getpid, Node} ! getpid, + receive + X -> X + after ?TIMEOUT -> + timeout + end. + +%% @doc Request that FreeSWITCH send any events pertaining to call `UUID' to +%% `Process' where process is a registered process name. +handlecall(Node, Process) -> + {handlecall, Node} ! {handlecall, Process}, + receive + X -> X + after ?TIMEOUT -> + timeout + end. + +%% @private +start_handler(Node, Type, Module, Function) -> + Self = self(), + spawn(fun() -> + monitor_node(Node, true), + {foo, Node} ! Type, + receive + ok -> + Self ! {Type, {ok, self()}}, + apply(Module, Function, [Node]); + {error,Reason} -> + Self ! {Type, {error, Reason}} + after ?TIMEOUT -> + Self ! {Type, timeout} + end + end), + + receive + {Type, X} -> X + end. + +%% @todo Notify the process if it gets replaced by a new log handler. + +%% @doc Spawn `Module':`Function' as a log handler. The process will receive +%% messages of the form `{log, [{level, LogLevel}, {text_channel, TextChannel}, {file, FileName}, {func, FunctionName}, {line, LineNumber}, {data, LogMessage}]}' +%% or `{nodedown, Node}' if the FreesSWITCH node at `Node' exits. +%% +%% The function specified by `Module':`Function' should be tail recursive and is +%% passed one argument; the name of the FreeSWITCH node. +%% +%% Subsequent calls to this function for the same node replaces the +%% previous event handler with the newly spawned one. +%% +%% This function returns either `{ok, Pid}' where `Pid' is the pid of the newly +%% spawned process, `{error, Reason}' or the atom `timeout' if FreeSWITCH did +%% not respond. +start_log_handler(Node, Module, Function) -> + start_handler(Node, register_log_handler, Module, Function). + +%% @todo Notify the process if it gets replaced with a new event handler. + +%% @doc Spawn Module:Function as an event handler. The process will receive +%% messages of the form `{event, [UniqueID, {Key, Value}, {...}]}' where +%% `UniqueID' is either a FreeSWITCH call ID or `undefined' or +%% `{nodedown, Node}' if the FreeSWITCH node at `Node' exits. +%% +%% The function specified by `Module':`Function' should be tail recursive and is +%% passed one argument; the name of the FreeSWITCH node. +%% +%% Subsequent calls to this function for the same node replaces the +%% previous event handler with the newly spawned one. +%% +%% This function returns either `{ok, Pid}' where `Pid' is the pid of the newly +%% spawned process, `{error, Reason}' or the atom `timeout' if FreeSWITCH did +%% not respond. +start_event_handler(Node, Module, Function) -> + start_handler(Node, register_event_handler, Module, Function). + +%% @doc Spawn Module:Function as an XML config fetch handler for configs of type +%% `Section'. See the FreeSWITCH documentation for mod_xml_rpc for more +%% information on sections. The process will receive messages of the form +%% `{fetch, Section, Tag, Key, Value, ID, Data}' or `{nodedown, Node}' if the +%% FreeSWITCH node at `Node' exits. +%% +%% The function specified by `Module':`Function' should be tail recursive and is +%% passed one argument; the name of the FreeSWITCH node. The function should +%% send tuples back to FreeSWITCH of the form `{fetch_reply, ID, XML}' where +%%`ID' is the ID received in the request tuple and `XML' is XML in string or +%% binary form of the form noted in the mod_xml_rpc documentation. +%% +%% Subsequent calls to this function for the same node and section will yield +%% undefined behaviour. +%% +%% This function returns either `{ok, Pid}' where `Pid' is the pid of the newly +%% spawned process, `{error, Reason}' or the atom `timeout' if FreeSWITCH did +%% not respond. +start_fetch_handler(Node, Section, Module, Function) -> + start_handler(Node, {bind, Section}, Module, Function). From gmaruzz at freeswitch.org Tue Jan 27 16:24:48 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 18:24:48 -0600 Subject: [Freeswitch-svn] [commit] r11526 - freeswitch/branches/gmaruzz/mod_skypiax Message-ID: Author: gmaruzz Date: Tue Jan 27 18:24:48 2009 New Revision: 11526 Log: skypiax: moving switch specific things out of skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c Tue Jan 27 18:24:48 2009 @@ -1042,6 +1042,27 @@ return skypiax_do_skypeapi_thread_func(obj); } +int dtmf_received(private_t *tech_pvt, char *value){ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + channel = switch_core_session_get_channel(session); + + if (channel) { + switch_dtmf_t dtmf = + { (char) value[0], switch_core_default_dtmf_duration(0) }; + DEBUGA_SKYPE("%c DTMF %s\n", SKYPIAX_P_LOG, dtmf.digit, + switch_channel_get_name(channel)); + switch_mutex_lock(tech_pvt->flag_mutex); + switch_channel_queue_dtmf(channel, &dtmf); + switch_set_flag(tech_pvt, TFLAG_DTMF); + switch_mutex_unlock(tech_pvt->flag_mutex); + } + switch_core_session_rwunlock(session); + + return 0; +} /* For Emacs: * Local Variables: Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h Tue Jan 27 18:24:48 2009 @@ -254,3 +254,4 @@ void * skypiax_do_skypeapi_thread_func(void *obj); void *SWITCH_THREAD_FUNC skypiax_do_skypeapi_thread(switch_thread_t * thread, void *obj); +int dtmf_received(private_t *tech_pvt, char *value); Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Tue Jan 27 18:24:48 2009 @@ -1349,12 +1349,13 @@ tech_pvt->interface_state = SKYPIAX_STATE_PRERING; } - if (!strcasecmp(prop, "DTMF")) { - switch_core_session_t *session = NULL; - switch_channel_t *channel = NULL; + if (!strcasecmp(prop, "DTMF")) { + //switch_core_session_t *session = NULL; + //switch_channel_t *channel = NULL; DEBUGA_SKYPE("Call %s received a DTMF: %s\n", SKYPIAX_P_LOG, id, value); + /* session = switch_core_session_locate(tech_pvt->session_uuid_str); channel = switch_core_session_get_channel(session); @@ -1369,6 +1370,8 @@ switch_mutex_unlock(tech_pvt->flag_mutex); } switch_core_session_rwunlock(session); + */ + dtmf_received(tech_pvt, value); } if (!strcasecmp(prop, "FAILUREREASON")) { @@ -1532,7 +1535,7 @@ DEBUGA_SKYPE("skype_call: %s SKYPIAX_CONTROL_ANSWER sent\n", SKYPIAX_P_LOG, id); - if (1) { //FIXME + if (1) { //FIXME //CICOPET char msg_to_skype[1024]; switch_threadattr_t *thd_attr = NULL; @@ -1568,7 +1571,7 @@ //FIXME *new_session=switch_loadable_module_create_interface(skypiax_endpoint_interface, pool); - if (!strlen(tech_pvt->session_uuid_str)) { + if (!strlen(tech_pvt->session_uuid_str)) { //CICOPET switch_core_session_t *session = NULL; //private_t *tech_pvt = NULL; switch_channel_t *channel = NULL; @@ -1618,7 +1621,7 @@ } } switch_channel_mark_answered(channel); - } else { + } else { //CICOPET switch_core_session_t *session = NULL; switch_channel_t *channel = NULL; @@ -1687,10 +1690,6 @@ int skypiax_skype_call(private_t * tech_pvt, char *rdest, int timeout) { char msg_to_skype[1024]; - //private_t *tech_pvt; - //switch_caller_profile_t *caller_profile; - - //tech_pvt = p; if (option_debug > 10) { DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); From mikej at freeswitch.org Tue Jan 27 16:39:04 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 18:39:04 -0600 Subject: [Freeswitch-svn] [commit] r11527 - freeswitch/trunk/libs/sqlite/src Message-ID: Author: mikej Date: Tue Jan 27 18:39:04 2009 New Revision: 11527 Log: sqlite: fix build with -Werror Modified: freeswitch/trunk/libs/sqlite/src/os.h freeswitch/trunk/libs/sqlite/src/vdbemem.c freeswitch/trunk/libs/sqlite/src/vtab.c Modified: freeswitch/trunk/libs/sqlite/src/os.h ============================================================================== --- freeswitch/trunk/libs/sqlite/src/os.h (original) +++ freeswitch/trunk/libs/sqlite/src/os.h Tue Jan 27 18:39:04 2009 @@ -64,6 +64,7 @@ # define SQLITE_TEMPNAME_SIZE (CCHMAXPATHCOMP) #else # define SQLITE_TEMPNAME_SIZE 200 +# include #endif /* If the SET_FULLSYNC macro is not defined above, then make it Modified: freeswitch/trunk/libs/sqlite/src/vdbemem.c ============================================================================== --- freeswitch/trunk/libs/sqlite/src/vdbemem.c (original) +++ freeswitch/trunk/libs/sqlite/src/vdbemem.c Tue Jan 27 18:39:04 2009 @@ -760,7 +760,7 @@ pVal->flags |= (pVal->flags & MEM_Blob)>>3; if( pVal->flags&MEM_Str ){ sqlite3VdbeChangeEncoding(pVal, enc & ~SQLITE_UTF16_ALIGNED); - if( (enc & SQLITE_UTF16_ALIGNED)!=0 && 1==(1&(int)pVal->z) ){ + if( (enc & SQLITE_UTF16_ALIGNED)!=0 && 1==(1&(int)(intptr_t)pVal->z) ){ assert( (pVal->flags & (MEM_Ephem|MEM_Static))!=0 ); if( sqlite3VdbeMemMakeWriteable(pVal)!=SQLITE_OK ){ return 0; @@ -770,7 +770,7 @@ }else{ assert( (pVal->flags&MEM_Blob)==0 ); sqlite3VdbeMemStringify(pVal, enc); - assert( 0==(1&(int)pVal->z) ); + assert( 0==(1&(int)(intptr_t)pVal->z) ); } assert(pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) || sqlite3MallocFailed() ); if( pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) ){ Modified: freeswitch/trunk/libs/sqlite/src/vtab.c ============================================================================== --- freeswitch/trunk/libs/sqlite/src/vtab.c (original) +++ freeswitch/trunk/libs/sqlite/src/vtab.c Tue Jan 27 18:39:04 2009 @@ -15,6 +15,7 @@ */ #ifndef SQLITE_OMIT_VIRTUALTABLE #include "sqliteInt.h" +#include "os.h" /* ** External API function used to create a new virtual-table module. @@ -562,7 +563,7 @@ ** sqlite3.aVTrans array. Then clear the array itself. */ int sqlite3VtabRollback(sqlite3 *db){ - callFinaliser(db, (int)(&((sqlite3_module *)0)->xRollback)); + callFinaliser(db, (int)(intptr_t)(&((sqlite3_module *)0)->xRollback)); return SQLITE_OK; } @@ -571,7 +572,7 @@ ** sqlite3.aVTrans array. Then clear the array itself. */ int sqlite3VtabCommit(sqlite3 *db){ - callFinaliser(db, (int)(&((sqlite3_module *)0)->xCommit)); + callFinaliser(db, (int)(intptr_t)(&((sqlite3_module *)0)->xCommit)); return SQLITE_OK; } From mikej at freeswitch.org Tue Jan 27 16:46:47 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 18:46:47 -0600 Subject: [Freeswitch-svn] [commit] r11528 - freeswitch/trunk/libs/codec/ilbc/src Message-ID: Author: mikej Date: Tue Jan 27 18:46:47 2009 New Revision: 11528 Log: libilbc: fix build with -Werror Modified: freeswitch/trunk/libs/codec/ilbc/src/iCBSearch.c Modified: freeswitch/trunk/libs/codec/ilbc/src/iCBSearch.c ============================================================================== --- freeswitch/trunk/libs/codec/ilbc/src/iCBSearch.c (original) +++ freeswitch/trunk/libs/codec/ilbc/src/iCBSearch.c Tue Jan 27 18:46:47 2009 @@ -121,7 +121,7 @@ *ppe=0.0; pp=buf+LPC_FILTERORDER+lMem-lTarget; for (j=0; j0.0) { @@ -303,7 +303,7 @@ pp=cbvectors+lMem-lTarget; for (j=0; j Author: mikej Date: Tue Jan 27 18:59:06 2009 New Revision: 11529 Log: libsndfile: fix build with -Werror Modified: freeswitch/trunk/libs/libsndfile/src/sndfile.c Modified: freeswitch/trunk/libs/libsndfile/src/sndfile.c ============================================================================== --- freeswitch/trunk/libs/libsndfile/src/sndfile.c (original) +++ freeswitch/trunk/libs/libsndfile/src/sndfile.c Tue Jan 27 18:59:06 2009 @@ -488,7 +488,7 @@ { SF_PRIVATE *psf ; if (sndfile == NULL) - { if (sf_error != 0) + { if (sf_errno != 0) return sf_errno ; return 0 ; } ; From mikej at freeswitch.org Tue Jan 27 17:02:12 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 19:02:12 -0600 Subject: [Freeswitch-svn] [commit] r11530 - freeswitch/trunk/src/mod/applications/mod_easyroute Message-ID: Author: mikej Date: Tue Jan 27 19:02:12 2009 New Revision: 11530 Log: mod_easyroute: fix build with -Werror when odbc is not enabled Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c Modified: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c (original) +++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.c Tue Jan 27 19:02:12 2009 @@ -193,7 +193,9 @@ return status; } +#ifdef SWITCH_HAVE_ODBC static char SQL_LOOKUP[] = "SELECT gateways.gateway_ip, gateways.group, gateways.limit, gateways.techprofile, numbers.acctcode, numbers.translated from gateways, numbers where numbers.number = '%q' and numbers.gateway_id = gateways.gateway_id limit 1;"; +#endif static switch_status_t route_lookup(char *dn, easyroute_results_t *results, int noat, char *seperator) { From gmaruzz at freeswitch.org Tue Jan 27 17:13:57 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 19:13:57 -0600 Subject: [Freeswitch-svn] [commit] r11531 - freeswitch/branches/gmaruzz/mod_skypiax Message-ID: Author: gmaruzz Date: Tue Jan 27 19:13:57 2009 New Revision: 11531 Log: skypiax: moving switch specific things out of skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c Tue Jan 27 19:13:57 2009 @@ -1064,6 +1064,98 @@ return 0; } +int start_audio_threads(private_t *tech_pvt) { + switch_threadattr_t *thd_attr = NULL; + + switch_threadattr_create(&thd_attr, skypiax_module_pool); + switch_threadattr_detach_set(thd_attr, 1); + switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); + switch_thread_create(&tech_pvt->tcp_srv_thread, thd_attr, + skypiax_do_tcp_srv_thread, tech_pvt, + skypiax_module_pool); + DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPIAX_P_LOG); + + switch_threadattr_create(&thd_attr, skypiax_module_pool); + switch_threadattr_detach_set(thd_attr, 1); + switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); + switch_thread_create(&tech_pvt->tcp_cli_thread, thd_attr, + skypiax_do_tcp_cli_thread, tech_pvt, + skypiax_module_pool); + DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG); + skypiax_sleep(100000); + + + return 0; +} + +int new_inbound_channel(private_t *tech_pvt) { + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + if ((session = + switch_core_session_request(skypiax_endpoint_interface, + NULL)) != 0) { + switch_core_session_add_stream(session, NULL); + channel = switch_core_session_get_channel(session); + skypiax_tech_init(tech_pvt, session); + + if ((tech_pvt->caller_profile = + switch_caller_profile_new(switch_core_session_get_pool(session), + "skypiax", tech_pvt->dialplan, + tech_pvt->callid_name, + tech_pvt->callid_number, NULL, NULL, + NULL, NULL, "mod_skypiax", + tech_pvt->context, + tech_pvt->destination)) != 0) { + char name[128]; + //switch_snprintf(name, sizeof(name), "skypiax/%s/%s", tech_pvt->name, tech_pvt->caller_profile->destination_number); + switch_snprintf(name, sizeof(name), "skypiax/%s", tech_pvt->name); + switch_channel_set_name(channel, name); + switch_channel_set_caller_profile(channel, + tech_pvt->caller_profile); + } + switch_channel_set_state(channel, CS_INIT); + if (switch_core_session_thread_launch(session) != + SWITCH_STATUS_SUCCESS) { + ERRORA("Error spawning thread\n", SKYPIAX_P_LOG); + switch_core_session_destroy(&session); + } + } + switch_channel_mark_answered(channel); + + DEBUGA_SKYPE("Here\n", SKYPIAX_P_LOG); + + return 0; +} +int outbound_channel_answered(private_t *tech_pvt) { + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + + if (strlen(tech_pvt->session_uuid_str)) { + session = switch_core_session_locate(tech_pvt->session_uuid_str); + } else { + ERRORA("No session???\n", SKYPIAX_P_LOG); + } + if (session) { + channel = switch_core_session_get_channel(session); + } else { + ERRORA("No session???\n", SKYPIAX_P_LOG); + } + if (channel) { + switch_channel_mark_answered(channel); + //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id); + } else { + ERRORA("No channel???\n", SKYPIAX_P_LOG); + } + + switch_core_session_rwunlock(session); + DEBUGA_SKYPE("HERE!\n", SKYPIAX_P_LOG); + + + return 0; +} + /* For Emacs: * Local Variables: * mode:c Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h Tue Jan 27 19:13:57 2009 @@ -255,3 +255,6 @@ void * skypiax_do_skypeapi_thread_func(void *obj); void *SWITCH_THREAD_FUNC skypiax_do_skypeapi_thread(switch_thread_t * thread, void *obj); int dtmf_received(private_t *tech_pvt, char *value); +int start_audio_threads(private_t *tech_pvt); +int new_inbound_channel(private_t *tech_pvt); +int outbound_channel_answered(private_t *tech_pvt); Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Tue Jan 27 19:13:57 2009 @@ -1350,27 +1350,9 @@ } if (!strcasecmp(prop, "DTMF")) { - //switch_core_session_t *session = NULL; - //switch_channel_t *channel = NULL; DEBUGA_SKYPE("Call %s received a DTMF: %s\n", SKYPIAX_P_LOG, id, value); - /* - session = switch_core_session_locate(tech_pvt->session_uuid_str); - channel = switch_core_session_get_channel(session); - - if (channel) { - switch_dtmf_t dtmf = - { (char) value[0], switch_core_default_dtmf_duration(0) }; - DEBUGA_SKYPE("%c DTMF %s\n", SKYPIAX_P_LOG, dtmf.digit, - switch_channel_get_name(channel)); - switch_mutex_lock(tech_pvt->flag_mutex); - switch_channel_queue_dtmf(channel, &dtmf); - switch_set_flag(tech_pvt, TFLAG_DTMF); - switch_mutex_unlock(tech_pvt->flag_mutex); - } - switch_core_session_rwunlock(session); - */ dtmf_received(tech_pvt, value); } @@ -1525,6 +1507,7 @@ strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); DEBUGA_SKYPE("skype_call: %s is now UNPLACED\n", SKYPIAX_P_LOG, id); } else if (!strcasecmp(value, "INPROGRESS")) { + char msg_to_skype[1024]; tech_pvt->skype_callflow = CALLFLOW_STATUS_INPROGRESS; strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); tech_pvt->interface_state = SKYPIAX_STATE_UP; @@ -1535,26 +1518,8 @@ DEBUGA_SKYPE("skype_call: %s SKYPIAX_CONTROL_ANSWER sent\n", SKYPIAX_P_LOG, id); - if (1) { //FIXME //CICOPET - char msg_to_skype[1024]; - switch_threadattr_t *thd_attr = NULL; + start_audio_threads(tech_pvt); - switch_threadattr_create(&thd_attr, skypiax_module_pool); - switch_threadattr_detach_set(thd_attr, 1); - switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&tech_pvt->tcp_srv_thread, thd_attr, - skypiax_do_tcp_srv_thread, tech_pvt, - skypiax_module_pool); - DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPIAX_P_LOG); - - switch_threadattr_create(&thd_attr, skypiax_module_pool); - switch_threadattr_detach_set(thd_attr, 1); - switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&tech_pvt->tcp_cli_thread, thd_attr, - skypiax_do_tcp_cli_thread, tech_pvt, - skypiax_module_pool); - DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG); - skypiax_sleep(100000); sprintf(msg_to_skype, "ALTER CALL %s SET_OUTPUT PORT=\"%d\"", id, tech_pvt->tcp_srv_port); skypiax_skype_write(tech_pvt, msg_to_skype); @@ -1563,86 +1528,19 @@ tech_pvt->tcp_cli_port); skypiax_skype_write(tech_pvt, msg_to_skype); skypiax_sleep(100000); - } - + tech_pvt->skype_callflow = SKYPIAX_STATE_UP; - //FIXME switch_core_session_t **new_session; - - //FIXME *new_session=switch_loadable_module_create_interface(skypiax_endpoint_interface, pool); - - if (!strlen(tech_pvt->session_uuid_str)) { //CICOPET - switch_core_session_t *session = NULL; - //private_t *tech_pvt = NULL; - switch_channel_t *channel = NULL; + if (!strlen(tech_pvt->session_uuid_str)) { DEBUGA_SKYPE("New Inbound Channel!\n", SKYPIAX_P_LOG); - if ((session = - switch_core_session_request(skypiax_endpoint_interface, - NULL)) != 0) { - switch_core_session_add_stream(session, NULL); - channel = switch_core_session_get_channel(session); - skypiax_tech_init(tech_pvt, session); -#if 0 - if ((tech_pvt = - (private_t *) switch_core_session_alloc(session, - sizeof(private_t))) != - 0) { - channel = switch_core_session_get_channel(session); - skypiax_tech_init(tech_pvt, session); - } else { - ERRORA("Hey where is my memory pool?\n", SKYPIAX_P_LOG); - switch_core_session_destroy(&session); - break; - } -#endif - - if ((tech_pvt->caller_profile = - switch_caller_profile_new(switch_core_session_get_pool(session), - "skypiax", tech_pvt->dialplan, - tech_pvt->callid_name, - tech_pvt->callid_number, NULL, NULL, - NULL, NULL, "mod_skypiax", - tech_pvt->context, - tech_pvt->destination)) != 0) { - char name[128]; - //switch_snprintf(name, sizeof(name), "skypiax/%s/%s", tech_pvt->name, tech_pvt->caller_profile->destination_number); - switch_snprintf(name, sizeof(name), "skypiax/%s", tech_pvt->name); - switch_channel_set_name(channel, name); - switch_channel_set_caller_profile(channel, - tech_pvt->caller_profile); - } - switch_channel_set_state(channel, CS_INIT); - if (switch_core_session_thread_launch(session) != - SWITCH_STATUS_SUCCESS) { - ERRORA("Error spawning thread\n", SKYPIAX_P_LOG); - switch_core_session_destroy(&session); - } - } - switch_channel_mark_answered(channel); - } else { //CICOPET - switch_core_session_t *session = NULL; - switch_channel_t *channel = NULL; + new_inbound_channel(tech_pvt); + } else { - if (strlen(tech_pvt->session_uuid_str)) { - session = switch_core_session_locate(tech_pvt->session_uuid_str); - } else { - ERRORA("No session???\n", SKYPIAX_P_LOG); - } - if (session) { - channel = switch_core_session_get_channel(session); - } else { - ERRORA("No session???\n", SKYPIAX_P_LOG); - } - if (channel) { - switch_channel_mark_answered(channel); - //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id); - } else { - ERRORA("No channel???\n", SKYPIAX_P_LOG); - } + DEBUGA_SKYPE("Outbound Channel Answered!\n", SKYPIAX_P_LOG); - switch_core_session_rwunlock(session); + outbound_channel_answered(tech_pvt); } } else { From mikej at freeswitch.org Tue Jan 27 17:50:45 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 19:50:45 -0600 Subject: [Freeswitch-svn] [commit] r11532 - freeswitch/trunk/src/mod/applications/mod_lcr Message-ID: Author: mikej Date: Tue Jan 27 19:50:45 2009 New Revision: 11532 Log: mod_lcr: fix memory leak Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c Modified: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c (original) +++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.c Tue Jan 27 19:50:45 2009 @@ -280,6 +280,14 @@ cbt->matches++; + if (switch_strlen_zero(argv[LCR_GW_PREFIX_PLACE]) && switch_strlen_zero(argv[LCR_GW_SUFFIX_PLACE]) ) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, + "There's no way to dial this Gateway: Carrier: \"%s\" Prefix: \"%s\", Suffix \"%s\"\n", + switch_str_nil(argv[LCR_CARRIER_PLACE]), + switch_str_nil(argv[LCR_GW_PREFIX_PLACE]), switch_str_nil(argv[LCR_GW_SUFFIX_PLACE])); + return SWITCH_STATUS_SUCCESS; + } + switch_zmalloc(additional, sizeof(lcr_obj_t)); additional->digit_len = strlen(argv[LCR_DIGITS_PLACE]); @@ -304,21 +312,11 @@ } for (current = cbt->head; current; current = current->next) { - - if (switch_strlen_zero(additional->gw_prefix) && switch_strlen_zero(additional->gw_suffix) ) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING - , "WTF?!? There's no way to dial this Gateway: Carrier: \"%s\" Prefix: \"%s\", Suffix \"%s\"\n" - , additional->carrier_name - , additional->gw_prefix, additional->gw_suffix - ); - break; - } if (!strcmp(current->gw_prefix, additional->gw_prefix) && !strcmp(current->gw_suffix, additional->gw_suffix)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG - , "Ignoring Duplicate route for termination point (%s:%s)\n" - , additional->gw_prefix, additional->gw_suffix - ); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, + "Ignoring Duplicate route for termination point (%s:%s)\n", + additional->gw_prefix, additional->gw_suffix); switch_safe_free(additional); break; } @@ -488,7 +486,7 @@ profile->order_by = ", rate"; } if(!switch_strlen_zero(id_s)) { - profile->id = atoi(id_s); + profile->id = (uint16_t)atoi(id_s); } switch_core_hash_insert(globals.profile_hash, profile->name, profile); From mikej at freeswitch.org Tue Jan 27 17:55:03 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 19:55:03 -0600 Subject: [Freeswitch-svn] [commit] r11533 - in freeswitch/trunk: . src/mod/applications/mod_easyroute src/mod/applications/mod_lcr Message-ID: Author: mikej Date: Tue Jan 27 19:55:02 2009 New Revision: 11533 Log: build: add mod_lcr and mod_easyroute to msvc 2008 build Added: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.2008.vcproj freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.2008.vcproj Modified: freeswitch/trunk/Freeswitch.2008.express.sln freeswitch/trunk/Freeswitch.2008.sln freeswitch/trunk/src/mod/applications/mod_easyroute/ (props changed) freeswitch/trunk/src/mod/applications/mod_lcr/ (props changed) Modified: freeswitch/trunk/Freeswitch.2008.express.sln ============================================================================== --- freeswitch/trunk/Freeswitch.2008.express.sln (original) +++ freeswitch/trunk/Freeswitch.2008.express.sln Tue Jan 27 19:55:02 2009 @@ -565,6 +565,16 @@ {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {CF405366-9558-4AE8-90EF-5E21B51CCB4E} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_easyroute", "src\mod\applications\mod_easyroute\mod_easyroute.2008.vcproj", "{329FD5B0-EF28-4606-86D0-F6EA21CF8E36}" + ProjectSection(ProjectDependencies) = postProject + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lcr", "src\mod\applications\mod_lcr\mod_lcr.2008.vcproj", "{1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}" + ProjectSection(ProjectDependencies) = postProject + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -1268,6 +1278,18 @@ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.ActiveCfg = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.ActiveCfg = Release|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.ActiveCfg = Debug|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.Build.0 = Debug|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64.ActiveCfg = Debug|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.ActiveCfg = Release|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.Build.0 = Release|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64.ActiveCfg = Release|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.ActiveCfg = Debug|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.Build.0 = Debug|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64.ActiveCfg = Debug|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.ActiveCfg = Release|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.Build.0 = Release|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Modified: freeswitch/trunk/Freeswitch.2008.sln ============================================================================== --- freeswitch/trunk/Freeswitch.2008.sln (original) +++ freeswitch/trunk/Freeswitch.2008.sln Tue Jan 27 19:55:02 2009 @@ -943,6 +943,16 @@ {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {CF405366-9558-4AE8-90EF-5E21B51CCB4E} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_easyroute", "src\mod\applications\mod_easyroute\mod_easyroute.2008.vcproj", "{329FD5B0-EF28-4606-86D0-F6EA21CF8E36}" + ProjectSection(ProjectDependencies) = postProject + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lcr", "src\mod\applications\mod_lcr\mod_lcr.2008.vcproj", "{1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}" + ProjectSection(ProjectDependencies) = postProject + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -1652,6 +1662,18 @@ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.ActiveCfg = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.Build.0 = Release|Win32 {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.ActiveCfg = Release|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.ActiveCfg = Debug|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.Build.0 = Debug|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64.ActiveCfg = Debug|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.ActiveCfg = Release|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.Build.0 = Release|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64.ActiveCfg = Release|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.ActiveCfg = Debug|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.Build.0 = Debug|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64.ActiveCfg = Debug|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.ActiveCfg = Release|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.Build.0 = Release|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1683,6 +1705,8 @@ {E3246D17-E29B-4AB5-962A-C69B0C5837BB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {14E4A972-9CFB-436D-B0A5-4943F3F80D47} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {07113B25-D3AF-4E04-BA77-4CD1171F022C} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4} {A27CCA23-1541-4337-81A4-F0A6413078A0} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4} {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4} Added: freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.2008.vcproj ============================================================================== --- (empty file) +++ freeswitch/trunk/src/mod/applications/mod_easyroute/mod_easyroute.2008.vcproj Tue Jan 27 19:55:02 2009 @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Added: freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.2008.vcproj ============================================================================== --- (empty file) +++ freeswitch/trunk/src/mod/applications/mod_lcr/mod_lcr.2008.vcproj Tue Jan 27 19:55:02 2009 @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From robertj at freeswitch.org Tue Jan 27 19:12:37 2009 From: robertj at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 21:12:37 -0600 Subject: [Freeswitch-svn] [commit] r11534 - freeswitch/trunk/src/mod/endpoints/mod_opal Message-ID: Author: robertj Date: Tue Jan 27 21:12:36 2009 New Revision: 11534 Log: Removed the construction of new OpalMediaFormat instances from FS codecs, need for H.323 capabilities makes this impossible, OPAL must know about the codec a priori (and how to make H.323 capability from it) or it cannot be used. Modified: freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h Modified: freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp (original) +++ freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp Tue Jan 27 21:12:36 2009 @@ -351,6 +351,21 @@ AddRouteEntry("iax2:.* = local:"); // config option for direct routing AddRouteEntry("local:.* = h323:"); // config option for direct routing + // Make sure all known codecs are instantiated, + // these are ones we know how to translate into H.323 capabilities + GetOpalG728(); + GetOpalG729(); + GetOpalG729A(); + GetOpalG729B(); + GetOpalG729AB(); + GetOpalG7231_6k3(); + GetOpalG7231_5k3(); + GetOpalG7231A_6k3(); + GetOpalG7231A_5k3(); + GetOpalGSM0610(); + GetOpalGSMAMR(); + GetOpaliLBC(); + /* For compatibility with the algorithm in FSConnection::SetCodecs() we need to set all audio media formats to be 1 frame per packet */ OpalMediaFormatList allCodecs = OpalMediaFormat::GetAllRegisteredMediaFormats(); @@ -469,49 +484,6 @@ } -bool FSEndPoint::AddMediaFormat(const switch_codec_implementation_t *codec) -{ - OpalMediaType mediaType; - - switch (codec->codec_type) { - case SWITCH_CODEC_TYPE_AUDIO: - mediaType = OpalMediaType::Audio(); - break; - - case SWITCH_CODEC_TYPE_VIDEO: - mediaType = OpalMediaType::Video(); - break; - - case SWITCH_CODEC_TYPE_T38: - mediaType = OpalMediaType::Fax(); - break; - - default: - return false; - } - - OpalMediaFormat * newMediaFormat = new OpalMediaFormat(codec->iananame, - mediaType, - (RTP_DataFrame::PayloadTypes) codec->ianacode, - codec->iananame, - codec->codec_type == SWITCH_CODEC_TYPE_AUDIO, - codec->bits_per_second, - codec->encoded_bytes_per_packet, - codec->samples_per_packet, - codec->samples_per_second); - if (newMediaFormat == NULL || !newMediaFormat->IsValid()) { - return false; - } - - // Save pointer so will auto delete allocated objects on destruction. - m_globalMediaFormats.Append(newMediaFormat); - - PTRACE(2, "mod_opal\tNew OPAL media format created for FS codec: iananame=" << codec->iananame - << ", ianacode=" << codec->ianacode << ", rate=" << codec->samples_per_second); - return true; -} - - /////////////////////////////////////////////////////////////////////// FSConnection::FSConnection(OpalCall & call, FSEndPoint & endpoint) @@ -680,11 +652,8 @@ // See if we have a match by name alone switchFormat = codec->iananame; if (!switchFormat.IsValid()) { - // Add the new name to OPAL's global lists - if (m_endpoint.AddMediaFormat(codec)) { - // Now we finally have it - switchFormat = codec->iananame; - } + PTRACE(2, "mod_opal\tCould not match FS codec " << codec->iananame << " to OPAL media format."); + continue; } } Modified: freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h (original) +++ freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h Tue Jan 27 21:12:36 2009 @@ -114,11 +114,6 @@ virtual bool OnIncomingCall(OpalLocalConnection &); virtual OpalLocalConnection *CreateConnection(OpalCall &, void *); - - bool AddMediaFormat(const switch_codec_implementation_t *codec); - - private: - PList m_globalMediaFormats; }; From mikej at freeswitch.org Tue Jan 27 20:48:03 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Tue, 27 Jan 2009 22:48:03 -0600 Subject: [Freeswitch-svn] [commit] r11535 - in freeswitch/trunk/libs/spandsp: . spandsp-sim spandsp-sim/spandsp src src/msvc src/spandsp src/spandsp/private tests Message-ID: Author: mikej Date: Tue Jan 27 22:48:03 2009 New Revision: 11535 Log: update to snapshot spandsp-20090128 Added: freeswitch/trunk/libs/spandsp/spandsp.pc freeswitch/trunk/libs/spandsp/spandsp.pc.in freeswitch/trunk/libs/spandsp/src/spandsp/expose.h freeswitch/trunk/libs/spandsp/src/spandsp/private/ freeswitch/trunk/libs/spandsp/src/spandsp/private/README freeswitch/trunk/libs/spandsp/src/spandsp/private/adsi.h freeswitch/trunk/libs/spandsp/src/spandsp/private/async.h freeswitch/trunk/libs/spandsp/src/spandsp/private/at_interpreter.h freeswitch/trunk/libs/spandsp/src/spandsp/private/awgn.h freeswitch/trunk/libs/spandsp/src/spandsp/private/bell_r2_mf.h freeswitch/trunk/libs/spandsp/src/spandsp/private/bert.h freeswitch/trunk/libs/spandsp/src/spandsp/private/bitstream.h freeswitch/trunk/libs/spandsp/src/spandsp/private/dtmf.h freeswitch/trunk/libs/spandsp/src/spandsp/private/fax.h freeswitch/trunk/libs/spandsp/src/spandsp/private/fax_modems.h freeswitch/trunk/libs/spandsp/src/spandsp/private/fsk.h freeswitch/trunk/libs/spandsp/src/spandsp/private/g711.h freeswitch/trunk/libs/spandsp/src/spandsp/private/g722.h freeswitch/trunk/libs/spandsp/src/spandsp/private/g726.h freeswitch/trunk/libs/spandsp/src/spandsp/private/gsm0610.h freeswitch/trunk/libs/spandsp/src/spandsp/private/hdlc.h freeswitch/trunk/libs/spandsp/src/spandsp/private/ima_adpcm.h freeswitch/trunk/libs/spandsp/src/spandsp/private/logging.h freeswitch/trunk/libs/spandsp/src/spandsp/private/lpc10.h freeswitch/trunk/libs/spandsp/src/spandsp/private/modem_connect_tones.h freeswitch/trunk/libs/spandsp/src/spandsp/private/noise.h freeswitch/trunk/libs/spandsp/src/spandsp/private/oki_adpcm.h freeswitch/trunk/libs/spandsp/src/spandsp/private/queue.h freeswitch/trunk/libs/spandsp/src/spandsp/private/schedule.h freeswitch/trunk/libs/spandsp/src/spandsp/private/sig_tone.h freeswitch/trunk/libs/spandsp/src/spandsp/private/super_tone_rx.h freeswitch/trunk/libs/spandsp/src/spandsp/private/super_tone_tx.h freeswitch/trunk/libs/spandsp/src/spandsp/private/t30.h freeswitch/trunk/libs/spandsp/src/spandsp/private/t31.h freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_core.h freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_gateway.h freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_non_ecm_buffer.h freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_terminal.h freeswitch/trunk/libs/spandsp/src/spandsp/private/t4.h freeswitch/trunk/libs/spandsp/src/spandsp/private/time_scale.h freeswitch/trunk/libs/spandsp/src/spandsp/private/tone_detect.h freeswitch/trunk/libs/spandsp/src/spandsp/private/tone_generate.h freeswitch/trunk/libs/spandsp/src/spandsp/private/v17rx.h freeswitch/trunk/libs/spandsp/src/spandsp/private/v17tx.h freeswitch/trunk/libs/spandsp/src/spandsp/private/v22bis.h freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_rx.h freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_tx.h freeswitch/trunk/libs/spandsp/src/spandsp/private/v29rx.h freeswitch/trunk/libs/spandsp/src/spandsp/private/v29tx.h freeswitch/trunk/libs/spandsp/src/spandsp/private/v42.h freeswitch/trunk/libs/spandsp/src/spandsp/private/v42bis.h freeswitch/trunk/libs/spandsp/src/spandsp/private/v8.h Modified: freeswitch/trunk/libs/spandsp/ (props changed) freeswitch/trunk/libs/spandsp/INSTALL freeswitch/trunk/libs/spandsp/Makefile.am freeswitch/trunk/libs/spandsp/README freeswitch/trunk/libs/spandsp/configure.ac freeswitch/trunk/libs/spandsp/spandsp-sim/g1050.c freeswitch/trunk/libs/spandsp/spandsp-sim/line_model.c freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/g1050.h freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/line_model.h freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/test_utils.h freeswitch/trunk/libs/spandsp/spandsp-sim/test_utils.c freeswitch/trunk/libs/spandsp/spandsp.spec freeswitch/trunk/libs/spandsp/spandsp.spec.in freeswitch/trunk/libs/spandsp/src/Makefile.am freeswitch/trunk/libs/spandsp/src/adsi.c freeswitch/trunk/libs/spandsp/src/async.c freeswitch/trunk/libs/spandsp/src/at_interpreter.c freeswitch/trunk/libs/spandsp/src/awgn.c freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c freeswitch/trunk/libs/spandsp/src/bert.c freeswitch/trunk/libs/spandsp/src/bitstream.c freeswitch/trunk/libs/spandsp/src/complex_filters.c freeswitch/trunk/libs/spandsp/src/complex_vector_float.c freeswitch/trunk/libs/spandsp/src/complex_vector_int.c freeswitch/trunk/libs/spandsp/src/crc.c freeswitch/trunk/libs/spandsp/src/dds_float.c freeswitch/trunk/libs/spandsp/src/dds_int.c freeswitch/trunk/libs/spandsp/src/dtmf.c freeswitch/trunk/libs/spandsp/src/echo.c freeswitch/trunk/libs/spandsp/src/fax.c freeswitch/trunk/libs/spandsp/src/filter_tools.c freeswitch/trunk/libs/spandsp/src/fsk.c freeswitch/trunk/libs/spandsp/src/g711.c freeswitch/trunk/libs/spandsp/src/g722.c freeswitch/trunk/libs/spandsp/src/g726.c freeswitch/trunk/libs/spandsp/src/gsm0610_decode.c freeswitch/trunk/libs/spandsp/src/gsm0610_encode.c freeswitch/trunk/libs/spandsp/src/gsm0610_local.h freeswitch/trunk/libs/spandsp/src/gsm0610_long_term.c freeswitch/trunk/libs/spandsp/src/gsm0610_lpc.c freeswitch/trunk/libs/spandsp/src/gsm0610_preprocess.c freeswitch/trunk/libs/spandsp/src/gsm0610_rpe.c freeswitch/trunk/libs/spandsp/src/gsm0610_short_term.c freeswitch/trunk/libs/spandsp/src/hdlc.c freeswitch/trunk/libs/spandsp/src/ima_adpcm.c freeswitch/trunk/libs/spandsp/src/libspandsp.dsp freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj freeswitch/trunk/libs/spandsp/src/logging.c freeswitch/trunk/libs/spandsp/src/lpc10_analyse.c freeswitch/trunk/libs/spandsp/src/lpc10_decode.c freeswitch/trunk/libs/spandsp/src/lpc10_encode.c freeswitch/trunk/libs/spandsp/src/lpc10_placev.c freeswitch/trunk/libs/spandsp/src/lpc10_voicing.c freeswitch/trunk/libs/spandsp/src/make_modem_filter.c freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c freeswitch/trunk/libs/spandsp/src/modem_echo.c freeswitch/trunk/libs/spandsp/src/msvc/spandsp.def freeswitch/trunk/libs/spandsp/src/noise.c freeswitch/trunk/libs/spandsp/src/oki_adpcm.c freeswitch/trunk/libs/spandsp/src/playout.c freeswitch/trunk/libs/spandsp/src/plc.c freeswitch/trunk/libs/spandsp/src/power_meter.c freeswitch/trunk/libs/spandsp/src/queue.c freeswitch/trunk/libs/spandsp/src/schedule.c freeswitch/trunk/libs/spandsp/src/sig_tone.c freeswitch/trunk/libs/spandsp/src/silence_gen.c freeswitch/trunk/libs/spandsp/src/spandsp.h.in freeswitch/trunk/libs/spandsp/src/spandsp/adsi.h freeswitch/trunk/libs/spandsp/src/spandsp/async.h freeswitch/trunk/libs/spandsp/src/spandsp/at_interpreter.h freeswitch/trunk/libs/spandsp/src/spandsp/awgn.h freeswitch/trunk/libs/spandsp/src/spandsp/bell_r2_mf.h freeswitch/trunk/libs/spandsp/src/spandsp/bert.h freeswitch/trunk/libs/spandsp/src/spandsp/bit_operations.h freeswitch/trunk/libs/spandsp/src/spandsp/bitstream.h freeswitch/trunk/libs/spandsp/src/spandsp/complex_vector_float.h freeswitch/trunk/libs/spandsp/src/spandsp/dtmf.h freeswitch/trunk/libs/spandsp/src/spandsp/fax.h freeswitch/trunk/libs/spandsp/src/spandsp/fax_modems.h freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h freeswitch/trunk/libs/spandsp/src/spandsp/g711.h freeswitch/trunk/libs/spandsp/src/spandsp/g722.h freeswitch/trunk/libs/spandsp/src/spandsp/g726.h freeswitch/trunk/libs/spandsp/src/spandsp/gsm0610.h freeswitch/trunk/libs/spandsp/src/spandsp/hdlc.h freeswitch/trunk/libs/spandsp/src/spandsp/ima_adpcm.h freeswitch/trunk/libs/spandsp/src/spandsp/logging.h freeswitch/trunk/libs/spandsp/src/spandsp/lpc10.h freeswitch/trunk/libs/spandsp/src/spandsp/modem_connect_tones.h freeswitch/trunk/libs/spandsp/src/spandsp/noise.h freeswitch/trunk/libs/spandsp/src/spandsp/oki_adpcm.h freeswitch/trunk/libs/spandsp/src/spandsp/queue.h freeswitch/trunk/libs/spandsp/src/spandsp/schedule.h freeswitch/trunk/libs/spandsp/src/spandsp/sig_tone.h freeswitch/trunk/libs/spandsp/src/spandsp/super_tone_rx.h freeswitch/trunk/libs/spandsp/src/spandsp/super_tone_tx.h freeswitch/trunk/libs/spandsp/src/spandsp/t30.h freeswitch/trunk/libs/spandsp/src/spandsp/t30_api.h freeswitch/trunk/libs/spandsp/src/spandsp/t31.h freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h freeswitch/trunk/libs/spandsp/src/spandsp/t38_gateway.h freeswitch/trunk/libs/spandsp/src/spandsp/t38_non_ecm_buffer.h freeswitch/trunk/libs/spandsp/src/spandsp/t38_terminal.h freeswitch/trunk/libs/spandsp/src/spandsp/t4.h freeswitch/trunk/libs/spandsp/src/spandsp/telephony.h freeswitch/trunk/libs/spandsp/src/spandsp/time_scale.h freeswitch/trunk/libs/spandsp/src/spandsp/tone_detect.h freeswitch/trunk/libs/spandsp/src/spandsp/tone_generate.h freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h freeswitch/trunk/libs/spandsp/src/spandsp/v42.h freeswitch/trunk/libs/spandsp/src/spandsp/v42bis.h freeswitch/trunk/libs/spandsp/src/spandsp/v8.h freeswitch/trunk/libs/spandsp/src/spandsp/vector_float.h freeswitch/trunk/libs/spandsp/src/spandsp/version.h freeswitch/trunk/libs/spandsp/src/super_tone_rx.c freeswitch/trunk/libs/spandsp/src/super_tone_tx.c freeswitch/trunk/libs/spandsp/src/t30.c freeswitch/trunk/libs/spandsp/src/t30_api.c freeswitch/trunk/libs/spandsp/src/t30_logging.c freeswitch/trunk/libs/spandsp/src/t31.c freeswitch/trunk/libs/spandsp/src/t35.c freeswitch/trunk/libs/spandsp/src/t38_core.c freeswitch/trunk/libs/spandsp/src/t38_gateway.c freeswitch/trunk/libs/spandsp/src/t38_non_ecm_buffer.c freeswitch/trunk/libs/spandsp/src/t38_terminal.c freeswitch/trunk/libs/spandsp/src/t4.c freeswitch/trunk/libs/spandsp/src/testcpuid.c freeswitch/trunk/libs/spandsp/src/time_scale.c freeswitch/trunk/libs/spandsp/src/tone_detect.c freeswitch/trunk/libs/spandsp/src/tone_generate.c freeswitch/trunk/libs/spandsp/src/v17rx.c freeswitch/trunk/libs/spandsp/src/v17tx.c freeswitch/trunk/libs/spandsp/src/v22bis_rx.c freeswitch/trunk/libs/spandsp/src/v22bis_tx.c freeswitch/trunk/libs/spandsp/src/v27ter_rx.c freeswitch/trunk/libs/spandsp/src/v27ter_tx.c freeswitch/trunk/libs/spandsp/src/v29rx.c freeswitch/trunk/libs/spandsp/src/v29tx.c freeswitch/trunk/libs/spandsp/src/v42.c freeswitch/trunk/libs/spandsp/src/v42bis.c freeswitch/trunk/libs/spandsp/src/v8.c freeswitch/trunk/libs/spandsp/src/vector_float.c freeswitch/trunk/libs/spandsp/src/vector_int.c freeswitch/trunk/libs/spandsp/tests/Makefile.am freeswitch/trunk/libs/spandsp/tests/adsi_tests.c freeswitch/trunk/libs/spandsp/tests/async_tests.c freeswitch/trunk/libs/spandsp/tests/at_interpreter_tests.c freeswitch/trunk/libs/spandsp/tests/awgn_tests.c freeswitch/trunk/libs/spandsp/tests/bell_mf_rx_tests.c freeswitch/trunk/libs/spandsp/tests/bell_mf_tx_tests.c freeswitch/trunk/libs/spandsp/tests/bert_tests.c freeswitch/trunk/libs/spandsp/tests/complex_tests.c freeswitch/trunk/libs/spandsp/tests/complex_vector_float_tests.c freeswitch/trunk/libs/spandsp/tests/dc_restore_tests.c freeswitch/trunk/libs/spandsp/tests/dtmf_rx_tests.c freeswitch/trunk/libs/spandsp/tests/dtmf_tx_tests.c freeswitch/trunk/libs/spandsp/tests/echo_tests.c freeswitch/trunk/libs/spandsp/tests/fax_decode.c freeswitch/trunk/libs/spandsp/tests/fax_tester.c freeswitch/trunk/libs/spandsp/tests/fax_tests.c freeswitch/trunk/libs/spandsp/tests/fsk_tests.c freeswitch/trunk/libs/spandsp/tests/g1050_tests.c freeswitch/trunk/libs/spandsp/tests/g168_tests.c freeswitch/trunk/libs/spandsp/tests/g711_tests.c freeswitch/trunk/libs/spandsp/tests/g722_tests.c freeswitch/trunk/libs/spandsp/tests/g726_tests.c freeswitch/trunk/libs/spandsp/tests/gsm0610_tests.c freeswitch/trunk/libs/spandsp/tests/hdlc_tests.c freeswitch/trunk/libs/spandsp/tests/ima_adpcm_tests.c freeswitch/trunk/libs/spandsp/tests/line_model_tests.c freeswitch/trunk/libs/spandsp/tests/logging_tests.c freeswitch/trunk/libs/spandsp/tests/lpc10_tests.c freeswitch/trunk/libs/spandsp/tests/make_g168_css.c freeswitch/trunk/libs/spandsp/tests/modem_connect_tones_tests.c freeswitch/trunk/libs/spandsp/tests/modem_echo_tests.c freeswitch/trunk/libs/spandsp/tests/noise_tests.c freeswitch/trunk/libs/spandsp/tests/oki_adpcm_tests.c freeswitch/trunk/libs/spandsp/tests/playout_tests.c freeswitch/trunk/libs/spandsp/tests/power_meter_tests.c freeswitch/trunk/libs/spandsp/tests/queue_tests.c freeswitch/trunk/libs/spandsp/tests/r2_mf_rx_tests.c freeswitch/trunk/libs/spandsp/tests/r2_mf_tx_tests.c freeswitch/trunk/libs/spandsp/tests/regression_tests.sh freeswitch/trunk/libs/spandsp/tests/rfc2198_sim_tests.c freeswitch/trunk/libs/spandsp/tests/schedule_tests.c freeswitch/trunk/libs/spandsp/tests/sig_tone_tests.c freeswitch/trunk/libs/spandsp/tests/super_tone_rx_tests.c freeswitch/trunk/libs/spandsp/tests/super_tone_tx_tests.c freeswitch/trunk/libs/spandsp/tests/t31_tests.c freeswitch/trunk/libs/spandsp/tests/t38_core_tests.c freeswitch/trunk/libs/spandsp/tests/t38_gateway_tests.c freeswitch/trunk/libs/spandsp/tests/t38_gateway_to_terminal_tests.c freeswitch/trunk/libs/spandsp/tests/t38_non_ecm_buffer_tests.c freeswitch/trunk/libs/spandsp/tests/t38_terminal_tests.c freeswitch/trunk/libs/spandsp/tests/t38_terminal_to_gateway_tests.c freeswitch/trunk/libs/spandsp/tests/t4_tests.c freeswitch/trunk/libs/spandsp/tests/time_scale_tests.c freeswitch/trunk/libs/spandsp/tests/tone_detect_tests.c freeswitch/trunk/libs/spandsp/tests/tone_generate_tests.c freeswitch/trunk/libs/spandsp/tests/tsb85_tests.c freeswitch/trunk/libs/spandsp/tests/v17_tests.c freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c freeswitch/trunk/libs/spandsp/tests/v29_tests.c freeswitch/trunk/libs/spandsp/tests/v42_tests.c freeswitch/trunk/libs/spandsp/tests/v42bis_tests.c freeswitch/trunk/libs/spandsp/tests/v8_tests.c freeswitch/trunk/libs/spandsp/tests/vector_float_tests.c Modified: freeswitch/trunk/libs/spandsp/INSTALL ============================================================================== --- freeswitch/trunk/libs/spandsp/INSTALL (original) +++ freeswitch/trunk/libs/spandsp/INSTALL Tue Jan 27 22:48:03 2009 @@ -1,3 +1,76 @@ +Building and installing spandsp +=============================== + +A number of distributions include spandsp, but they usually use older versions +of the library, which lack a lot of the features of the current version. Before +installing spandsp, make sure there are no older versions already on your +machine. Make sure libtiff is installed on your machine. Versions 3.5.7, +3.6.0, 3.7.1 and 3.8.2 seem to work OK. There have been several bugs related +to FAX document handling in some versions of libtiff. Also, some people have +had trouble using spandsp because they had more than one version of libtiff +on their machine. Take care with this. If you are using an RPM based system, +such as RedHat or Fedora, you will need the libtiff and libtiff-devel RPMs +installed to be able to build spandsp. + +You can use the usual: + + ./configure + make + make install + +process to build the spandsp library. Note that if you use configure in this +way, the software will be installed in /usr/local. In this case make sure your +/etc/ld.so.conf file has an entry for /usr/local/lib. If you wish the software +to be installed in /usr, you should build it with the commands. + + ./configure --prefix=/usr + make + make install + + +Building the programming documentation +====================================== + +If you wish to build the programming documentation for spandsp, configure +spandsp with: + + ./configure --enable-doc + +You need doxygen installed on your machine. + + +Building the test suite +======================= + +Most sections of the spandsp library have an accompanying test program in the +test directory. If you wish to build these test programs, configure spandsp +with: + + ./configure --enable-tests + +To build these tests you will need libaudiofile installed on your machine. To +build the modem tests, with the GUI monitoring feature you will need Fltk 1.1.4 +or later, an audio meter module and a cartesian plotting module. Fltk may be +obtained from http://www.fltk.org. The audio meter module may be obtained from +http://www.soft-switch.org/downloads/Fl_Audio_Meter.tgz . The cartesian plotting +module may be obtained from http://134.226.68.29/fltk. However, there is no +suitable makefile supplied with that. You can find a version at +http://www.soft-switch.org/downloads/Fl_Cartesian.tgz which will build as a +Linux library. The actual code in both these versions is identical. +You need to have Fltk 1.1.4 or later installed before building the plotting +library. + + +Applications +============ + +Applications support for spandsp is built into packages such as Callweaver, +FreeSwitch and iaxmodem. Code to add spandsp based FAX support to Asterisk may +be found at http://sourceforge.net/projects/agx-ast-addons. + + + + Basic Installation ================== Modified: freeswitch/trunk/libs/spandsp/Makefile.am ============================================================================== --- freeswitch/trunk/libs/spandsp/Makefile.am (original) +++ freeswitch/trunk/libs/spandsp/Makefile.am Tue Jan 27 22:48:03 2009 @@ -16,7 +16,7 @@ ## License along with this program; if not, write to the Free Software ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ## -## $Id: Makefile.am,v 1.44 2008/09/28 14:36:25 steveu Exp $ +## $Id: Makefile.am,v 1.45 2008/11/28 12:41:25 steveu Exp $ AM_CFLAGS = $(COMP_VENDOR_CFLAGS) AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS) @@ -28,6 +28,7 @@ EXTRA_DIST = autogen.sh \ DueDiligence \ README.testdata \ + spandsp.pc \ spandsp.spec \ wrapper.xsl \ unpack_g722_data.sh \ @@ -60,6 +61,9 @@ DIST_SUBDIRS = src doc spandsp-sim tests test-data +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = spandsp.pc + faq: faq.xml cd faq ; xsltproc ../wrapper.xsl ../faq.xml Modified: freeswitch/trunk/libs/spandsp/README ============================================================================== --- freeswitch/trunk/libs/spandsp/README (original) +++ freeswitch/trunk/libs/spandsp/README Tue Jan 27 22:48:03 2009 @@ -1,4 +1,4 @@ -spandsp 0.0.4 - A DSP library for telephony +spandsp 0.0.5 - A DSP library for telephony ------------------------------------------- SpanDSP is a library of DSP functions for telephony, in the 8000 sample per @@ -26,8 +26,8 @@ fftw (and fftw-devel) is required to build the test suite. Version 2 or 3 of FFTW may be used. Spandsp adapts to the differences between them. -fltk (and fltk-devel), Fl_Cartesian and Fl_Audio_Meter are required to build the -test suite with GUI interfaces for some of the tests. The tests will build +fltk (and fltk-devel), Fl_Cartesian and Fl_Audio_Meter are required to build +the test suite with GUI interfaces for some of the tests. The tests will build without these packages, but the GUI features will not be available. Fl_Cartesian and Fl_Audio_Meter can be downloaded from http://www.soft-switch.org/downloads. Modified: freeswitch/trunk/libs/spandsp/configure.ac ============================================================================== --- freeswitch/trunk/libs/spandsp/configure.ac (original) +++ freeswitch/trunk/libs/spandsp/configure.ac Tue Jan 27 22:48:03 2009 @@ -16,7 +16,7 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # -# $Id: configure.ac,v 1.59 2008/09/16 15:21:52 steveu Exp $ +# $Id: configure.ac,v 1.64 2009/01/17 08:16:08 steveu Exp $ # @start 1 @@ -30,7 +30,7 @@ SPANDSP_MAJOR_VERSION=0 SPANDSP_MINOR_VERSION=0 -SPANDSP_MICRO_VERSION=5 +SPANDSP_MICRO_VERSION=6 SPANDSP_LT_CURRENT=1 SPANDSP_LT_REVISION=0 @@ -49,7 +49,7 @@ AM_INIT_AUTOMAKE($PACKAGE, $VERSION) AC_CANONICAL_HOST -AC_CANONICAL_BUILD +#AC_CANONICAL_BUILD AC_PROG_CC AC_PROG_CXX AC_PROG_GCC_TRADITIONAL @@ -237,7 +237,11 @@ then case "${host}" in x86_64-*) + # X86_64 Linux machines may have both 64 bit and 32 bit libraries. We need to choose the right set AX_CHECK_REAL_FILE([${prefix}/lib64], libdir='$(exec_prefix)/lib64') + AX_CHECK_REAL_FILE([/usr/X11R6/lib64], [TESTLIBS="$TESTLIBS -L/usr/X11R6/lib64"], AC_CHECK_FILE([/usr/X11R6/lib], [TESTLIBS="$TESTLIBS -L/usr/X11R6/lib"])) + # The very oldest AMD 64 bit chips support SSE2, SSE and MMX + enable_sse2="yes" ;; esac fi @@ -258,16 +262,6 @@ AC_SEARCH_LIBS([logf], [m], AC_DEFINE([HAVE_LOGF], [1], [Define to 1 if you have the logf() function.])) AC_SEARCH_LIBS([log10f], [m], AC_DEFINE([HAVE_LOG10F], [1], [Define to 1 if you have the log10f() function.])) -if test "${build}" == "${host}" -then - case "${host}" in - x86_64-*) - # X86_64 Linux machines may have both 64 bit and 32 bit libraries. We need to choose the right set - AX_CHECK_REAL_FILE([/usr/X11R6/lib64], [TESTLIBS="$TESTLIBS -L/usr/X11R6/lib64"], AC_CHECK_FILE([/usr/X11R6/lib], [TESTLIBS="$TESTLIBS -L/usr/X11R6/lib"])) - ;; - esac -fi - # Checks for libraries. AC_CHECK_LIB([tiff], [TIFFOpen], , AC_MSG_ERROR("Can't build without libtiff (does your system require a libtiff-devel package?)"), -lm) @@ -373,57 +367,37 @@ [AC_DEFINE([SPANDSP_MISALIGNED_ACCESS_FAILS], [1], [Do not expect a misaligned memory access to work correctly]) SPANDSP_MISALIGNED_ACCESS_FAILS="#define SPANDSP_MISALIGNED_ACCESS_FAILS 1"], [SPANDSP_MISALIGNED_ACCESS_FAILS="#undef SPANDSP_MISALIGNED_ACCESS_FAILS"]) -if test "$enable_mmx" = "yes" ; then - AC_DEFINE([SPANDSP_USE_MMX], [1], [Use the MMX instruction set (i386 and x86_64 only).]) + +if test "$enable_sse5" = "yes" ; then + AC_DEFINE([SPANDSP_USE_SSE5], [1], [Use the SSE5 instruction set (i386 and x86_64 only).]) + enable_sse4a="yes" fi -if test "$enable_sse" = "yes" ; then - AC_DEFINE([SPANDSP_USE_MMX], [1], [Use the MMX instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE], [1], [Use the SSE instruction set (i386 and x86_64 only).]) +if test "$enable_sse4a" = "yes" ; then + AC_DEFINE([SPANDSP_USE_SSE4A], [1], [Use the SSE4A instruction set (i386 and x86_64 only).]) + enable_sse4_2="yes" fi -if test "$enable_sse2" = "yes" ; then - AC_DEFINE([SPANDSP_USE_MMX], [1], [Use the MMX instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE], [1], [Use the SSE instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE2], [1], [Use the SSE2 instruction set (i386 and x86_64 only).]) +if test "$enable_sse4_2" = "yes" ; then + AC_DEFINE([SPANDSP_USE_SSE4_2], [1], [Use the SSE4.2 instruction set (i386 and x86_64 only).]) + enable_sse4_1="yes" fi -if test "$enable_sse3" = "yes" ; then - AC_DEFINE([SPANDSP_USE_MMX], [1], [Use the MMX instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE], [1], [Use the SSE instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE2], [1], [Use the SSE2 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE3], [1], [Use the SSE3 instruction set (i386 and x86_64 only).]) +if test "$enable_sse4_1" = "yes" ; then AC_DEFINE([SPANDSP_USE_SSE4_1], [1], [Use the SSE4.1 instruction set (i386 and x86_64 only).]) + enable_sse3="yes" fi -if test "$enable_sse4_1" = "yes" ; then - AC_DEFINE([SPANDSP_USE_MMX], [1], [Use the MMX instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE], [1], [Use the SSE instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE2], [1], [Use the SSE2 instruction set (i386 and x86_64 only).]) +if test "$enable_sse3" = "yes" ; then AC_DEFINE([SPANDSP_USE_SSE3], [1], [Use the SSE3 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE4_1], [1], [Use the SSE4.1 instruction set (i386 and x86_64 only).]) + enable_sse2="yes" fi -if test "$enable_sse4_2" = "yes" ; then - AC_DEFINE([SPANDSP_USE_MMX], [1], [Use the MMX instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE], [1], [Use the SSE instruction set (i386 and x86_64 only).]) +if test "$enable_sse2" = "yes" ; then AC_DEFINE([SPANDSP_USE_SSE2], [1], [Use the SSE2 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE3], [1], [Use the SSE3 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE4_1], [1], [Use the SSE4.1 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE4_2], [1], [Use the SSE4.2 instruction set (i386 and x86_64 only).]) + enable_sse="yes" fi -if test "$enable_sse4a" = "yes" ; then - AC_DEFINE([SPANDSP_USE_MMX], [1], [Use the MMX instruction set (i386 and x86_64 only).]) +if test "$enable_sse" = "yes" ; then AC_DEFINE([SPANDSP_USE_SSE], [1], [Use the SSE instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE2], [1], [Use the SSE2 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE3], [1], [Use the SSE3 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE4_1], [1], [Use the SSE4.1 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE4_2], [1], [Use the SSE4.2 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE4A], [1], [Use the SSE4A instruction set (i386 and x86_64 only).]) + enable_mmx="yes" fi -if test "$enable_sse5" = "yes" ; then +if test "$enable_mmx" = "yes" ; then AC_DEFINE([SPANDSP_USE_MMX], [1], [Use the MMX instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE], [1], [Use the SSE instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE2], [1], [Use the SSE2 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE3], [1], [Use the SSE3 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE4_1], [1], [Use the SSE4.1 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE4_2], [1], [Use the SSE4.2 instruction set (i386 and x86_64 only).]) - AC_DEFINE([SPANDSP_USE_SSE5], [1], [Use the SSE5 instruction set (i386 and x86_64 only).]) fi AC_SUBST(CC_FOR_BUILD) @@ -451,6 +425,7 @@ test-data/itu/fax/Makefile test-data/local/Makefile tests/Makefile + spandsp.pc spandsp.spec]) AC_OUTPUT Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/g1050.c ============================================================================== --- freeswitch/trunk/libs/spandsp/spandsp-sim/g1050.c (original) +++ freeswitch/trunk/libs/spandsp/spandsp-sim/g1050.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: g1050.c,v 1.10 2008/07/02 14:48:25 steveu Exp $ + * $Id: g1050.c,v 1.11 2009/01/16 15:13:16 steveu Exp $ */ #if defined(HAVE_CONFIG_H) @@ -142,141 +142,176 @@ } }; -g1050_channel_speeds_t g1050_speed_patterns[133] = +g1050_channel_speeds_t g1050_speed_patterns[168] = { - { 4000000, 0, 128000, 768000, 0, 4000000, 0, 128000, 768000, 0, 2.2500}, - { 4000000, 0, 128000, 768000, 0, 20000000, 0, 128000, 768000, 0, 1.5000}, - { 20000000, 0, 128000, 768000, 0, 20000000, 0, 128000, 768000, 0, 0.2500}, - { 4000000, 0, 128000, 1536000, 0, 4000000, 0, 384000, 768000, 0, 3.4125}, - { 4000000, 0, 128000, 1536000, 0, 20000000, 0, 384000, 768000, 0, 2.6750}, - { 20000000, 0, 128000, 1536000, 0, 20000000, 0, 384000, 768000, 0, 0.5125}, - { 4000000, 0, 128000, 3000000, 0, 4000000, 0, 384000, 768000, 0, 0.7875}, - { 4000000, 0, 128000, 3000000, 0, 20000000, 0, 384000, 768000, 0, 0.6750}, - { 20000000, 0, 128000, 3000000, 0, 20000000, 0, 384000, 768000, 0, 0.1375}, - { 4000000, 0, 384000, 768000, 0, 4000000, 0, 128000, 1536000, 0, 3.4125}, - { 4000000, 0, 384000, 768000, 0, 20000000, 0, 128000, 1536000, 0, 2.6750}, - { 20000000, 0, 384000, 768000, 0, 20000000, 0, 128000, 1536000, 0, 0.5125}, - { 4000000, 0, 384000, 1536000, 0, 4000000, 0, 384000, 1536000, 0, 5.1756}, - { 4000000, 0, 384000, 1536000, 0, 20000000, 0, 384000, 1536000, 0, 4.6638}, - { 20000000, 0, 384000, 1536000, 0, 20000000, 0, 384000, 1536000, 0, 1.0506}, - { 4000000, 0, 384000, 3000000, 0, 4000000, 0, 384000, 1536000, 0, 1.1944}, - { 4000000, 0, 384000, 3000000, 0, 20000000, 0, 384000, 1536000, 0, 1.1638}, - { 20000000, 0, 384000, 3000000, 0, 20000000, 0, 384000, 1536000, 0, 0.2819}, - { 4000000, 0, 384000, 768000, 0, 4000000, 0, 128000, 3000000, 0, 0.7875}, - { 4000000, 0, 384000, 768000, 0, 20000000, 0, 128000, 3000000, 0, 0.6750}, - { 20000000, 0, 384000, 768000, 0, 20000000, 0, 128000, 3000000, 0, 0.1375}, - { 4000000, 0, 384000, 1536000, 0, 4000000, 0, 384000, 3000000, 0, 1.1944}, - { 4000000, 0, 384000, 1536000, 0, 20000000, 0, 384000, 3000000, 0, 1.1638}, - { 20000000, 0, 384000, 1536000, 0, 20000000, 0, 384000, 3000000, 0, 0.2819}, - { 4000000, 0, 384000, 3000000, 0, 4000000, 0, 384000, 3000000, 0, 0.2756}, - { 4000000, 0, 384000, 3000000, 0, 20000000, 0, 384000, 3000000, 0, 0.2888}, - { 20000000, 0, 384000, 3000000, 0, 20000000, 0, 384000, 3000000, 0, 0.0756}, - { 4000000, 0, 128000, 1536000, 0, 100000000, 0, 384000, 768000, 0, 1.8000}, - { 20000000, 0, 128000, 1536000, 0, 100000000, 0, 384000, 768000, 0, 0.6000}, - { 4000000, 0, 128000, 3000000, 0, 100000000, 0, 384000, 768000, 0, 0.6750}, - { 20000000, 0, 128000, 3000000, 0, 100000000, 0, 384000, 768000, 0, 0.2250}, - { 4000000, 0, 128000, 1536000, 0, 4000000, 0, 768000, 1536000, 0, 0.6000}, - { 4000000, 0, 128000, 1536000, 0, 20000000, 0, 768000, 1536000, 0, 0.8000}, - { 4000000, 0, 128000, 1536000, 0, 100000000, 0, 768000, 1536000, 0, 1.8000}, - { 20000000, 0, 128000, 1536000, 0, 20000000, 0, 768000, 1536000, 0, 0.2000}, - { 20000000, 0, 128000, 1536000, 0, 100000000, 0, 768000, 1536000, 0, 0.6000}, - { 4000000, 0, 128000, 43000000, 0, 4000000, 0, 768000, 43000000, 0, 0.0750}, - { 4000000, 0, 128000, 43000000, 0, 20000000, 0, 768000, 43000000, 0, 0.1000}, - { 4000000, 0, 128000, 43000000, 0, 100000000, 0, 768000, 43000000, 0, 0.2250}, - { 20000000, 0, 128000, 43000000, 0, 20000000, 0, 768000, 43000000, 0, 0.0250}, - { 20000000, 0, 128000, 43000000, 0, 100000000, 0, 768000, 43000000, 0, 0.0750}, - { 4000000, 0, 384000, 1536000, 0, 100000000, 0, 384000, 1536000, 0, 5.4600}, - { 20000000, 0, 384000, 1536000, 0, 100000000, 0, 384000, 1536000, 0, 2.4600}, - { 4000000, 0, 384000, 3000000, 0, 100000000, 0, 384000, 1536000, 0, 1.6538}, - { 20000000, 0, 384000, 3000000, 0, 100000000, 0, 384000, 1536000, 0, 0.7913}, - { 4000000, 0, 384000, 1536000, 0, 4000000, 0, 1536000, 1536000, 0, 0.9100}, - { 4000000, 0, 384000, 1536000, 0, 20000000, 0, 1536000, 1536000, 0, 1.3200}, - { 4000000, 0, 384000, 1536000, 0, 100000000, 0, 1536000, 1536000, 0, 3.2100}, - { 20000000, 0, 384000, 1536000, 0, 20000000, 0, 1536000, 1536000, 0, 0.4100}, - { 20000000, 0, 384000, 1536000, 0, 100000000, 0, 1536000, 1536000, 0, 1.7100}, - { 4000000, 0, 384000, 43000000, 0, 4000000, 0, 1536000, 43000000, 0, 0.1138}, - { 4000000, 0, 384000, 43000000, 0, 20000000, 0, 1536000, 43000000, 0, 0.1650}, - { 4000000, 0, 384000, 43000000, 0, 100000000, 0, 1536000, 43000000, 0, 0.4013}, - { 20000000, 0, 384000, 43000000, 0, 20000000, 0, 1536000, 43000000, 0, 0.0513}, - { 20000000, 0, 384000, 43000000, 0, 100000000, 0, 1536000, 43000000, 0, 0.2138}, - { 4000000, 0, 384000, 1536000, 0, 100000000, 0, 384000, 3000000, 0, 1.6538}, - { 20000000, 0, 384000, 1536000, 0, 100000000, 0, 384000, 3000000, 0, 0.7913}, - { 4000000, 0, 384000, 3000000, 0, 100000000, 0, 384000, 3000000, 0, 0.4725}, - { 20000000, 0, 384000, 3000000, 0, 100000000, 0, 384000, 3000000, 0, 0.2475}, - { 4000000, 0, 384000, 1536000, 0, 4000000, 0, 1536000, 3000000, 0, 0.2100}, - { 4000000, 0, 384000, 1536000, 0, 20000000, 0, 1536000, 3000000, 0, 0.3200}, - { 4000000, 0, 384000, 1536000, 0, 100000000, 0, 1536000, 3000000, 0, 0.8100}, - { 20000000, 0, 384000, 1536000, 0, 20000000, 0, 1536000, 3000000, 0, 0.1100}, - { 20000000, 0, 384000, 1536000, 0, 100000000, 0, 1536000, 3000000, 0, 0.5100}, - { 4000000, 0, 384000, 43000000, 0, 4000000, 0, 3000000, 43000000, 0, 0.0263}, - { 4000000, 0, 384000, 43000000, 0, 20000000, 0, 3000000, 43000000, 0, 0.0400}, - { 4000000, 0, 384000, 43000000, 0, 100000000, 0, 3000000, 43000000, 0, 0.1013}, - { 20000000, 0, 384000, 43000000, 0, 20000000, 0, 3000000, 43000000, 0, 0.0138}, - { 20000000, 0, 384000, 43000000, 0, 100000000, 0, 3000000, 43000000, 0, 0.0638}, - { 4000000, 0, 384000, 768000, 0, 100000000, 0, 128000, 1536000, 0, 1.8000}, - { 20000000, 0, 384000, 768000, 0, 100000000, 0, 128000, 1536000, 0, 0.6000}, - { 4000000, 0, 384000, 768000, 0, 100000000, 0, 128000, 3000000, 0, 0.6750}, - { 20000000, 0, 384000, 768000, 0, 100000000, 0, 128000, 3000000, 0, 0.2250}, - { 4000000, 0, 768000, 1536000, 0, 4000000, 0, 128000, 1536000, 0, 0.6000}, - { 4000000, 0, 768000, 1536000, 0, 20000000, 0, 128000, 1536000, 0, 0.8000}, - { 20000000, 0, 768000, 1536000, 0, 20000000, 0, 128000, 1536000, 0, 0.2000}, - { 4000000, 0, 768000, 1536000, 0, 100000000, 0, 128000, 1536000, 0, 1.8000}, - { 20000000, 0, 768000, 1536000, 0, 100000000, 0, 128000, 1536000, 0, 0.6000}, - { 4000000, 0, 1536000, 1536000, 0, 4000000, 0, 384000, 1536000, 0, 0.9100}, - { 4000000, 0, 1536000, 1536000, 0, 20000000, 0, 384000, 1536000, 0, 1.3200}, - { 20000000, 0, 1536000, 1536000, 0, 20000000, 0, 384000, 1536000, 0, 0.4100}, - { 4000000, 0, 1536000, 1536000, 0, 100000000, 0, 384000, 1536000, 0, 3.2100}, - { 20000000, 0, 1536000, 1536000, 0, 100000000, 0, 384000, 1536000, 0, 1.7100}, - { 4000000, 0, 1536000, 3000000, 0, 4000000, 0, 384000, 1536000, 0, 0.2100}, - { 4000000, 0, 1536000, 3000000, 0, 20000000, 0, 384000, 1536000, 0, 0.3200}, - { 20000000, 0, 1536000, 3000000, 0, 20000000, 0, 384000, 1536000, 0, 0.1100}, - { 4000000, 0, 1536000, 3000000, 0, 100000000, 0, 384000, 1536000, 0, 0.8100}, - { 20000000, 0, 1536000, 3000000, 0, 100000000, 0, 384000, 1536000, 0, 0.5100}, - { 4000000, 0, 768000, 43000000, 0, 4000000, 0, 128000, 43000000, 0, 0.0750}, - { 4000000, 0, 768000, 43000000, 0, 20000000, 0, 128000, 43000000, 0, 0.1000}, - { 20000000, 0, 768000, 43000000, 0, 20000000, 0, 128000, 43000000, 0, 0.0250}, - { 4000000, 0, 768000, 43000000, 0, 100000000, 0, 128000, 43000000, 0, 0.2250}, - { 20000000, 0, 768000, 43000000, 0, 100000000, 0, 128000, 43000000, 0, 0.0750}, - { 4000000, 0, 1536000, 43000000, 0, 4000000, 0, 384000, 43000000, 0, 0.1138}, - { 4000000, 0, 1536000, 43000000, 0, 20000000, 0, 384000, 43000000, 0, 0.1650}, - { 20000000, 0, 1536000, 43000000, 0, 20000000, 0, 384000, 43000000, 0, 0.0513}, - { 4000000, 0, 1536000, 43000000, 0, 100000000, 0, 384000, 43000000, 0, 0.4013}, - { 20000000, 0, 1536000, 43000000, 0, 100000000, 0, 384000, 43000000, 0, 0.2138}, - { 4000000, 0, 3000000, 43000000, 0, 4000000, 0, 384000, 43000000, 0, 0.0263}, - { 4000000, 0, 3000000, 43000000, 0, 20000000, 0, 384000, 43000000, 0, 0.0400}, - { 20000000, 0, 3000000, 43000000, 0, 20000000, 0, 384000, 43000000, 0, 0.0138}, - { 4000000, 0, 3000000, 43000000, 0, 100000000, 0, 384000, 43000000, 0, 0.1013}, - { 20000000, 0, 3000000, 43000000, 0, 100000000, 0, 384000, 43000000, 0, 0.0638}, - {100000000, 0, 384000, 1536000, 0, 100000000, 0, 384000, 1536000, 0, 1.4400}, - {100000000, 0, 384000, 3000000, 0, 100000000, 0, 384000, 1536000, 0, 0.5400}, - {100000000, 0, 384000, 1536000, 0, 100000000, 0, 1536000, 1536000, 0, 1.4400}, - {100000000, 0, 384000, 43000000, 0, 100000000, 0, 1536000, 43000000, 0, 0.1800}, - {100000000, 0, 384000, 1536000, 0, 100000000, 0, 384000, 3000000, 0, 0.5400}, - {100000000, 0, 384000, 3000000, 0, 100000000, 0, 384000, 3000000, 0, 0.2025}, - {100000000, 0, 384000, 1536000, 0, 100000000, 0, 1536000, 3000000, 0, 0.5400}, - {100000000, 0, 384000, 43000000, 0, 100000000, 0, 3000000, 43000000, 0, 0.0675}, - {100000000, 0, 1536000, 1536000, 0, 100000000, 0, 384000, 1536000, 0, 1.4400}, - {100000000, 0, 1536000, 3000000, 0, 100000000, 0, 384000, 1536000, 0, 0.5400}, - { 4000000, 0, 1536000, 1536000, 0, 4000000, 0, 1536000, 1536000, 0, 0.1600}, - { 4000000, 0, 1536000, 1536000, 0, 20000000, 0, 1536000, 1536000, 0, 0.3200}, - { 4000000, 0, 1536000, 1536000, 0, 100000000, 0, 1536000, 1536000, 0, 0.9600}, - { 20000000, 0, 1536000, 1536000, 0, 20000000, 0, 1536000, 1536000, 0, 0.1600}, - { 20000000, 0, 1536000, 1536000, 0, 100000000, 0, 1536000, 1536000, 0, 0.9600}, - {100000000, 0, 1536000, 1536000, 0, 100000000, 0, 1536000, 1536000, 0, 1.4400}, - { 4000000, 0, 1536000, 43000000, 0, 4000000, 0, 1536000, 43000000, 0, 0.0400}, - { 4000000, 0, 1536000, 43000000, 0, 20000000, 0, 1536000, 43000000, 0, 0.0800}, - { 4000000, 0, 1536000, 43000000, 0, 100000000, 0, 1536000, 43000000, 0, 0.2400}, - { 20000000, 0, 1536000, 43000000, 0, 20000000, 0, 1536000, 43000000, 0, 0.0400}, - { 20000000, 0, 1536000, 43000000, 0, 100000000, 0, 1536000, 43000000, 0, 0.2400}, - {100000000, 0, 1536000, 43000000, 0, 100000000, 0, 1536000, 43000000, 0, 0.3600}, - {100000000, 0, 1536000, 43000000, 0, 100000000, 0, 384000, 43000000, 0, 0.1800}, - {100000000, 0, 3000000, 43000000, 0, 100000000, 0, 384000, 43000000, 0, 0.0675}, - { 4000000, 0, 43000000, 43000000, 0, 4000000, 0, 43000000, 43000000, 0, 0.0025}, - { 4000000, 0, 43000000, 43000000, 0, 20000000, 0, 43000000, 43000000, 0, 0.0050}, - { 4000000, 0, 43000000, 43000000, 0, 100000000, 0, 43000000, 43000000, 0, 0.0150}, - { 20000000, 0, 43000000, 43000000, 0, 20000000, 0, 43000000, 43000000, 0, 0.0025}, - { 20000000, 0, 43000000, 43000000, 0, 100000000, 0, 43000000, 43000000, 0, 0.0150}, - {100000000, 0, 43000000, 43000000, 0, 100000000, 0, 43000000, 43000000, 0, 0.0225} + { 4000000, 0, 128000, 768000, 0, 4000000, 0, 128000, 768000, 0, 0.360}, + { 4000000, 0, 128000, 768000, 0, 20000000, 0, 128000, 768000, 0, 0.720}, + { 4000000, 0, 128000, 768000, 0, 100000000, 0, 128000, 768000, 0, 0.360}, + { 20000000, 0, 128000, 768000, 0, 20000000, 0, 128000, 768000, 0, 0.360}, + { 20000000, 0, 128000, 768000, 0, 100000000, 0, 128000, 768000, 0, 0.360}, + {100000000, 0, 128000, 768000, 0, 100000000, 0, 128000, 768000, 0, 0.090}, + { 4000000, 0, 128000, 1536000, 0, 4000000, 0, 384000, 768000, 0, 0.720}, + { 4000000, 0, 128000, 1536000, 0, 20000000, 0, 384000, 768000, 0, 1.470}, + { 4000000, 0, 128000, 1536000, 0, 100000000, 0, 384000, 768000, 0, 0.840}, + { 20000000, 0, 128000, 1536000, 0, 20000000, 0, 384000, 768000, 0, 0.750}, + { 20000000, 0, 128000, 1536000, 0, 100000000, 0, 384000, 768000, 0, 0.855}, + {100000000, 0, 128000, 1536000, 0, 100000000, 0, 384000, 768000, 0, 0.240}, + { 4000000, 0, 128000, 3000000, 0, 4000000, 0, 384000, 768000, 0, 0.120}, + { 4000000, 0, 128000, 3000000, 0, 20000000, 0, 384000, 768000, 0, 0.420}, + { 4000000, 0, 128000, 3000000, 0, 100000000, 0, 384000, 768000, 0, 0.840}, + { 20000000, 0, 128000, 3000000, 0, 20000000, 0, 384000, 768000, 0, 0.300}, + { 20000000, 0, 128000, 3000000, 0, 100000000, 0, 384000, 768000, 0, 0.930}, + {100000000, 0, 128000, 3000000, 0, 100000000, 0, 384000, 768000, 0, 0.390}, + { 4000000, 0, 384000, 768000, 0, 4000000, 0, 128000, 1536000, 0, 0.720}, + { 4000000, 0, 384000, 768000, 0, 20000000, 0, 128000, 1536000, 0, 1.470}, + { 4000000, 0, 384000, 768000, 0, 100000000, 0, 128000, 1536000, 0, 0.840}, + { 20000000, 0, 384000, 768000, 0, 20000000, 0, 128000, 1536000, 0, 0.750}, + { 20000000, 0, 384000, 768000, 0, 100000000, 0, 128000, 1536000, 0, 0.855}, + {100000000, 0, 384000, 768000, 0, 100000000, 0, 128000, 1536000, 0, 0.240}, + { 4000000, 0, 384000, 1536000, 0, 4000000, 0, 384000, 1536000, 0, 1.440}, + { 4000000, 0, 384000, 1536000, 0, 20000000, 0, 384000, 1536000, 0, 3.000}, + { 4000000, 0, 384000, 1536000, 0, 100000000, 0, 384000, 1536000, 0, 1.920}, + { 20000000, 0, 384000, 1536000, 0, 20000000, 0, 384000, 1536000, 0, 1.563}, + { 20000000, 0, 384000, 1536000, 0, 100000000, 0, 384000, 1536000, 0, 2.000}, + {100000000, 0, 384000, 1536000, 0, 100000000, 0, 384000, 1536000, 0, 0.640}, + { 4000000, 0, 384000, 3000000, 0, 4000000, 0, 384000, 1536000, 0, 0.240}, + { 4000000, 0, 384000, 3000000, 0, 20000000, 0, 384000, 1536000, 0, 0.850}, + { 4000000, 0, 384000, 3000000, 0, 100000000, 0, 384000, 1536000, 0, 1.720}, + { 20000000, 0, 384000, 3000000, 0, 20000000, 0, 384000, 1536000, 0, 0.625}, + { 20000000, 0, 384000, 3000000, 0, 100000000, 0, 384000, 1536000, 0, 2.025}, + {100000000, 0, 384000, 3000000, 0, 100000000, 0, 384000, 1536000, 0, 1.040}, + { 4000000, 0, 384000, 768000, 0, 4000000, 0, 128000, 3000000, 0, 0.120}, + { 4000000, 0, 384000, 768000, 0, 20000000, 0, 128000, 3000000, 0, 0.420}, + { 4000000, 0, 384000, 768000, 0, 100000000, 0, 128000, 3000000, 0, 0.840}, + { 20000000, 0, 384000, 768000, 0, 20000000, 0, 128000, 3000000, 0, 0.300}, + { 20000000, 0, 384000, 768000, 0, 100000000, 0, 128000, 3000000, 0, 0.930}, + {100000000, 0, 384000, 768000, 0, 100000000, 0, 128000, 3000000, 0, 0.390}, + { 4000000, 0, 384000, 1536000, 0, 4000000, 0, 384000, 3000000, 0, 0.240}, + { 4000000, 0, 384000, 1536000, 0, 20000000, 0, 384000, 3000000, 0, 0.850}, + { 4000000, 0, 384000, 1536000, 0, 100000000, 0, 384000, 3000000, 0, 1.720}, + { 20000000, 0, 384000, 1536000, 0, 20000000, 0, 384000, 3000000, 0, 0.625}, + { 20000000, 0, 384000, 1536000, 0, 100000000, 0, 384000, 3000000, 0, 2.025}, + {100000000, 0, 384000, 1536000, 0, 100000000, 0, 384000, 3000000, 0, 1.040}, + { 4000000, 0, 384000, 3000000, 0, 4000000, 0, 384000, 3000000, 0, 0.040}, + { 4000000, 0, 384000, 3000000, 0, 20000000, 0, 384000, 3000000, 0, 0.200}, + { 4000000, 0, 384000, 3000000, 0, 100000000, 0, 384000, 3000000, 0, 0.520}, + { 20000000, 0, 384000, 3000000, 0, 20000000, 0, 384000, 3000000, 0, 0.250}, + { 20000000, 0, 384000, 3000000, 0, 100000000, 0, 384000, 3000000, 0, 1.300}, + {100000000, 0, 384000, 3000000, 0, 100000000, 0, 384000, 3000000, 0, 1.690}, + { 4000000, 0, 128000, 1536000, 0, 20000000, 0, 768000, 1536000, 0, 0.090}, + { 4000000, 0, 128000, 1536000, 0, 100000000, 0, 768000, 1536000, 0, 0.360}, + { 20000000, 0, 128000, 1536000, 0, 20000000, 0, 768000, 1536000, 0, 0.090}, + { 20000000, 0, 128000, 1536000, 0, 100000000, 0, 768000, 1536000, 0, 0.405}, + {100000000, 0, 128000, 1536000, 0, 100000000, 0, 768000, 1536000, 0, 0.180}, + { 4000000, 0, 128000, 7000000, 0, 20000000, 0, 768000, 768000, 0, 0.270}, + { 4000000, 0, 128000, 7000000, 0, 100000000, 0, 768000, 768000, 0, 1.080}, + { 20000000, 0, 128000, 7000000, 0, 20000000, 0, 768000, 768000, 0, 0.270}, + { 20000000, 0, 128000, 7000000, 0, 100000000, 0, 768000, 768000, 0, 1.215}, + {100000000, 0, 128000, 7000000, 0, 100000000, 0, 768000, 768000, 0, 0.540}, + { 4000000, 0, 128000, 13000000, 0, 20000000, 0, 768000, 13000000, 0, 0.030}, + { 4000000, 0, 128000, 13000000, 0, 100000000, 0, 768000, 13000000, 0, 0.120}, + { 20000000, 0, 128000, 13000000, 0, 20000000, 0, 768000, 13000000, 0, 0.030}, + { 20000000, 0, 128000, 13000000, 0, 100000000, 0, 768000, 13000000, 0, 0.135}, + {100000000, 0, 128000, 13000000, 0, 100000000, 0, 768000, 13000000, 0, 0.060}, + { 4000000, 0, 384000, 1536000, 0, 20000000, 0, 1536000, 1536000, 0, 0.180}, + { 4000000, 0, 384000, 1536000, 0, 100000000, 0, 1536000, 1536000, 0, 0.720}, + { 20000000, 0, 384000, 1536000, 0, 20000000, 0, 1536000, 1536000, 0, 0.188}, + { 20000000, 0, 384000, 1536000, 0, 100000000, 0, 1536000, 1536000, 0, 0.870}, + {100000000, 0, 384000, 1536000, 0, 100000000, 0, 1536000, 1536000, 0, 0.480}, + { 4000000, 0, 384000, 7000000, 0, 20000000, 0, 768000, 1536000, 0, 0.540}, + { 4000000, 0, 384000, 7000000, 0, 100000000, 0, 768000, 1536000, 0, 2.160}, + { 20000000, 0, 384000, 7000000, 0, 20000000, 0, 768000, 1536000, 0, 0.563}, + { 20000000, 0, 384000, 7000000, 0, 100000000, 0, 768000, 1536000, 0, 2.610}, + {100000000, 0, 384000, 7000000, 0, 100000000, 0, 768000, 1536000, 0, 1.440}, + { 4000000, 0, 384000, 13000000, 0, 20000000, 0, 1536000, 13000000, 0, 0.060}, + { 4000000, 0, 384000, 13000000, 0, 100000000, 0, 1536000, 13000000, 0, 0.240}, + { 20000000, 0, 384000, 13000000, 0, 20000000, 0, 1536000, 13000000, 0, 0.063}, + { 20000000, 0, 384000, 13000000, 0, 100000000, 0, 1536000, 13000000, 0, 0.290}, + {100000000, 0, 384000, 13000000, 0, 100000000, 0, 1536000, 13000000, 0, 0.160}, + { 4000000, 0, 384000, 1536000, 0, 20000000, 0, 1536000, 3000000, 0, 0.030}, + { 4000000, 0, 384000, 1536000, 0, 100000000, 0, 1536000, 3000000, 0, 0.120}, + { 20000000, 0, 384000, 1536000, 0, 20000000, 0, 1536000, 3000000, 0, 0.075}, + { 20000000, 0, 384000, 1536000, 0, 100000000, 0, 1536000, 3000000, 0, 0.495}, + {100000000, 0, 384000, 1536000, 0, 100000000, 0, 1536000, 3000000, 0, 0.780}, + { 4000000, 0, 384000, 7000000, 0, 20000000, 0, 768000, 3000000, 0, 0.090}, + { 4000000, 0, 384000, 7000000, 0, 100000000, 0, 768000, 3000000, 0, 0.360}, + { 20000000, 0, 384000, 7000000, 0, 20000000, 0, 768000, 3000000, 0, 0.225}, + { 20000000, 0, 384000, 7000000, 0, 100000000, 0, 768000, 3000000, 0, 1.485}, + {100000000, 0, 384000, 7000000, 0, 100000000, 0, 768000, 3000000, 0, 2.340}, + { 4000000, 0, 384000, 13000000, 0, 20000000, 0, 3000000, 13000000, 0, 0.010}, + { 4000000, 0, 384000, 13000000, 0, 100000000, 0, 3000000, 13000000, 0, 0.040}, + { 20000000, 0, 384000, 13000000, 0, 20000000, 0, 3000000, 13000000, 0, 0.025}, + { 20000000, 0, 384000, 13000000, 0, 100000000, 0, 3000000, 13000000, 0, 0.165}, + {100000000, 0, 384000, 13000000, 0, 100000000, 0, 3000000, 13000000, 0, 0.260}, + { 4000000, 0, 768000, 1536000, 0, 20000000, 0, 128000, 1536000, 0, 0.090}, + { 20000000, 0, 768000, 1536000, 0, 20000000, 0, 128000, 1536000, 0, 0.090}, + { 20000000, 0, 768000, 1536000, 0, 100000000, 0, 128000, 1536000, 0, 0.405}, + { 4000000, 0, 768000, 1536000, 0, 100000000, 0, 128000, 1536000, 0, 0.360}, + {100000000, 0, 768000, 1536000, 0, 100000000, 0, 128000, 1536000, 0, 0.180}, + { 4000000, 0, 1536000, 1536000, 0, 20000000, 0, 384000, 1536000, 0, 0.180}, + { 20000000, 0, 1536000, 1536000, 0, 20000000, 0, 384000, 1536000, 0, 0.188}, + { 20000000, 0, 1536000, 1536000, 0, 100000000, 0, 384000, 1536000, 0, 0.870}, + { 4000000, 0, 1536000, 1536000, 0, 100000000, 0, 384000, 1536000, 0, 0.720}, + {100000000, 0, 1536000, 1536000, 0, 100000000, 0, 384000, 1536000, 0, 0.480}, + { 4000000, 0, 1536000, 3000000, 0, 20000000, 0, 384000, 1536000, 0, 0.030}, + { 20000000, 0, 1536000, 3000000, 0, 20000000, 0, 384000, 1536000, 0, 0.075}, + { 20000000, 0, 1536000, 3000000, 0, 100000000, 0, 384000, 1536000, 0, 0.495}, + { 4000000, 0, 1536000, 3000000, 0, 100000000, 0, 384000, 1536000, 0, 0.120}, + {100000000, 0, 1536000, 3000000, 0, 100000000, 0, 384000, 1536000, 0, 0.780}, + { 4000000, 0, 768000, 768000, 0, 20000000, 0, 128000, 7000000, 0, 0.270}, + { 20000000, 0, 768000, 768000, 0, 20000000, 0, 128000, 7000000, 0, 0.270}, + { 20000000, 0, 768000, 768000, 0, 100000000, 0, 128000, 7000000, 0, 1.215}, + { 4000000, 0, 768000, 768000, 0, 100000000, 0, 128000, 7000000, 0, 1.080}, + {100000000, 0, 768000, 768000, 0, 100000000, 0, 128000, 7000000, 0, 0.540}, + { 4000000, 0, 768000, 1536000, 0, 20000000, 0, 384000, 7000000, 0, 0.540}, + { 20000000, 0, 768000, 1536000, 0, 20000000, 0, 384000, 7000000, 0, 0.563}, + { 20000000, 0, 768000, 1536000, 0, 100000000, 0, 384000, 7000000, 0, 2.610}, + { 4000000, 0, 768000, 1536000, 0, 100000000, 0, 384000, 7000000, 0, 2.160}, + {100000000, 0, 768000, 1536000, 0, 100000000, 0, 384000, 7000000, 0, 1.440}, + { 4000000, 0, 768000, 3000000, 0, 20000000, 0, 384000, 7000000, 0, 0.090}, + { 20000000, 0, 768000, 3000000, 0, 20000000, 0, 384000, 7000000, 0, 0.225}, + { 20000000, 0, 768000, 3000000, 0, 100000000, 0, 384000, 7000000, 0, 1.485}, + { 4000000, 0, 768000, 3000000, 0, 100000000, 0, 384000, 7000000, 0, 0.360}, + {100000000, 0, 768000, 3000000, 0, 100000000, 0, 384000, 7000000, 0, 2.340}, + { 4000000, 0, 768000, 13000000, 0, 20000000, 0, 128000, 13000000, 0, 0.030}, + { 20000000, 0, 768000, 13000000, 0, 20000000, 0, 128000, 13000000, 0, 0.030}, + { 20000000, 0, 768000, 13000000, 0, 100000000, 0, 128000, 13000000, 0, 0.135}, + { 4000000, 0, 768000, 13000000, 0, 100000000, 0, 128000, 13000000, 0, 0.120}, + {100000000, 0, 768000, 13000000, 0, 100000000, 0, 128000, 13000000, 0, 0.060}, + { 4000000, 0, 1536000, 13000000, 0, 20000000, 0, 384000, 13000000, 0, 0.060}, + { 20000000, 0, 1536000, 13000000, 0, 20000000, 0, 384000, 13000000, 0, 0.063}, + { 20000000, 0, 1536000, 13000000, 0, 100000000, 0, 384000, 13000000, 0, 0.290}, + { 4000000, 0, 1536000, 13000000, 0, 100000000, 0, 384000, 13000000, 0, 0.240}, + {100000000, 0, 1536000, 13000000, 0, 100000000, 0, 384000, 13000000, 0, 0.160}, + { 4000000, 0, 3000000, 13000000, 0, 20000000, 0, 384000, 13000000, 0, 0.010}, + { 20000000, 0, 3000000, 13000000, 0, 20000000, 0, 384000, 13000000, 0, 0.025}, + { 20000000, 0, 3000000, 13000000, 0, 100000000, 0, 384000, 13000000, 0, 0.165}, + { 4000000, 0, 3000000, 13000000, 0, 100000000, 0, 384000, 13000000, 0, 0.040}, + {100000000, 0, 3000000, 13000000, 0, 100000000, 0, 384000, 13000000, 0, 0.260}, + { 20000000, 0, 1536000, 1536000, 0, 20000000, 0, 1536000, 1536000, 0, 0.023}, + { 20000000, 0, 1536000, 1536000, 0, 100000000, 0, 1536000, 1536000, 0, 0.180}, + {100000000, 0, 1536000, 1536000, 0, 100000000, 0, 1536000, 1536000, 0, 0.360}, + { 20000000, 0, 1536000, 7000000, 0, 20000000, 0, 768000, 1536000, 0, 0.068}, + { 20000000, 0, 1536000, 7000000, 0, 100000000, 0, 768000, 1536000, 0, 0.540}, + {100000000, 0, 1536000, 7000000, 0, 100000000, 0, 768000, 1536000, 0, 1.080}, + { 20000000, 0, 1536000, 13000000, 0, 20000000, 0, 1536000, 13000000, 0, 0.015}, + { 20000000, 0, 1536000, 13000000, 0, 100000000, 0, 1536000, 13000000, 0, 0.120}, + {100000000, 0, 1536000, 13000000, 0, 100000000, 0, 1536000, 13000000, 0, 0.240}, + { 20000000, 0, 768000, 1536000, 0, 20000000, 0, 1536000, 7000000, 0, 0.068}, + { 20000000, 0, 768000, 1536000, 0, 100000000, 0, 1536000, 7000000, 0, 0.540}, + {100000000, 0, 768000, 1536000, 0, 100000000, 0, 1536000, 7000000, 0, 1.080}, + { 20000000, 0, 768000, 7000000, 0, 20000000, 0, 768000, 7000000, 0, 0.203}, + { 20000000, 0, 768000, 7000000, 0, 100000000, 0, 768000, 7000000, 0, 1.620}, + {100000000, 0, 768000, 7000000, 0, 100000000, 0, 768000, 7000000, 0, 3.240}, + { 20000000, 0, 768000, 13000000, 0, 20000000, 0, 7000000, 13000000, 0, 0.023}, + { 20000000, 0, 768000, 13000000, 0, 100000000, 0, 7000000, 13000000, 0, 0.180}, + {100000000, 0, 768000, 13000000, 0, 100000000, 0, 7000000, 13000000, 0, 0.360}, + { 20000000, 0, 7000000, 13000000, 0, 20000000, 0, 768000, 13000000, 0, 0.023}, + { 20000000, 0, 7000000, 13000000, 0, 100000000, 0, 768000, 13000000, 0, 0.180}, + {100000000, 0, 7000000, 13000000, 0, 100000000, 0, 768000, 13000000, 0, 0.360}, + { 20000000, 0, 13000000, 13000000, 0, 20000000, 0, 13000000, 13000000, 0, 0.003}, + { 20000000, 0, 13000000, 13000000, 0, 100000000, 0, 13000000, 13000000, 0, 0.020}, + {100000000, 0, 13000000, 13000000, 0, 100000000, 0, 13000000, 13000000, 0, 0.040} }; g1050_model_t g1050_standard_models[9] = Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/line_model.c ============================================================================== --- freeswitch/trunk/libs/spandsp/spandsp-sim/line_model.c (original) +++ freeswitch/trunk/libs/spandsp/spandsp-sim/line_model.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: line_model.c,v 1.6 2008/07/02 14:48:25 steveu Exp $ + * $Id: line_model.c,v 1.7 2008/11/30 10:17:30 steveu Exp $ */ #if defined(HAVE_CONFIG_H) @@ -46,6 +46,7 @@ #include #endif +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES #include "spandsp.h" #include "spandsp-sim.h" #include "spandsp/g168models.h" Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/g1050.h ============================================================================== --- freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/g1050.h (original) +++ freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/g1050.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: g1050.h,v 1.8 2008/09/09 16:13:12 steveu Exp $ + * $Id: g1050.h,v 1.9 2009/01/16 15:13:16 steveu Exp $ */ /*! \file */ @@ -39,7 +39,7 @@ - a distant LAN (wired or wireless) The impairments typical of these segments at various service levels are modelled. 8 standard service level behaviours are defined, covering lightly loaded to heavily -congested levels. 133 standard sets of link speeds are defined, covering typical +congested levels. 168 standard sets of link speeds are defined, covering typical wired and wireless LAN, broadband access link, and backbone characteristics. The G.1050 model is suitable for testing the behaviour of RTP, UDPTL and other streaming @@ -261,7 +261,7 @@ } g1050_state_t; extern g1050_constants_t g1050_constants[1]; -extern g1050_channel_speeds_t g1050_speed_patterns[133]; +extern g1050_channel_speeds_t g1050_speed_patterns[168]; extern g1050_model_t g1050_standard_models[9]; #ifdef __cplusplus Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/line_model.h ============================================================================== --- freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/line_model.h (original) +++ freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/line_model.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: line_model.h,v 1.3 2008/04/17 18:03:23 steveu Exp $ + * $Id: line_model.h,v 1.4 2009/01/07 13:28:10 steveu Exp $ */ /*! \file */ @@ -56,6 +56,9 @@ #if !defined(_SPANDSP_LINE_MODEL_H_) #define _SPANDSP_LINE_MODEL_H_ +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +#include + #define LINE_FILTER_SIZE 129 /*! Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/test_utils.h ============================================================================== --- freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/test_utils.h (original) +++ freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/test_utils.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: test_utils.h,v 1.5 2008/08/29 09:28:13 steveu Exp $ + * $Id: test_utils.h,v 1.6 2009/01/07 13:28:10 steveu Exp $ */ /*! \file */ @@ -30,6 +30,8 @@ #if !defined(_TEST_UTILS_H_) #define _TEST_UTILS_H_ +#include + enum { MUNGE_CODEC_NONE = 0, Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/test_utils.c ============================================================================== --- freeswitch/trunk/libs/spandsp/spandsp-sim/test_utils.c (original) +++ freeswitch/trunk/libs/spandsp/spandsp-sim/test_utils.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: test_utils.c,v 1.8 2008/08/29 09:28:13 steveu Exp $ + * $Id: test_utils.c,v 1.10 2008/11/30 10:17:30 steveu Exp $ */ /*! \file */ @@ -46,6 +46,7 @@ #include #include +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES #include "spandsp.h" #include "spandsp-sim.h" Added: freeswitch/trunk/libs/spandsp/spandsp.pc ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/spandsp.pc Tue Jan 27 22:48:03 2009 @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=$(exec_prefix)/lib64 +includedir=${prefix}/include + +Name: spandsp +Description: A DSP library for telephony. +Requires: +Version: 0.0.6 +Libs: -L${libdir} -lspandsp -ltiff -lm +Cflags: -I${includedir} Added: freeswitch/trunk/libs/spandsp/spandsp.pc.in ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/spandsp.pc.in Tue Jan 27 22:48:03 2009 @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: spandsp +Description: A DSP library for telephony. +Requires: +Version: @VERSION@ +Libs: -L${libdir} -lspandsp -ltiff -lm +Cflags: -I${includedir} Modified: freeswitch/trunk/libs/spandsp/spandsp.spec ============================================================================== --- freeswitch/trunk/libs/spandsp/spandsp.spec (original) +++ freeswitch/trunk/libs/spandsp/spandsp.spec Tue Jan 27 22:48:03 2009 @@ -1,12 +1,12 @@ Summary: A DSP library for telephony. Name: spandsp -Version: 0.0.5 +Version: 0.0.6 Release: 1 License: LGPL Group: System Environment/Libraries URL: http://www.soft-switch.org/spandsp BuildRoot: %{_tmppath}/%{name}-%{version}-root -Source: http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.5.tar.gz +Source: http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.6.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: libtiff-devel @@ -62,6 +62,7 @@ %{_includedir}/spandsp.h %{_includedir}/spandsp %{_libdir}/libspandsp.so +%{_libdir}/pkgconfig/spandsp.pc %post -p /sbin/ldconfig @@ -72,7 +73,7 @@ - Preparing for 0.0.5pre4 release - License: LGPL -* Mon 23 Jun 2008 Steve Underwood 0.0.5-1 +* Mon Jun 23 2008 Steve Underwood 0.0.5-1 - Cleared out the dependency on libxml2 * Sun Dec 31 2006 Steve Underwood 0.0.3-1 Modified: freeswitch/trunk/libs/spandsp/spandsp.spec.in ============================================================================== --- freeswitch/trunk/libs/spandsp/spandsp.spec.in (original) +++ freeswitch/trunk/libs/spandsp/spandsp.spec.in Tue Jan 27 22:48:03 2009 @@ -62,6 +62,7 @@ %{_includedir}/spandsp.h %{_includedir}/spandsp %{_libdir}/libspandsp.so +%{_libdir}/pkgconfig/spandsp.pc %post -p /sbin/ldconfig @@ -72,7 +73,7 @@ - Preparing for 0.0.5pre4 release - License: LGPL -* Mon 23 Jun 2008 Steve Underwood 0.0.5-1 +* Mon Jun 23 2008 Steve Underwood 0.0.5-1 - Cleared out the dependency on libxml2 * Sun Dec 31 2006 Steve Underwood 0.0.3-1 Modified: freeswitch/trunk/libs/spandsp/src/Makefile.am ============================================================================== --- freeswitch/trunk/libs/spandsp/src/Makefile.am (original) +++ freeswitch/trunk/libs/spandsp/src/Makefile.am Tue Jan 27 22:48:03 2009 @@ -16,7 +16,7 @@ ## License along with this program; if not, write to the Free Software ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ## -## $Id: Makefile.am,v 1.105 2008/09/30 18:12:42 steveu Exp $ +## $Id: Makefile.am,v 1.116 2008/12/12 13:18:21 steveu Exp $ AM_CFLAGS = $(COMP_VENDOR_CFLAGS) AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS) @@ -37,7 +37,8 @@ msvc/msvcproj.head \ msvc/msvcproj.foot \ msvc/vc8proj.head \ - msvc/vc8proj.foot + msvc/vc8proj.foot \ + spandsp/private/README INCLUDES = -I$(top_builddir) @@ -120,7 +121,7 @@ vector_float.c \ vector_int.c -libspandsp_la_LDFLAGS = -version-info @SPANDSP_LT_CURRENT@:@SPANDSP_LT_REVISION@:@SPANDSP_LT_AGE@ +libspandsp_la_LDFLAGS = -version-info @SPANDSP_LT_CURRENT@:@SPANDSP_LT_REVISION@:@SPANDSP_LT_AGE@ $(COMP_VENDOR_FLAGS) nobase_include_HEADERS = spandsp/adsi.h \ spandsp/async.h \ @@ -196,7 +197,55 @@ spandsp/v8.h \ spandsp/vector_float.h \ spandsp/vector_int.h \ - spandsp/version.h + spandsp/version.h \ + spandsp/private/adsi.h \ + spandsp/private/async.h \ + spandsp/private/at_interpreter.h \ + spandsp/private/awgn.h \ + spandsp/private/bell_r2_mf.h \ + spandsp/private/bert.h \ + spandsp/private/bitstream.h \ + spandsp/private/dtmf.h \ + spandsp/private/fax.h \ + spandsp/private/fax_modems.h \ + spandsp/private/fsk.h \ + spandsp/private/g711.h \ + spandsp/private/g722.h \ + spandsp/private/g726.h \ + spandsp/private/gsm0610.h \ + spandsp/private/hdlc.h \ + spandsp/private/ima_adpcm.h \ + spandsp/private/logging.h \ + spandsp/private/lpc10.h \ + spandsp/private/modem_connect_tones.h \ + spandsp/private/noise.h \ + spandsp/private/oki_adpcm.h \ + spandsp/private/queue.h \ + spandsp/private/schedule.h \ + spandsp/private/sig_tone.h \ + spandsp/private/super_tone_rx.h \ + spandsp/private/super_tone_tx.h \ + spandsp/private/t30.h \ + spandsp/private/t31.h \ + spandsp/private/t38_core.h \ + spandsp/private/t38_gateway.h \ + spandsp/private/t38_non_ecm_buffer.h \ + spandsp/private/t38_terminal.h \ + spandsp/private/t4.h \ + spandsp/private/time_scale.h \ + spandsp/private/tone_detect.h \ + spandsp/private/tone_generate.h \ + spandsp/private/v17rx.h \ + spandsp/private/v17tx.h \ + spandsp/private/v22bis.h \ + spandsp/private/v27ter_rx.h \ + spandsp/private/v27ter_tx.h \ + spandsp/private/v29rx.h \ + spandsp/private/v29tx.h \ + spandsp/private/v42.h \ + spandsp/private/v42bis.h \ + spandsp/private/v8.h \ + spandsp/expose.h nodist_include_HEADERS = spandsp.h Modified: freeswitch/trunk/libs/spandsp/src/adsi.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/adsi.c (original) +++ freeswitch/trunk/libs/spandsp/src/adsi.c Tue Jan 27 22:48:03 2009 @@ -23,26 +23,26 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: adsi.c,v 1.60 2008/09/07 12:45:16 steveu Exp $ + * $Id: adsi.c,v 1.67 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" @@ -60,6 +60,14 @@ #include "spandsp/dtmf.h" #include "spandsp/adsi.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/queue.h" +#include "spandsp/private/tone_generate.h" +#include "spandsp/private/async.h" +#include "spandsp/private/fsk.h" +#include "spandsp/private/dtmf.h" +#include "spandsp/private/adsi.h" + #define BAUDOT_FIGURE_SHIFT 0x1B #define BAUDOT_LETTER_SHIFT 0x1F @@ -440,6 +448,13 @@ } /*- End of function --------------------------------------------------------*/ +int adsi_rx_free(adsi_rx_state_t *s) +{ + free(s); + return 0; +} +/*- End of function --------------------------------------------------------*/ + int adsi_tx(adsi_tx_state_t *s, int16_t *amp, int max_len) { int len; @@ -642,6 +657,13 @@ } /*- End of function --------------------------------------------------------*/ +int adsi_tx_free(adsi_tx_state_t *s) +{ + free(s); + return 0; +} +/*- End of function --------------------------------------------------------*/ + static uint16_t adsi_encode_baudot(adsi_tx_state_t *s, uint8_t ch) { static const uint8_t conv[128] = Modified: freeswitch/trunk/libs/spandsp/src/async.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/async.c (original) +++ freeswitch/trunk/libs/spandsp/src/async.c Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: async.c,v 1.13 2008/09/07 12:45:16 steveu Exp $ + * $Id: async.c,v 1.15 2009/01/05 13:48:31 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -39,6 +39,8 @@ #include "spandsp/telephony.h" #include "spandsp/async.h" +#include "spandsp/private/async.h" + const char *signal_status_to_str(int status) { switch (status) Modified: freeswitch/trunk/libs/spandsp/src/at_interpreter.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/at_interpreter.c (original) +++ freeswitch/trunk/libs/spandsp/src/at_interpreter.c Tue Jan 27 22:48:03 2009 @@ -25,13 +25,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: at_interpreter.c,v 1.30 2008/07/24 13:55:23 steveu Exp $ + * $Id: at_interpreter.c,v 1.34 2009/01/16 15:13:16 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -55,6 +55,9 @@ #include "spandsp/at_interpreter.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/at_interpreter.h" + #define ms_to_samples(t) (((t)*SAMPLE_RATE)/1000) #define MANUFACTURER "www.soft-switch.org" @@ -180,6 +183,7 @@ { uint8_t buf[20]; + span_log(&s->logging, SPAN_LOG_FLOW, "Sending AT response code %s\n", at_response_codes[code]); switch (s->p.result_code_format) { case ASCII_RESULT_CODES: @@ -239,7 +243,7 @@ } break; case AT_CALL_EVENT_CONNECTED: - span_log(&s->logging, SPAN_LOG_FLOW, "Dial call - connected. fclass=%d\n", s->fclass_mode); + span_log(&s->logging, SPAN_LOG_FLOW, "Dial call - connected. FCLASS=%d\n", s->fclass_mode); at_modem_control(s, AT_MODEM_CONTROL_RNG, (void *) 0); if (s->fclass_mode == 0) { @@ -309,8 +313,8 @@ void at_reset_call_info(at_state_t *s) { - struct at_call_id *call_id; - struct at_call_id *next; + at_call_id_t *call_id; + at_call_id_t *next; for (call_id = s->call_id; call_id; call_id = next) { @@ -325,11 +329,11 @@ void at_set_call_info(at_state_t *s, char const *id, char const *value) { - struct at_call_id *new_call_id; - struct at_call_id *call_id; + at_call_id_t *new_call_id; + at_call_id_t *call_id; /* TODO: We should really not merely ignore a failure to malloc */ - if ((new_call_id = (struct at_call_id *) malloc(sizeof(*new_call_id))) == NULL) + if ((new_call_id = (at_call_id_t *) malloc(sizeof(*new_call_id))) == NULL) return; call_id = s->call_id; /* If these strdups fail its pretty harmless. We just appear to not @@ -354,7 +358,7 @@ void at_display_call_info(at_state_t *s) { char buf[132 + 1]; - struct at_call_id *call_id = s->call_id; + at_call_id_t *call_id = s->call_id; while (call_id) { @@ -5299,6 +5303,8 @@ return NULL; } memset(s, '\0', sizeof(*s)); + span_log_init(&s->logging, SPAN_LOG_NONE, NULL); + span_log_set_protocol(&s->logging, "AT"); s->modem_control_handler = modem_control_handler; s->modem_control_user_data = modem_control_user_data; s->at_tx_handler = at_tx_handler; Modified: freeswitch/trunk/libs/spandsp/src/awgn.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/awgn.c (original) +++ freeswitch/trunk/libs/spandsp/src/awgn.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: awgn.c,v 1.17 2008/09/19 14:02:05 steveu Exp $ + * $Id: awgn.c,v 1.20 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ @@ -43,23 +43,25 @@ to ever be optimised. */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/saturated.h" #include "spandsp/awgn.h" +#include "spandsp/private/awgn.h" + /* Gaussian noise generator constants */ #define M1 259200 #define IA1 7141 Modified: freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c (original) +++ freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: bell_r2_mf.c,v 1.29 2008/07/02 14:48:25 steveu Exp $ + * $Id: bell_r2_mf.c,v 1.33 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ @@ -36,13 +36,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/queue.h" @@ -55,6 +55,10 @@ #include "spandsp/dtmf.h" #include "spandsp/bell_r2_mf.h" +#include "spandsp/private/queue.h" +#include "spandsp/private/tone_generate.h" +#include "spandsp/private/bell_r2_mf.h" + #if !defined(M_PI) /* C99 systems may not define M_PI */ #define M_PI 3.14159265358979323846264338327 Modified: freeswitch/trunk/libs/spandsp/src/bert.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/bert.c (original) +++ freeswitch/trunk/libs/spandsp/src/bert.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: bert.c,v 1.28 2008/09/07 12:45:16 steveu Exp $ + * $Id: bert.c,v 1.30 2008/11/30 13:44:35 steveu Exp $ */ #if defined(HAVE_CONFIG_H) @@ -41,6 +41,9 @@ #include "spandsp/async.h" #include "spandsp/bert.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/bert.h" + static const char *qbf = "VoyeZ Le BricK GeanT QuE J'ExaminE PreS Du WharF 123 456 7890 + - * : = $ % ( )" "ThE QuicK BrowN FoX JumpS OveR ThE LazY DoG 123 456 7890 + - * : = $ % ( )"; Modified: freeswitch/trunk/libs/spandsp/src/bitstream.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/bitstream.c (original) +++ freeswitch/trunk/libs/spandsp/src/bitstream.c Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: bitstream.c,v 1.13 2008/05/13 13:17:22 steveu Exp $ + * $Id: bitstream.c,v 1.16 2009/01/05 13:48:31 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -39,7 +39,9 @@ #include "spandsp/telephony.h" #include "spandsp/bitstream.h" -void bitstream_put(bitstream_state_t *s, uint8_t **c, unsigned int value, int bits) +#include "spandsp/private/bitstream.h" + +void bitstream_put(bitstream_state_t *s, uint8_t **c, uint32_t value, int bits) { value &= ((1 << bits) - 1); if (s->residue + bits <= 32) @@ -56,7 +58,7 @@ } /*- End of function --------------------------------------------------------*/ -void bitstream_put2(bitstream_state_t *s, uint8_t **c, unsigned int value, int bits) +void bitstream_put2(bitstream_state_t *s, uint8_t **c, uint32_t value, int bits) { value &= ((1 << bits) - 1); if (s->residue + bits <= 32) @@ -72,14 +74,13 @@ } /*- End of function --------------------------------------------------------*/ -unsigned int bitstream_get(bitstream_state_t *s, const uint8_t **c, int bits) +uint32_t bitstream_get(bitstream_state_t *s, const uint8_t **c, int bits) { - unsigned int x; + uint32_t x; - while (s->residue < (unsigned int) bits) + while (s->residue < bits) { - x = (unsigned int) *(*c)++; - s->bitstream |= (x << s->residue); + s->bitstream |= (((uint32_t) *(*c)++) << s->residue); s->residue += 8; } s->residue -= bits; @@ -89,14 +90,13 @@ } /*- End of function --------------------------------------------------------*/ -unsigned int bitstream_get2(bitstream_state_t *s, const uint8_t **c, int bits) +uint32_t bitstream_get2(bitstream_state_t *s, const uint8_t **c, int bits) { - unsigned int x; + uint32_t x; - while (s->residue < (unsigned int) bits) + while (s->residue < bits) { - x = (unsigned int) *(*c)++; - s->bitstream = (s->bitstream << 8) | x; + s->bitstream = (s->bitstream << 8) | ((uint32_t) *(*c)++); s->residue += 8; } s->residue -= bits; Modified: freeswitch/trunk/libs/spandsp/src/complex_filters.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/complex_filters.c (original) +++ freeswitch/trunk/libs/spandsp/src/complex_filters.c Tue Jan 27 22:48:03 2009 @@ -22,11 +22,11 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: complex_filters.c,v 1.13 2008/05/13 13:17:22 steveu Exp $ + * $Id: complex_filters.c,v 1.14 2009/01/05 13:48:31 steveu Exp $ */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include Modified: freeswitch/trunk/libs/spandsp/src/complex_vector_float.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/complex_vector_float.c (original) +++ freeswitch/trunk/libs/spandsp/src/complex_vector_float.c Tue Jan 27 22:48:03 2009 @@ -22,34 +22,132 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: complex_vector_float.c,v 1.10 2008/09/18 13:16:49 steveu Exp $ + * $Id: complex_vector_float.c,v 1.14 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include +#if defined(SPANDSP_USE_MMX) +#include +#endif +#if defined(SPANDSP_USE_SSE) +#include +#endif +#if defined(SPANDSP_USE_SSE2) +#include +#endif +#if defined(SPANDSP_USE_SSE3) +#include +#endif +#if defined(SPANDSP_USE_SSE4_1) +#include +#endif +#if defined(SPANDSP_USE_SSE4_2) +#include +#endif +#if defined(SPANDSP_USE_SSE4A) +#include +#endif +#if defined(SPANDSP_USE_SSE5) +#include +#endif + #include "spandsp/telephony.h" #include "spandsp/logging.h" #include "spandsp/complex.h" #include "spandsp/vector_float.h" #include "spandsp/complex_vector_float.h" +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE3) +void cvec_mulf(complexf_t z[], const complexf_t x[], const complexf_t y[], int n) +{ + int i; + __m128 n0; + __m128 n1; + __m128 n2; + __m128 n3; + + if ((i = n & ~1)) + { + i <<= 1; + for (i -= 4; i >= 0; i -= 4) + { + n3 = _mm_loadu_ps((float *) x + i); + n0 = _mm_moveldup_ps(n3); + n1 = _mm_loadu_ps((float *) y + i); + n0 = _mm_mul_ps(n0, n1); + n1 = _mm_shuffle_ps(n1, n1, 0xB1); + n2 = _mm_movehdup_ps(n3); + n2 = _mm_mul_ps(n2, n1); + n0 = _mm_addsub_ps(n0, n2); + _mm_storeu_ps((float *) z + i, n0); + } + } + /* Now deal with the last element, which doesn't fill an SSE2 register */ + switch (n & 1) + { + case 1: + z[n - 1].re = x[n - 1].re*y[n - 1].re - x[n - 1].im*y[n - 1].im; + z[n - 1].im = x[n - 1].re*y[n - 1].im + x[n - 1].im*y[n - 1].re; + } +} +#else +void cvec_mulf(complexf_t z[], const complexf_t x[], const complexf_t y[], int n) +{ + int i; + + for (i = 0; i < n; i++) + { + z[i].re = x[i].re*y[i].re - x[i].im*y[i].im; + z[i].im = x[i].re*y[i].im + x[i].im*y[i].re; + } +} +#endif +/*- End of function --------------------------------------------------------*/ + +void cvec_mul(complex_t z[], const complex_t x[], const complex_t y[], int n) +{ + int i; + + for (i = 0; i < n; i++) + { + z[i].re = x[i].re*y[i].re - x[i].im*y[i].im; + z[i].im = x[i].re*y[i].im + x[i].im*y[i].re; + } +} +/*- End of function --------------------------------------------------------*/ + +#if defined(HAVE_LONG_DOUBLE) +void cvec_mull(complexl_t z[], const complexl_t x[], const complexl_t y[], int n) +{ + int i; + + for (i = 0; i < n; i++) + { + z[i].re = x[i].re*y[i].re - x[i].im*y[i].im; + z[i].im = x[i].re*y[i].im + x[i].im*y[i].re; + } +} +/*- End of function --------------------------------------------------------*/ +#endif + complexf_t cvec_dot_prodf(const complexf_t x[], const complexf_t y[], int n) { int i; @@ -109,17 +207,17 @@ } /*- End of function --------------------------------------------------------*/ +#define LMS_LEAK_RATE 0.9999f + void cvec_lmsf(const complexf_t x[], complexf_t y[], int n, const complexf_t *error) { int i; for (i = 0; i < n; i++) { - y[i].re += (x[i].im*error->im + x[i].re*error->re); - y[i].im += (x[i].re*error->im - x[i].im*error->re); /* Leak a little to tame uncontrolled wandering */ - y[i].re *= 0.9999f; - y[i].im *= 0.9999f; + y[i].re = y[i].re*LMS_LEAK_RATE + (x[i].im*error->im + x[i].re*error->re); + y[i].im = y[i].im*LMS_LEAK_RATE + (x[i].re*error->im - x[i].im*error->re); } } /*- End of function --------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/complex_vector_int.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/complex_vector_int.c (original) +++ freeswitch/trunk/libs/spandsp/src/complex_vector_int.c Tue Jan 27 22:48:03 2009 @@ -22,28 +22,53 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: complex_vector_int.c,v 1.3 2008/09/18 13:54:32 steveu Exp $ + * $Id: complex_vector_int.c,v 1.6 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include +#if defined(SPANDSP_USE_MMX) +#include +#endif +#if defined(SPANDSP_USE_SSE) +#include +#endif +#if defined(SPANDSP_USE_SSE2) +#include +#endif +#if defined(SPANDSP_USE_SSE3) +#include +#endif +#if defined(SPANDSP_USE_SSE4_1) +#include +#endif +#if defined(SPANDSP_USE_SSE4_2) +#include +#endif +#if defined(SPANDSP_USE_SSE4A) +#include +#endif +#if defined(SPANDSP_USE_SSE5) +#include +#endif + #include "spandsp/telephony.h" #include "spandsp/logging.h" #include "spandsp/complex.h" Modified: freeswitch/trunk/libs/spandsp/src/crc.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/crc.c (original) +++ freeswitch/trunk/libs/spandsp/src/crc.c Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: crc.c,v 1.4 2008/05/13 13:17:22 steveu Exp $ + * $Id: crc.c,v 1.5 2009/01/05 13:48:31 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include Modified: freeswitch/trunk/libs/spandsp/src/dds_float.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/dds_float.c (original) +++ freeswitch/trunk/libs/spandsp/src/dds_float.c Tue Jan 27 22:48:03 2009 @@ -22,24 +22,24 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: dds_float.c,v 1.8 2008/07/02 14:48:25 steveu Exp $ + * $Id: dds_float.c,v 1.10 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/complex.h" Modified: freeswitch/trunk/libs/spandsp/src/dds_int.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/dds_int.c (original) +++ freeswitch/trunk/libs/spandsp/src/dds_int.c Tue Jan 27 22:48:03 2009 @@ -22,23 +22,23 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: dds_int.c,v 1.11 2008/09/11 15:13:42 steveu Exp $ + * $Id: dds_int.c,v 1.13 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/complex.h" Modified: freeswitch/trunk/libs/spandsp/src/dtmf.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/dtmf.c (original) +++ freeswitch/trunk/libs/spandsp/src/dtmf.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: dtmf.c,v 1.43 2008/07/02 14:48:25 steveu Exp $ + * $Id: dtmf.c,v 1.47 2009/01/28 03:41:26 steveu Exp $ */ /*! \file dtmf.h */ @@ -33,13 +33,13 @@ #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include #include @@ -54,6 +54,10 @@ #include "spandsp/super_tone_rx.h" #include "spandsp/dtmf.h" +#include "spandsp/private/queue.h" +#include "spandsp/private/tone_generate.h" +#include "spandsp/private/dtmf.h" + #define DEFAULT_DTMF_TX_LEVEL -10 #define DEFAULT_DTMF_TX_ON_TIME 50 #define DEFAULT_DTMF_TX_OFF_TIME 55 Modified: freeswitch/trunk/libs/spandsp/src/echo.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/echo.c (original) +++ freeswitch/trunk/libs/spandsp/src/echo.c Tue Jan 27 22:48:03 2009 @@ -27,7 +27,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: echo.c,v 1.28 2008/09/19 14:02:05 steveu Exp $ + * $Id: echo.c,v 1.30 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ @@ -79,18 +79,18 @@ reasonable way. */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include Modified: freeswitch/trunk/libs/spandsp/src/fax.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/fax.c (original) +++ freeswitch/trunk/libs/spandsp/src/fax.c Tue Jan 27 22:48:03 2009 @@ -23,26 +23,26 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: fax.c,v 1.79 2008/08/13 00:11:30 steveu Exp $ + * $Id: fax.c,v 1.84 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include #include @@ -63,12 +63,12 @@ #include "spandsp/hdlc.h" #include "spandsp/silence_gen.h" #include "spandsp/fsk.h" -#include "spandsp/v29rx.h" #include "spandsp/v29tx.h" -#include "spandsp/v27ter_rx.h" +#include "spandsp/v29rx.h" #include "spandsp/v27ter_tx.h" -#include "spandsp/v17rx.h" +#include "spandsp/v27ter_rx.h" #include "spandsp/v17tx.h" +#include "spandsp/v17rx.h" #include "spandsp/super_tone_rx.h" #include "spandsp/modem_connect_tones.h" #include "spandsp/t4.h" @@ -82,6 +82,21 @@ #include "spandsp/fax_modems.h" #include "spandsp/fax.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/fsk.h" +#include "spandsp/private/v17tx.h" +#include "spandsp/private/v17rx.h" +#include "spandsp/private/v27ter_tx.h" +#include "spandsp/private/v27ter_rx.h" +#include "spandsp/private/v29tx.h" +#include "spandsp/private/v29rx.h" +#include "spandsp/private/modem_connect_tones.h" +#include "spandsp/private/hdlc.h" +#include "spandsp/private/fax_modems.h" +#include "spandsp/private/t4.h" +#include "spandsp/private/t30.h" +#include "spandsp/private/fax.h" + #define HDLC_FRAMING_OK_THRESHOLD 5 static void fax_send_hdlc(void *user_data, const uint8_t *msg, int len) @@ -517,6 +532,12 @@ } /*- End of function --------------------------------------------------------*/ +logging_state_t *fax_get_logging_state(fax_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + fax_state_t *fax_init(fax_state_t *s, int calling_party) { if (s == NULL) Modified: freeswitch/trunk/libs/spandsp/src/filter_tools.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/filter_tools.c (original) +++ freeswitch/trunk/libs/spandsp/src/filter_tools.c Tue Jan 27 22:48:03 2009 @@ -25,7 +25,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: filter_tools.c,v 1.8 2008/08/29 09:28:13 steveu Exp $ + * $Id: filter_tools.c,v 1.9 2009/01/28 03:41:26 steveu Exp $ */ #if defined(HAVE_CONFIG_H) @@ -35,13 +35,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include #include Modified: freeswitch/trunk/libs/spandsp/src/fsk.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/fsk.c (original) +++ freeswitch/trunk/libs/spandsp/src/fsk.c Tue Jan 27 22:48:03 2009 @@ -22,25 +22,25 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: fsk.c,v 1.46 2008/09/07 12:45:16 steveu Exp $ + * $Id: fsk.c,v 1.49 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" @@ -50,6 +50,8 @@ #include "spandsp/async.h" #include "spandsp/fsk.h" +#include "spandsp/private/fsk.h" + const fsk_spec_t preset_fsk_specs[] = { { Modified: freeswitch/trunk/libs/spandsp/src/g711.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/g711.c (original) +++ freeswitch/trunk/libs/spandsp/src/g711.c Tue Jan 27 22:48:03 2009 @@ -22,30 +22,24 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: g711.c,v 1.11 2008/07/02 14:48:25 steveu Exp $ + * $Id: g711.c,v 1.14 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include -#include "floating_fudge.h" -#if defined(HAVE_TGMATH_H) -#include -#endif -#if defined(HAVE_MATH_H) -#include -#endif #include #include "spandsp/telephony.h" #include "spandsp/bit_operations.h" #include "spandsp/g711.h" +#include "spandsp/private/g711.h" /* Copied from the CCITT G.711 specification */ static const uint8_t ulaw_to_alaw_table[256] = Modified: freeswitch/trunk/libs/spandsp/src/g722.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/g722.c (original) +++ freeswitch/trunk/libs/spandsp/src/g722.c Tue Jan 27 22:48:03 2009 @@ -28,31 +28,33 @@ * Computer Science, Speech Group * Chengxiang Lu and Alex Hauptmann * - * $Id: g722.c,v 1.2 2008/09/19 16:24:25 steveu Exp $ + * $Id: g722.c,v 1.5 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/saturated.h" #include "spandsp/vector_int.h" #include "spandsp/g722.h" +#include "spandsp/private/g722.h" + static const int16_t qmf_coeffs_fwd[12] = { 3, -11, 12, 32, -210, 951, 3876, -805, 362, -156, 53, -11, Modified: freeswitch/trunk/libs/spandsp/src/g726.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/g726.c (original) +++ freeswitch/trunk/libs/spandsp/src/g726.c Tue Jan 27 22:48:03 2009 @@ -48,25 +48,25 @@ * 2550 Garcia Avenue * Mountain View, California 94043 * - * $Id: g726.c,v 1.22 2008/07/02 14:48:25 steveu Exp $ + * $Id: g726.c,v 1.26 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/dc_restore.h" @@ -75,6 +75,9 @@ #include "spandsp/g711.h" #include "spandsp/g726.h" +#include "spandsp/private/bitstream.h" +#include "spandsp/private/g726.h" + /* * Maps G.726_16 code word to reconstructed scale factor normalized log * magnitude values. Modified: freeswitch/trunk/libs/spandsp/src/gsm0610_decode.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/gsm0610_decode.c (original) +++ freeswitch/trunk/libs/spandsp/src/gsm0610_decode.c Tue Jan 27 22:48:03 2009 @@ -25,24 +25,24 @@ * This code is based on the widely used GSM 06.10 code available from * http://kbs.cs.tu-berlin.de/~jutta/toast.html * - * $Id: gsm0610_decode.c,v 1.22 2008/09/19 14:02:05 steveu Exp $ + * $Id: gsm0610_decode.c,v 1.24 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include Modified: freeswitch/trunk/libs/spandsp/src/gsm0610_encode.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/gsm0610_encode.c (original) +++ freeswitch/trunk/libs/spandsp/src/gsm0610_encode.c Tue Jan 27 22:48:03 2009 @@ -25,24 +25,24 @@ * This code is based on the widely used GSM 06.10 code available from * http://kbs.cs.tu-berlin.de/~jutta/toast.html * - * $Id: gsm0610_encode.c,v 1.26 2008/09/19 14:02:05 steveu Exp $ + * $Id: gsm0610_encode.c,v 1.28 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include Modified: freeswitch/trunk/libs/spandsp/src/gsm0610_local.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/gsm0610_local.h (original) +++ freeswitch/trunk/libs/spandsp/src/gsm0610_local.h Tue Jan 27 22:48:03 2009 @@ -25,7 +25,7 @@ * This code is based on the widely used GSM 06.10 code available from * http://kbs.cs.tu-berlin.de/~jutta/toast.html * - * $Id: gsm0610_local.h,v 1.10 2008/04/17 14:26:56 steveu Exp $ + * $Id: gsm0610_local.h,v 1.13 2009/01/16 15:49:59 steveu Exp $ */ #if !defined(_GSM0610_LOCAL_H_) @@ -35,16 +35,18 @@ #define GSM0610_MAGIC 0xD +#include "spandsp/private/gsm0610.h" + static __inline__ int16_t gsm_add(int16_t a, int16_t b) { -#if defined(__GNUC__) && defined(__i386__) +#if defined(__GNUC__) && defined(SPANDSP_USE_MMX) __asm__ __volatile__( " addw %2,%0;\n" " jno 0f;\n" " movw $0x7fff,%0;\n" " adcw $0,%0;\n" "0:" - : "=r" (a) + : "=&r" (a) : "0" (a), "ir" (b) : "cc" ); @@ -60,14 +62,14 @@ static __inline__ int32_t gsm_l_add(int32_t a, int32_t b) { -#if defined(__i386__) +#if defined(__GNUC__) && defined(SPANDSP_USE_MMX) __asm__ __volatile__( " addl %2,%0;\n" " jno 0f;\n" " movl $0x7fffffff,%0;\n" " adcl $0,%0;\n" "0:" - : "=r" (a) + : "=&r" (a) : "0" (a), "ir" (b) : "cc" ); Modified: freeswitch/trunk/libs/spandsp/src/gsm0610_long_term.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/gsm0610_long_term.c (original) +++ freeswitch/trunk/libs/spandsp/src/gsm0610_long_term.c Tue Jan 27 22:48:03 2009 @@ -25,24 +25,24 @@ * This code is based on the widely used GSM 06.10 code available from * http://kbs.cs.tu-berlin.de/~jutta/toast.html * - * $Id: gsm0610_long_term.c,v 1.17 2008/09/19 14:02:05 steveu Exp $ + * $Id: gsm0610_long_term.c,v 1.20 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" @@ -66,12 +66,82 @@ /* 4.2.11 .. 4.2.12 LONG TERM PREDICTOR (LTP) SECTION */ -#if defined(__GNUC__) && defined(__i386__) +#if defined(__GNUC__) && defined(SPANDSP_USE_MMX) int32_t gsm0610_max_cross_corr(const int16_t *wt, const int16_t *dp, int16_t *Nc_out) { int32_t lmax; int32_t out; +#if defined(__x86_64__) + __asm__ __volatile__( + " emms;\n" + " pushq %%rbx;\n" + " movl $0,%%edx;\n" /* Will be maximum inner-product */ + " movl $40,%%ebx;\n" + " movl %%ebx,%%ecx;\n" /* Will be index of max inner-product */ + " subq $80,%%rsi;\n" + " .p2align 2;\n" + "1:\n" + " movq (%%rdi),%%mm0;\n" + " movq (%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm0;\n" + " movq 8(%%rdi),%%mm1;\n" + " movq 8(%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + " movq 16(%%rdi),%%mm1;\n" + " movq 16(%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + " movq 24(%%rdi),%%mm1;\n" + " movq 24(%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + " movq 32(%%rdi),%%mm1;\n" + " movq 32(%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + " movq 40(%%rdi),%%mm1;\n" + " movq 40(%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + " movq 48(%%rdi),%%mm1;\n" + " movq 48(%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + " movq 56(%%rdi),%%mm1;\n" + " movq 56(%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + " movq 64(%%rdi),%%mm1;\n" + " movq 64(%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + " movq 72(%%rdi),%%mm1;\n" + " movq 72(%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + " movq %%mm0,%%mm1;\n" + " punpckhdq %%mm0,%%mm1;\n" /* mm1 has high int32 of mm0 dup'd */ + " paddd %%mm1,%%mm0;\n" + " movd %%mm0,%%eax;\n" /* eax has result */ + " cmpl %%edx,%%eax;\n" + " jle 2f;\n" + " movl %%eax,%%edx;\n" + " movl %%ebx,%%ecx;\n" + " .p2align 2;\n" + "2:\n" + " subq $2,%%rsi;\n" + " incl %%ebx;\n" + " cmpq $120,%%rbx;\n" + " jle 1b;\n" + " popq %%rbx;\n" + " emms;\n" + : "=d" (lmax), "=c" (out) + : "D" (wt), "S" (dp) + : "eax" + ); +#else __asm__ __volatile__( " emms;\n" " pushl %%ebx;\n" @@ -140,6 +210,7 @@ : "D" (wt), "S" (dp) : "eax" ); +#endif *Nc_out = out; return lmax; } @@ -176,7 +247,7 @@ int16_t scale; int16_t temp; int32_t L_temp; -#if !(defined(__GNUC__) && defined(__i386__)) +#if !(defined(__GNUC__) && defined(SPANDSP_USE_MMX)) int16_t lambda; #endif @@ -216,7 +287,7 @@ /*endfor*/ /* Search for the maximum cross-correlation and coding of the LTP lag */ -#if defined(__GNUC__) && defined(__i386__) +#if defined(__GNUC__) && defined(SPANDSP_USE_MMX) L_max = gsm0610_max_cross_corr(wt, dp, &Nc); #else L_max = 0; Modified: freeswitch/trunk/libs/spandsp/src/gsm0610_lpc.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/gsm0610_lpc.c (original) +++ freeswitch/trunk/libs/spandsp/src/gsm0610_lpc.c Tue Jan 27 22:48:03 2009 @@ -25,24 +25,24 @@ * This code is based on the widely used GSM 06.10 code available from * http://kbs.cs.tu-berlin.de/~jutta/toast.html * - * $Id: gsm0610_lpc.c,v 1.22 2008/09/19 14:02:05 steveu Exp $ + * $Id: gsm0610_lpc.c,v 1.27 2009/01/28 03:41:26 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include @@ -133,7 +133,7 @@ } /*- End of function --------------------------------------------------------*/ -#if defined(__GNUC__) && defined(__i386__) +#if defined(__GNUC__) && defined(SPANDSP_USE_MMX) void gsm0610_vec_vsraw(const int16_t *p, int n, int bits) { static const int64_t ones = 0x0001000100010001LL; @@ -141,6 +141,70 @@ if (n == 0) return; /*endif*/ +#if defined(__x86_64__) + __asm__ __volatile__( + " leaq -16(%%rsi,%%rax,2),%%rdx;\n" /* edx = top - 16 */ + " emms;\n" + " movd %%ecx,%%mm3;\n" + " movq %[ones],%%mm2;\n" + " psllw %%mm3,%%mm2;\n" + " psrlw $1,%%mm2;\n" + " cmpq %%rdx,%%rsi;" + " ja 4f;\n" + + " .p2align 2;\n" + /* 8 words per iteration */ + "6:\n" + " movq (%%rsi),%%mm0;\n" + " movq 8(%%rsi),%%mm1;\n" + " paddsw %%mm2,%%mm0;\n" + " psraw %%mm3,%%mm0;\n" + " paddsw %%mm2,%%mm1;\n" + " psraw %%mm3,%%mm1;\n" + " movq %%mm0,(%%rsi);\n" + " movq %%mm1,8(%%rsi);\n" + " addq $16,%%rsi;\n" + " cmpq %%rdx,%%rsi;\n" + " jbe 6b;\n" + + " .p2align 2;\n" + "4:\n" + " addq $12,%%rdx;\n" /* now edx = top-4 */ + " cmpq %%rdx,%%rsi;\n" + " ja 3f;\n" + + " .p2align 2;\n" + /* do up to 6 words, two per iteration */ + "5:\n" + " movd (%%rsi),%%mm0;\n" + " paddsw %%mm2,%%mm0;\n" + " psraw %%mm3,%%mm0;\n" + " movd %%mm0,(%%rsi);\n" + " addq $4,%%rsi;\n" + " cmpq %%rdx,%%rsi;\n" + " jbe 5b;\n" + + " .p2align 2;\n" + "3:\n" + " addq $2,%%rdx;\n" /* now edx = top-2 */ + " cmpq %%rdx,%%rsi;\n" + " ja 2f;\n" + + " movzwl (%%rsi),%%eax;\n" + " movd %%eax,%%mm0;\n" + " paddsw %%mm2,%%mm0;\n" + " psraw %%mm3,%%mm0;\n" + " movd %%mm0,%%eax;\n" + " movw %%ax,(%%rsi);\n" + + " .p2align 2;\n" + "2:\n" + " emms;\n" + : + : "S" (p), "a" (n), "c" (bits), [ones] "m" (ones) + : "edx" + ); +#else __asm__ __volatile__( " leal -16(%%esi,%%eax,2),%%edx;\n" /* edx = top - 16 */ " emms;\n" @@ -175,7 +239,7 @@ " .p2align 2;\n" /* do up to 6 words, two per iteration */ "5:\n" - " movd (%%esi),%%mm0;\n" + " movd (%%esi),%%mm0;\n" " paddsw %%mm2,%%mm0;\n" " psraw %%mm3,%%mm0;\n" " movd %%mm0,(%%esi);\n" @@ -203,6 +267,7 @@ : "S" (p), "a" (n), "c" (bits), [ones] "m" (ones) : "edx" ); +#endif } /*- End of function --------------------------------------------------------*/ #endif @@ -213,7 +278,7 @@ int k; int16_t smax; int16_t scalauto; -#if !(defined(__GNUC__) && defined(__i386__)) +#if !(defined(__GNUC__) && defined(SPANDSP_USE_MMX)) int i; int temp; int16_t *sp; @@ -225,7 +290,7 @@ /* Dynamic scaling of the array s[0..159] */ /* Search for the maximum. */ -#if defined(__GNUC__) && defined(__i386__) +#if defined(__GNUC__) && defined(SPANDSP_USE_MMX) smax = saturate(vec_min_maxi16(amp, GSM0610_FRAME_LEN, NULL)); #else for (smax = 0, k = 0; k < GSM0610_FRAME_LEN; k++) @@ -251,7 +316,7 @@ /*endif*/ /* Scaling of the array s[0...159] */ -#if defined(__GNUC__) && defined(__i386__) +#if defined(__GNUC__) && defined(SPANDSP_USE_MMX) if (scalauto > 0) gsm0610_vec_vsraw(amp, GSM0610_FRAME_LEN, scalauto); /*endif*/ @@ -266,78 +331,78 @@ #endif /* Compute the L_ACF[..]. */ -#if defined(__GNUC__) && defined(__i386__) +#if defined(__GNUC__) && defined(SPANDSP_USE_MMX) for (k = 0; k < 9; k++) L_ACF[k] = vec_dot_prodi16(amp, amp + k, GSM0610_FRAME_LEN - k) << 1; /*endfor*/ #else sp = amp; sl = *sp; - L_ACF[0] = ((int32_t) sl*sp[0]); + L_ACF[0] = ((int32_t) sl*(int32_t) sp[0]); sl = *++sp; - L_ACF[0] += ((int32_t) sl*sp[0]); - L_ACF[1] = ((int32_t) sl*sp[-1]); + L_ACF[0] += ((int32_t) sl*(int32_t) sp[0]); + L_ACF[1] = ((int32_t) sl*(int32_t) sp[-1]); sl = *++sp; - L_ACF[0] += ((int32_t) sl*sp[0]); - L_ACF[1] += ((int32_t) sl*sp[-1]); - L_ACF[2] = ((int32_t) sl*sp[-2]); + L_ACF[0] += ((int32_t) sl*(int32_t) sp[0]); + L_ACF[1] += ((int32_t) sl*(int32_t) sp[-1]); + L_ACF[2] = ((int32_t) sl*(int32_t) sp[-2]); sl = *++sp; - L_ACF[0] += ((int32_t) sl*sp[0]); - L_ACF[1] += ((int32_t) sl*sp[-1]); - L_ACF[2] += ((int32_t) sl*sp[-2]); - L_ACF[3] = ((int32_t) sl*sp[-3]); + L_ACF[0] += ((int32_t) sl*(int32_t) sp[0]); + L_ACF[1] += ((int32_t) sl*(int32_t) sp[-1]); + L_ACF[2] += ((int32_t) sl*(int32_t) sp[-2]); + L_ACF[3] = ((int32_t) sl*(int32_t) sp[-3]); sl = *++sp; - L_ACF[0] += ((int32_t) sl*sp[0]); - L_ACF[1] += ((int32_t) sl*sp[-1]); - L_ACF[2] += ((int32_t) sl*sp[-2]); - L_ACF[3] += ((int32_t) sl*sp[-3]); - L_ACF[4] = ((int32_t) sl*sp[-4]); + L_ACF[0] += ((int32_t) sl*(int32_t) sp[0]); + L_ACF[1] += ((int32_t) sl*(int32_t) sp[-1]); + L_ACF[2] += ((int32_t) sl*(int32_t) sp[-2]); + L_ACF[3] += ((int32_t) sl*(int32_t) sp[-3]); + L_ACF[4] = ((int32_t) sl*(int32_t) sp[-4]); sl = *++sp; - L_ACF[0] += ((int32_t) sl*sp[0]); - L_ACF[1] += ((int32_t) sl*sp[-1]); - L_ACF[2] += ((int32_t) sl*sp[-2]); - L_ACF[3] += ((int32_t) sl*sp[-3]); - L_ACF[4] += ((int32_t) sl*sp[-4]); - L_ACF[5] = ((int32_t) sl*sp[-5]); + L_ACF[0] += ((int32_t) sl*(int32_t) sp[0]); + L_ACF[1] += ((int32_t) sl*(int32_t) sp[-1]); + L_ACF[2] += ((int32_t) sl*(int32_t) sp[-2]); + L_ACF[3] += ((int32_t) sl*(int32_t) sp[-3]); + L_ACF[4] += ((int32_t) sl*(int32_t) sp[-4]); + L_ACF[5] = ((int32_t) sl*(int32_t) sp[-5]); sl = *++sp; - L_ACF[0] += ((int32_t) sl*sp[0]); - L_ACF[1] += ((int32_t) sl*sp[-1]); - L_ACF[2] += ((int32_t) sl*sp[-2]); - L_ACF[3] += ((int32_t) sl*sp[-3]); - L_ACF[4] += ((int32_t) sl*sp[-4]); - L_ACF[5] += ((int32_t) sl*sp[-5]); - L_ACF[6] = ((int32_t) sl*sp[-6]); + L_ACF[0] += ((int32_t) sl*(int32_t) sp[0]); + L_ACF[1] += ((int32_t) sl*(int32_t) sp[-1]); + L_ACF[2] += ((int32_t) sl*(int32_t) sp[-2]); + L_ACF[3] += ((int32_t) sl*(int32_t) sp[-3]); + L_ACF[4] += ((int32_t) sl*(int32_t) sp[-4]); + L_ACF[5] += ((int32_t) sl*(int32_t) sp[-5]); + L_ACF[6] = ((int32_t) sl*(int32_t) sp[-6]); sl = *++sp; - L_ACF[0] += ((int32_t) sl*sp[0]); - L_ACF[1] += ((int32_t) sl*sp[-1]); - L_ACF[2] += ((int32_t) sl*sp[-2]); - L_ACF[3] += ((int32_t) sl*sp[-3]); - L_ACF[4] += ((int32_t) sl*sp[-4]); - L_ACF[5] += ((int32_t) sl*sp[-5]); - L_ACF[6] += ((int32_t) sl*sp[-6]); - L_ACF[7] = ((int32_t) sl*sp[-7]); + L_ACF[0] += ((int32_t) sl*(int32_t) sp[0]); + L_ACF[1] += ((int32_t) sl*(int32_t) sp[-1]); + L_ACF[2] += ((int32_t) sl*(int32_t) sp[-2]); + L_ACF[3] += ((int32_t) sl*(int32_t) sp[-3]); + L_ACF[4] += ((int32_t) sl*(int32_t) sp[-4]); + L_ACF[5] += ((int32_t) sl*(int32_t) sp[-5]); + L_ACF[6] += ((int32_t) sl*(int32_t) sp[-6]); + L_ACF[7] = ((int32_t) sl*(int32_t) sp[-7]); sl = *++sp; - L_ACF[0] += ((int32_t) sl*sp[0]); - L_ACF[1] += ((int32_t) sl*sp[-1]); - L_ACF[2] += ((int32_t) sl*sp[-2]); - L_ACF[3] += ((int32_t) sl*sp[-3]); - L_ACF[4] += ((int32_t) sl*sp[-4]); - L_ACF[5] += ((int32_t) sl*sp[-5]); - L_ACF[6] += ((int32_t) sl*sp[-6]); - L_ACF[7] += ((int32_t) sl*sp[-7]); - L_ACF[8] = ((int32_t) sl*sp[-8]); + L_ACF[0] += ((int32_t) sl*(int32_t) sp[0]); + L_ACF[1] += ((int32_t) sl*(int32_t) sp[-1]); + L_ACF[2] += ((int32_t) sl*(int32_t) sp[-2]); + L_ACF[3] += ((int32_t) sl*(int32_t) sp[-3]); + L_ACF[4] += ((int32_t) sl*(int32_t) sp[-4]); + L_ACF[5] += ((int32_t) sl*(int32_t) sp[-5]); + L_ACF[6] += ((int32_t) sl*(int32_t) sp[-6]); + L_ACF[7] += ((int32_t) sl*(int32_t) sp[-7]); + L_ACF[8] = ((int32_t) sl*(int32_t) sp[-8]); for (i = 9; i < GSM0610_FRAME_LEN; i++) { sl = *++sp; - L_ACF[0] += ((int32_t) sl*sp[0]); - L_ACF[1] += ((int32_t) sl*sp[-1]); - L_ACF[2] += ((int32_t) sl*sp[-2]); - L_ACF[3] += ((int32_t) sl*sp[-3]); - L_ACF[4] += ((int32_t) sl*sp[-4]); - L_ACF[5] += ((int32_t) sl*sp[-5]); - L_ACF[6] += ((int32_t) sl*sp[-6]); - L_ACF[7] += ((int32_t) sl*sp[-7]); - L_ACF[8] += ((int32_t) sl*sp[-8]); + L_ACF[0] += ((int32_t) sl*(int32_t) sp[0]); + L_ACF[1] += ((int32_t) sl*(int32_t) sp[-1]); + L_ACF[2] += ((int32_t) sl*(int32_t) sp[-2]); + L_ACF[3] += ((int32_t) sl*(int32_t) sp[-3]); + L_ACF[4] += ((int32_t) sl*(int32_t) sp[-4]); + L_ACF[5] += ((int32_t) sl*(int32_t) sp[-5]); + L_ACF[6] += ((int32_t) sl*(int32_t) sp[-6]); + L_ACF[7] += ((int32_t) sl*(int32_t) sp[-7]); + L_ACF[8] += ((int32_t) sl*(int32_t) sp[-8]); } /*endfor*/ for (k = 0; k < 9; k++) Modified: freeswitch/trunk/libs/spandsp/src/gsm0610_preprocess.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/gsm0610_preprocess.c (original) +++ freeswitch/trunk/libs/spandsp/src/gsm0610_preprocess.c Tue Jan 27 22:48:03 2009 @@ -25,24 +25,24 @@ * This code is based on the widely used GSM 06.10 code available from * http://kbs.cs.tu-berlin.de/~jutta/toast.html * - * $Id: gsm0610_preprocess.c,v 1.14 2008/09/19 14:02:05 steveu Exp $ + * $Id: gsm0610_preprocess.c,v 1.16 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" Modified: freeswitch/trunk/libs/spandsp/src/gsm0610_rpe.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/gsm0610_rpe.c (original) +++ freeswitch/trunk/libs/spandsp/src/gsm0610_rpe.c Tue Jan 27 22:48:03 2009 @@ -25,24 +25,24 @@ * This code is based on the widely used GSM 06.10 code available from * http://kbs.cs.tu-berlin.de/~jutta/toast.html * - * $Id: gsm0610_rpe.c,v 1.22 2008/09/19 14:02:05 steveu Exp $ + * $Id: gsm0610_rpe.c,v 1.24 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" Modified: freeswitch/trunk/libs/spandsp/src/gsm0610_short_term.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/gsm0610_short_term.c (original) +++ freeswitch/trunk/libs/spandsp/src/gsm0610_short_term.c Tue Jan 27 22:48:03 2009 @@ -25,24 +25,24 @@ * This code is based on the widely used GSM 06.10 code available from * http://kbs.cs.tu-berlin.de/~jutta/toast.html * - * $Id: gsm0610_short_term.c,v 1.16 2008/09/19 14:02:05 steveu Exp $ + * $Id: gsm0610_short_term.c,v 1.18 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" Modified: freeswitch/trunk/libs/spandsp/src/hdlc.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/hdlc.c (original) +++ freeswitch/trunk/libs/spandsp/src/hdlc.c Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: hdlc.c,v 1.61 2008/09/07 12:45:16 steveu Exp $ + * $Id: hdlc.c,v 1.64 2009/01/05 13:48:31 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -41,6 +41,7 @@ #include "spandsp/crc.h" #include "spandsp/bit_operations.h" #include "spandsp/hdlc.h" +#include "spandsp/private/hdlc.h" static void rx_special_condition(hdlc_rx_state_t *s, int condition) { @@ -120,7 +121,7 @@ /* If we have not yet seen enough flags, restart the count. If we are beyond that point, just back off one step, so we need to see another flag before proceeding to collect frame octets. */ - if (s->flags_seen < s->framing_ok_threshold) + if (s->flags_seen < s->framing_ok_threshold - 1) s->flags_seen = 0; else s->flags_seen = s->framing_ok_threshold - 1; @@ -181,7 +182,16 @@ greatly reduces the chances of false preamble detection, and anything which doesn't send them back-to-back is badly broken. */ if (s->num_bits != 7) - s->flags_seen = 0; + { + /* Don't set the flags seen indicator back to zero too aggressively. + We want to pick up with the minimum of discarded data when there + is a bit error in the stream, and a bit error could emulate a + misaligned flag. */ + if (s->flags_seen < s->framing_ok_threshold - 1) + s->flags_seen = 0; + else + s->flags_seen = s->framing_ok_threshold - 1; + } if (++s->flags_seen >= s->framing_ok_threshold && !s->framing_ok_announced) { s->frame_handler(s->user_data, NULL, SIG_STATUS_FRAMING_OK, TRUE); Modified: freeswitch/trunk/libs/spandsp/src/ima_adpcm.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/ima_adpcm.c (original) +++ freeswitch/trunk/libs/spandsp/src/ima_adpcm.c Tue Jan 27 22:48:03 2009 @@ -23,29 +23,30 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: ima_adpcm.c,v 1.29 2008/09/19 14:02:05 steveu Exp $ + * $Id: ima_adpcm.c,v 1.33 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/saturated.h" #include "spandsp/ima_adpcm.h" +#include "spandsp/private/ima_adpcm.h" /* * Intel/DVI ADPCM coder/decoder. @@ -118,15 +119,18 @@ /* Intel ADPCM step variation table */ static const int step_size[STEP_MAX + 1] = { - 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, - 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, - 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, - 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, - 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, - 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, - 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, - 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, - 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767 + 7, 8, 9, 10, 11, 12, 13, 14, + 16, 17, 19, 21, 23, 25, 28, 31, + 34, 37, 41, 45, 50, 55, 60, 66, + 73, 80, 88, 97, 107, 118, 130, 143, + 157, 173, 190, 209, 230, 253, 279, 307, + 337, 371, 408, 449, 494, 544, 598, 658, + 724, 796, 876, 963, 1060, 1166, 1282, 1411, + 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, + 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, + 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, + 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, + 32767 }; static const int step_adjustment[8] = Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.dsp ============================================================================== --- freeswitch/trunk/libs/spandsp/src/libspandsp.dsp (original) +++ freeswitch/trunk/libs/spandsp/src/libspandsp.dsp Tue Jan 27 22:48:03 2009 @@ -703,6 +703,198 @@ # End Source File # Begin Source File +SOURCE=.\spandsp/private/adsi.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/async.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/at_interpreter.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/awgn.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/bell_r2_mf.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/bert.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/bitstream.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/dtmf.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/fax.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/fax_modems.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/fsk.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/g711.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/g722.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/g726.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/gsm0610.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/hdlc.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/ima_adpcm.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/logging.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/lpc10.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/modem_connect_tones.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/noise.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/oki_adpcm.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/queue.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/schedule.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/sig_tone.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/super_tone_rx.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/super_tone_tx.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/t30.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/t31.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/t38_core.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/t38_gateway.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/t38_non_ecm_buffer.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/t38_terminal.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/t4.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/time_scale.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/tone_detect.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/tone_generate.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/v17rx.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/v17tx.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/v22bis.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/v27ter_rx.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/v27ter_tx.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/v29rx.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/v29tx.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/v42.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/v42bis.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/private/v8.h +# End Source File +# Begin Source File + +SOURCE=.\spandsp/expose.h +# End Source File +# Begin Source File + SOURCE=.\spandsp.h # End Source File # End Group Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj ============================================================================== --- freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj (original) +++ freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj Tue Jan 27 22:48:03 2009 @@ -331,6 +331,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include "config.h" #endif #include @@ -46,9 +46,11 @@ #include "spandsp/telephony.h" #include "spandsp/logging.h" +#include "spandsp/private/logging.h" + static void default_message_handler(int level, const char *text); -static message_handler_func_t __span_message = *default_message_handler; +static message_handler_func_t __span_message = &default_message_handler; static error_handler_func_t __span_error = NULL; /* Note that this list *must* match the enum definition in logging.h */ Modified: freeswitch/trunk/libs/spandsp/src/lpc10_analyse.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/lpc10_analyse.c (original) +++ freeswitch/trunk/libs/spandsp/src/lpc10_analyse.c Tue Jan 27 22:48:03 2009 @@ -26,28 +26,29 @@ * implementation of the LPC-10 2400 bps Voice Coder. They do not * exert copyright claims on their code, and it may be freely used. * - * $Id: lpc10_analyse.c,v 1.19 2008/07/02 14:48:25 steveu Exp $ + * $Id: lpc10_analyse.c,v 1.22 2009/01/28 03:41:27 steveu Exp $ */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/dc_restore.h" #include "spandsp/lpc10.h" +#include "spandsp/private/lpc10.h" #include "lpc10_encdecs.h" Modified: freeswitch/trunk/libs/spandsp/src/lpc10_decode.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/lpc10_decode.c (original) +++ freeswitch/trunk/libs/spandsp/src/lpc10_decode.c Tue Jan 27 22:48:03 2009 @@ -26,28 +26,29 @@ * implementation of the LPC-10 2400 bps Voice Coder. They do not * exert copyright claims on their code, and it may be freely used. * - * $Id: lpc10_decode.c,v 1.22 2008/07/02 14:48:25 steveu Exp $ + * $Id: lpc10_decode.c,v 1.25 2009/01/28 03:41:27 steveu Exp $ */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" #include "spandsp/dc_restore.h" #include "spandsp/lpc10.h" +#include "spandsp/private/lpc10.h" #define LPC10_ORDER 10 Modified: freeswitch/trunk/libs/spandsp/src/lpc10_encode.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/lpc10_encode.c (original) +++ freeswitch/trunk/libs/spandsp/src/lpc10_encode.c Tue Jan 27 22:48:03 2009 @@ -26,28 +26,29 @@ * implementation of the LPC-10 2400 bps Voice Coder. They do not * exert copyright claims on their code, and it may be freely used. * - * $Id: lpc10_encode.c,v 1.23 2008/07/02 14:48:25 steveu Exp $ + * $Id: lpc10_encode.c,v 1.26 2009/01/28 03:41:27 steveu Exp $ */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/dc_restore.h" #include "spandsp/lpc10.h" +#include "spandsp/private/lpc10.h" #include "lpc10_encdecs.h" Modified: freeswitch/trunk/libs/spandsp/src/lpc10_placev.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/lpc10_placev.c (original) +++ freeswitch/trunk/libs/spandsp/src/lpc10_placev.c Tue Jan 27 22:48:03 2009 @@ -26,24 +26,24 @@ * implementation of the LPC-10 2400 bps Voice Coder. They do not * exert copyright claims on their code, and it may be freely used. * - * $Id: lpc10_placev.c,v 1.17 2008/07/02 14:48:25 steveu Exp $ + * $Id: lpc10_placev.c,v 1.19 2009/01/28 03:41:27 steveu Exp $ */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/dc_restore.h" Modified: freeswitch/trunk/libs/spandsp/src/lpc10_voicing.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/lpc10_voicing.c (original) +++ freeswitch/trunk/libs/spandsp/src/lpc10_voicing.c Tue Jan 27 22:48:03 2009 @@ -26,28 +26,29 @@ * implementation of the LPC-10 2400 bps Voice Coder. They do not * exert copyright claims on their code, and it may be freely used. * - * $Id: lpc10_voicing.c,v 1.14 2008/07/02 14:48:25 steveu Exp $ + * $Id: lpc10_voicing.c,v 1.17 2009/01/28 03:41:27 steveu Exp $ */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/dc_restore.h" #include "spandsp/lpc10.h" +#include "spandsp/private/lpc10.h" #include "lpc10_encdecs.h" Modified: freeswitch/trunk/libs/spandsp/src/make_modem_filter.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/make_modem_filter.c (original) +++ freeswitch/trunk/libs/spandsp/src/make_modem_filter.c Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: make_modem_filter.c,v 1.12 2008/09/18 14:59:30 steveu Exp $ + * $Id: make_modem_filter.c,v 1.13 2009/01/28 03:41:27 steveu Exp $ */ #if defined(HAVE_CONFIG_H) @@ -33,13 +33,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include #include Modified: freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c (original) +++ freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c Tue Jan 27 22:48:03 2009 @@ -23,25 +23,25 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: modem_connect_tones.c,v 1.28 2008/09/07 12:45:16 steveu Exp $ + * $Id: modem_connect_tones.c,v 1.31 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" @@ -56,6 +56,9 @@ #include "spandsp/fsk.h" #include "spandsp/modem_connect_tones.h" +#include "spandsp/private/fsk.h" +#include "spandsp/private/modem_connect_tones.h" + #define HDLC_FRAMING_OK_THRESHOLD 5 const char *modem_connect_tone_to_str(int tone) Modified: freeswitch/trunk/libs/spandsp/src/modem_echo.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/modem_echo.c (original) +++ freeswitch/trunk/libs/spandsp/src/modem_echo.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: modem_echo.c,v 1.22 2008/07/02 14:48:25 steveu Exp $ + * $Id: modem_echo.c,v 1.24 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -33,20 +33,20 @@ */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/bit_operations.h" Modified: freeswitch/trunk/libs/spandsp/src/msvc/spandsp.def ============================================================================== --- freeswitch/trunk/libs/spandsp/src/msvc/spandsp.def (original) +++ freeswitch/trunk/libs/spandsp/src/msvc/spandsp.def Tue Jan 27 22:48:03 2009 @@ -4,6 +4,7 @@ adsi_tx_init adsi_next_field adsi_add_field +alaw_to_ulaw async_tx_init async_rx_init awgn @@ -53,6 +54,11 @@ fsk_rx_init fsk_rx fsk_rx_set_put_bit +g711_init +g711_release +g711_encode +g711_decode +g711_transcode g722_encode_init g722_encode_release g722_encode @@ -191,6 +197,7 @@ tone_gen dtmf_tx_init dtmf_tx +ulaw_to_alaw v17_rx_init v17_rx_restart v17_rx_set_put_bit Modified: freeswitch/trunk/libs/spandsp/src/noise.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/noise.c (original) +++ freeswitch/trunk/libs/spandsp/src/noise.c Tue Jan 27 22:48:03 2009 @@ -23,31 +23,33 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: noise.c,v 1.25 2008/09/19 14:02:05 steveu Exp $ + * $Id: noise.c,v 1.28 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/saturated.h" #include "spandsp/noise.h" +#include "spandsp/private/noise.h" + int16_t noise(noise_state_t *s) { int32_t val; Modified: freeswitch/trunk/libs/spandsp/src/oki_adpcm.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/oki_adpcm.c (original) +++ freeswitch/trunk/libs/spandsp/src/oki_adpcm.c Tue Jan 27 22:48:03 2009 @@ -27,13 +27,13 @@ * The actual OKI ADPCM encode and decode method is derived from freely * available code, whose exact origins seem uncertain. * - * $Id: oki_adpcm.c,v 1.27 2008/05/13 13:17:23 steveu Exp $ + * $Id: oki_adpcm.c,v 1.30 2009/01/05 13:48:31 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -42,19 +42,21 @@ #include "spandsp/telephony.h" #include "spandsp/oki_adpcm.h" +#include "spandsp/private/oki_adpcm.h" /* Routines to convert 12 bit linear samples to the Oki ADPCM coding format, widely used in CTI, because Dialogic use it. */ +/* OKI ADPCM step variation table */ static const int16_t step_size[49] = { - 16, 17, 19, 21, 23, 25, 28, 31, - 34, 37, 41, 45, 50, 55, 60, 66, - 73, 80, 88, 97, 107, 118, 130, 143, - 157, 173, 190, 209, 230, 253, 279, 307, - 337, 371, 408, 449, 494, 544, 598, 658, - 724, 796, 876, 963, 1060, 1166, 1282, 1408, - 1552 + 16, 17, 19, 21, 23, 25, 28, 31, + 34, 37, 41, 45, 50, 55, 60, 66, + 73, 80, 88, 97, 107, 118, 130, 143, + 157, 173, 190, 209, 230, 253, 279, 307, + 337, 371, 408, 449, 494, 544, 598, 658, + 724, 796, 876, 963, 1060, 1166, 1282, 1411, + 1552 }; static const int16_t step_adjustment[8] = Modified: freeswitch/trunk/libs/spandsp/src/playout.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/playout.c (original) +++ freeswitch/trunk/libs/spandsp/src/playout.c Tue Jan 27 22:48:03 2009 @@ -29,11 +29,11 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: playout.c,v 1.14 2008/05/13 13:17:23 steveu Exp $ + * $Id: playout.c,v 1.15 2009/01/05 13:48:31 steveu Exp $ */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include Modified: freeswitch/trunk/libs/spandsp/src/plc.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/plc.c (original) +++ freeswitch/trunk/libs/spandsp/src/plc.c Tue Jan 27 22:48:03 2009 @@ -22,26 +22,26 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: plc.c,v 1.23 2008/09/19 14:02:05 steveu Exp $ + * $Id: plc.c,v 1.25 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" Modified: freeswitch/trunk/libs/spandsp/src/power_meter.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/power_meter.c (original) +++ freeswitch/trunk/libs/spandsp/src/power_meter.c Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: power_meter.c,v 1.24 2008/07/02 14:48:26 steveu Exp $ + * $Id: power_meter.c,v 1.26 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -37,13 +37,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" Modified: freeswitch/trunk/libs/spandsp/src/queue.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/queue.c (original) +++ freeswitch/trunk/libs/spandsp/src/queue.c Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: queue.c,v 1.23 2008/09/09 16:25:51 steveu Exp $ + * $Id: queue.c,v 1.25 2009/01/05 13:48:31 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -42,6 +42,8 @@ #define FULLY_DEFINE_QUEUE_STATE_T #include "spandsp/queue.h" +#include "spandsp/private/queue.h" + int queue_empty(queue_state_t *s) { return (s->iptr == s->optr); Modified: freeswitch/trunk/libs/spandsp/src/schedule.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/schedule.c (original) +++ freeswitch/trunk/libs/spandsp/src/schedule.c Tue Jan 27 22:48:03 2009 @@ -22,11 +22,11 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: schedule.c,v 1.17 2008/05/13 13:17:23 steveu Exp $ + * $Id: schedule.c,v 1.20 2009/01/05 13:48:31 steveu Exp $ */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -38,6 +38,9 @@ #include "spandsp/logging.h" #include "spandsp/schedule.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/schedule.h" + int span_schedule_event(span_sched_state_t *s, int us, span_sched_callback_func_t function, void *user_data) { int i; Modified: freeswitch/trunk/libs/spandsp/src/sig_tone.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/sig_tone.c (original) +++ freeswitch/trunk/libs/spandsp/src/sig_tone.c Tue Jan 27 22:48:03 2009 @@ -23,25 +23,25 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: sig_tone.c,v 1.25 2008/09/19 14:02:05 steveu Exp $ + * $Id: sig_tone.c,v 1.28 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include @@ -53,6 +53,8 @@ #include "spandsp/dds.h" #include "spandsp/sig_tone.h" +#include "spandsp/private/sig_tone.h" + #define PI 3.14159265358979323 /* The coefficients for the data notch filter. This filter is also the Modified: freeswitch/trunk/libs/spandsp/src/silence_gen.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/silence_gen.c (original) +++ freeswitch/trunk/libs/spandsp/src/silence_gen.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: silence_gen.c,v 1.16 2008/09/07 12:45:16 steveu Exp $ + * $Id: silence_gen.c,v 1.17 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -36,13 +36,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include Modified: freeswitch/trunk/libs/spandsp/src/spandsp.h.in ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp.h.in (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp.h.in Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: spandsp.h.in,v 1.11 2008/09/19 14:02:05 steveu Exp $ + * $Id: spandsp.h.in,v 1.14 2009/01/07 13:31:53 steveu Exp $ */ /*! \file */ @@ -116,4 +116,8 @@ #include #endif + +#if defined(SPANDSP_EXPOSE_INTERNAL_STRUCTURES) +#include +#endif /*- End of file ------------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/spandsp/adsi.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/adsi.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/adsi.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: adsi.h,v 1.31 2008/05/05 11:25:01 steveu Exp $ + * $Id: adsi.h,v 1.33 2008/10/13 14:19:18 steveu Exp $ */ /*! \file */ @@ -371,58 +371,13 @@ ADSI transmitter descriptor. This contains all the state information for an ADSI (caller ID, CLASS, CLIP, ACLIP) transmit channel. */ -typedef struct -{ - int standard; - - tone_gen_descriptor_t alert_tone_desc; - tone_gen_state_t alert_tone_gen; - fsk_tx_state_t fsktx; - dtmf_tx_state_t dtmftx; - async_tx_state_t asynctx; - - int tx_signal_on; - - int byte_no; - int bit_pos; - int bit_no; - uint8_t msg[256]; - int msg_len; - int preamble_len; - int preamble_ones_len; - int postamble_ones_len; - int stop_bits; - int baudot_shift; - - logging_state_t logging; -} adsi_tx_state_t; +typedef struct adsi_tx_state_s adsi_tx_state_t; /*! ADSI receiver descriptor. This contains all the state information for an ADSI (caller ID, CLASS, CLIP, ACLIP, JCLIP) receive channel. */ -typedef struct -{ - int standard; - put_msg_func_t put_msg; - void *user_data; - - fsk_rx_state_t fskrx; - dtmf_rx_state_t dtmfrx; - async_rx_state_t asyncrx; - - int consecutive_ones; - int bit_pos; - int in_progress; - uint8_t msg[256]; - int msg_len; - int baudot_shift; - - /*! A count of the framing errors. */ - int framing_errors; - - logging_state_t logging; -} adsi_rx_state_t; +typedef struct adsi_rx_state_s adsi_rx_state_t; #if defined(__cplusplus) extern "C" @@ -439,6 +394,8 @@ */ adsi_rx_state_t *adsi_rx_init(adsi_rx_state_t *s, int standard, put_msg_func_t put_msg, void *user_data); +int adsi_rx_free(adsi_rx_state_t *s); + /*! \brief Receive a chunk of ADSI audio. \param s The ADSI receive context. \param amp The audio sample buffer. @@ -454,6 +411,8 @@ */ adsi_tx_state_t *adsi_tx_init(adsi_tx_state_t *s, int standard); +int adsi_tx_free(adsi_tx_state_t *s); + /*! \brief Adjust the preamble associated with an ADSI transmit context. \param s The ADSI transmit context. \param preamble_len The number of bits of preamble. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/async.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/async.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/async.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: async.h,v 1.18 2008/09/07 12:45:17 steveu Exp $ + * $Id: async.h,v 1.19 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -120,59 +120,14 @@ working instance of a byte to asynchronous serial converter, for use in FSK modems. */ -typedef struct -{ - /*! \brief The number of data bits per character. */ - int data_bits; - /*! \brief The type of parity. */ - int parity; - /*! \brief The number of stop bits per character. */ - int stop_bits; - /*! \brief A pointer to the callback routine used to get characters to be transmitted. */ - get_byte_func_t get_byte; - /*! \brief An opaque pointer passed when calling get_byte. */ - void *user_data; - - /*! \brief A current, partially transmitted, character. */ - int byte_in_progress; - /*! \brief The current bit position within a partially transmitted character. */ - int bitpos; - /*! \brief Parity bit. */ - int parity_bit; -} async_tx_state_t; +typedef struct async_tx_state_s async_tx_state_t; /*! Asynchronous data receive descriptor. This defines the state of a single working instance of an asynchronous serial to byte converter, for use in FSK modems. */ -typedef struct -{ - /*! \brief The number of data bits per character. */ - int data_bits; - /*! \brief The type of parity. */ - int parity; - /*! \brief The number of stop bits per character. */ - int stop_bits; - /*! \brief TRUE if V.14 rate adaption processing should be performed. */ - int use_v14; - /*! \brief A pointer to the callback routine used to handle received characters. */ - put_byte_func_t put_byte; - /*! \brief An opaque pointer passed when calling put_byte. */ - void *user_data; - - /*! \brief A current, partially complete, character. */ - int byte_in_progress; - /*! \brief The current bit position within a partially complete character. */ - int bitpos; - /*! \brief Parity bit. */ - int parity_bit; - - /*! A count of the number of parity errors seen. */ - int parity_errors; - /*! A count of the number of character framing errors seen. */ - int framing_errors; -} async_rx_state_t; +typedef struct async_rx_state_s async_rx_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/at_interpreter.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/at_interpreter.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/at_interpreter.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: at_interpreter.h,v 1.19 2008/09/16 12:45:50 steveu Exp $ + * $Id: at_interpreter.h,v 1.20 2008/11/30 05:43:37 steveu Exp $ */ /*! \file */ @@ -112,13 +112,6 @@ AT_RESPONSE_CODE_FRH3 }; -struct at_call_id -{ - char *id; - char *value; - struct at_call_id *next; -}; - /*! AT profile. */ @@ -140,93 +133,6 @@ uint8_t s_regs[100]; } at_profile_t; -/*! - AT descriptor. This defines the working state for a single instance of - the AT interpreter. -*/ -struct at_state_s -{ - at_profile_t p; - /*! Value set by +GCI */ - int country_of_installation; - /*! Value set by +FIT */ - int dte_inactivity_timeout; - /*! Value set by +FIT */ - int dte_inactivity_action; - /*! Value set by L */ - int speaker_volume; - /*! Value set by M */ - int speaker_mode; - /*! This is no real DTE rate. This variable is for compatibility this serially - connected modems. */ - /*! Value set by +IPR/+FPR */ - int dte_rate; - /*! Value set by +ICF */ - int dte_char_format; - /*! Value set by +ICF */ - int dte_parity; - /*! Value set by &C */ - int rlsd_behaviour; - /*! Value set by &D */ - int dtr_behaviour; - /*! Value set by +FCL */ - int carrier_loss_timeout; - /*! Value set by X */ - int result_code_mode; - /*! Value set by +IDSR */ - int dsr_option; - /*! Value set by +ILSD */ - int long_space_disconnect_option; - /*! Value set by +ICLOK */ - int sync_tx_clock_source; - /*! Value set by +EWIND */ - int rx_window; - /*! Value set by +EWIND */ - int tx_window; - - int v8bis_signal; - int v8bis_1st_message; - int v8bis_2nd_message; - int v8bis_sig_en; - int v8bis_msg_en; - int v8bis_supp_delay; - - uint8_t rx_data[256]; - int rx_data_bytes; - - int display_call_info; - int call_info_displayed; - struct at_call_id *call_id; - char *local_id; - /*! The currently select FAX modem class. 0 = data modem mode. */ - int fclass_mode; - int at_rx_mode; - int rings_indicated; - int do_hangup; - int silent_dial; - int command_dial; - int ok_is_pending; - int dte_is_waiting; - /*! \brief TRUE if a carrier is presnt. Otherwise FALSE. */ - int rx_signal_present; - /*! \brief TRUE if a modem has trained, Otherwise FALSE. */ - int rx_trained; - int transmit; - - char line[256]; - int line_ptr; - - at_modem_control_handler_t *modem_control_handler; - void *modem_control_user_data; - at_tx_handler_t *at_tx_handler; - void *at_tx_user_data; - at_class1_handler_t *class1_handler; - void *class1_user_data; - - /*! \brief Error and flow logging control */ - logging_state_t logging; -}; - #if defined(__cplusplus) extern "C" { Modified: freeswitch/trunk/libs/spandsp/src/spandsp/awgn.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/awgn.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/awgn.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: awgn.h,v 1.14 2008/04/17 14:26:59 steveu Exp $ + * $Id: awgn.h,v 1.15 2008/11/30 12:38:27 steveu Exp $ */ /*! \file */ @@ -71,16 +71,7 @@ /*! AWGN generator descriptor. This contains all the state information for an AWGN generator. */ -typedef struct -{ - double rms; - long int ix1; - long int ix2; - long int ix3; - double r[98]; - double gset; - int iset; -} awgn_state_t; +typedef struct awgn_state_s awgn_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/bell_r2_mf.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/bell_r2_mf.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/bell_r2_mf.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: bell_r2_mf.h,v 1.19 2008/05/30 13:51:28 steveu Exp $ + * $Id: bell_r2_mf.h,v 1.21 2008/10/13 14:19:18 steveu Exp $ */ /*! \file */ @@ -108,73 +108,22 @@ Bell MF generator state descriptor. This defines the state of a single working instance of a Bell MF generator. */ -typedef struct -{ - /*! The tone generator. */ - tone_gen_state_t tones; - int current_sample; - union - { - queue_state_t queue; - uint8_t buf[QUEUE_STATE_T_SIZE(MAX_BELL_MF_DIGITS)]; - } queue; -} bell_mf_tx_state_t; +typedef struct bell_mf_tx_state_s bell_mf_tx_state_t; /*! Bell MF digit detector descriptor. */ -typedef struct -{ - /*! Optional callback funcion to deliver received digits. */ - digits_rx_callback_t digits_callback; - /*! An opaque pointer passed to the callback function. */ - void *digits_callback_data; - /*! Tone detector working states */ - goertzel_state_t out[6]; - /*! Short term history of results from the tone detection, using in persistence checking */ - uint8_t hits[5]; - /*! The current sample number within a processing block. */ - int current_sample; - - /*! The number of digits which have been lost due to buffer overflows. */ - int lost_digits; - /*! The number of digits currently in the digit buffer. */ - int current_digits; - /*! The received digits buffer. This is a NULL terminated string. */ - char digits[MAX_BELL_MF_DIGITS + 1]; -} bell_mf_rx_state_t; +typedef struct bell_mf_rx_state_s bell_mf_rx_state_t; /*! MFC/R2 tone detector descriptor. */ -typedef struct -{ - /*! The tone generator. */ - tone_gen_state_t tone; - /*! TRUE if generating forward tones, otherwise generating reverse tones. */ - int fwd; - /*! The current digit being generated. */ - int digit; -} r2_mf_tx_state_t; +typedef struct r2_mf_tx_state_s r2_mf_tx_state_t; /*! MFC/R2 tone detector descriptor. */ -typedef struct -{ - /*! Optional callback funcion to deliver received digits. */ - tone_report_func_t callback; - /*! An opaque pointer passed to the callback function. */ - void *callback_data; - /*! TRUE is we are detecting forward tones. FALSE if we are detecting backward tones */ - int fwd; - /*! Tone detector working states */ - goertzel_state_t out[6]; - /*! The current sample number within a processing block. */ - int current_sample; - /*! The currently detected digit. */ - int current_digit; -} r2_mf_rx_state_t; +typedef struct r2_mf_rx_state_s r2_mf_rx_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/bert.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/bert.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/bert.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: bert.h,v 1.19 2008/04/17 14:26:59 steveu Exp $ + * $Id: bert.h,v 1.20 2008/11/30 12:38:27 steveu Exp $ */ #if !defined(_SPANDSP_BERT_H_) @@ -106,54 +106,7 @@ Bit error rate tester (BERT) descriptor. This defines the working state for a single instance of the BERT. */ -typedef struct -{ - int pattern; - int pattern_class; - bert_report_func_t reporter; - void *user_data; - int report_frequency; - int limit; - - uint32_t tx_reg; - int tx_step; - int tx_step_bit; - int tx_bits; - int tx_zeros; - - uint32_t rx_reg; - uint32_t ref_reg; - uint32_t master_reg; - int rx_step; - int rx_step_bit; - int resync; - int rx_bits; - int rx_zeros; - int resync_len; - int resync_percent; - int resync_bad_bits; - int resync_cnt; - - uint32_t mask; - int shift; - int shift2; - int max_zeros; - int invert; - int resync_time; - - int decade_ptr[9]; - int decade_bad[9][10]; - int step; - int error_rate; - - int bit_error_status; - int report_countdown; - - bert_results_t results; - - /*! \brief Error and flow logging control */ - logging_state_t logging; -} bert_state_t; +typedef struct bert_state_s bert_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/bit_operations.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/bit_operations.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/bit_operations.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: bit_operations.h,v 1.22 2008/07/10 13:43:40 steveu Exp $ + * $Id: bit_operations.h,v 1.23 2008/10/13 23:41:40 steveu Exp $ */ /*! \file */ @@ -40,9 +40,9 @@ \return The bit number of the highest set bit, or -1 if the word is zero. */ static __inline__ int top_bit(unsigned int bits) { +#if defined(__i386__) || defined(__x86_64__) int res; -#if defined(__i386__) || defined(__x86_64__) __asm__ (" xorl %[res],%[res];\n" " decl %[res];\n" " bsrl %[bits],%[res]\n" @@ -50,11 +50,22 @@ : [bits] "rm" (bits)); return res; #elif defined(__ppc__) || defined(__powerpc__) + int res; + __asm__ ("cntlzw %[res],%[bits];\n" : [res] "=&r" (res) : [bits] "r" (bits)); return 31 - res; +#elif defined(_M_IX86) // Visual Studio x86 + __asm + { + xor eax, eax + dec eax + bsr eax, bits + } #else + int res; + if (bits == 0) return -1; res = 0; Modified: freeswitch/trunk/libs/spandsp/src/spandsp/bitstream.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/bitstream.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/bitstream.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: bitstream.h,v 1.10 2008/04/17 14:27:00 steveu Exp $ + * $Id: bitstream.h,v 1.12 2008/11/30 12:45:09 steveu Exp $ */ /*! \file */ @@ -37,13 +37,7 @@ */ /*! Bitstream handler state */ -typedef struct -{ - /*! The bit stream. */ - unsigned int bitstream; - /*! The residual bits in bitstream. */ - unsigned int residue; -} bitstream_state_t; +typedef struct bitstream_state_s bitstream_state_t; #if defined(__cplusplus) @@ -55,19 +49,19 @@ \param s A pointer to the bitstream context. \param c A pointer to the bitstream output buffer. \param value The value to be pushed into the output buffer. - \param bits The number of bits of value to be pushed. 1 to 25 bit is valid. */ -void bitstream_put(bitstream_state_t *s, uint8_t **c, unsigned int value, int bits); + \param bits The number of bits of value to be pushed. 1 to 25 bits is valid. */ +void bitstream_put(bitstream_state_t *s, uint8_t **c, uint32_t value, int bits); -void bitstream_put2(bitstream_state_t *s, uint8_t **c, unsigned int value, int bits); +void bitstream_put2(bitstream_state_t *s, uint8_t **c, uint32_t value, int bits); /*! \brief Get a chunk of bits from the input buffer. \param s A pointer to the bitstream context. \param c A pointer to the bitstream input buffer. - \param bits The number of bits of value to be grabbed. 1 to 25 bit is valid. + \param bits The number of bits of value to be grabbed. 1 to 25 bits is valid. \return The value retrieved from the input buffer. */ -unsigned int bitstream_get(bitstream_state_t *s, const uint8_t **c, int bits); +uint32_t bitstream_get(bitstream_state_t *s, const uint8_t **c, int bits); -unsigned int bitstream_get2(bitstream_state_t *s, const uint8_t **c, int bits); +uint32_t bitstream_get2(bitstream_state_t *s, const uint8_t **c, int bits); /*! \brief Flush any residual bit to the output buffer. \param s A pointer to the bitstream context. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/complex_vector_float.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/complex_vector_float.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/complex_vector_float.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: complex_vector_float.h,v 1.10 2008/09/18 13:16:49 steveu Exp $ + * $Id: complex_vector_float.h,v 1.11 2008/10/09 13:25:19 steveu Exp $ */ #if !defined(_SPANDSP_COMPLEX_VECTOR_FLOAT_H_) @@ -120,6 +120,14 @@ /*- End of function --------------------------------------------------------*/ #endif +void cvec_mulf(complexf_t z[], const complexf_t x[], const complexf_t y[], int n); + +void cvec_mul(complex_t z[], const complex_t x[], const complex_t y[], int n); + +#if defined(HAVE_LONG_DOUBLE) +void cvec_mull(complexl_t z[], const complexl_t x[], const complexl_t y[], int n); +#endif + /*! \brief Find the dot product of two complex float vectors. \param x The first vector. \param y The first vector. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/dtmf.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/dtmf.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/dtmf.h Tue Jan 27 22:48:03 2009 @@ -1,7 +1,7 @@ /* * SpanDSP - a series of DSP components for telephony * - * dtmf.h - + * dtmf.h - DTMF tone generation and detection. * * Written by Steve Underwood * @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: dtmf.h,v 1.28 2008/06/13 14:46:52 steveu Exp $ + * $Id: dtmf.h,v 1.29 2008/10/13 13:14:00 steveu Exp $ */ #if !defined(_SPANDSP_DTMF_H_) @@ -81,80 +81,12 @@ DTMF generator state descriptor. This defines the state of a single working instance of a DTMF generator. */ -typedef struct -{ - tone_gen_state_t tones; - float low_level; - float high_level; - int on_time; - int off_time; - union - { - queue_state_t queue; - uint8_t buf[QUEUE_STATE_T_SIZE(MAX_DTMF_DIGITS)]; - } queue; -} dtmf_tx_state_t; +typedef struct dtmf_tx_state_s dtmf_tx_state_t; /*! DTMF digit detector descriptor. */ -typedef struct -{ - /*! Optional callback funcion to deliver received digits. */ - digits_rx_callback_t digits_callback; - /*! An opaque pointer passed to the callback function. */ - void *digits_callback_data; - /*! Optional callback funcion to deliver real time digit state changes. */ - tone_report_func_t realtime_callback; - /*! An opaque pointer passed to the real time callback function. */ - void *realtime_callback_data; - /*! TRUE if dialtone should be filtered before processing */ - int filter_dialtone; -#if defined(SPANDSP_USE_FIXED_POINT) - /*! 350Hz filter state for the optional dialtone filter. */ - float z350[2]; - /*! 440Hz filter state for the optional dialtone filter. */ - float z440[2]; - /*! Maximum acceptable "normal" (lower bigger than higher) twist ratio. */ - float normal_twist; - /*! Maximum acceptable "reverse" (higher bigger than lower) twist ratio. */ - float reverse_twist; - /*! Minimum acceptable tone level for detection. */ - int32_t threshold; - /*! The accumlating total energy on the same period over which the Goertzels work. */ - int32_t energy; -#else - /*! 350Hz filter state for the optional dialtone filter. */ - float z350[2]; - /*! 440Hz filter state for the optional dialtone filter. */ - float z440[2]; - /*! Maximum acceptable "normal" (lower bigger than higher) twist ratio. */ - float normal_twist; - /*! Maximum acceptable "reverse" (higher bigger than lower) twist ratio. */ - float reverse_twist; - /*! Minimum acceptable tone level for detection. */ - float threshold; - /*! The accumlating total energy on the same period over which the Goertzels work. */ - float energy; -#endif - /*! Tone detector working states for the row tones. */ - goertzel_state_t row_out[4]; - /*! Tone detector working states for the column tones. */ - goertzel_state_t col_out[4]; - /*! The result of the last tone analysis. */ - uint8_t last_hit; - /*! The confirmed digit we are currently receiving */ - uint8_t in_digit; - /*! The current sample number within a processing block. */ - int current_sample; - - /*! The number of digits which have been lost due to buffer overflows. */ - int lost_digits; - /*! The number of digits currently in the digit buffer. */ - int current_digits; - /*! The received digits buffer. This is a NULL terminated string. */ - char digits[MAX_DTMF_DIGITS + 1]; -} dtmf_rx_state_t; +typedef struct dtmf_rx_state_s dtmf_rx_state_t; #if defined(__cplusplus) extern "C" Added: freeswitch/trunk/libs/spandsp/src/spandsp/expose.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/expose.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,84 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * expose.h - Expose the internal structures of spandsp, for users who + * really need that. + * + * Written by Steve Underwood + * + * Copyright (C) 2008 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: expose.h,v 1.11 2008/11/30 13:44:35 steveu Exp $ + */ + +/*! \file */ + +/* TRY TO ONLY INCLUDE THIS IF YOU REALLY REALLY HAVE TO */ + +#if !defined(_SPANDSP_EXPOSE_H_) +#define _SPANDSP_EXPOSE_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif +/*- End of file ------------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/spandsp/fax.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/fax.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/fax.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: fax.h,v 1.35 2008/08/13 00:11:30 steveu Exp $ + * $Id: fax.h,v 1.36 2008/10/13 13:14:00 steveu Exp $ */ /*! \file */ @@ -39,22 +39,6 @@ typedef struct fax_state_s fax_state_t; -/*! - Analogue line T.30 FAX channel descriptor. This defines the state of a single working - instance of an analogue line soft-FAX machine. -*/ -struct fax_state_s -{ - /*! \brief The T.30 back-end */ - t30_state_t t30; - - /*! \brief The analogue modem front-end */ - fax_modems_state_t modems; - - /*! \brief Error and flow logging control */ - logging_state_t logging; -}; - #if defined(__cplusplus) extern "C" { @@ -103,6 +87,13 @@ */ t30_state_t *fax_get_t30_state(fax_state_t *s); +/*! Get a pointer to the logging context associated with a FAX context. + \brief Get a pointer to the logging context associated with a FAX context. + \param s The FAX context. + \return A pointer to the logging context, or NULL. +*/ +logging_state_t *fax_get_logging_state(fax_state_t *s); + /*! Initialise a FAX context. \brief Initialise a FAX context. \param s The FAX context. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/fax_modems.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/fax_modems.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/fax_modems.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: fax_modems.h,v 1.5 2008/08/13 00:11:30 steveu Exp $ + * $Id: fax_modems.h,v 1.6 2008/10/13 13:14:00 steveu Exp $ */ /*! \file */ @@ -33,91 +33,7 @@ /*! The set of modems needed for FAX, plus the auxilliary stuff, like tone generation. */ -typedef struct -{ - /*! TRUE is talker echo protection should be sent for the image modems */ - int use_tep; - - /*! If TRUE, transmit silence when there is nothing else to transmit. If FALSE return only - the actual generated audio. Note that this only affects untimed silences. Timed silences - (e.g. the 75ms silence between V.21 and a high speed modem) will alway be transmitted as - silent audio. */ - int transmit_on_idle; - - /*! \brief An HDLC context used when transmitting HDLC messages. */ - hdlc_tx_state_t hdlc_tx; - /*! \brief An HDLC context used when receiving HDLC messages. */ - hdlc_rx_state_t hdlc_rx; - /*! \brief A V.21 FSK modem context used when transmitting HDLC over V.21 - messages. */ - fsk_tx_state_t v21_tx; - /*! \brief A V.21 FSK modem context used when receiving HDLC over V.21 - messages. */ - fsk_rx_state_t v21_rx; - /*! \brief A V.17 modem context used when sending FAXes at 7200bps, 9600bps - 12000bps or 14400bps */ - v17_tx_state_t v17_tx; - /*! \brief A V.29 modem context used when receiving FAXes at 7200bps, 9600bps - 12000bps or 14400bps */ - v17_rx_state_t v17_rx; - /*! \brief A V.29 modem context used when sending FAXes at 7200bps or - 9600bps */ - v29_tx_state_t v29_tx; - /*! \brief A V.29 modem context used when receiving FAXes at 7200bps or - 9600bps */ - v29_rx_state_t v29_rx; - /*! \brief A V.27ter modem context used when sending FAXes at 2400bps or - 4800bps */ - v27ter_tx_state_t v27ter_tx; - /*! \brief A V.27ter modem context used when receiving FAXes at 2400bps or - 4800bps */ - v27ter_rx_state_t v27ter_rx; - /*! \brief Used to insert timed silences. */ - silence_gen_state_t silence_gen; - /*! \brief CED or CNG generator */ - modem_connect_tones_tx_state_t connect_tx; - /*! \brief CED or CNG detector */ - modem_connect_tones_rx_state_t connect_rx; - /*! \brief */ - dc_restore_state_t dc_restore; - - /*! \brief The currently select receiver type */ - int current_rx_type; - /*! \brief The currently select transmitter type */ - int current_tx_type; - - /*! \brief TRUE if a carrier is present. Otherwise FALSE. */ - int rx_signal_present; - /*! \brief TRUE if a modem has trained correctly. */ - int rx_trained; - - /*! The current receive signal handler */ - span_rx_handler_t *rx_handler; - void *rx_user_data; - - /*! The current transmit signal handler */ - span_tx_handler_t *tx_handler; - void *tx_user_data; - - /*! The next transmit signal handler, for two stage transmit operations. - E.g. a short silence followed by a modem signal. */ - span_tx_handler_t *next_tx_handler; - void *next_tx_user_data; - - /*! The current bit rate of the transmitter. */ - int tx_bit_rate; - /*! The current bit rate of the receiver. */ - int rx_bit_rate; - - /*! If TRUE, transmission is in progress */ - int transmit; - /*! \brief Audio logging file handle for received audio. */ - int audio_rx_log; - /*! \brief Audio logging file handle for transmitted audio. */ - int audio_tx_log; - /*! \brief Error and flow logging control */ - logging_state_t logging; -} fax_modems_state_t; +typedef struct fax_modems_state_s fax_modems_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: fsk.h,v 1.31 2008/09/04 14:40:05 steveu Exp $ + * $Id: fsk.h,v 1.32 2008/10/13 13:14:00 steveu Exp $ */ /*! \file */ @@ -120,27 +120,7 @@ FSK modem transmit descriptor. This defines the state of a single working instance of an FSK modem transmitter. */ -typedef struct -{ - int baud_rate; - /*! \brief The callback function used to get the next bit to be transmitted. */ - get_bit_func_t get_bit; - /*! \brief A user specified opaque pointer passed to the get_bit function. */ - void *get_bit_user_data; - - /*! \brief The callback function used to report modem status changes. */ - modem_tx_status_func_t status_handler; - /*! \brief A user specified opaque pointer passed to the status function. */ - void *status_user_data; - - int32_t phase_rates[2]; - int scaling; - int32_t current_phase_rate; - uint32_t phase_acc; - int baud_frac; - int baud_inc; - int shutdown; -} fsk_tx_state_t; +typedef struct fsk_tx_state_s fsk_tx_state_t; /* The longest window will probably be 106 for 75 baud */ #define FSK_MAX_WINDOW_LEN 128 @@ -149,42 +129,7 @@ FSK modem receive descriptor. This defines the state of a single working instance of an FSK modem receiver. */ -typedef struct -{ - int baud_rate; - int sync_mode; - /*! \brief The callback function used to put each bit received. */ - put_bit_func_t put_bit; - /*! \brief A user specified opaque pointer passed to the put_bit routine. */ - void *put_bit_user_data; - - /*! \brief The callback function used to report modem status changes. */ - modem_tx_status_func_t status_handler; - /*! \brief A user specified opaque pointer passed to the status function. */ - void *status_user_data; - - int32_t carrier_on_power; - int32_t carrier_off_power; - power_meter_t power; - /*! \brief The value of the last signal sample, using the a simple HPF for signal power estimation. */ - int16_t last_sample; - /*! \brief >0 if a signal above the minimum is present. It may or may not be a V.29 signal. */ - int signal_present; - - int32_t phase_rate[2]; - uint32_t phase_acc[2]; - - int correlation_span; - - complexi32_t window[2][FSK_MAX_WINDOW_LEN]; - complexi32_t dot[2]; - int buf_ptr; - - int baud_inc; - int baud_pll; - int lastbit; - int scaling_shift; -} fsk_rx_state_t; +typedef struct fsk_rx_state_s fsk_rx_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/g711.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/g711.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/g711.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: g711.h,v 1.14 2008/05/02 17:57:32 steveu Exp $ + * $Id: g711.h,v 1.15 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -62,11 +62,7 @@ G711_ULAW }; -typedef struct -{ - /*! One of the G.711_xxx options */ - int mode; -} g711_state_t; +typedef struct g711_state_s g711_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/g722.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/g722.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/g722.h Tue Jan 27 22:48:03 2009 @@ -28,7 +28,7 @@ * Computer Science, Speech Group * Chengxiang Lu and Alex Hauptmann * - * $Id: g722.h,v 1.21 2008/09/19 16:24:25 steveu Exp $ + * $Id: g722.h,v 1.22 2008/10/13 13:14:00 steveu Exp $ */ @@ -56,69 +56,9 @@ G722_PACKED = 0x0002 }; -/*! The per band parameters for both encoding and decoding G.722 */ -typedef struct -{ - int16_t nb; - int16_t det; - int16_t s; - int16_t sz; - int16_t r; - int16_t p[2]; - int16_t a[2]; - int16_t b[6]; - int16_t d[7]; -} g722_band_t; - -typedef struct -{ - /*! TRUE if the operating in the special ITU test mode, with the band split filters - disabled. */ - int itu_test_mode; - /*! TRUE if the G.722 data is packed */ - int packed; - /*! TRUE if encode from 8k samples/second */ - int eight_k; - /*! 6 for 48000kbps, 7 for 56000kbps, or 8 for 64000kbps. */ - int bits_per_sample; - - /*! Signal history for the QMF */ - int16_t x[12]; - int16_t y[12]; - int ptr; - - g722_band_t band[2]; - - uint32_t in_buffer; - int in_bits; - uint32_t out_buffer; - int out_bits; -} g722_encode_state_t; +typedef struct g722_encode_state_s g722_encode_state_t; -typedef struct -{ - /*! TRUE if the operating in the special ITU test mode, with the band split filters - disabled. */ - int itu_test_mode; - /*! TRUE if the G.722 data is packed */ - int packed; - /*! TRUE if decode to 8k samples/second */ - int eight_k; - /*! 6 for 48000kbps, 7 for 56000kbps, or 8 for 64000kbps. */ - int bits_per_sample; - - /*! Signal history for the QMF */ - int16_t x[12]; - int16_t y[12]; - int ptr; - - g722_band_t band[2]; - - uint32_t in_buffer; - int in_bits; - uint32_t out_buffer; - int out_bits; -} g722_decode_state_t; +typedef struct g722_decode_state_s g722_decode_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/g726.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/g726.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/g726.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: g726.h,v 1.21 2008/04/17 14:27:00 steveu Exp $ + * $Id: g726.h,v 1.22 2008/10/13 13:14:00 steveu Exp $ */ /*! \file */ @@ -59,66 +59,11 @@ G726_PACKING_RIGHT = 2 }; -struct g726_state_s; +typedef struct g726_state_s g726_state_t; -typedef int16_t (*g726_decoder_func_t)(struct g726_state_s *s, uint8_t code); +typedef int16_t (*g726_decoder_func_t)(g726_state_t *s, uint8_t code); -typedef uint8_t (*g726_encoder_func_t)(struct g726_state_s *s, int16_t amp); - -/*! - * The following is the definition of the state structure - * used by the G.726 encoder and decoder to preserve their internal - * state between successive calls. The meanings of the majority - * of the state structure fields are explained in detail in the - * CCITT Recommendation G.721. The field names are essentially indentical - * to variable names in the bit level description of the coding algorithm - * included in this Recommendation. - */ -typedef struct g726_state_s -{ - /*! The bit rate */ - int rate; - /*! The external coding, for tandem operation */ - int ext_coding; - /*! The number of bits per sample */ - unsigned int bits_per_sample; - /*! One of the G.726_PACKING_xxx options */ - int packing; - - /*! Locked or steady state step size multiplier. */ - int32_t yl; - /*! Unlocked or non-steady state step size multiplier. */ - int16_t yu; - /*! int16_t term energy estimate. */ - int16_t dms; - /*! Long term energy estimate. */ - int16_t dml; - /*! Linear weighting coefficient of 'yl' and 'yu'. */ - int16_t ap; - - /*! Coefficients of pole portion of prediction filter. */ - int16_t a[2]; - /*! Coefficients of zero portion of prediction filter. */ - int16_t b[6]; - /*! Signs of previous two samples of a partially reconstructed signal. */ - int16_t pk[2]; - /*! Previous 6 samples of the quantized difference signal represented in - an internal floating point format. */ - int16_t dq[6]; - /*! Previous 2 samples of the quantized difference signal represented in an - internal floating point format. */ - int16_t sr[2]; - /*! Delayed tone detect */ - int td; - - /*! \brief The bit stream processing context. */ - bitstream_state_t bs; - - /*! \brief The current encoder function. */ - g726_encoder_func_t enc_func; - /*! \brief The current decoder function. */ - g726_decoder_func_t dec_func; -} g726_state_t; +typedef uint8_t (*g726_encoder_func_t)(g726_state_t *s, int16_t amp); #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/gsm0610.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/gsm0610.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/gsm0610.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: gsm0610.h,v 1.17 2008/04/17 14:27:00 steveu Exp $ + * $Id: gsm0610.h,v 1.18 2008/11/15 14:17:46 steveu Exp $ */ #if !defined(_SPANDSP_GSM0610_H_) @@ -72,34 +72,7 @@ GSM 06.10 FR codec state descriptor. This defines the state of a single working instance of the GSM 06.10 FR encoder or decoder. */ -typedef struct -{ - /*! \brief One of the packing modes */ - int packing; - - int16_t dp0[280]; - - /*! Preprocessing */ - int16_t z1; - int32_t L_z2; - /*! Pre-emphasis */ - int16_t mp; - - /*! Short term delay filter */ - int16_t u[8]; - int16_t LARpp[2][8]; - int16_t j; - - /*! Long term synthesis */ - int16_t nrp; - /*! Short term synthesis */ - int16_t v[9]; - /*! Decoder postprocessing */ - int16_t msr; - - /*! Encoder data */ - int16_t e[50]; -} gsm0610_state_t; +typedef struct gsm0610_state_s gsm0610_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/hdlc.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/hdlc.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/hdlc.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: hdlc.h,v 1.39 2008/04/17 14:27:00 steveu Exp $ + * $Id: hdlc.h,v 1.40 2008/11/30 05:43:37 steveu Exp $ */ /*! \file */ @@ -53,56 +53,7 @@ /*! HDLC receive descriptor. This contains all the state information for an HDLC receiver. */ -typedef struct -{ - /*! 2 for CRC-16, 4 for CRC-32 */ - int crc_bytes; - /*! \brief Maximum permitted frame length. */ - size_t max_frame_len; - /*! \brief The callback routine called to process each good received frame. */ - hdlc_frame_handler_t frame_handler; - /*! \brief An opaque parameter passed to the callback routine. */ - void *user_data; - /*! \brief TRUE if bad frames are to be reported. */ - int report_bad_frames; - /*! \brief The number of consecutive flags which must be seen before framing is - declared OK. */ - int framing_ok_threshold; - /*! \brief TRUE if framing OK has been announced. */ - int framing_ok_announced; - /*! \brief Number of consecutive flags seen so far. */ - int flags_seen; - - /*! \brief The raw (stuffed) bit stream buffer. */ - unsigned int raw_bit_stream; - /*! \brief The destuffed bit stream buffer. */ - unsigned int byte_in_progress; - /*! \brief The current number of bits in byte_in_progress. */ - int num_bits; - /*! \brief TRUE if in octet counting mode (e.g. for MTP). */ - int octet_counting_mode; - /*! \brief Octet count, to achieve the functionality needed for things - like MTP. */ - int octet_count; - /*! \brief The number of octets to be allowed between octet count reports. */ - int octet_count_report_interval; - - /*! \brief Buffer for a frame in progress. */ - uint8_t buffer[HDLC_MAXFRAME_LEN + 4]; - /*! \brief Length of a frame in progress. */ - size_t len; - - /*! \brief The number of bytes of good frames received (CRC not included). */ - unsigned long int rx_bytes; - /*! \brief The number of good frames received. */ - unsigned long int rx_frames; - /*! \brief The number of frames with CRC errors received. */ - unsigned long int rx_crc_errors; - /*! \brief The number of too short and too long frames received. */ - unsigned long int rx_length_errors; - /*! \brief The number of HDLC aborts received. */ - unsigned long int rx_aborts; -} hdlc_rx_state_t; +typedef struct hdlc_rx_state_s hdlc_rx_state_t; /*! HDLC received data statistics. @@ -125,51 +76,7 @@ HDLC transmit descriptor. This contains all the state information for an HDLC transmitter. */ -typedef struct -{ - /*! 2 for CRC-16, 4 for CRC-32 */ - int crc_bytes; - /*! \brief The callback routine called to indicate transmit underflow. */ - hdlc_underflow_handler_t underflow_handler; - /*! \brief An opaque parameter passed to the callback routine. */ - void *user_data; - /*! \brief The minimum flag octets to insert between frames. */ - int inter_frame_flags; - /*! \brief TRUE if frame creation works in progressive mode. */ - int progressive; - /*! \brief Maximum permitted frame length. */ - size_t max_frame_len; - - /*! \brief The stuffed bit stream being created. */ - uint32_t octets_in_progress; - /*! \brief The number of bits currently in octets_in_progress. */ - int num_bits; - /*! \brief The currently rotated state of the flag octet. */ - int idle_octet; - /*! \brief The number of flag octets to send for a timed burst of flags. */ - int flag_octets; - /*! \brief The number of abort octets to send for a timed burst of aborts. */ - int abort_octets; - /*! \brief TRUE if the next underflow of timed flag octets should be reported */ - int report_flag_underflow; - - /*! \brief The current message being transmitted, with its CRC attached. */ - uint8_t buffer[HDLC_MAXFRAME_LEN + 4]; - /*! \brief The length of the message in the buffer. */ - size_t len; - /*! \brief The current send position within the buffer. */ - int pos; - /*! \brief The running CRC, as data fills the frame buffer. */ - uint32_t crc; - - /*! \brief The current byte being broken into bits for transmission. */ - int byte; - /*! \brief The number of bits remaining in byte. */ - int bits; - - /*! \brief TRUE if transmission should end on buffer underflow .*/ - int tx_end; -} hdlc_tx_state_t; +typedef struct hdlc_tx_state_s hdlc_tx_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/ima_adpcm.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/ima_adpcm.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/ima_adpcm.h Tue Jan 27 22:48:03 2009 @@ -1,8 +1,8 @@ /* * SpanDSP - a series of DSP components for telephony * - * imaadpcm.c - Conversion routines between linear 16 bit PCM data and - * IMA/DVI/Intel ADPCM format. + * ima_adpcm.c - Conversion routines between linear 16 bit PCM data and + * IMA/DVI/Intel ADPCM format. * * Written by Steve Underwood * @@ -26,7 +26,7 @@ * Based on a bit from here, a bit from there, eye of toad, * ear of bat, etc - plus, of course, my own 2 cents. * - * $Id: ima_adpcm.h,v 1.20 2008/04/17 14:27:00 steveu Exp $ + * $Id: ima_adpcm.h,v 1.21 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -59,19 +59,7 @@ a single working instance of the IMA ADPCM converter. This is used for either linear to ADPCM or ADPCM to linear conversion. */ -typedef struct -{ - int variant; - /*! \brief The size of a chunk, in samples. */ - int chunk_size; - /*! \brief The last state of the ADPCM algorithm. */ - int last; - /*! \brief Current index into the step size table. */ - int step_index; - /*! \brief The current IMA code byte in progress. */ - uint16_t ima_byte; - int bits; -} ima_adpcm_state_t; +typedef struct ima_adpcm_state_s ima_adpcm_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/logging.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/logging.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/logging.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: logging.h,v 1.16 2008/05/05 11:25:01 steveu Exp $ + * $Id: logging.h,v 1.17 2008/11/30 13:44:35 steveu Exp $ */ /*! \file */ @@ -74,17 +74,7 @@ Logging descriptor. This defines the working state for a single instance of the logging facility for spandsp. */ -typedef struct -{ - int level; - int samples_per_second; - int64_t elapsed_samples; - const char *tag; - const char *protocol; - - message_handler_func_t span_message; - error_handler_func_t span_error; -} logging_state_t; +typedef struct logging_state_s logging_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/lpc10.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/lpc10.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/lpc10.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: lpc10.h,v 1.17 2008/04/17 14:27:00 steveu Exp $ + * $Id: lpc10.h,v 1.18 2008/11/30 05:43:37 steveu Exp $ */ #if !defined(_SPANDSP_LPC10_H_) @@ -57,115 +57,13 @@ LPC10 codec encoder state descriptor. This defines the state of a single working instance of the LPC10 encoder. */ -typedef struct -{ - int error_correction; - - /* State used only by function high_pass_100hz */ - float z11; - float z21; - float z12; - float z22; - - /* State used by function lpc10_analyse */ - float inbuf[LPC10_SAMPLES_PER_FRAME*3]; - float pebuf[LPC10_SAMPLES_PER_FRAME*3]; - float lpbuf[696]; - float ivbuf[312]; - float bias; - int32_t osbuf[10]; /* No initial value necessary */ - int32_t osptr; /* Initial value 1 */ - int32_t obound[3]; - int32_t vwin[3][2]; /* Initial value vwin[2][0] = 307; vwin[2][1] = 462; */ - int32_t awin[3][2]; /* Initial value awin[2][0] = 307; awin[2][1] = 462; */ - int32_t voibuf[4][2]; - float rmsbuf[3]; - float rcbuf[3][10]; - float zpre; - - /* State used by function onset */ - float n; - float d__; /* Initial value 1.0f */ - float fpc; /* No initial value necessary */ - float l2buf[16]; - float l2sum1; - int32_t l2ptr1; /* Initial value 1 */ - int32_t l2ptr2; /* Initial value 9 */ - int32_t lasti; /* No initial value necessary */ - int hyst; /* Initial value FALSE */ - - /* State used by function lpc10_voicing */ - float dither; /* Initial value 20.0f */ - float snr; - float maxmin; - float voice[3][2]; /* Initial value is probably unnecessary */ - int32_t lbve; - int32_t lbue; - int32_t fbve; - int32_t fbue; - int32_t ofbue; - int32_t sfbue; - int32_t olbue; - int32_t slbue; - - /* State used by function dynamic_pitch_tracking */ - float s[60]; - int32_t p[2][60]; - int32_t ipoint; - float alphax; - - /* State used by function lpc10_pack */ - int32_t isync; -} lpc10_encode_state_t; +typedef struct lpc10_encode_state_s lpc10_encode_state_t; /*! LPC10 codec decoder state descriptor. This defines the state of a single working instance of the LPC10 decoder. */ -typedef struct -{ - int error_correction; - - /* State used by function decode */ - int32_t iptold; /* Initial value 60 */ - int first; /* Initial value TRUE */ - int32_t ivp2h; - int32_t iovoic; - int32_t iavgp; /* Initial value 60 */ - int32_t erate; - int32_t drc[10][3]; - int32_t dpit[3]; - int32_t drms[3]; - - /* State used by function synths */ - float buf[LPC10_SAMPLES_PER_FRAME*2]; - int32_t buflen; /* Initial value LPC10_SAMPLES_PER_FRAME */ - - /* State used by function pitsyn */ - int32_t ivoico; /* No initial value necessary as long as first_pitsyn is initially TRUE_ */ - int32_t ipito; /* No initial value necessary as long as first_pitsyn is initially TRUE_ */ - float rmso; /* Initial value 1.0f */ - float rco[10]; /* No initial value necessary as long as first_pitsyn is initially TRUE_ */ - int32_t jsamp; /* Nno initial value necessary as long as first_pitsyn is initially TRUE_ */ - int first_pitsyn; /* Initial value TRUE */ - - /* State used by function bsynz */ - int32_t ipo; - float exc[166]; - float exc2[166]; - float lpi[3]; - float hpi[3]; - float rmso_bsynz; - - /* State used by function random */ - int32_t j; - int32_t k; - int16_t y[5]; - - /* State used by function deemp */ - float dei[2]; - float deo[3]; -} lpc10_decode_state_t; +typedef struct lpc10_decode_state_s lpc10_decode_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/modem_connect_tones.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/modem_connect_tones.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/modem_connect_tones.h Tue Jan 27 22:48:03 2009 @@ -2,7 +2,8 @@ * SpanDSP - a series of DSP components for telephony * * modem_connect_tones.c - Generation and detection of tones - * associated with modems calling and answering calls. + * associated with modems calling and + * answering calls. * * Written by Steve Underwood * @@ -23,7 +24,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: modem_connect_tones.h,v 1.18 2008/08/10 03:42:38 steveu Exp $ + * $Id: modem_connect_tones.h,v 1.19 2008/10/13 13:14:00 steveu Exp $ */ /*! \file */ @@ -87,65 +88,13 @@ Modem connect tones generator descriptor. This defines the state of a single working instance of the tone generator. */ -typedef struct -{ - int tone_type; - - int32_t tone_phase_rate; - uint32_t tone_phase; - int level; - /*! \brief Countdown to the next phase hop */ - int hop_timer; - /*! \brief Maximum duration timer */ - int duration_timer; - uint32_t mod_phase; - int32_t mod_phase_rate; - int mod_level; -} modem_connect_tones_tx_state_t; +typedef struct modem_connect_tones_tx_state_s modem_connect_tones_tx_state_t; /*! Modem connect tones receiver descriptor. This defines the state of a single working instance of the tone detector. */ -typedef struct -{ - /*! \brief The tone type being detected. */ - int tone_type; - /*! \brief Callback routine, using to report detection of the tone. */ - tone_report_func_t tone_callback; - /*! \brief An opaque pointer passed to tone_callback. */ - void *callback_data; - - /*! \brief The notch filter state. */ - float z1; - float z2; - /*! \brief The in notch power estimate */ - int notch_level; - /*! \brief The total channel power estimate */ - int channel_level; - /*! \brief Sample counter for the small chunks of samples, after which a test is conducted. */ - int chunk_remainder; - /*! \brief TRUE is the tone is currently confirmed present in the audio. */ - int tone_present; - /*! \brief */ - int tone_on; - /*! \brief A millisecond counter, to time the duration of tone sections. */ - int tone_cycle_duration; - /*! \brief A count of the number of good cycles of tone reversal seen. */ - int good_cycles; - /*! \brief TRUE if the tone has been seen since the last time the user tested for it */ - int hit; - /*! \brief A V.21 FSK modem context used when searching for FAX preamble. */ - fsk_rx_state_t v21rx; - /*! \brief The raw (stuffed) bit stream buffer. */ - unsigned int raw_bit_stream; - /*! \brief The current number of bits in the octet in progress. */ - int num_bits; - /*! \brief Number of consecutive flags seen so far. */ - int flags_seen; - /*! \brief TRUE if framing OK has been announced. */ - int framing_ok_announced; -} modem_connect_tones_rx_state_t; +typedef struct modem_connect_tones_rx_state_s modem_connect_tones_rx_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/noise.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/noise.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/noise.h Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: noise.h,v 1.13 2008/04/17 14:27:00 steveu Exp $ + * $Id: noise.h,v 1.14 2008/11/30 12:38:27 steveu Exp $ */ /*! \file */ @@ -91,14 +91,7 @@ Noise generator descriptor. This contains all the state information for an instance of the noise generator. */ -typedef struct -{ - int class_of_noise; - int quality; - int32_t rms; - uint32_t rndnum; - int32_t state; -} noise_state_t; +typedef struct noise_state_s noise_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/oki_adpcm.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/oki_adpcm.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/oki_adpcm.h Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: oki_adpcm.h,v 1.20 2008/04/17 14:27:00 steveu Exp $ + * $Id: oki_adpcm.h,v 1.21 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -49,25 +49,7 @@ a single working instance of the Oki ADPCM converter. This is used for either linear to ADPCM or ADPCM to linear conversion. */ -typedef struct -{ - /*! \brief The bit rate - 24000 or 32000. */ - int bit_rate; - /*! \brief The last state of the ADPCM algorithm. */ - int16_t last; - /*! \brief Current index into the step size table. */ - int16_t step_index; - /*! \brief The compressed data byte in progress. */ - uint8_t oki_byte; - /*! \brief The signal history for the sample rate converter. */ - int16_t history[32]; - /*! \brief Pointer into the history buffer. */ - int ptr; - /*! \brief Odd/even sample counter. */ - int mark; - /*! \brief Phase accumulator for the sample rate converter. */ - int phase; -} oki_adpcm_state_t; +typedef struct oki_adpcm_state_s oki_adpcm_state_t; #if defined(__cplusplus) extern "C" Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/README ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/README Tue Jan 27 22:48:03 2009 @@ -0,0 +1,3 @@ +The header files in this directory should only be used by code tightly integrating itself with the +spandsp library to maximise performance. To maximise compatibility with futures revisions of spandsp, +most users should avoid using these headers, or probing into the spandsp data structures in other ways. \ No newline at end of file Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/adsi.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/adsi.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,91 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/adsi.h - Analogue display services interface and other call ID related handling. + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: adsi.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +/*! \file */ + +#if !defined(_SPANDSP_PRIVATE_ADSI_H_) +#define _SPANDSP_PRIVATE_ADSI_H_ + +/*! + ADSI transmitter descriptor. This contains all the state information for an ADSI + (caller ID, CLASS, CLIP, ACLIP) transmit channel. + */ +struct adsi_tx_state_s +{ + int standard; + + tone_gen_descriptor_t alert_tone_desc; + tone_gen_state_t alert_tone_gen; + fsk_tx_state_t fsktx; + dtmf_tx_state_t dtmftx; + async_tx_state_t asynctx; + + int tx_signal_on; + + int byte_no; + int bit_pos; + int bit_no; + uint8_t msg[256]; + int msg_len; + int preamble_len; + int preamble_ones_len; + int postamble_ones_len; + int stop_bits; + int baudot_shift; + + logging_state_t logging; +}; + +/*! + ADSI receiver descriptor. This contains all the state information for an ADSI + (caller ID, CLASS, CLIP, ACLIP, JCLIP) receive channel. + */ +struct adsi_rx_state_s +{ + int standard; + put_msg_func_t put_msg; + void *user_data; + + fsk_rx_state_t fskrx; + dtmf_rx_state_t dtmfrx; + async_rx_state_t asyncrx; + + int consecutive_ones; + int bit_pos; + int in_progress; + uint8_t msg[256]; + int msg_len; + int baudot_shift; + + /*! A count of the framing errors. */ + int framing_errors; + + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/async.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/async.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,91 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/async.h - Asynchronous serial bit stream encoding and decoding + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: async.h,v 1.1 2008/11/30 10:17:31 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_ASYNC_H_) +#define _SPANDSP_PRIVATE_ASYNC_H_ + +/*! + Asynchronous data transmit descriptor. This defines the state of a single + working instance of a byte to asynchronous serial converter, for use + in FSK modems. +*/ +struct async_tx_state_s +{ + /*! \brief The number of data bits per character. */ + int data_bits; + /*! \brief The type of parity. */ + int parity; + /*! \brief The number of stop bits per character. */ + int stop_bits; + /*! \brief A pointer to the callback routine used to get characters to be transmitted. */ + get_byte_func_t get_byte; + /*! \brief An opaque pointer passed when calling get_byte. */ + void *user_data; + + /*! \brief A current, partially transmitted, character. */ + int byte_in_progress; + /*! \brief The current bit position within a partially transmitted character. */ + int bitpos; + /*! \brief Parity bit. */ + int parity_bit; +}; + +/*! + Asynchronous data receive descriptor. This defines the state of a single + working instance of an asynchronous serial to byte converter, for use + in FSK modems. +*/ +struct async_rx_state_s +{ + /*! \brief The number of data bits per character. */ + int data_bits; + /*! \brief The type of parity. */ + int parity; + /*! \brief The number of stop bits per character. */ + int stop_bits; + /*! \brief TRUE if V.14 rate adaption processing should be performed. */ + int use_v14; + /*! \brief A pointer to the callback routine used to handle received characters. */ + put_byte_func_t put_byte; + /*! \brief An opaque pointer passed when calling put_byte. */ + void *user_data; + + /*! \brief A current, partially complete, character. */ + int byte_in_progress; + /*! \brief The current bit position within a partially complete character. */ + int bitpos; + /*! \brief Parity bit. */ + int parity_bit; + + /*! A count of the number of parity errors seen. */ + int parity_errors; + /*! A count of the number of character framing errors seen. */ + int framing_errors; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/at_interpreter.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/at_interpreter.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,130 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/at_interpreter.h - AT command interpreter to V.251, V.252, V.253, T.31 and the 3GPP specs. + * + * Written by Steve Underwood + * + * Copyright (C) 2004, 2005, 2006 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: at_interpreter.h,v 1.1 2008/11/30 05:43:37 steveu Exp $ + */ + +/*! \file */ + +#if !defined(_SPANDSP_PRIVATE_AT_INTERPRETER_H_) +#define _SPANDSP_PRIVATE_AT_INTERPRETER_H_ + +typedef struct at_call_id_s at_call_id_t; + +struct at_call_id_s +{ + char *id; + char *value; + at_call_id_t *next; +}; + +/*! + AT descriptor. This defines the working state for a single instance of + the AT interpreter. +*/ +struct at_state_s +{ + at_profile_t p; + /*! Value set by +GCI */ + int country_of_installation; + /*! Value set by +FIT */ + int dte_inactivity_timeout; + /*! Value set by +FIT */ + int dte_inactivity_action; + /*! Value set by L */ + int speaker_volume; + /*! Value set by M */ + int speaker_mode; + /*! This is no real DTE rate. This variable is for compatibility this serially + connected modems. */ + /*! Value set by +IPR/+FPR */ + int dte_rate; + /*! Value set by +ICF */ + int dte_char_format; + /*! Value set by +ICF */ + int dte_parity; + /*! Value set by &C */ + int rlsd_behaviour; + /*! Value set by &D */ + int dtr_behaviour; + /*! Value set by +FCL */ + int carrier_loss_timeout; + /*! Value set by X */ + int result_code_mode; + /*! Value set by +IDSR */ + int dsr_option; + /*! Value set by +ILSD */ + int long_space_disconnect_option; + /*! Value set by +ICLOK */ + int sync_tx_clock_source; + /*! Value set by +EWIND */ + int rx_window; + /*! Value set by +EWIND */ + int tx_window; + + int v8bis_signal; + int v8bis_1st_message; + int v8bis_2nd_message; + int v8bis_sig_en; + int v8bis_msg_en; + int v8bis_supp_delay; + + uint8_t rx_data[256]; + int rx_data_bytes; + + int display_call_info; + int call_info_displayed; + at_call_id_t *call_id; + char *local_id; + /*! The currently select FAX modem class. 0 = data modem mode. */ + int fclass_mode; + int at_rx_mode; + int rings_indicated; + int do_hangup; + int silent_dial; + int command_dial; + int ok_is_pending; + int dte_is_waiting; + /*! \brief TRUE if a carrier is presnt. Otherwise FALSE. */ + int rx_signal_present; + /*! \brief TRUE if a modem has trained, Otherwise FALSE. */ + int rx_trained; + int transmit; + + char line[256]; + int line_ptr; + + at_modem_control_handler_t *modem_control_handler; + void *modem_control_user_data; + at_tx_handler_t *at_tx_handler; + void *at_tx_user_data; + at_class1_handler_t *class1_handler; + void *class1_user_data; + + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/awgn.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/awgn.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,46 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/awgn.h - An additive Gaussian white noise generator + * + * Written by Steve Underwood + * + * Copyright (C) 2001 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: awgn.h,v 1.1 2008/11/30 12:38:27 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_AWGN_H_) +#define _SPANDSP_PRIVATE_AWGN_H_ + +/*! + AWGN generator descriptor. This contains all the state information for an AWGN generator. + */ +struct awgn_state_s +{ + double rms; + long int ix1; + long int ix2; + long int ix3; + double r[98]; + double gset; + int iset; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/bell_r2_mf.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/bell_r2_mf.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,104 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * bell_r2_mf.h - Bell MF and MFC/R2 tone generation and detection. + * + * Written by Steve Underwood + * + * Copyright (C) 2001 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: bell_r2_mf.h,v 1.2 2008/10/13 14:19:18 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_BELL_R2_MF_H_) +#define _SPANDSP_PRIVATE_BELL_R2_MF_H_ + +/*! + Bell MF generator state descriptor. This defines the state of a single + working instance of a Bell MF generator. +*/ +struct bell_mf_tx_state_s +{ + /*! The tone generator. */ + tone_gen_state_t tones; + int current_sample; + union + { + queue_state_t queue; + uint8_t buf[QUEUE_STATE_T_SIZE(MAX_BELL_MF_DIGITS)]; + } queue; +}; + +/*! + Bell MF digit detector descriptor. +*/ +struct bell_mf_rx_state_s +{ + /*! Optional callback funcion to deliver received digits. */ + digits_rx_callback_t digits_callback; + /*! An opaque pointer passed to the callback function. */ + void *digits_callback_data; + /*! Tone detector working states */ + goertzel_state_t out[6]; + /*! Short term history of results from the tone detection, using in persistence checking */ + uint8_t hits[5]; + /*! The current sample number within a processing block. */ + int current_sample; + + /*! The number of digits which have been lost due to buffer overflows. */ + int lost_digits; + /*! The number of digits currently in the digit buffer. */ + int current_digits; + /*! The received digits buffer. This is a NULL terminated string. */ + char digits[MAX_BELL_MF_DIGITS + 1]; +}; + +/*! + MFC/R2 tone detector descriptor. +*/ +struct r2_mf_tx_state_s +{ + /*! The tone generator. */ + tone_gen_state_t tone; + /*! TRUE if generating forward tones, otherwise generating reverse tones. */ + int fwd; + /*! The current digit being generated. */ + int digit; +}; + +/*! + MFC/R2 tone detector descriptor. +*/ +struct r2_mf_rx_state_s +{ + /*! Optional callback funcion to deliver received digits. */ + tone_report_func_t callback; + /*! An opaque pointer passed to the callback function. */ + void *callback_data; + /*! TRUE is we are detecting forward tones. FALSE if we are detecting backward tones */ + int fwd; + /*! Tone detector working states */ + goertzel_state_t out[6]; + /*! The current sample number within a processing block. */ + int current_sample; + /*! The currently detected digit. */ + int current_digit; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/bert.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/bert.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,85 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/bert.h - Bit error rate tests. + * + * Written by Steve Underwood + * + * Copyright (C) 2004 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: bert.h,v 1.1 2008/11/30 12:38:27 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_BERT_H_) +#define _SPANDSP_PRIVATE_BERT_H_ + +/*! + Bit error rate tester (BERT) descriptor. This defines the working state for a + single instance of the BERT. +*/ +struct bert_state_s +{ + int pattern; + int pattern_class; + bert_report_func_t reporter; + void *user_data; + int report_frequency; + int limit; + + uint32_t tx_reg; + int tx_step; + int tx_step_bit; + int tx_bits; + int tx_zeros; + + uint32_t rx_reg; + uint32_t ref_reg; + uint32_t master_reg; + int rx_step; + int rx_step_bit; + int resync; + int rx_bits; + int rx_zeros; + int resync_len; + int resync_percent; + int resync_bad_bits; + int resync_cnt; + + uint32_t mask; + int shift; + int shift2; + int max_zeros; + int invert; + int resync_time; + + int decade_ptr[9]; + int decade_bad[9][10]; + int step; + int error_rate; + + int bit_error_status; + int report_countdown; + + bert_results_t results; + + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/bitstream.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/bitstream.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,42 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/bitstream.h - Bitstream composition and decomposition routines. + * + * Written by Steve Underwood + * + * Copyright (C) 2006 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: bitstream.h,v 1.1 2008/11/30 12:45:09 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_BITSTREAM_H_) +#define _SPANDSP_PRIVATE_BITSTREAM_H_ + +/*! Bitstream handler state */ +struct bitstream_state_s +{ + /*! The bit stream. */ + uint32_t bitstream; + /*! The residual bits in bitstream. */ + int residue; +}; + + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/dtmf.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/dtmf.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,111 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/dtmf.h - DTMF tone generation and detection + * + * Written by Steve Underwood + * + * Copyright (C) 2001, 2005 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: dtmf.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_DTMF_H_) +#define _SPANDSP_PRIVATE_DTMF_H_ + +/*! + DTMF generator state descriptor. This defines the state of a single + working instance of a DTMF generator. +*/ +struct dtmf_tx_state_s +{ + tone_gen_state_t tones; + float low_level; + float high_level; + int on_time; + int off_time; + union + { + queue_state_t queue; + uint8_t buf[QUEUE_STATE_T_SIZE(MAX_DTMF_DIGITS)]; + } queue; +}; + +/*! + DTMF digit detector descriptor. +*/ +struct dtmf_rx_state_s +{ + /*! Optional callback funcion to deliver received digits. */ + digits_rx_callback_t digits_callback; + /*! An opaque pointer passed to the callback function. */ + void *digits_callback_data; + /*! Optional callback funcion to deliver real time digit state changes. */ + tone_report_func_t realtime_callback; + /*! An opaque pointer passed to the real time callback function. */ + void *realtime_callback_data; + /*! TRUE if dialtone should be filtered before processing */ + int filter_dialtone; +#if defined(SPANDSP_USE_FIXED_POINT) + /*! 350Hz filter state for the optional dialtone filter. */ + float z350[2]; + /*! 440Hz filter state for the optional dialtone filter. */ + float z440[2]; + /*! Maximum acceptable "normal" (lower bigger than higher) twist ratio. */ + float normal_twist; + /*! Maximum acceptable "reverse" (higher bigger than lower) twist ratio. */ + float reverse_twist; + /*! Minimum acceptable tone level for detection. */ + int32_t threshold; + /*! The accumlating total energy on the same period over which the Goertzels work. */ + int32_t energy; +#else + /*! 350Hz filter state for the optional dialtone filter. */ + float z350[2]; + /*! 440Hz filter state for the optional dialtone filter. */ + float z440[2]; + /*! Maximum acceptable "normal" (lower bigger than higher) twist ratio. */ + float normal_twist; + /*! Maximum acceptable "reverse" (higher bigger than lower) twist ratio. */ + float reverse_twist; + /*! Minimum acceptable tone level for detection. */ + float threshold; + /*! The accumlating total energy on the same period over which the Goertzels work. */ + float energy; +#endif + /*! Tone detector working states for the row tones. */ + goertzel_state_t row_out[4]; + /*! Tone detector working states for the column tones. */ + goertzel_state_t col_out[4]; + /*! The result of the last tone analysis. */ + uint8_t last_hit; + /*! The confirmed digit we are currently receiving */ + uint8_t in_digit; + /*! The current sample number within a processing block. */ + int current_sample; + + /*! The number of digits which have been lost due to buffer overflows. */ + int lost_digits; + /*! The number of digits currently in the digit buffer. */ + int current_digits; + /*! The received digits buffer. This is a NULL terminated string. */ + char digits[MAX_DTMF_DIGITS + 1]; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/fax.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/fax.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,50 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/fax.h - private definitions for analogue line ITU T.30 fax processing + * + * Written by Steve Underwood + * + * Copyright (C) 2005 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: fax.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +/*! \file */ + +#if !defined(_SPANDSP_PRIVATE_FAX_H_) +#define _SPANDSP_PRIVATE_FAX_H_ + +/*! + Analogue line T.30 FAX channel descriptor. This defines the state of a single working + instance of an analogue line soft-FAX machine. +*/ +struct fax_state_s +{ + /*! \brief The T.30 back-end */ + t30_state_t t30; + + /*! \brief The analogue modem front-end */ + fax_modems_state_t modems; + + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/fax_modems.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/fax_modems.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,123 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/fax_modems.h - definitions for the analogue modem set for fax processing + * + * Written by Steve Underwood + * + * Copyright (C) 2008 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: fax_modems.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +/*! \file */ + +#if !defined(_SPANDSP_PRIVATE_FAX_MODEMS_H_) +#define _SPANDSP_PRIVATE_FAX_MODEMS_H_ + +/*! + The set of modems needed for FAX, plus the auxilliary stuff, like tone generation. +*/ +struct fax_modems_state_s +{ + /*! TRUE is talker echo protection should be sent for the image modems */ + int use_tep; + + /*! If TRUE, transmit silence when there is nothing else to transmit. If FALSE return only + the actual generated audio. Note that this only affects untimed silences. Timed silences + (e.g. the 75ms silence between V.21 and a high speed modem) will alway be transmitted as + silent audio. */ + int transmit_on_idle; + + /*! \brief An HDLC context used when transmitting HDLC messages. */ + hdlc_tx_state_t hdlc_tx; + /*! \brief An HDLC context used when receiving HDLC messages. */ + hdlc_rx_state_t hdlc_rx; + /*! \brief A V.21 FSK modem context used when transmitting HDLC over V.21 + messages. */ + fsk_tx_state_t v21_tx; + /*! \brief A V.21 FSK modem context used when receiving HDLC over V.21 + messages. */ + fsk_rx_state_t v21_rx; + /*! \brief A V.17 modem context used when sending FAXes at 7200bps, 9600bps + 12000bps or 14400bps */ + v17_tx_state_t v17_tx; + /*! \brief A V.29 modem context used when receiving FAXes at 7200bps, 9600bps + 12000bps or 14400bps */ + v17_rx_state_t v17_rx; + /*! \brief A V.29 modem context used when sending FAXes at 7200bps or + 9600bps */ + v29_tx_state_t v29_tx; + /*! \brief A V.29 modem context used when receiving FAXes at 7200bps or + 9600bps */ + v29_rx_state_t v29_rx; + /*! \brief A V.27ter modem context used when sending FAXes at 2400bps or + 4800bps */ + v27ter_tx_state_t v27ter_tx; + /*! \brief A V.27ter modem context used when receiving FAXes at 2400bps or + 4800bps */ + v27ter_rx_state_t v27ter_rx; + /*! \brief Used to insert timed silences. */ + silence_gen_state_t silence_gen; + /*! \brief CED or CNG generator */ + modem_connect_tones_tx_state_t connect_tx; + /*! \brief CED or CNG detector */ + modem_connect_tones_rx_state_t connect_rx; + /*! \brief */ + dc_restore_state_t dc_restore; + + /*! \brief The currently select receiver type */ + int current_rx_type; + /*! \brief The currently select transmitter type */ + int current_tx_type; + + /*! \brief TRUE if a carrier is present. Otherwise FALSE. */ + int rx_signal_present; + /*! \brief TRUE if a modem has trained correctly. */ + int rx_trained; + + /*! The current receive signal handler */ + span_rx_handler_t *rx_handler; + void *rx_user_data; + + /*! The current transmit signal handler */ + span_tx_handler_t *tx_handler; + void *tx_user_data; + + /*! The next transmit signal handler, for two stage transmit operations. + E.g. a short silence followed by a modem signal. */ + span_tx_handler_t *next_tx_handler; + void *next_tx_user_data; + + /*! The current bit rate of the transmitter. */ + int tx_bit_rate; + /*! The current bit rate of the receiver. */ + int rx_bit_rate; + + /*! If TRUE, transmission is in progress */ + int transmit; + /*! \brief Audio logging file handle for received audio. */ + int audio_rx_log; + /*! \brief Audio logging file handle for transmitted audio. */ + int audio_tx_log; + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/fsk.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/fsk.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,99 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/fsk.h - FSK modem transmit and receive parts + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: fsk.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_FSK_H_) +#define _SPANDSP_PRIVATE_FSK_H_ + +/*! + FSK modem transmit descriptor. This defines the state of a single working + instance of an FSK modem transmitter. +*/ +struct fsk_tx_state_s +{ + int baud_rate; + /*! \brief The callback function used to get the next bit to be transmitted. */ + get_bit_func_t get_bit; + /*! \brief A user specified opaque pointer passed to the get_bit function. */ + void *get_bit_user_data; + + /*! \brief The callback function used to report modem status changes. */ + modem_tx_status_func_t status_handler; + /*! \brief A user specified opaque pointer passed to the status function. */ + void *status_user_data; + + int32_t phase_rates[2]; + int scaling; + int32_t current_phase_rate; + uint32_t phase_acc; + int baud_frac; + int baud_inc; + int shutdown; +}; + +/*! + FSK modem receive descriptor. This defines the state of a single working + instance of an FSK modem receiver. +*/ +struct fsk_rx_state_s +{ + int baud_rate; + int sync_mode; + /*! \brief The callback function used to put each bit received. */ + put_bit_func_t put_bit; + /*! \brief A user specified opaque pointer passed to the put_bit routine. */ + void *put_bit_user_data; + + /*! \brief The callback function used to report modem status changes. */ + modem_tx_status_func_t status_handler; + /*! \brief A user specified opaque pointer passed to the status function. */ + void *status_user_data; + + int32_t carrier_on_power; + int32_t carrier_off_power; + power_meter_t power; + /*! \brief The value of the last signal sample, using the a simple HPF for signal power estimation. */ + int16_t last_sample; + /*! \brief >0 if a signal above the minimum is present. It may or may not be a V.29 signal. */ + int signal_present; + + int32_t phase_rate[2]; + uint32_t phase_acc[2]; + + int correlation_span; + + complexi32_t window[2][FSK_MAX_WINDOW_LEN]; + complexi32_t dot[2]; + int buf_ptr; + + int baud_inc; + int baud_pll; + int lastbit; + int scaling_shift; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/g711.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/g711.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,38 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/g711.h - In line A-law and u-law conversion routines + * + * Written by Steve Underwood + * + * Copyright (C) 2001 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: g711.h,v 1.1 2008/11/30 10:17:31 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_G711_H_) +#define _SPANDSP_PRIVATE_G711_H_ + +struct g711_state_s +{ + /*! One of the G.711_xxx options */ + int mode; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/g722.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/g722.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,105 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/g722.h - The ITU G.722 codec. + * + * Written by Steve Underwood + * + * Copyright (C) 2005 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Based on a single channel G.722 codec which is: + * + ***** Copyright (c) CMU 1993 ***** + * Computer Science, Speech Group + * Chengxiang Lu and Alex Hauptmann + * + * $Id: g722.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + + +/*! \file */ + +#if !defined(_SPANDSP_PRIVATE_G722_H_) +#define _SPANDSP_PRIVATE_G722_H_ + +/*! The per band parameters for both encoding and decoding G.722 */ +typedef struct +{ + int16_t nb; + int16_t det; + int16_t s; + int16_t sz; + int16_t r; + int16_t p[2]; + int16_t a[2]; + int16_t b[6]; + int16_t d[7]; +} g722_band_t; + +struct g722_encode_state_s +{ + /*! TRUE if the operating in the special ITU test mode, with the band split filters + disabled. */ + int itu_test_mode; + /*! TRUE if the G.722 data is packed */ + int packed; + /*! TRUE if encode from 8k samples/second */ + int eight_k; + /*! 6 for 48000kbps, 7 for 56000kbps, or 8 for 64000kbps. */ + int bits_per_sample; + + /*! Signal history for the QMF */ + int16_t x[12]; + int16_t y[12]; + int ptr; + + g722_band_t band[2]; + + uint32_t in_buffer; + int in_bits; + uint32_t out_buffer; + int out_bits; +}; + +struct g722_decode_state_s +{ + /*! TRUE if the operating in the special ITU test mode, with the band split filters + disabled. */ + int itu_test_mode; + /*! TRUE if the G.722 data is packed */ + int packed; + /*! TRUE if decode to 8k samples/second */ + int eight_k; + /*! 6 for 48000kbps, 7 for 56000kbps, or 8 for 64000kbps. */ + int bits_per_sample; + + /*! Signal history for the QMF */ + int16_t x[12]; + int16_t y[12]; + int ptr; + + g722_band_t band[2]; + + uint32_t in_buffer; + int in_bits; + uint32_t out_buffer; + int out_bits; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/g726.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/g726.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,87 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/g726.h - ITU G.726 codec. + * + * Written by Steve Underwood + * + * Copyright (C) 2006 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: g726.h,v 1.2 2008/11/16 12:20:57 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_G726_H_) +#define _SPANDSP_PRIVATE_G726_H_ + +/*! + * The following is the definition of the state structure + * used by the G.726 encoder and decoder to preserve their internal + * state between successive calls. The meanings of the majority + * of the state structure fields are explained in detail in the + * CCITT Recommendation G.726. The field names are essentially indentical + * to variable names in the bit level description of the coding algorithm + * included in this recommendation. + */ +struct g726_state_s +{ + /*! The bit rate */ + int rate; + /*! The external coding, for tandem operation */ + int ext_coding; + /*! The number of bits per sample */ + unsigned int bits_per_sample; + /*! One of the G.726_PACKING_xxx options */ + int packing; + + /*! Locked or steady state step size multiplier. */ + int32_t yl; + /*! Unlocked or non-steady state step size multiplier. */ + int16_t yu; + /*! int16_t term energy estimate. */ + int16_t dms; + /*! Long term energy estimate. */ + int16_t dml; + /*! Linear weighting coefficient of 'yl' and 'yu'. */ + int16_t ap; + + /*! Coefficients of pole portion of prediction filter. */ + int16_t a[2]; + /*! Coefficients of zero portion of prediction filter. */ + int16_t b[6]; + /*! Signs of previous two samples of a partially reconstructed signal. */ + int16_t pk[2]; + /*! Previous 6 samples of the quantized difference signal represented in + an internal floating point format. */ + int16_t dq[6]; + /*! Previous 2 samples of the quantized difference signal represented in an + internal floating point format. */ + int16_t sr[2]; + /*! Delayed tone detect */ + int td; + + /*! \brief The bit stream processing context. */ + bitstream_state_t bs; + + /*! \brief The current encoder function. */ + g726_encoder_func_t enc_func; + /*! \brief The current decoder function. */ + g726_decoder_func_t dec_func; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/gsm0610.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/gsm0610.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,65 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/gsm0610.h - GSM 06.10 full rate speech codec. + * + * Written by Steve Underwood + * + * Copyright (C) 2006 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: gsm0610.h,v 1.2 2008/11/15 14:27:29 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_GSM0610_H_) +#define _SPANDSP_PRIVATE_GSM0610_H_ + +/*! + GSM 06.10 FR codec state descriptor. This defines the state of + a single working instance of the GSM 06.10 FR encoder or decoder. +*/ +struct gsm0610_state_s +{ + /*! \brief One of the packing modes */ + int packing; + + int16_t dp0[280]; + + /*! Preprocessing */ + int16_t z1; + int32_t L_z2; + /*! Pre-emphasis */ + int16_t mp; + + /*! Short term delay filter */ + int16_t u[8]; + int16_t LARpp[2][8]; + int16_t j; + + /*! Long term synthesis */ + int16_t nrp; + /*! Short term synthesis */ + int16_t v[9]; + /*! Decoder postprocessing */ + int16_t msr; + + /*! Encoder data */ + int16_t e[50]; +}; + +#endif +/*- End of include ---------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/hdlc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/hdlc.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,136 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/hdlc.h + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: hdlc.h,v 1.1 2008/11/30 05:43:37 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_HDLC_H_) +#define _SPANDSP_PRIVATE_HDLC_H_ + +/*! + HDLC receive descriptor. This contains all the state information for an HDLC receiver. + */ +struct hdlc_rx_state_s +{ + /*! 2 for CRC-16, 4 for CRC-32 */ + int crc_bytes; + /*! \brief Maximum permitted frame length. */ + size_t max_frame_len; + /*! \brief The callback routine called to process each good received frame. */ + hdlc_frame_handler_t frame_handler; + /*! \brief An opaque parameter passed to the callback routine. */ + void *user_data; + /*! \brief TRUE if bad frames are to be reported. */ + int report_bad_frames; + /*! \brief The number of consecutive flags which must be seen before framing is + declared OK. */ + int framing_ok_threshold; + /*! \brief TRUE if framing OK has been announced. */ + int framing_ok_announced; + /*! \brief Number of consecutive flags seen so far. */ + int flags_seen; + + /*! \brief The raw (stuffed) bit stream buffer. */ + unsigned int raw_bit_stream; + /*! \brief The destuffed bit stream buffer. */ + unsigned int byte_in_progress; + /*! \brief The current number of bits in byte_in_progress. */ + int num_bits; + /*! \brief TRUE if in octet counting mode (e.g. for MTP). */ + int octet_counting_mode; + /*! \brief Octet count, to achieve the functionality needed for things + like MTP. */ + int octet_count; + /*! \brief The number of octets to be allowed between octet count reports. */ + int octet_count_report_interval; + + /*! \brief Buffer for a frame in progress. */ + uint8_t buffer[HDLC_MAXFRAME_LEN + 4]; + /*! \brief Length of a frame in progress. */ + size_t len; + + /*! \brief The number of bytes of good frames received (CRC not included). */ + unsigned long int rx_bytes; + /*! \brief The number of good frames received. */ + unsigned long int rx_frames; + /*! \brief The number of frames with CRC errors received. */ + unsigned long int rx_crc_errors; + /*! \brief The number of too short and too long frames received. */ + unsigned long int rx_length_errors; + /*! \brief The number of HDLC aborts received. */ + unsigned long int rx_aborts; +}; + +/*! + HDLC transmit descriptor. This contains all the state information for an + HDLC transmitter. + */ +struct hdlc_tx_state_s +{ + /*! 2 for CRC-16, 4 for CRC-32 */ + int crc_bytes; + /*! \brief The callback routine called to indicate transmit underflow. */ + hdlc_underflow_handler_t underflow_handler; + /*! \brief An opaque parameter passed to the callback routine. */ + void *user_data; + /*! \brief The minimum flag octets to insert between frames. */ + int inter_frame_flags; + /*! \brief TRUE if frame creation works in progressive mode. */ + int progressive; + /*! \brief Maximum permitted frame length. */ + size_t max_frame_len; + + /*! \brief The stuffed bit stream being created. */ + uint32_t octets_in_progress; + /*! \brief The number of bits currently in octets_in_progress. */ + int num_bits; + /*! \brief The currently rotated state of the flag octet. */ + int idle_octet; + /*! \brief The number of flag octets to send for a timed burst of flags. */ + int flag_octets; + /*! \brief The number of abort octets to send for a timed burst of aborts. */ + int abort_octets; + /*! \brief TRUE if the next underflow of timed flag octets should be reported */ + int report_flag_underflow; + + /*! \brief The current message being transmitted, with its CRC attached. */ + uint8_t buffer[HDLC_MAXFRAME_LEN + 4]; + /*! \brief The length of the message in the buffer. */ + size_t len; + /*! \brief The current send position within the buffer. */ + int pos; + /*! \brief The running CRC, as data fills the frame buffer. */ + uint32_t crc; + + /*! \brief The current byte being broken into bits for transmission. */ + int byte; + /*! \brief The number of bits remaining in byte. */ + int bits; + + /*! \brief TRUE if transmission should end on buffer underflow .*/ + int tx_end; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/ima_adpcm.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/ima_adpcm.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,55 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/ima_adpcm.c - Conversion routines between linear 16 bit PCM data + * and IMA/DVI/Intel ADPCM format. + * + * Written by Steve Underwood + * + * Copyright (C) 2004 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Based on a bit from here, a bit from there, eye of toad, + * ear of bat, etc - plus, of course, my own 2 cents. + * + * $Id: ima_adpcm.h,v 1.1 2008/11/30 10:17:31 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_IMA_ADPCM_H_) +#define _SPANDSP_PRIVATE_IMA_ADPCM_H_ + +/*! + IMA (DVI/Intel) ADPCM conversion state descriptor. This defines the state of + a single working instance of the IMA ADPCM converter. This is used for + either linear to ADPCM or ADPCM to linear conversion. +*/ +struct ima_adpcm_state_s +{ + int variant; + /*! \brief The size of a chunk, in samples. */ + int chunk_size; + /*! \brief The last state of the ADPCM algorithm. */ + int last; + /*! \brief Current index into the step size table. */ + int step_index; + /*! \brief The current IMA code byte in progress. */ + uint16_t ima_byte; + int bits; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/logging.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/logging.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,48 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/logging.h - definitions for error and debug logging. + * + * Written by Steve Underwood + * + * Copyright (C) 2005 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: logging.h,v 1.1 2008/11/30 13:44:35 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_LOGGING_H_) +#define _SPANDSP_PRIVATE_LOGGING_H_ + +/*! + Logging descriptor. This defines the working state for a single instance of + the logging facility for spandsp. +*/ +struct logging_state_s +{ + int level; + int samples_per_second; + int64_t elapsed_samples; + const char *tag; + const char *protocol; + + message_handler_func_t span_message; + error_handler_func_t span_error; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/lpc10.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/lpc10.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,146 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/lpc10.h - LPC10 low bit rate speech codec. + * + * Written by Steve Underwood + * + * Copyright (C) 2006 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: lpc10.h,v 1.1 2008/11/30 05:43:37 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_LPC10_H_) +#define _SPANDSP_PRIVATE_LPC10_H_ + +/*! + LPC10 codec encoder state descriptor. This defines the state of + a single working instance of the LPC10 encoder. +*/ +struct lpc10_encode_state_s +{ + int error_correction; + + /* State used only by function high_pass_100hz */ + float z11; + float z21; + float z12; + float z22; + + /* State used by function lpc10_analyse */ + float inbuf[LPC10_SAMPLES_PER_FRAME*3]; + float pebuf[LPC10_SAMPLES_PER_FRAME*3]; + float lpbuf[696]; + float ivbuf[312]; + float bias; + int32_t osbuf[10]; /* No initial value necessary */ + int32_t osptr; /* Initial value 1 */ + int32_t obound[3]; + int32_t vwin[3][2]; /* Initial value vwin[2][0] = 307; vwin[2][1] = 462; */ + int32_t awin[3][2]; /* Initial value awin[2][0] = 307; awin[2][1] = 462; */ + int32_t voibuf[4][2]; + float rmsbuf[3]; + float rcbuf[3][10]; + float zpre; + + /* State used by function onset */ + float n; + float d__; /* Initial value 1.0f */ + float fpc; /* No initial value necessary */ + float l2buf[16]; + float l2sum1; + int32_t l2ptr1; /* Initial value 1 */ + int32_t l2ptr2; /* Initial value 9 */ + int32_t lasti; /* No initial value necessary */ + int hyst; /* Initial value FALSE */ + + /* State used by function lpc10_voicing */ + float dither; /* Initial value 20.0f */ + float snr; + float maxmin; + float voice[3][2]; /* Initial value is probably unnecessary */ + int32_t lbve; + int32_t lbue; + int32_t fbve; + int32_t fbue; + int32_t ofbue; + int32_t sfbue; + int32_t olbue; + int32_t slbue; + + /* State used by function dynamic_pitch_tracking */ + float s[60]; + int32_t p[2][60]; + int32_t ipoint; + float alphax; + + /* State used by function lpc10_pack */ + int32_t isync; +}; + +/*! + LPC10 codec decoder state descriptor. This defines the state of + a single working instance of the LPC10 decoder. +*/ +struct lpc10_decode_state_s +{ + int error_correction; + + /* State used by function decode */ + int32_t iptold; /* Initial value 60 */ + int first; /* Initial value TRUE */ + int32_t ivp2h; + int32_t iovoic; + int32_t iavgp; /* Initial value 60 */ + int32_t erate; + int32_t drc[10][3]; + int32_t dpit[3]; + int32_t drms[3]; + + /* State used by function synths */ + float buf[LPC10_SAMPLES_PER_FRAME*2]; + int32_t buflen; /* Initial value LPC10_SAMPLES_PER_FRAME */ + + /* State used by function pitsyn */ + int32_t ivoico; /* No initial value necessary as long as first_pitsyn is initially TRUE_ */ + int32_t ipito; /* No initial value necessary as long as first_pitsyn is initially TRUE_ */ + float rmso; /* Initial value 1.0f */ + float rco[10]; /* No initial value necessary as long as first_pitsyn is initially TRUE_ */ + int32_t jsamp; /* Nno initial value necessary as long as first_pitsyn is initially TRUE_ */ + int first_pitsyn; /* Initial value TRUE */ + + /* State used by function bsynz */ + int32_t ipo; + float exc[166]; + float exc2[166]; + float lpi[3]; + float hpi[3]; + float rmso_bsynz; + + /* State used by function random */ + int32_t j; + int32_t k; + int16_t y[5]; + + /* State used by function deemp */ + float dei[2]; + float deo[3]; +}; + +#endif +/*- End of include ---------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/modem_connect_tones.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/modem_connect_tones.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,100 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/modem_connect_tones.c - Generation and detection of tones + * associated with modems calling and + * answering calls. + * + * Written by Steve Underwood + * + * Copyright (C) 2006 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: modem_connect_tones.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +/*! \file */ + +#if !defined(_SPANDSP_PRIVATE_MODEM_CONNECT_TONES_H_) +#define _SPANDSP_PRIVATE_MODEM_CONNECT_TONES_H_ + +/*! + Modem connect tones generator descriptor. This defines the state + of a single working instance of the tone generator. +*/ +struct modem_connect_tones_tx_state_s +{ + int tone_type; + + int32_t tone_phase_rate; + uint32_t tone_phase; + int level; + /*! \brief Countdown to the next phase hop */ + int hop_timer; + /*! \brief Maximum duration timer */ + int duration_timer; + uint32_t mod_phase; + int32_t mod_phase_rate; + int mod_level; +}; + +/*! + Modem connect tones receiver descriptor. This defines the state + of a single working instance of the tone detector. +*/ +struct modem_connect_tones_rx_state_s +{ + /*! \brief The tone type being detected. */ + int tone_type; + /*! \brief Callback routine, using to report detection of the tone. */ + tone_report_func_t tone_callback; + /*! \brief An opaque pointer passed to tone_callback. */ + void *callback_data; + + /*! \brief The notch filter state. */ + float z1; + float z2; + /*! \brief The in notch power estimate */ + int notch_level; + /*! \brief The total channel power estimate */ + int channel_level; + /*! \brief Sample counter for the small chunks of samples, after which a test is conducted. */ + int chunk_remainder; + /*! \brief TRUE is the tone is currently confirmed present in the audio. */ + int tone_present; + /*! \brief */ + int tone_on; + /*! \brief A millisecond counter, to time the duration of tone sections. */ + int tone_cycle_duration; + /*! \brief A count of the number of good cycles of tone reversal seen. */ + int good_cycles; + /*! \brief TRUE if the tone has been seen since the last time the user tested for it */ + int hit; + /*! \brief A V.21 FSK modem context used when searching for FAX preamble. */ + fsk_rx_state_t v21rx; + /*! \brief The raw (stuffed) bit stream buffer. */ + unsigned int raw_bit_stream; + /*! \brief The current number of bits in the octet in progress. */ + int num_bits; + /*! \brief Number of consecutive flags seen so far. */ + int flags_seen; + /*! \brief TRUE if framing OK has been announced. */ + int framing_ok_announced; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/noise.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/noise.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,48 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/noise.h - A low complexity audio noise generator, suitable for + * real time generation (current just approx AWGN) + * + * Written by Steve Underwood + * + * Copyright (C) 2005 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: noise.h,v 1.1 2008/11/30 12:45:09 steveu Exp $ + */ + +/*! \file */ + +#if !defined(_SPANDSP_PRIVATE_NOISE_H_) +#define _SPANDSP_PRIVATE_NOISE_H_ + +/*! + Noise generator descriptor. This contains all the state information for an instance + of the noise generator. + */ +struct noise_state_s +{ + int class_of_noise; + int quality; + int32_t rms; + uint32_t rndnum; + int32_t state; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/oki_adpcm.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/oki_adpcm.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,60 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/oki_adpcm.h - Conversion routines between linear 16 bit PCM data + * and OKI (Dialogic) ADPCM format. + * + * Written by Steve Underwood + * + * Copyright (C) 2001 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: oki_adpcm.h,v 1.1 2008/11/30 10:17:31 steveu Exp $ + */ + +/*! \file */ + +#if !defined(_SPANDSP_PRIVATE_OKI_ADPCM_H_) +#define _SPANDSP_PRIVATE_OKI_ADPCM_H_ + +/*! + Oki (Dialogic) ADPCM conversion state descriptor. This defines the state of + a single working instance of the Oki ADPCM converter. This is used for + either linear to ADPCM or ADPCM to linear conversion. +*/ +struct oki_adpcm_state_s +{ + /*! \brief The bit rate - 24000 or 32000. */ + int bit_rate; + /*! \brief The last state of the ADPCM algorithm. */ + int16_t last; + /*! \brief Current index into the step size table. */ + int16_t step_index; + /*! \brief The compressed data byte in progress. */ + uint8_t oki_byte; + /*! \brief The signal history for the sample rate converter. */ + int16_t history[32]; + /*! \brief Pointer into the history buffer. */ + int ptr; + /*! \brief Odd/even sample counter. */ + int mark; + /*! \brief Phase accumulator for the sample rate converter. */ + int phase; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/queue.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/queue.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,52 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/queue.h - simple in process message queuing + * + * Written by Steve Underwood + * + * Copyright (C) 2004 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: queue.h,v 1.1 2008/11/30 13:08:42 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_QUEUE_H_) +#define _SPANDSP_PRIVATE_QUEUE_H_ + +/*! + Queue descriptor. This defines the working state for a single instance of + a byte stream or message oriented queue. +*/ +struct queue_state_s +{ + /*! \brief Flags indicating the mode of the queue. */ + int flags; + /*! \brief The length of the data buffer. */ + int len; + /*! \brief The buffer input pointer. */ + volatile int iptr; + /*! \brief The buffer output pointer. */ + volatile int optr; +#if defined(FULLY_DEFINE_QUEUE_STATE_T) + /*! \brief The data buffer, sized at the time the structure is created. */ + uint8_t data[]; +#endif +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/schedule.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/schedule.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,50 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/schedule.h + * + * Written by Steve Underwood + * + * Copyright (C) 2004 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: schedule.h,v 1.1 2008/11/30 05:43:37 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_SCHEDULE_H_) +#define _SPANDSP_PRIVATE_SCHEDULE_H_ + +/*! A scheduled event entry. */ +struct span_sched_s +{ + uint64_t when; + span_sched_callback_func_t callback; + void *user_data; +}; + +/*! A scheduled event queue. */ +struct span_sched_state_s +{ + uint64_t ticker; + int allocated; + int max_to_date; + span_sched_t *sched; + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/sig_tone.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/sig_tone.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,185 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/sig_tone.h - Signalling tone processing for the 2280Hz, 2400Hz, 2600Hz + * and similar signalling tone used in older protocols. + * + * Written by Steve Underwood + * + * Copyright (C) 2004 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: sig_tone.h,v 1.1 2008/11/30 13:08:42 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_SIG_TONE_H_) +#define _SPANDSP_PRIVATE_SIG_TONE_H_ + +/*! + Signaling tone descriptor. This defines the working state for a + single instance of the transmit and receive sides of a signaling + tone processor. +*/ +struct sig_tone_descriptor_s +{ + /*! \brief The tones used. */ + int tone_freq[2]; + /*! \brief The high and low tone amplitudes. */ + int tone_amp[2]; + + /*! \brief The delay, in audio samples, before the high level tone drops + to a low level tone. */ + int high_low_timeout; + + /*! \brief Some signaling tone detectors use a sharp initial filter, + changing to a broader band filter after some delay. This + parameter defines the delay. 0 means it never changes. */ + int sharp_flat_timeout; + + /*! \brief Parameters to control the behaviour of the notch filter, used + to remove the tone from the voice path in some protocols. */ + int notch_lag_time; + int notch_allowed; + + /*! \brief The tone on persistence check, in audio samples. */ + int tone_on_check_time; + /*! \brief The tone off persistence check, in audio samples. */ + int tone_off_check_time; + + int tones; + /*! \brief The coefficients for the cascaded bi-quads notch filter. */ + struct + { +#if defined(SPANDSP_USE_FIXED_POINT) + int32_t notch_a1[3]; + int32_t notch_b1[3]; + int32_t notch_a2[3]; + int32_t notch_b2[3]; + int notch_postscale; +#else + float notch_a1[3]; + float notch_b1[3]; + float notch_a2[3]; + float notch_b2[3]; +#endif + } tone[2]; + + + /*! \brief Flat mode bandpass bi-quad parameters */ +#if defined(SPANDSP_USE_FIXED_POINT) + int32_t broad_a[3]; + int32_t broad_b[3]; + int broad_postscale; +#else + float broad_a[3]; + float broad_b[3]; +#endif + /*! \brief The coefficients for the post notch leaky integrator. */ + int32_t notch_slugi; + int32_t notch_slugp; + + /*! \brief The coefficients for the post modulus leaky integrator in the + unfiltered data path. The prescale value incorporates the + detection ratio. This is called the guard ratio in some + protocols. */ + int32_t unfiltered_slugi; + int32_t unfiltered_slugp; + + /*! \brief The coefficients for the post modulus leaky integrator in the + bandpass filter data path. */ + int32_t broad_slugi; + int32_t broad_slugp; + + /*! \brief Masks which effectively threshold the notched, weighted and + bandpassed data. */ + int32_t notch_threshold; + int32_t unfiltered_threshold; + int32_t broad_threshold; +}; + +struct sig_tone_tx_state_s +{ + /*! \brief The callback function used to handle signaling changes. */ + sig_tone_func_t sig_update; + /*! \brief A user specified opaque pointer passed to the callback function. */ + void *user_data; + + sig_tone_descriptor_t *desc; + + /*! The scaling values for the high and low level tones */ + int32_t tone_scaling[2]; + /*! The sample timer, used to switch between the high and low level tones. */ + int high_low_timer; + + /*! The phase rates for the one or two tones */ + int32_t phase_rate[2]; + /*! The phase accumulators for the one or two tones */ + uint32_t phase_acc[2]; + + int current_tx_tone; + int current_tx_timeout; + int signaling_state_duration; +}; + +struct sig_tone_rx_state_s +{ + /*! \brief The callback function used to handle signaling changes. */ + sig_tone_func_t sig_update; + /*! \brief A user specified opaque pointer passed to the callback function. */ + void *user_data; + + sig_tone_descriptor_t *desc; + + int current_rx_tone; + int high_low_timer; + + struct + { + /*! \brief The z's for the notch filter */ +#if defined(SPANDSP_USE_FIXED_POINT) + int32_t notch_z1[3]; + int32_t notch_z2[3]; +#else + float notch_z1[3]; + float notch_z2[3]; +#endif + + /*! \brief The z's for the notch integrators. */ + int32_t notch_zl; + } tone[2]; + + /*! \brief The z's for the weighting/bandpass filter. */ +#if defined(SPANDSP_USE_FIXED_POINT) + int32_t broad_z[3]; +#else + float broad_z[3]; +#endif + /*! \brief The z for the broadband integrator. */ + int32_t broad_zl; + + int flat_mode; + int tone_present; + int notch_enabled; + int flat_mode_timeout; + int notch_insertion_timeout; + int tone_persistence_timeout; + + int signaling_state_duration; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/super_tone_rx.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/super_tone_rx.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,67 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/super_tone_rx.h - Flexible telephony supervisory tone detection. + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: super_tone_rx.h,v 1.1 2008/11/30 10:17:31 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_SUPER_TONE_RX_H_) +#define _SPANDSP_PRIVATE_SUPER_TONE_RX_H_ + +#define BINS 128 + +struct super_tone_rx_segment_s +{ + int f1; + int f2; + int recognition_duration; + int min_duration; + int max_duration; +}; + +struct super_tone_rx_descriptor_s +{ + int used_frequencies; + int monitored_frequencies; + int pitches[BINS/2][2]; + int tones; + super_tone_rx_segment_t **tone_list; + int *tone_segs; + goertzel_descriptor_t *desc; +}; + +struct super_tone_rx_state_s +{ + super_tone_rx_descriptor_t *desc; + float energy; + int detected_tone; + int rotation; + tone_report_func_t tone_callback; + void (*segment_callback)(void *data, int f1, int f2, int duration); + void *callback_data; + super_tone_rx_segment_t segments[11]; + goertzel_state_t state[]; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/super_tone_tx.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/super_tone_tx.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,52 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/super_tone_tx.h - Flexible telephony supervisory tone generation. + * + * Written by Steve Underwood + * + * Copyright (C) 2001 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: super_tone_tx.h,v 1.1 2008/11/30 10:22:19 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_SUPER_TONE_TX_H_) +#define _SPANDSP_PRIVATE_SUPER_TONE_TX_H_ + +struct super_tone_tx_step_s +{ + tone_gen_tone_descriptor_t tone[4]; + int tone_on; + int length; + int cycles; + super_tone_tx_step_t *next; + super_tone_tx_step_t *nest; +}; + +struct super_tone_tx_state_s +{ + tone_gen_tone_descriptor_t tone[4]; + uint32_t phase[4]; + int current_position; + int level; + super_tone_tx_step_t *levels[4]; + int cycles[4]; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/t30.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/t30.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,281 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/t30.h - definitions for T.30 fax processing + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: t30.h,v 1.2 2009/01/03 13:02:31 steveu Exp $ + */ + +/*! \file */ + +#if !defined(_SPANDSP_PRIVATE_T30_H_) +#define _SPANDSP_PRIVATE_T30_H_ + +/*! + T.30 FAX channel descriptor. This defines the state of a single working + instance of a T.30 FAX channel. +*/ +struct t30_state_s +{ + /* This must be kept the first thing in the structure, so it can be pointed + to reliably as the structures change over time. */ + /*! \brief T.4 context for reading or writing image data. */ + t4_state_t t4; + + int operation_in_progress; + + /*! \brief TRUE if behaving as the calling party */ + int calling_party; + + /*! \brief The received DCS, formatted as an ASCII string, for inclusion + in the TIFF file. */ + char rx_dcs_string[T30_MAX_DIS_DTC_DCS_LEN*3 + 1]; + /*! \brief The text which will be used in FAX page header. No text results + in no header line. */ + char header_info[T30_MAX_PAGE_HEADER_INFO + 1]; + /*! \brief The information fields received. */ + t30_exchanged_info_t rx_info; + /*! \brief The information fields to be transmitted. */ + t30_exchanged_info_t tx_info; + /*! \brief The country of origin of the remote machine, if known, else NULL. */ + const char *country; + /*! \brief The vendor of the remote machine, if known, else NULL. */ + const char *vendor; + /*! \brief The model of the remote machine, if known, else NULL. */ + const char *model; + + /*! \brief A pointer to a callback routine to be called when phase B events + occur. */ + t30_phase_b_handler_t *phase_b_handler; + /*! \brief An opaque pointer supplied in event B callbacks. */ + void *phase_b_user_data; + /*! \brief A pointer to a callback routine to be called when phase D events + occur. */ + t30_phase_d_handler_t *phase_d_handler; + /*! \brief An opaque pointer supplied in event D callbacks. */ + void *phase_d_user_data; + /*! \brief A pointer to a callback routine to be called when phase E events + occur. */ + t30_phase_e_handler_t *phase_e_handler; + /*! \brief An opaque pointer supplied in event E callbacks. */ + void *phase_e_user_data; + /*! \brief A pointer to a callback routine to be called when frames are + exchanged. */ + t30_real_time_frame_handler_t *real_time_frame_handler; + /*! \brief An opaque pointer supplied in real time frame callbacks. */ + void *real_time_frame_user_data; + + /*! \brief A pointer to a callback routine to be called when document events + (e.g. end of transmitted document) occur. */ + t30_document_handler_t *document_handler; + /*! \brief An opaque pointer supplied in document callbacks. */ + void *document_user_data; + + /*! \brief The handler for changes to the receive mode */ + t30_set_handler_t *set_rx_type_handler; + /*! \brief An opaque pointer passed to the handler for changes to the receive mode */ + void *set_rx_type_user_data; + /*! \brief The handler for changes to the transmit mode */ + t30_set_handler_t *set_tx_type_handler; + /*! \brief An opaque pointer passed to the handler for changes to the transmit mode */ + void *set_tx_type_user_data; + + /*! \brief The transmitted HDLC frame handler. */ + t30_send_hdlc_handler_t *send_hdlc_handler; + /*! \brief An opaque pointer passed to the transmitted HDLC frame handler. */ + void *send_hdlc_user_data; + + /*! \brief The DIS code for the minimum scan row time we require. This is usually 0ms, + but if we are trying to simulate another type of FAX machine, we may need a non-zero + value here. */ + uint8_t local_min_scan_time_code; + + /*! \brief The current T.30 phase. */ + int phase; + /*! \brief The T.30 phase to change to when the current phase ends. */ + int next_phase; + /*! \brief The current state of the T.30 state machine. */ + int state; + /*! \brief The step in sending a sequence of HDLC frames. */ + int step; + + /*! \brief The preparation buffer for the DCS message to be transmitted. */ + uint8_t dcs_frame[T30_MAX_DIS_DTC_DCS_LEN]; + /*! \brief The length of the DCS message to be transmitted. */ + int dcs_len; + /*! \brief The preparation buffer for DIS or DTC message to be transmitted. */ + uint8_t local_dis_dtc_frame[T30_MAX_DIS_DTC_DCS_LEN]; + /*! \brief The length of the DIS or DTC message to be transmitted. */ + int local_dis_dtc_len; + /*! \brief The last DIS or DTC message received form the far end. */ + uint8_t far_dis_dtc_frame[T30_MAX_DIS_DTC_DCS_LEN]; + /*! \brief The length of the last DIS or DTC message received form the far end. */ + int far_dis_dtc_len; + /*! \brief TRUE if a valid DIS has been received from the far end. */ + int dis_received; + + /*! \brief A flag to indicate a message is in progress. */ + int in_message; + + /*! \brief TRUE if the short training sequence should be used. */ + int short_train; + + /*! \brief A count of the number of bits in the trainability test. This counts down to zero when + sending TCF, and counts up when receiving it. */ + int tcf_test_bits; + /*! \brief The current count of consecutive received zero bits, during the trainability test. */ + int tcf_current_zeros; + /*! \brief The maximum consecutive received zero bits seen to date, during the trainability test. */ + int tcf_most_zeros; + + /*! \brief The current fallback step for the fast message transfer modem. */ + int current_fallback; + /*! \brief The subset of supported modems allowed at the current time, allowing for negotiation. */ + int current_permitted_modems; + /*! \brief TRUE if a carrier is present. Otherwise FALSE. */ + int rx_signal_present; + /*! \brief TRUE if a modem has trained correctly. */ + int rx_trained; + /*! \brief TRUE if a valid HDLC frame has been received in the current reception period. */ + int rx_frame_received; + + /*! \brief Current reception mode. */ + int current_rx_type; + /*! \brief Current transmission mode. */ + int current_tx_type; + + /*! \brief T0 is the answer timeout when calling another FAX machine. + Placing calls is handled outside the FAX processing, but this timeout keeps + running until V.21 modulation is sent or received. + T1 is the remote terminal identification timeout (in audio samples). */ + int timer_t0_t1; + /*! \brief T2, T2A and T2B are the HDLC command timeouts. + T4, T4A and T4B are the HDLC response timeouts (in audio samples). */ + int timer_t2_t4; + /*! \brief A value specifying which of the possible timers is currently running in timer_t2_t4 */ + int timer_t2_t4_is; + /*! \brief Procedural interrupt timeout (in audio samples). */ + int timer_t3; + /*! \brief This is only used in error correcting mode. */ + int timer_t5; + /*! \brief This is only used in full duplex (e.g. ISDN) modes. */ + int timer_t6; + /*! \brief This is only used in full duplex (e.g. ISDN) modes. */ + int timer_t7; + /*! \brief This is only used in full duplex (e.g. ISDN) modes. */ + int timer_t8; + + /*! \brief TRUE once the far end FAX entity has been detected. */ + int far_end_detected; + + /*! \brief TRUE if a local T.30 interrupt is pending. */ + int local_interrupt_pending; + /*! \brief The image coding being used on the line. */ + int line_encoding; + /*! \brief The image coding being used for output files. */ + int output_encoding; + /*! \brief The current DCS message minimum scan time code. */ + uint8_t min_scan_time_code; + /*! \brief The X direction resolution of the current image, in pixels per metre. */ + int x_resolution; + /*! \brief The Y direction resolution of the current image, in pixels per metre. */ + int y_resolution; + /*! \brief The width of the current image, in pixels. */ + t4_image_width_t image_width; + /*! \brief Current number of retries of the action in progress. */ + int retries; + /*! \brief TRUE if error correcting mode is used. */ + int error_correcting_mode; + /*! \brief The number of HDLC frame retries, if error correcting mode is used. */ + int error_correcting_mode_retries; + /*! \brief The current count of consecutive T30_PPR messages. */ + int ppr_count; + /*! \brief The current count of consecutive T30_RNR messages. */ + int receiver_not_ready_count; + /*! \brief The number of octets to be used per ECM frame. */ + int octets_per_ecm_frame; + /*! \brief The ECM partial page buffer. */ + uint8_t ecm_data[256][260]; + /*! \brief The lengths of the frames in the ECM partial page buffer. */ + int16_t ecm_len[256]; + /*! \brief A bit map of the OK ECM frames, constructed as a PPR frame. */ + uint8_t ecm_frame_map[3 + 32]; + + /*! \brief The current page number for receiving, in ECM mode. This is reset at the start of a call. */ + int ecm_rx_page; + /*! \brief The current page number for sending, in ECM mode. This is reset at the start of a call. */ + int ecm_tx_page; + /*! \brief The current block number, in ECM mode */ + int ecm_block; + /*! \brief The number of frames in the current block number, in ECM mode */ + int ecm_frames; + /*! \brief The number of frames sent in the current burst of image transmission, in ECM mode */ + int ecm_frames_this_tx_burst; + /*! \brief The current ECM frame, during ECM transmission. */ + int ecm_current_tx_frame; + /*! \brief TRUE if we are at the end of an ECM page to se sent - i.e. there are no more + partial pages still to come. */ + int ecm_at_page_end; + int next_tx_step; + int next_rx_step; + /*! \brief Image file name for image reception. */ + char rx_file[256]; + /*! \brief The last page we are prepared accept for a received image file. -1 means no restriction. */ + int rx_stop_page; + /*! \brief Image file name to be sent. */ + char tx_file[256]; + /*! \brief The first page to be sent from the image file. -1 means no restriction. */ + int tx_start_page; + /*! \brief The last page to be sent from the image file. -1 means no restriction. */ + int tx_stop_page; + int current_status; + /*! \brief Internet Aware FAX mode bit mask. */ + int iaf; + /*! \brief A bit mask of the currently supported modem types. */ + int supported_modems; + /*! \brief A bit mask of the currently supported image compression modes. */ + int supported_compressions; + /*! \brief A bit mask of the currently supported image resolutions. */ + int supported_resolutions; + /*! \brief A bit mask of the currently supported image sizes. */ + int supported_image_sizes; + /*! \brief A bit mask of the currently supported T.30 special features. */ + int supported_t30_features; + /*! \brief TRUE is ECM mode handling is enabled. */ + int ecm_allowed; + + /*! \brief the FCF2 field of the last PPS message we received. */ + int last_pps_fcf2; + /*! \brief The number of the first ECM frame which we do not currently received correctly. For + a partial page received correctly, this will be one greater than the number of frames it + contains. */ + int ecm_first_bad_frame; + /*! \brief A count of successfully received ECM frames, to assess progress as a basis for + deciding whether to continue error correction when PPRs keep repeating. */ + int ecm_progress; + + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/t31.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/t31.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,195 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/t31.h - A T.31 compatible class 1 FAX modem interface. + * + * Written by Steve Underwood + * + * Copyright (C) 2004 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: t31.h,v 1.6 2009/01/16 15:13:16 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_T31_H_) +#define _SPANDSP_PRIVATE_T31_H_ + +/*! + Analogue FAX front end channel descriptor. This defines the state of a single working + instance of an analogue line FAX front end. +*/ +typedef struct +{ + fax_modems_state_t modems; + + /*! The transmit signal handler to be used when the current one has finished sending. */ + span_tx_handler_t *next_tx_handler; + void *next_tx_user_data; + + /*! \brief No of data bits in current_byte. */ + int bit_no; + /*! \brief The current data byte in progress. */ + int current_byte; + + /*! \brief Rx power meter, used to detect silence. */ + power_meter_t rx_power; + /*! \brief Last sample, used for an elementary HPF for the power meter. */ + int16_t last_sample; + /*! \brief The current silence threshold. */ + int32_t silence_threshold_power; + + /*! \brief Samples of silence heard */ + int silence_heard; +} t31_audio_front_end_state_t; + +/*! + Analogue FAX front end channel descriptor. This defines the state of a single working + instance of an analogue line FAX front end. +*/ +typedef struct +{ + /*! \brief Internet Aware FAX mode bit mask. */ + int iaf; + /*! \brief Required time between T.38 transmissions, in ms. */ + int ms_per_tx_chunk; + /*! \brief Bit fields controlling the way data is packed into chunked for transmission. */ + int chunking_modes; + + /*! \brief Core T.38 IFP support */ + t38_core_state_t t38; + + /*! \brief The current transmit step being timed */ + int timed_step; + + /*! \brief TRUE is there has been some T.38 data missed */ + int rx_data_missing; + + /*! \brief The number of octets to send in each image packet (non-ECM or ECM) at the current + rate and the current specified packet interval. */ + int octets_per_data_packet; + + /*! \brief An HDLC context used when sending HDLC messages to the terminal port + (ECM mode support). */ + hdlc_tx_state_t hdlc_tx_term; + /*! \brief An HDLC context used when receiving HDLC messages from the terminal port. + (ECM mode support). */ + hdlc_rx_state_t hdlc_rx_term; + + struct + { + uint8_t buf[T31_T38_MAX_HDLC_LEN]; + int len; + } hdlc_rx; + + struct + { + /*! \brief The number of extra bits in a fully stuffed version of the + contents of the HDLC transmit buffer. This is needed to accurately + estimate the playout time for this frame, through an analogue modem. */ + int extra_bits; + } hdlc_tx; + + /*! \brief Counter for trailing non-ECM bytes, used to flush out the far end's modem. */ + int non_ecm_trailer_bytes; + + /*! \brief The next queued tramsit indicator */ + int next_tx_indicator; + /*! \brief The current T.38 data type being transmitted */ + int current_tx_data_type; + + /*! \brief The current operating mode of the receiver. */ + int current_rx_type; + /*! \brief The current operating mode of the transmitter. */ + int current_tx_type; + + /*! \brief Current transmission bit rate. */ + int tx_bit_rate; + /*! \brief A "sample" count, used to time events. */ + int32_t samples; + /*! \brief The value for samples at the next transmission point. */ + int32_t next_tx_samples; + /*! \brief The current receive timeout. */ + int32_t timeout_rx_samples; +} t31_t38_front_end_state_t; + +/*! + T.31 descriptor. This defines the working state for a single instance of + a T.31 FAX modem. +*/ +struct t31_state_s +{ + at_state_t at_state; + t31_modem_control_handler_t *modem_control_handler; + void *modem_control_user_data; + + t31_audio_front_end_state_t audio; + t31_t38_front_end_state_t t38_fe; + /*! TRUE if working in T.38 mode. */ + int t38_mode; + + /*! HDLC buffer, for composing an HDLC frame from the computer to the channel. */ + struct + { + uint8_t buf[T31_MAX_HDLC_LEN]; + int len; + int ptr; + /*! \brief TRUE when the end of HDLC data from the computer has been detected. */ + int final; + } hdlc_tx; + /*! Buffer for data from the computer to the channel. */ + struct + { + uint8_t data[T31_TX_BUF_LEN]; + /*! \brief The number of bytes stored in transmit buffer. */ + int in_bytes; + /*! \brief The number of bytes sent from the transmit buffer. */ + int out_bytes; + /*! \brief TRUE if the flow of real data has started. */ + int data_started; + /*! \brief TRUE if holding up further data into the buffer, for flow control. */ + int holding; + /*! \brief TRUE when the end of non-ECM data from the computer has been detected. */ + int final; + } tx; + + /*! TRUE if DLE prefix just used */ + int dled; + + /*! \brief Samples of silence awaited, as specified in a "wait for silence" command */ + int silence_awaited; + + /*! \brief The current bit rate for the FAX fast message transfer modem. */ + int bit_rate; + /*! \brief TRUE if a valid HDLC frame has been received in the current reception period. */ + int rx_frame_received; + + /*! \brief Samples elapsed in the current call */ + int64_t call_samples; + int64_t dte_data_timeout; + + /*! \brief The currently queued modem type. */ + int modem; + /*! \brief TRUE when short training mode has been selected by the computer. */ + int short_train; + queue_state_t *rx_queue; + + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_core.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_core.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,142 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/t38_core.h - An implementation of T.38, less the packet exchange part + * + * Written by Steve Underwood + * + * Copyright (C) 2005 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: t38_core.h,v 1.2 2009/01/19 17:14:10 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_T38_CORE_H_) +#define _SPANDSP_PRIVATE_T38_CORE_H_ + +/*! + Core T.38 state, common to all modes of T.38. +*/ +struct t38_core_state_s +{ + /*! Handler routine to transmit IFP packets generated by the T.38 protocol engine */ + t38_tx_packet_handler_t *tx_packet_handler; + /*! An opaque pointer passed to tx_packet_handler */ + void *tx_packet_user_data; + + /*! Handler routine to process received indicator packets */ + t38_rx_indicator_handler_t *rx_indicator_handler; + /*! Handler routine to process received data packets */ + t38_rx_data_handler_t *rx_data_handler; + /*! Handler routine to process the missing packet condition */ + t38_rx_missing_handler_t *rx_missing_handler; + /*! An opaque pointer passed to any of the above receive handling routines */ + void *rx_user_data; + + /*! NOTE - Bandwidth reduction shall only be done on suitable Phase C data, i.e., MH, MR + and - in the case of transcoding to JBIG - MMR. MMR and JBIG require reliable data + transport such as that provided by TCP. When transcoding is selected, it shall be + applied to every suitable page in a call. */ + + /*! Method 1: Local generation of TCF (required for use with TCP). + Method 2: Transfer of TCF is required for use with UDP (UDPTL or RTP). + Method 2 is not recommended for use with TCP. */ + int data_rate_management_method; + + /*! The emitting gateway may indicate a preference for either UDP/UDPTL, or + UDP/RTP, or TCP for transport of T.38 IFP Packets. The receiving device + selects the transport protocol. */ + int data_transport_protocol; + + /*! Indicates the capability to remove and insert fill bits in Phase C, non-ECM + data to reduce bandwidth in the packet network. */ + int fill_bit_removal; + + /*! Indicates the ability to convert to/from MMR from/to the line format to + improve the compression of the data, and reduce the bandwidth, in the + packet network. */ + int mmr_transcoding; + + /*! Indicates the ability to convert to/from JBIG to reduce bandwidth. */ + int jbig_transcoding; + + /*! For UDP (UDPTL or RTP) modes, this option indicates the maximum + number of octets that can be stored on the remote device before an overflow + condition occurs. It is the responsibility of the transmitting application to + limit the transfer rate to prevent an overflow. The negotiated data rate + should be used to determine the rate at which data is being removed from + the buffer. */ + int max_buffer_size; + + /*! This option indicates the maximum size of a UDPTL packet or the + maximum size of the payload within an RTP packet that can be accepted by + the remote device. */ + int max_datagram_size; + + /*! This is the version number of ITU-T Rec. T.38. New versions shall be + compatible with previous versions. */ + int t38_version; + + /*! Allow time for TEP playout */ + int allow_for_tep; + + /*! The fastest data rate supported by the T.38 channel. */ + int fastest_image_data_rate; + + /*! \brief The number of times an indicator packet will be sent. Numbers greater than one + will increase reliability for UDP transmission. Zero is valid, to suppress all + indicator packets for TCP transmission. */ + int indicator_tx_count; + + /*! \brief The number of times a data packet which does not end transmission will be sent. + Numbers greater than one will increase reliability for UDP transmission. Zero + is not valid. */ + int data_tx_count; + + /*! \brief The number of times a data packet which ends transmission will be sent. Numbers + greater than one will increase reliability for UDP transmission. Zero is not valid. */ + int data_end_tx_count; + + /*! TRUE if IFP packet sequence numbers are relevant. For some transports, like TPKT + over TCP they are not relevent. */ + int check_sequence_numbers; + + /*! The sequence number for the next packet to be transmitted */ + int tx_seq_no; + /*! The sequence number expected in the next received packet */ + int rx_expected_seq_no; + + /*! The current receive indicator - i.e. the last indicator received */ + int current_rx_indicator; + /*! The current receive data type - i.e. the last data type received */ + int current_rx_data_type; + /*! The current receive field type - i.e. the last field_type received */ + int current_rx_field_type; + /*! The current transmit indicator - i.e. the last indicator transmitted */ + int current_tx_indicator; + /*! The bit rate for V.34 operation */ + int v34_rate; + + /*! A count of missing receive packets. This count might not be accurate if the + received packet numbers jump wildly. */ + int missing_packets; + + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_gateway.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_gateway.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,195 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/t38_gateway.h - A T.38, less the packet exchange part + * + * Written by Steve Underwood + * + * Copyright (C) 2005, 2006, 2007 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: t38_gateway.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +/*! \file */ + +#if !defined(_SPANDSP_PRIVATE_T38_GATEWAY_H_) +#define _SPANDSP_PRIVATE_T38_GATEWAY_H_ + +/*! + T.38 gateway T.38 side channel descriptor. +*/ +typedef struct +{ + /*! Core T.38 IFP support */ + t38_core_state_t t38; + + /*! \brief TRUE if the NSF, NSC, and NSS are to be suppressed by altering + their contents to something the far end will not recognise. */ + int suppress_nsx_len[2]; + /*! \brief TRUE if we need to corrupt the HDLC frame in progress, so the receiver cannot + interpret it. The two values are for the two directions. */ + int corrupt_current_frame[2]; + + /*! \brief the current class of field being received - i.e. none, non-ECM or HDLC */ + int current_rx_field_class; + /*! \brief The T.38 indicator currently in use */ + int in_progress_rx_indicator; + + /*! \brief The current T.38 data type being sent. */ + int current_tx_data_type; +} t38_gateway_t38_state_t; + +/*! + T.38 gateway audio side channel descriptor. +*/ +typedef struct +{ + fax_modems_state_t modems; + /*! \brief The current receive signal handler. Actual receiving hop between this + and a dummy receive routine. */ + span_rx_handler_t *base_rx_handler; +} t38_gateway_audio_state_t; + +typedef struct +{ + /*! \brief non-ECM and HDLC modem receive data buffer. */ + uint8_t data[T38_RX_BUF_LEN]; + /*! \brief Current pointer into the data buffer. */ + int data_ptr; + /*! \brief The current octet being received as non-ECM data. */ + unsigned int bit_stream; + /*! \brief The number of bits taken from the modem for the current scan row. This + is used during non-ECM transmission will fill bit removal to see that + T.38 packet transmissions do not stretch too far apart. */ + int bits_absorbed; + /*! \brief The current bit number in the current non-ECM octet. */ + int bit_no; + /*! \brief Progressively calculated CRC for HDLC messages received from a modem. */ + uint16_t crc; + /*! \brief TRUE if non-ECM fill bits are to be stripped when sending image data. */ + int fill_bit_removal; + /*! \brief The number of octets to send in each image packet (non-ECM or ECM) at the current + rate and the current specified packet interval. */ + int octets_per_data_packet; + + int in_bits; + int out_octets; +} t38_gateway_to_t38_state_t; + +typedef struct +{ + /*! \brief HDLC message buffers. */ + uint8_t buf[T38_MAX_HDLC_LEN]; + /*! \brief HDLC message lengths. */ + int len; + /*! \brief HDLC message status flags. */ + int flags; + /*! \brief HDLC buffer contents. */ + int contents; +} t38_gateway_hdlc_buf_t; + +typedef struct +{ + /*! \brief HDLC message buffers. */ + t38_gateway_hdlc_buf_t buf[T38_TX_HDLC_BUFS]; +#if 0 + /*! \brief HDLC message buffers. */ + uint8_t buf[T38_TX_HDLC_BUFS][T38_MAX_HDLC_LEN]; + /*! \brief HDLC message lengths. */ + int len[T38_TX_HDLC_BUFS]; + /*! \brief HDLC message status flags. */ + int flags[T38_TX_HDLC_BUFS]; + /*! \brief HDLC buffer contents. */ + int contents[T38_TX_HDLC_BUFS]; +#endif + /*! \brief HDLC buffer number for input. */ + int in; + /*! \brief HDLC buffer number for output. */ + int out; +} t38_gateway_hdlc_state_t; + +/*! + T.38 gateway core descriptor. +*/ +typedef struct +{ + /*! \brief A bit mask of the currently supported modem types. */ + int supported_modems; + /*! \brief TRUE if ECM FAX mode is allowed through the gateway. */ + int ecm_allowed; + + /*! \brief TRUE if in image data modem is to use short training. This usually + follows image_data_mode, but in ECM mode T.30 defines recovery + conditions in which long training is used for image data. */ + int short_train; + /*! \brief TRUE if in image data mode, as opposed to TCF mode. */ + int image_data_mode; + /*! \brief The minimum permitted bits per FAX scan line row. */ + int min_row_bits; + + /*! \brief TRUE if we should count the next MCF as a page end, else FALSE */ + int count_page_on_mcf; + /*! \brief The number of pages for which a confirm (MCF) message was returned. */ + int pages_confirmed; + + /*! \brief TRUE if we are in error correcting (ECM) mode */ + int ecm_mode; + /*! \brief The current bit rate for the fast modem. */ + int fast_bit_rate; + /*! \brief The current fast modem type. */ + int fast_modem; + /*! \brief The type of fast receive modem currently active, which may be T38_NONE */ + int fast_rx_active; + + /*! \brief TRUE if between DCS and TCF, and we want the fast image modem to + start in the T.38 data at a predictable time from the end of the + V.21 signal. */ + int tcf_mode_predictable_modem_start; + + /*! \brief The number of samples until the next timeout event */ + int samples_to_timeout; + + /*! Buffer for HDLC and non-ECM data going to the T.38 channel */ + t38_gateway_to_t38_state_t to_t38; + /*! Buffer for data going to an HDLC modem. */ + t38_gateway_hdlc_state_t hdlc_to_modem; + /*! Buffer for data going to a non-ECM mode modem. */ + t38_non_ecm_buffer_state_t non_ecm_to_modem; + + /*! \brief A pointer to a callback routine to be called when frames are + exchanged. */ + t38_gateway_real_time_frame_handler_t *real_time_frame_handler; + /*! \brief An opaque pointer supplied in real time frame callbacks. */ + void *real_time_frame_user_data; +} t38_gateway_core_state_t; + +/*! + T.38 gateway state. +*/ +struct t38_gateway_state_s +{ + t38_gateway_t38_state_t t38x; + t38_gateway_audio_state_t audio; + t38_gateway_core_state_t core; + + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_non_ecm_buffer.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_non_ecm_buffer.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,86 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/t38_non_ecm_buffer.h - A rate adapting buffer for T.38 non-ECM image + * and TCF data + * + * Written by Steve Underwood + * + * Copyright (C) 2005, 2006, 2007, 2008 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: t38_non_ecm_buffer.h,v 1.2 2008/10/13 14:19:18 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_T38_NON_ECM_BUFFER_H_) +#define _SPANDSP_PRIVATE_T38_NON_ECM_BUFFER_H_ + +/*! \brief A flow controlled non-ECM image data buffer, for buffering T.38 to analogue + modem data. +*/ +struct t38_non_ecm_buffer_state_s +{ + /*! \brief Minimum number of bits per row, used when fill bits are being deleted on the + link, and restored at the emitting gateway. */ + int min_row_bits; + + /*! \brief non-ECM modem transmit data buffer. */ + uint8_t data[T38_NON_ECM_TX_BUF_LEN]; + /*! \brief The current write point in the buffer. */ + int in_ptr; + /*! \brief The current read point in the buffer. */ + int out_ptr; + /*! \brief The location of the most recent EOL marker in the buffer. */ + int latest_eol_ptr; + /*! \brief The number of bits to date in the current row, used when min_row_bits is + to be applied. */ + int row_bits; + + /*! \brief The bit stream entering the buffer, used to detect EOLs */ + unsigned int bit_stream; + /*! \brief The non-ECM flow control fill octet (0xFF before the first data, and 0x00 + once data has started). */ + uint8_t flow_control_fill_octet; + /*! \brief TRUE if we are in the initial all ones part of non-ECM transmission. */ + int at_initial_all_ones; + /*! \brief TRUE is the end of non-ECM data indication has been received. */ + int data_finished; + /*! \brief The current octet being transmitted from the buffer. */ + unsigned int octet; + /*! \brief The current bit number in the current non-ECM octet. */ + int bit_no; + /*! \brief TRUE if in image data mode, as opposed to TCF mode. */ + int image_data_mode; + + /*! \brief The number of octets input to the buffer. */ + int in_octets; + /*! \brief The number of rows input to the buffer. */ + int in_rows; + /*! \brief The number of non-ECM fill octets generated for minimum row bits + purposes. */ + int min_row_bits_fill_octets; + /*! \brief The number of octets output from the buffer. */ + int out_octets; + /*! \brief The number of rows output from the buffer. */ + int out_rows; + /*! \brief The number of non-ECM fill octets generated for flow control + purposes. */ + int flow_control_fill_octets; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_terminal.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_terminal.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,120 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/t38_terminal.h - T.38 termination, less the packet exchange part + * + * Written by Steve Underwood + * + * Copyright (C) 2005 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: t38_terminal.h,v 1.2 2008/12/31 13:57:13 steveu Exp $ + */ + +/*! \file */ + +#if !defined(_SPANDSP_PRIVATE_T38_TERMINAL_H_) +#define _SPANDSP_PRIVATE_T38_TERMINAL_H_ + +typedef struct +{ + /*! \brief Internet Aware FAX mode bit mask. */ + int iaf; + /*! \brief Required time between T.38 transmissions, in ms. */ + int ms_per_tx_chunk; + /*! \brief Bit fields controlling the way data is packed into chunked for transmission. */ + int chunking_modes; + + /*! \brief Core T.38 IFP support */ + t38_core_state_t t38; + + /*! \brief The current transmit step being timed */ + int timed_step; + + /*! \brief TRUE is there has been some T.38 data missed (i.e. lost packets) in the current + reception period. */ + int rx_data_missing; + + /*! \brief The number of octets to send in each image packet (non-ECM or ECM) at the current + rate and the current specified packet interval. */ + int octets_per_data_packet; + + struct + { + /*! \brief HDLC receive buffer */ + uint8_t buf[T38_MAX_HDLC_LEN]; + /*! \brief The length of the contents of the HDLC receive buffer */ + int len; + } hdlc_rx; + + struct + { + /*! \brief HDLC transmit buffer */ + uint8_t buf[T38_MAX_HDLC_LEN]; + /*! \brief The length of the contents of the HDLC transmit buffer */ + int len; + /*! \brief Current pointer within the contents of the HDLC transmit buffer */ + int ptr; + /*! \brief The number of extra bits in a fully stuffed version of the + contents of the HDLC transmit buffer. This is needed to accurately + estimate the playout time for this frame, through an analogue modem. */ + int extra_bits; + } hdlc_tx; + + /*! \brief Counter for trailing non-ECM bytes, used to flush out the far end's modem. */ + int non_ecm_trailer_bytes; + + /*! \brief The next T.38 indicator queued for transmission. */ + int next_tx_indicator; + /*! \brief The current T.38 data type being transmitted. */ + int current_tx_data_type; + + /*! \brief TRUE if a carrier is present. Otherwise FALSE. */ + int rx_signal_present; + + /*! \brief The current operating mode of the receiver. */ + int current_rx_type; + /*! \brief The current operating mode of the transmitter. */ + int current_tx_type; + + /*! \brief Current transmission bit rate. */ + int tx_bit_rate; + /*! \brief A "sample" count, used to time events. */ + int32_t samples; + /*! \brief The value for samples at the next transmission point. */ + int32_t next_tx_samples; + /*! \brief The current receive timeout. */ + int32_t timeout_rx_samples; +} t38_terminal_front_end_state_t; + +/*! + T.38 terminal state. +*/ +struct t38_terminal_state_s +{ + /*! \brief The T.30 back-end */ + t30_state_t t30; + + /*! \brief The T.38 front-end */ + t38_terminal_front_end_state_t t38_fe; + + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/t4.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/t4.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,201 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/t4.h - definitions for T.4 fax processing + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: t4.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_T4_H_) +#define _SPANDSP_PRIVATE_T4_H_ + +/*! + T.4 FAX compression/decompression descriptor. This defines the working state + for a single instance of a T.4 FAX compression or decompression channel. +*/ +struct t4_state_s +{ + /*! \brief The same structure is used for T.4 transmit and receive. This variable + records which mode is in progress. */ + int rx; + /* "Background" information about the FAX, which can be stored in a TIFF file. */ + /*! \brief The vendor of the machine which produced the TIFF file. */ + const char *vendor; + /*! \brief The model of machine which produced the TIFF file. */ + const char *model; + /*! \brief The local ident string. */ + const char *local_ident; + /*! \brief The remote end's ident string. */ + const char *far_ident; + /*! \brief The FAX sub-address. */ + const char *sub_address; + /*! \brief The FAX DCS information, as an ASCII string. */ + const char *dcs; + /*! \brief The text which will be used in FAX page header. No text results + in no header line. */ + const char *header_info; + + /*! \brief The type of compression used between the FAX machines. */ + int line_encoding; + /*! \brief The minimum number of encoded bits per row. This is a timing thing + for hardware FAX machines. */ + int min_bits_per_row; + + /*! \brief The compression type for output to the TIFF file. */ + int output_compression; + /*! \brief The TIFF G3 FAX options. */ + int output_t4_options; + + /*! \brief Callback function to read a row of pixels from the image source. */ + t4_row_read_handler_t row_read_handler; + /*! \brief Opaque pointer passed to row_read_handler. */ + void *row_read_user_data; + /*! \brief Callback function to write a row of pixels to the image destination. */ + t4_row_write_handler_t row_write_handler; + /*! \brief Opaque pointer passed to row_write_handler. */ + void *row_write_user_data; + + /*! \brief The time at which handling of the current page began. */ + time_t page_start_time; + + /*! \brief The current number of bytes per row of uncompressed image data. */ + int bytes_per_row; + /*! \brief The size of the image in the image buffer, in bytes. */ + int image_size; + /*! \brief The size of the compressed image on the line side, in bits. */ + int line_image_size; + /*! \brief The current size of the image buffer. */ + int image_buffer_size; + /*! \brief A point to the image buffer. */ + uint8_t *image_buffer; + + /*! \brief The libtiff context for the current TIFF file */ + TIFF *tiff_file; + /*! \brief The current file name. */ + const char *file; + /*! \brief The first page to transfer. -1 to start at the beginning of the file. */ + int start_page; + /*! \brief The last page to transfer. -1 to continue to the end of the file. */ + int stop_page; + + /*! \brief The number of pages transferred to date. */ + int pages_transferred; + /*! \brief The number of pages in the current TIFF file. */ + int pages_in_file; + /*! \brief Column-to-column (X) resolution in pixels per metre. */ + int x_resolution; + /*! \brief Row-to-row (Y) resolution in pixels per metre. */ + int y_resolution; + /*! \brief Width of the current page, in pixels. */ + int image_width; + /*! \brief Length of the current page, in pixels. */ + int image_length; + /*! \brief Current pixel row number. */ + int row; + /*! \brief The current number of consecutive bad rows. */ + int curr_bad_row_run; + /*! \brief The longest run of consecutive bad rows seen in the current page. */ + int longest_bad_row_run; + /*! \brief The total number of bad rows in the current page. */ + int bad_rows; + + /*! \brief Incoming bit buffer for decompression. */ + uint32_t rx_bitstream; + /*! \brief The number of bits currently in rx_bitstream. */ + int rx_bits; + /*! \brief The number of bits to be skipped before trying to match the next code word. */ + int rx_skip_bits; + + /*! \brief This variable is set if we are treating the current row as a 2D encoded + one. */ + int row_is_2d; + /*! \brief TRUE if the current run is black */ + int its_black; + /*! \brief The current length of the current row. */ + int row_len; + /*! \brief This variable is used to count the consecutive EOLS we have seen. If it + reaches six, this is the end of the image. It is initially set to -1 for + 1D and 2D decoding, as an indicator that we must wait for the first EOL, + before decodin any image data. */ + int consecutive_eols; + + /*! \brief Black and white run-lengths for the current row. */ + uint32_t *cur_runs; + /*! \brief Black and white run-lengths for the reference row. */ + uint32_t *ref_runs; + /*! \brief The number of runs currently in the reference row. */ + int ref_steps; + /*! \brief The current step into the reference row run-lengths buffer. */ + int b_cursor; + /*! \brief The current step into the current row run-lengths buffer. */ + int a_cursor; + + /*! \brief The reference or starting changing element on the coding line. At the + start of the coding line, a0 is set on an imaginary white changing element + situated just before the first element on the line. During the coding of + the coding line, the position of a0 is defined by the previous coding mode. + (See 4.2.1.3.2.). */ + int a0; + /*! \brief The first changing element on the reference line to the right of a0 and of + opposite colour to a0. */ + int b1; + /*! \brief The length of the in-progress run of black or white. */ + int run_length; + /*! \brief 2D horizontal mode control. */ + int black_white; + + /*! \brief Encoded data bits buffer. */ + uint32_t tx_bitstream; + /*! \brief The number of bits currently in tx_bitstream. */ + int tx_bits; + + /*! \brief A pointer into the image buffer indicating where the last row begins */ + int last_row_starts_at; + /*! \brief A pointer into the image buffer indicating where the current row begins */ + int row_starts_at; + + /*! \brief Pointer to the buffer for the current pixel row. */ + uint8_t *row_buf; + + /*! \brief Pointer to the byte containing the next image bit to transmit. */ + int bit_pos; + /*! \brief Pointer to the bit within the byte containing the next image bit to transmit. */ + int bit_ptr; + + /*! \brief The current maximum contiguous rows that may be 2D encoded. */ + int max_rows_to_next_1d_row; + /*! \brief Number of rows left that can be 2D encoded, before a 1D encoded row + must be used. */ + int rows_to_next_1d_row; + /*! \brief The current number of bits in the current encoded row. */ + int row_bits; + /*! \brief The minimum bits in any row of the current page. For monitoring only. */ + int min_row_bits; + /*! \brief The maximum bits in any row of the current page. For monitoring only. */ + int max_row_bits; + + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/time_scale.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/time_scale.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,52 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/time_scale.h - Time scaling for linear speech data + * + * Written by Steve Underwood + * + * Copyright (C) 2004 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: time_scale.h,v 1.1 2008/11/15 14:27:29 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_TIME_SCALE_H_) +#define _SPANDSP_PRIVATE_TIME_SCALE_H_ + +#define TIME_SCALE_MAX_SAMPLE_RATE 48000 +#define TIME_SCALE_MIN_PITCH 60 +#define TIME_SCALE_MAX_PITCH 250 +#define TIME_SCALE_BUF_LEN (2*TIME_SCALE_MAX_SAMPLE_RATE/TIME_SCALE_MIN_PITCH) + +/*! Audio time scaling descriptor. */ +struct time_scale_state_s +{ + int sample_rate; + int min_pitch; + int max_pitch; + int buf_len; + float playout_rate; + double rcomp; + double rate_nudge; + int fill; + int lcp; + int16_t buf[TIME_SCALE_BUF_LEN]; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/tone_detect.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/tone_detect.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,32 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/tone_detect.h - General telephony tone detection. + * + * Written by Steve Underwood + * + * Copyright (C) 2001, 2005 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: tone_detect.h,v 1.1 2008/11/30 10:17:31 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_TONE_DETECT_H_) +#define _SPANDSP_PRIVATE_TONE_DETECT_H_ + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/tone_generate.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/tone_generate.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,68 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/tone_generate.h - General telephony tone generation. + * + * Written by Steve Underwood + * + * Copyright (C) 2001 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: tone_generate.h,v 1.1 2008/11/30 10:17:31 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_TONE_GENERATE_H_) +#define _SPANDSP_PRIVATE_TONE_GENERATE_H_ + +struct tone_gen_tone_descriptor_s +{ + int32_t phase_rate; +#if defined(SPANDSP_USE_FIXED_POINT) + int16_t gain; +#else + float gain; +#endif +}; + +/*! + Cadenced multi-tone generator descriptor. +*/ +struct tone_gen_descriptor_s +{ + tone_gen_tone_descriptor_t tone[4]; + int duration[4]; + int repeat; +}; + +/*! + Cadenced multi-tone generator state descriptor. This defines the state of + a single working instance of a generator. +*/ +struct tone_gen_state_s +{ + tone_gen_tone_descriptor_t tone[4]; + + uint32_t phase[4]; + int duration[4]; + int repeat; + + int current_section; + int current_position; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/v17rx.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v17rx.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,210 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/v17rx.h - ITU V.17 modem receive part + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: v17rx.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_V17RX_H_) +#define _SPANDSP_PRIVATE_V17RX_H_ + +/*! + V.17 modem receive side descriptor. This defines the working state for a + single instance of a V.17 modem receiver. +*/ +struct v17_rx_state_s +{ + /*! \brief The bit rate of the modem. Valid values are 7200 9600, 12000 and 14400. */ + int bit_rate; + /*! \brief The callback function used to put each bit received. */ + put_bit_func_t put_bit; + /*! \brief A user specified opaque pointer passed to the put_but routine. */ + void *put_bit_user_data; + + /*! \brief The callback function used to report modem status changes. */ + modem_rx_status_func_t status_handler; + /*! \brief A user specified opaque pointer passed to the status function. */ + void *status_user_data; + + /*! \brief A callback function which may be enabled to report every symbol's + constellation position. */ + qam_report_handler_t qam_report; + /*! \brief A user specified opaque pointer passed to the qam_report callback + routine. */ + void *qam_user_data; + + /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ +#if defined(SPANDSP_USE_FIXED_POINT) + int16_t rrc_filter[V17_RX_FILTER_STEPS]; +#else + float rrc_filter[V17_RX_FILTER_STEPS]; +#endif + /*! \brief Current offset into the RRC pulse shaping filter buffer. */ + int rrc_filter_step; + + /*! \brief The state of the differential decoder */ + int diff; + /*! \brief The register for the data scrambler. */ + unsigned int scramble_reg; + /*! \brief TRUE if the short training sequence is to be used. */ + int short_train; + /*! \brief The section of the training data we are currently in. */ + int training_stage; + /*! \brief A count of how far through the current training step we are. */ + int training_count; + /*! \brief A measure of how much mismatch there is between the real constellation, + and the decoded symbol positions. */ + float training_error; + /*! \brief The value of the last signal sample, using the a simple HPF for signal power estimation. */ + int16_t last_sample; + /*! \brief >0 if a signal above the minimum is present. It may or may not be a V.17 signal. */ + int signal_present; + /*! \brief Whether or not a carrier drop was detected and the signal delivery is pending. */ + int carrier_drop_pending; + /*! \brief A count of the current consecutive samples below the carrier off threshold. */ + int low_samples; + /*! \brief A highest magnitude sample seen. */ + int16_t high_sample; + + /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ + uint32_t carrier_phase; + /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ + int32_t carrier_phase_rate; + /*! \brief The carrier update rate saved for reuse when using short training. */ + int32_t carrier_phase_rate_save; +#if defined(SPANDSP_USE_FIXED_POINTx) + /*! \brief The proportional part of the carrier tracking filter. */ + float carrier_track_p; + /*! \brief The integral part of the carrier tracking filter. */ + float carrier_track_i; +#else + /*! \brief The proportional part of the carrier tracking filter. */ + float carrier_track_p; + /*! \brief The integral part of the carrier tracking filter. */ + float carrier_track_i; +#endif + + /*! \brief A power meter, to measure the HPF'ed signal power in the channel. */ + power_meter_t power; + /*! \brief The power meter level at which carrier on is declared. */ + int32_t carrier_on_power; + /*! \brief The power meter level at which carrier off is declared. */ + int32_t carrier_off_power; + + /*! \brief Current read offset into the equalizer buffer. */ + int eq_step; + /*! \brief Current write offset into the equalizer buffer. */ + int eq_put_step; + /*! \brief Symbol counter to the next equalizer update. */ + int eq_skip; + + /*! \brief The current half of the baud. */ + int baud_half; + +#if defined(SPANDSP_USE_FIXED_POINTx) + /*! \brief The scaling factor accessed by the AGC algorithm. */ + float agc_scaling; + /*! \brief The previous value of agc_scaling, needed to reuse old training. */ + float agc_scaling_save; + + /*! \brief The current delta factor for updating the equalizer coefficients. */ + float eq_delta; + /*! \brief The adaptive equalizer coefficients. */ + complexi16_t eq_coeff[V17_EQUALIZER_PRE_LEN + 1 + V17_EQUALIZER_POST_LEN]; + /*! \brief A saved set of adaptive equalizer coefficients for use after restarts. */ + complexi16_t eq_coeff_save[V17_EQUALIZER_PRE_LEN + 1 + V17_EQUALIZER_POST_LEN]; + /*! \brief The equalizer signal buffer. */ + complexi16_t eq_buf[V17_EQUALIZER_PRE_LEN + 1 + V17_EQUALIZER_POST_LEN]; + + /*! Low band edge filter for symbol sync. */ + int32_t symbol_sync_low[2]; + /*! High band edge filter for symbol sync. */ + int32_t symbol_sync_high[2]; + /*! DC filter for symbol sync. */ + int32_t symbol_sync_dc_filter[2]; + /*! Baud phase for symbol sync. */ + int32_t baud_phase; +#else + /*! \brief The scaling factor accessed by the AGC algorithm. */ + float agc_scaling; + /*! \brief The previous value of agc_scaling, needed to reuse old training. */ + float agc_scaling_save; + + /*! \brief The current delta factor for updating the equalizer coefficients. */ + float eq_delta; + /*! \brief The adaptive equalizer coefficients. */ + complexf_t eq_coeff[V17_EQUALIZER_PRE_LEN + 1 + V17_EQUALIZER_POST_LEN]; + /*! \brief A saved set of adaptive equalizer coefficients for use after restarts. */ + complexf_t eq_coeff_save[V17_EQUALIZER_PRE_LEN + 1 + V17_EQUALIZER_POST_LEN]; + /*! \brief The equalizer signal buffer. */ + complexf_t eq_buf[V17_EQUALIZER_PRE_LEN + 1 + V17_EQUALIZER_POST_LEN]; + + /*! Low band edge filter for symbol sync. */ + float symbol_sync_low[2]; + /*! High band edge filter for symbol sync. */ + float symbol_sync_high[2]; + /*! DC filter for symbol sync. */ + float symbol_sync_dc_filter[2]; + /*! Baud phase for symbol sync. */ + float baud_phase; +#endif + + /*! \brief The total symbol timing correction since the carrier came up. + This is only for performance analysis purposes. */ + int total_baud_timing_correction; + + /*! \brief Starting phase angles for the coarse carrier aquisition step. */ + int32_t start_angles[2]; + /*! \brief History list of phase angles for the coarse carrier aquisition step. */ + int32_t angles[16]; + /*! \brief A pointer to the current constellation. */ +#if defined(SPANDSP_USE_FIXED_POINTx) + const complexi16_t *constellation; +#else + const complexf_t *constellation; +#endif + /*! \brief A pointer to the current space map. There is a space map for + each trellis state. */ + int space_map; + /*! \brief The number of bits in each symbol at the current bit rate. */ + int bits_per_symbol; + + /*! \brief Current pointer to the trellis buffers */ + int trellis_ptr; + /*! \brief The trellis. */ + int full_path_to_past_state_locations[V17_TRELLIS_STORAGE_DEPTH][8]; + /*! \brief The trellis. */ + int past_state_locations[V17_TRELLIS_STORAGE_DEPTH][8]; + /*! \brief Euclidean distances (actually the squares of the distances) + from the last states of the trellis. */ +#if defined(SPANDSP_USE_FIXED_POINTx) + uint32_t distances[8]; +#else + float distances[8]; +#endif + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/v17tx.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v17tx.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,106 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/v17tx.h - ITU V.17 modem transmit part + * + * Written by Steve Underwood + * + * Copyright (C) 2004 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: v17tx.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +/*! \file */ + +#if !defined(_SPANDSP_PRIVATE_V17TX_H_) +#define _SPANDSP_PRIVATE_V17TX_H_ + +/*! + V.17 modem transmit side descriptor. This defines the working state for a + single instance of a V.17 modem transmitter. +*/ +struct v17_tx_state_s +{ + /*! \brief The bit rate of the modem. Valid values are 4800, 7200 and 9600. */ + int bit_rate; + /*! \brief The callback function used to get the next bit to be transmitted. */ + get_bit_func_t get_bit; + /*! \brief A user specified opaque pointer passed to the get_bit function. */ + void *get_bit_user_data; + + /*! \brief The callback function used to report modem status changes. */ + modem_tx_status_func_t status_handler; + /*! \brief A user specified opaque pointer passed to the status function. */ + void *status_user_data; + + /*! \brief The gain factor needed to achieve the specified output power. */ +#if defined(SPANDSP_USE_FIXED_POINT) + int32_t gain; +#else + float gain; +#endif + + /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ +#if defined(SPANDSP_USE_FIXED_POINT) + complexi16_t rrc_filter[2*V17_TX_FILTER_STEPS]; +#else + complexf_t rrc_filter[2*V17_TX_FILTER_STEPS]; +#endif + /*! \brief Current offset into the RRC pulse shaping filter buffer. */ + int rrc_filter_step; + + /*! \brief The current state of the differential encoder. */ + int diff; + /*! \brief The current state of the convolutional encoder. */ + int convolution; + + /*! \brief The register for the data scrambler. */ + unsigned int scramble_reg; + /*! \brief TRUE if transmitting the training sequence. FALSE if transmitting user data. */ + int in_training; + /*! \brief TRUE if the short training sequence is to be used. */ + int short_train; + /*! \brief A counter used to track progress through sending the training sequence. */ + int training_step; + + /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ + uint32_t carrier_phase; + /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ + int32_t carrier_phase_rate; + /*! \brief The current fractional phase of the baud timing. */ + int baud_phase; + /*! \brief The code number for the current position in the constellation. */ + int constellation_state; + + /*! \brief A pointer to the constellation currently in use. */ +#if defined(SPANDSP_USE_FIXED_POINT) + const complexi16_t *constellation; +#else + const complexf_t *constellation; +#endif + /*! \brief The current number of data bits per symbol. This does not include + the redundant bit. */ + int bits_per_symbol; + /*! \brief The get_bit function in use at any instant. */ + get_bit_func_t current_get_bit; + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/v22bis.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v22bis.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,183 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/v22bis.h - ITU V.22bis modem + * + * Written by Steve Underwood + * + * Copyright (C) 2004 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: v22bis.h,v 1.1 2008/11/30 03:39:58 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_V22BIS_H_) +#define _SPANDSP_PRIVATE_V22BIS_H_ + +/*! + V.22bis modem descriptor. This defines the working state for a single instance + of a V.22bis modem. +*/ +struct v22bis_state_s +{ + /*! \brief The bit rate of the modem. Valid values are 1200 and 2400. */ + int bit_rate; + /*! \brief TRUE is this is the calling side modem. */ + int caller; + /*! \brief The callback function used to put each bit received. */ + put_bit_func_t put_bit; + /*! \brief The callback function used to get the next bit to be transmitted. */ + get_bit_func_t get_bit; + /*! \brief A user specified opaque pointer passed to the callback routines. */ + void *user_data; + + /* RECEIVE SECTION */ + struct + { + /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ + float rrc_filter[2*V22BIS_RX_FILTER_STEPS]; + /*! \brief Current offset into the RRC pulse shaping filter buffer. */ + int rrc_filter_step; + + /*! \brief The register for the data scrambler. */ + unsigned int scramble_reg; + /*! \brief A counter for the number of consecutive bits of repeating pattern through + the scrambler. */ + int scrambler_pattern_count; + + /*! \brief 0 if receiving user data. A training stage value during training */ + int training; + /*! \brief A count of how far through the current training step we are. */ + int training_count; + + /*! \brief >0 if a signal above the minimum is present. It may or may not be a V.22bis signal. */ + int signal_present; + + /*! \brief A measure of how much mismatch there is between the real constellation, + and the decoded symbol positions. */ + float training_error; + + /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ + uint32_t carrier_phase; + /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ + int32_t carrier_phase_rate; + /*! \brief The proportional part of the carrier tracking filter. */ + float carrier_track_p; + /*! \brief The integral part of the carrier tracking filter. */ + float carrier_track_i; + + /*! \brief A callback function which may be enabled to report every symbol's + constellation position. */ + qam_report_handler_t qam_report; + /*! \brief A user specified opaque pointer passed to the qam_report callback + routine. */ + void *qam_user_data; + + /*! \brief A power meter, to measure the HPF'ed signal power in the channel. */ + power_meter_t rx_power; + /*! \brief The power meter level at which carrier on is declared. */ + int32_t carrier_on_power; + /*! \brief The power meter level at which carrier off is declared. */ + int32_t carrier_off_power; + /*! \brief The scaling factor accessed by the AGC algorithm. */ + float agc_scaling; + + int constellation_state; + + /*! \brief The current delta factor for updating the equalizer coefficients. */ + float eq_delta; +#if defined(SPANDSP_USE_FIXED_POINTx) + /*! \brief The adaptive equalizer coefficients. */ + complexi_t eq_coeff[2*V22BIS_EQUALIZER_LEN + 1]; + /*! \brief The equalizer signal buffer. */ + complexi_t eq_buf[V22BIS_EQUALIZER_MASK + 1]; +#else + complexf_t eq_coeff[2*V22BIS_EQUALIZER_LEN + 1]; + complexf_t eq_buf[V22BIS_EQUALIZER_MASK + 1]; +#endif + /*! \brief Current offset into the equalizer buffer. */ + int eq_step; + /*! \brief Current write offset into the equalizer buffer. */ + int eq_put_step; + + /*! \brief Integration variable for damping the Gardner algorithm tests. */ + int gardner_integrate; + /*! \brief Current step size of Gardner algorithm integration. */ + int gardner_step; + /*! \brief The total symbol timing correction since the carrier came up. + This is only for performance analysis purposes. */ + int total_baud_timing_correction; + /*! \brief The current fractional phase of the baud timing. */ + int baud_phase; + + int sixteen_way_decisions; + } rx; + + /* TRANSMIT SECTION */ + struct + { + /*! \brief The gain factor needed to achieve the specified output power. */ + float gain; + + /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ + complexf_t rrc_filter[2*V22BIS_TX_FILTER_STEPS]; + /*! \brief Current offset into the RRC pulse shaping filter buffer. */ + int rrc_filter_step; + + /*! \brief The register for the data scrambler. */ + unsigned int scramble_reg; + /*! \brief A counter for the number of consecutive bits of repeating pattern through + the scrambler. */ + int scrambler_pattern_count; + + /*! \brief 0 if transmitting user data. A training stage value during training */ + int training; + /*! \brief A counter used to track progress through sending the training sequence. */ + int training_count; + /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ + uint32_t carrier_phase; + /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ + int32_t carrier_phase_rate; + /*! \brief The current phase of the guard tone (i.e. the DDS parameter). */ + uint32_t guard_phase; + /*! \brief The update rate for the phase of the guard tone (i.e. the DDS increment). */ + int32_t guard_phase_rate; + float guard_level; + /*! \brief The current fractional phase of the baud timing. */ + int baud_phase; + /*! \brief The code number for the current position in the constellation. */ + int constellation_state; + /*! \brief An indicator to mark that we are tidying up to stop transmission. */ + int shutdown; + /*! \brief The get_bit function in use at any instant. */ + get_bit_func_t current_get_bit; + } tx; + + int detected_unscrambled_ones; + int detected_unscrambled_zeros; + + int detected_unscrambled_ones_or_zeros; + int detected_unscrambled_0011_ending; + int detected_scrambled_ones_or_zeros_at_1200bps; + int detected_scrambled_ones_at_2400bps; + + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_rx.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_rx.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,178 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/v27ter_rx.h - ITU V.27ter modem receive part + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: v27ter_rx.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_V27TER_RX_H_) +#define _SPANDSP_PRIVATE_V27TER_RX_H_ + +/*! + V.27ter modem receive side descriptor. This defines the working state for a + single instance of a V.27ter modem receiver. +*/ +struct v27ter_rx_state_s +{ + /*! \brief The bit rate of the modem. Valid values are 2400 and 4800. */ + int bit_rate; + /*! \brief The callback function used to put each bit received. */ + put_bit_func_t put_bit; + /*! \brief A user specified opaque pointer passed to the put_bit routine. */ + void *put_bit_user_data; + + /*! \brief The callback function used to report modem status changes. */ + modem_rx_status_func_t status_handler; + /*! \brief A user specified opaque pointer passed to the status function. */ + void *status_user_data; + + /*! \brief A callback function which may be enabled to report every symbol's + constellation position. */ + qam_report_handler_t qam_report; + /*! \brief A user specified opaque pointer passed to the qam_report callback + routine. */ + void *qam_user_data; + + /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ +#if defined(SPANDSP_USE_FIXED_POINT) + int16_t rrc_filter[V27TER_RX_FILTER_STEPS]; +#else + float rrc_filter[V27TER_RX_FILTER_STEPS]; +#endif + /*! \brief Current offset into the RRC pulse shaping filter buffer. */ + int rrc_filter_step; + + /*! \brief The register for the training and data scrambler. */ + unsigned int scramble_reg; + /*! \brief A counter for the number of consecutive bits of repeating pattern through + the scrambler. */ + int scrambler_pattern_count; + /*! \brief The current step in the table of BC constellation positions. */ + int training_bc; + /*! \brief TRUE if the previous trained values are to be reused. */ + int old_train; + /*! \brief The section of the training data we are currently in. */ + int training_stage; + /*! \brief A count of how far through the current training step we are. */ + int training_count; + /*! \brief A measure of how much mismatch there is between the real constellation, + and the decoded symbol positions. */ + float training_error; + /*! \brief The value of the last signal sample, using the a simple HPF for signal power estimation. */ + int16_t last_sample; + /*! \brief >0 if a signal above the minimum is present. It may or may not be a V.27ter signal. */ + int signal_present; + /*! \brief Whether or not a carrier drop was detected and the signal delivery is pending. */ + int carrier_drop_pending; + /*! \brief A count of the current consecutive samples below the carrier off threshold. */ + int low_samples; + /*! \brief A highest magnitude sample seen. */ + int16_t high_sample; + + /*! \brief The position of the current symbol in the constellation, used for + differential decoding. */ + int constellation_state; + + /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ + uint32_t carrier_phase; + /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ + int32_t carrier_phase_rate; + /*! \brief The carrier update rate saved for reuse when using short training. */ + int32_t carrier_phase_rate_save; +#if defined(SPANDSP_USE_FIXED_POINTx) + /*! \brief The proportional part of the carrier tracking filter. */ + float carrier_track_p; + /*! \brief The integral part of the carrier tracking filter. */ + float carrier_track_i; +#else + /*! \brief The proportional part of the carrier tracking filter. */ + float carrier_track_p; + /*! \brief The integral part of the carrier tracking filter. */ + float carrier_track_i; +#endif + + /*! \brief A power meter, to measure the HPF'ed signal power in the channel. */ + power_meter_t power; + /*! \brief The power meter level at which carrier on is declared. */ + int32_t carrier_on_power; + /*! \brief The power meter level at which carrier off is declared. */ + int32_t carrier_off_power; + + /*! \brief Current read offset into the equalizer buffer. */ + int eq_step; + /*! \brief Current write offset into the equalizer buffer. */ + int eq_put_step; + /*! \brief Symbol counter to the next equalizer update. */ + int eq_skip; + + /*! \brief The current half of the baud. */ + int baud_half; + +#if defined(SPANDSP_USE_FIXED_POINT) + /*! \brief The scaling factor accessed by the AGC algorithm. */ + int16_t agc_scaling; + /*! \brief The previous value of agc_scaling, needed to reuse old training. */ + int16_t agc_scaling_save; + + /*! \brief The current delta factor for updating the equalizer coefficients. */ + float eq_delta; + /*! \brief The adaptive equalizer coefficients. */ + /*complexi16_t*/ complexf_t eq_coeff[V27TER_EQUALIZER_PRE_LEN + 1 + V27TER_EQUALIZER_POST_LEN]; + /*! \brief A saved set of adaptive equalizer coefficients for use after restarts. */ + /*complexi16_t*/ complexf_t eq_coeff_save[V27TER_EQUALIZER_PRE_LEN + 1 + V27TER_EQUALIZER_POST_LEN]; + /*! \brief The equalizer signal buffer. */ + /*complexi16_t*/ complexf_t eq_buf[V27TER_EQUALIZER_PRE_LEN + 1 + V27TER_EQUALIZER_POST_LEN]; +#else + /*! \brief The scaling factor accessed by the AGC algorithm. */ + float agc_scaling; + /*! \brief The previous value of agc_scaling, needed to reuse old training. */ + float agc_scaling_save; + + /*! \brief The current delta factor for updating the equalizer coefficients. */ + float eq_delta; + /*! \brief The adaptive equalizer coefficients. */ + complexf_t eq_coeff[V27TER_EQUALIZER_PRE_LEN + 1 + V27TER_EQUALIZER_POST_LEN]; + /*! \brief A saved set of adaptive equalizer coefficients for use after restarts. */ + complexf_t eq_coeff_save[V27TER_EQUALIZER_PRE_LEN + 1 + V27TER_EQUALIZER_POST_LEN]; + /*! \brief The equalizer signal buffer. */ + complexf_t eq_buf[V27TER_EQUALIZER_PRE_LEN + 1 + V27TER_EQUALIZER_POST_LEN]; +#endif + + /*! \brief Integration variable for damping the Gardner algorithm tests. */ + int gardner_integrate; + /*! \brief Current step size of Gardner algorithm integration. */ + int gardner_step; + /*! \brief The total symbol timing correction since the carrier came up. + This is only for performance analysis purposes. */ + int total_baud_timing_correction; + + /*! \brief Starting phase angles for the coarse carrier aquisition step. */ + int32_t start_angles[2]; + /*! \brief History list of phase angles for the coarse carrier aquisition step. */ + int32_t angles[16]; + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_tx.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_tx.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,95 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/v27ter_tx.h - ITU V.27ter modem transmit part + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: v27ter_tx.h,v 1.2 2008/12/06 14:35:04 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_V27TER_TX_H_) +#define _SPANDSP_PRIVATE_V27TER_TX_H_ + +/*! + V.27ter modem transmit side descriptor. This defines the working state for a + single instance of a V.27ter modem transmitter. +*/ +struct v27ter_tx_state_s +{ + /*! \brief The bit rate of the modem. Valid values are 2400 and 4800. */ + int bit_rate; + /*! \brief The callback function used to get the next bit to be transmitted. */ + get_bit_func_t get_bit; + /*! \brief A user specified opaque pointer passed to the get_bit function. */ + void *get_bit_user_data; + + /*! \brief The callback function used to report modem status changes. */ + modem_tx_status_func_t status_handler; + /*! \brief A user specified opaque pointer passed to the status function. */ + void *status_user_data; + +#if defined(SPANDSP_USE_FIXED_POINT) + /*! \brief The gain factor needed to achieve the specified output power at 2400bps. */ + int32_t gain_2400; + /*! \brief The gain factor needed to achieve the specified output power at 4800bps. */ + int32_t gain_4800; +#else + /*! \brief The gain factor needed to achieve the specified output power at 2400bps. */ + float gain_2400; + /*! \brief The gain factor needed to achieve the specified output power at 4800bps. */ + float gain_4800; +#endif + /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ +#if defined(SPANDSP_USE_FIXED_POINT) + complexi16_t rrc_filter[2*V27TER_TX_FILTER_STEPS]; +#else + complexf_t rrc_filter[2*V27TER_TX_FILTER_STEPS]; +#endif + /*! \brief Current offset into the RRC pulse shaping filter buffer. */ + int rrc_filter_step; + + /*! \brief The register for the training and data scrambler. */ + unsigned int scramble_reg; + /*! \brief A counter for the number of consecutive bits of repeating pattern through + the scrambler. */ + int scrambler_pattern_count; + /*! \brief TRUE if transmitting the training sequence, or shutting down transmission. + FALSE if transmitting user data. */ + int in_training; + /*! \brief A counter used to track progress through sending the training sequence. */ + int training_step; + + /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ + uint32_t carrier_phase; + /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ + int32_t carrier_phase_rate; + /*! \brief The current fractional phase of the baud timing. */ + int baud_phase; + /*! \brief The code number for the current position in the constellation. */ + int constellation_state; + /*! \brief The get_bit function in use at any instant. */ + get_bit_func_t current_get_bit; + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/v29rx.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v29rx.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,191 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/v29rx.h - ITU V.29 modem receive part + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: v29rx.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_V29RX_H_) +#define _SPANDSP_PRIVATE_V29RX_H_ + +/*! + V.29 modem receive side descriptor. This defines the working state for a + single instance of a V.29 modem receiver. +*/ +struct v29_rx_state_s +{ + /*! \brief The bit rate of the modem. Valid values are 4800, 7200 and 9600. */ + int bit_rate; + /*! \brief The callback function used to put each bit received. */ + put_bit_func_t put_bit; + /*! \brief A user specified opaque pointer passed to the put_bit routine. */ + void *put_bit_user_data; + + /*! \brief The callback function used to report modem status changes. */ + modem_rx_status_func_t status_handler; + /*! \brief A user specified opaque pointer passed to the status function. */ + void *status_user_data; + + /*! \brief A callback function which may be enabled to report every symbol's + constellation position. */ + qam_report_handler_t qam_report; + /*! \brief A user specified opaque pointer passed to the qam_report callback + routine. */ + void *qam_user_data; + + /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ +#if defined(SPANDSP_USE_FIXED_POINT) + int16_t rrc_filter[V29_RX_FILTER_STEPS]; +#else + float rrc_filter[V29_RX_FILTER_STEPS]; +#endif + /*! \brief Current offset into the RRC pulse shaping filter buffer. */ + int rrc_filter_step; + + /*! \brief The register for the data scrambler. */ + unsigned int scramble_reg; + /*! \brief The register for the training scrambler. */ + uint8_t training_scramble_reg; + /*! \brief The current step in the table of CD constellation positions. */ + int training_cd; + /*! \brief TRUE if the previous trained values are to be reused. */ + int old_train; + /*! \brief The section of the training data we are currently in. */ + int training_stage; + /*! \brief A count of how far through the current training step we are. */ + int training_count; + /*! \brief A measure of how much mismatch there is between the real constellation, + and the decoded symbol positions. */ + float training_error; + /*! \brief The value of the last signal sample, using the a simple HPF for signal power estimation. */ + int16_t last_sample; + /*! \brief >0 if a signal above the minimum is present. It may or may not be a V.29 signal. */ + int signal_present; + /*! \brief Whether or not a carrier drop was detected and the signal delivery is pending. */ + int carrier_drop_pending; + /*! \brief A count of the current consecutive samples below the carrier off threshold. */ + int low_samples; + /*! \brief A highest magnitude sample seen. */ + int16_t high_sample; + + /*! \brief The position of the current symbol in the constellation, used for + differential decoding. */ + int constellation_state; + + /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ + uint32_t carrier_phase; + /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ + int32_t carrier_phase_rate; + /*! \brief The carrier update rate saved for reuse when using short training. */ + int32_t carrier_phase_rate_save; +#if defined(SPANDSP_USE_FIXED_POINT) + /*! \brief The proportional part of the carrier tracking filter. */ + int32_t carrier_track_p; + /*! \brief The integral part of the carrier tracking filter. */ + int32_t carrier_track_i; +#else + /*! \brief The proportional part of the carrier tracking filter. */ + float carrier_track_p; + /*! \brief The integral part of the carrier tracking filter. */ + float carrier_track_i; +#endif + + /*! \brief A power meter, to measure the HPF'ed signal power in the channel. */ + power_meter_t power; + /*! \brief The power meter level at which carrier on is declared. */ + int32_t carrier_on_power; + /*! \brief The power meter level at which carrier off is declared. */ + int32_t carrier_off_power; + + /*! \brief Current read offset into the equalizer buffer. */ + int eq_step; + /*! \brief Current write offset into the equalizer buffer. */ + int eq_put_step; + /*! \brief Symbol counter to the next equalizer update. */ + int eq_skip; + + /*! \brief The current half of the baud. */ + int baud_half; + +#if defined(SPANDSP_USE_FIXED_POINT) + /*! \brief The scaling factor accessed by the AGC algorithm. */ + int16_t agc_scaling; + /*! \brief The previous value of agc_scaling, needed to reuse old training. */ + int16_t agc_scaling_save; + + /*! \brief The current delta factor for updating the equalizer coefficients. */ + int16_t eq_delta; + /*! \brief The adaptive equalizer coefficients. */ + complexi16_t eq_coeff[V29_EQUALIZER_PRE_LEN + 1 + V29_EQUALIZER_POST_LEN]; + /*! \brief A saved set of adaptive equalizer coefficients for use after restarts. */ + complexi16_t eq_coeff_save[V29_EQUALIZER_PRE_LEN + 1 + V29_EQUALIZER_POST_LEN]; + /*! \brief The equalizer signal buffer. */ + complexi16_t eq_buf[V29_EQUALIZER_PRE_LEN + 1 + V29_EQUALIZER_POST_LEN]; + + /*! Low band edge filter for symbol sync. */ + int32_t symbol_sync_low[2]; + /*! High band edge filter for symbol sync. */ + int32_t symbol_sync_high[2]; + /*! DC filter for symbol sync. */ + int32_t symbol_sync_dc_filter[2]; + /*! Baud phase for symbol sync. */ + int32_t baud_phase; +#else + /*! \brief The scaling factor accessed by the AGC algorithm. */ + float agc_scaling; + /*! \brief The previous value of agc_scaling, needed to reuse old training. */ + float agc_scaling_save; + + /*! \brief The current delta factor for updating the equalizer coefficients. */ + float eq_delta; + /*! \brief The adaptive equalizer coefficients. */ + complexf_t eq_coeff[V29_EQUALIZER_PRE_LEN + 1 + V29_EQUALIZER_POST_LEN]; + /*! \brief A saved set of adaptive equalizer coefficients for use after restarts. */ + complexf_t eq_coeff_save[V29_EQUALIZER_PRE_LEN + 1 + V29_EQUALIZER_POST_LEN]; + /*! \brief The equalizer signal buffer. */ + complexf_t eq_buf[V29_EQUALIZER_PRE_LEN + 1 + V29_EQUALIZER_POST_LEN]; + + /*! Low band edge filter for symbol sync. */ + float symbol_sync_low[2]; + /*! High band edge filter for symbol sync. */ + float symbol_sync_high[2]; + /*! DC filter for symbol sync. */ + float symbol_sync_dc_filter[2]; + /*! Baud phase for symbol sync. */ + float baud_phase; +#endif + + /*! \brief The total symbol timing correction since the carrier came up. + This is only for performance analysis purposes. */ + int total_baud_timing_correction; + + /*! \brief Starting phase angles for the coarse carrier aquisition step. */ + int32_t start_angles[2]; + /*! \brief History list of phase angles for the coarse carrier aquisition step. */ + int32_t angles[16]; + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/v29tx.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v29tx.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,97 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/v29tx.h - ITU V.29 modem transmit part + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: v29tx.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_V29TX_H_) +#define _SPANDSP_PRIVATE_V29TX_H_ + +/*! + V.29 modem transmit side descriptor. This defines the working state for a + single instance of a V.29 modem transmitter. +*/ +struct v29_tx_state_s +{ + /*! \brief The bit rate of the modem. Valid values are 4800, 7200 and 9600. */ + int bit_rate; + /*! \brief The callback function used to get the next bit to be transmitted. */ + get_bit_func_t get_bit; + /*! \brief A user specified opaque pointer passed to the get_bit function. */ + void *get_bit_user_data; + + /*! \brief The callback function used to report modem status changes. */ + modem_tx_status_func_t status_handler; + /*! \brief A user specified opaque pointer passed to the status function. */ + void *status_user_data; + + /*! \brief Gain required to achieve the specified output power, not allowing + for the size of the current constellation. */ + float base_gain; + /*! \brief Gain required to achieve the specified output power, allowing + for the size of the current constellation. */ +#if defined(SPANDSP_USE_FIXED_POINT) + int32_t gain; +#else + float gain; +#endif + + /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ +#if defined(SPANDSP_USE_FIXED_POINT) + complexi16_t rrc_filter[2*V29_TX_FILTER_STEPS]; +#else + complexf_t rrc_filter[2*V29_TX_FILTER_STEPS]; +#endif + /*! \brief Current offset into the RRC pulse shaping filter buffer. */ + int rrc_filter_step; + + /*! \brief The register for the data scrambler. */ + unsigned int scramble_reg; + /*! \brief The register for the training scrambler. */ + uint8_t training_scramble_reg; + /*! \brief TRUE if transmitting the training sequence, or shutting down transmission. + FALSE if transmitting user data. */ + int in_training; + /*! \brief A counter used to track progress through sending the training sequence. */ + int training_step; + /*! \brief An offset value into the table of training parameters, used to match the + training pattern to the bit rate. */ + int training_offset; + + /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ + uint32_t carrier_phase; + /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ + int32_t carrier_phase_rate; + /*! \brief The current fractional phase of the baud timing. */ + int baud_phase; + /*! \brief The code number for the current position in the constellation. */ + int constellation_state; + /*! \brief The get_bit function in use at any instant. */ + get_bit_func_t current_get_bit; + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/v42.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v42.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,119 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/v42.h + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: v42.h,v 1.1 2008/11/15 14:43:08 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_V42_H_) +#define _SPANDSP_PRIVATE_V42_H_ + +/*! + LAP-M descriptor. This defines the working state for a single instance of LAP-M. +*/ +struct lapm_state_s +{ + int handle; + hdlc_rx_state_t hdlc_rx; + hdlc_tx_state_t hdlc_tx; + + v42_frame_handler_t iframe_receive; + void *iframe_receive_user_data; + + v42_status_func_t status_callback; + void *status_callback_user_data; + + int state; + int tx_waiting; + int debug; + /*! TRUE if originator. FALSE if answerer */ + int we_are_originator; + /*! Remote network type (unknown, answerer. originator) */ + int peer_is_originator; + /*! Next N(S) for transmission */ + int next_tx_frame; + /*! The last of our frames which the peer acknowledged */ + int last_frame_peer_acknowledged; + /*! Next N(R) for reception */ + int next_expected_frame; + /*! The last of the peer's frames which we acknowledged */ + int last_frame_we_acknowledged; + /*! TRUE if we sent an I or S frame with the F-bit set */ + int solicit_f_bit; + /*! Retransmission count */ + int retransmissions; + /*! TRUE if peer is busy */ + int busy; + + /*! Acknowledgement timer */ + int t401_timer; + /*! Reply delay timer - optional */ + int t402_timer; + /*! Inactivity timer - optional */ + int t403_timer; + /*! Maximum number of octets in an information field */ + int n401; + /*! Window size */ + int window_size_k; + + lapm_frame_queue_t *txqueue; + lapm_frame_queue_t *tx_next; + lapm_frame_queue_t *tx_last; + queue_state_t *tx_queue; + + span_sched_state_t sched; + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +/*! + V.42 descriptor. This defines the working state for a single instance of V.42. +*/ +struct v42_state_s +{ + /*! TRUE if we are the calling party, otherwise FALSE */ + int caller; + /*! TRUE if we should detect whether the far end is V.42 capable. FALSE if we go + directly to protocol establishment */ + int detect; + + /*! Stage in negotiating V.42 support */ + int rx_negotiation_step; + int rxbits; + int rxstream; + int rxoks; + int odp_seen; + int txbits; + int txstream; + int txadps; + /*! The LAP.M context */ + lapm_state_t lapm; + + /*! V.42 support detection timer */ + int t400_timer; + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/v42bis.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v42bis.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,151 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/v42bis.h + * + * Written by Steve Underwood + * + * Copyright (C) 2005 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: v42bis.h,v 1.1 2008/11/15 14:43:08 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_V42BIS_H_) +#define _SPANDSP_PRIVATE_V42BIS_H_ + +/*! + V.42bis dictionary node. +*/ +typedef struct +{ + /*! \brief The prior code for each defined code. */ + uint16_t parent_code; + /*! \brief The number of leaf nodes this node has */ + int16_t leaves; + /*! \brief This leaf octet for each defined code. */ + uint8_t node_octet; + /*! \brief Bit map of the children which exist */ + uint32_t children[8]; +} v42bis_dict_node_t; + +/*! + V.42bis compression. This defines the working state for a single instance + of V.42bis compression. +*/ +typedef struct +{ + /*! \brief Compression mode. */ + int compression_mode; + /*! \brief Callback function to handle received frames. */ + v42bis_frame_handler_t handler; + /*! \brief An opaque pointer passed in calls to frame_handler. */ + void *user_data; + /*! \brief The maximum frame length allowed */ + int max_len; + + uint32_t string_code; + uint32_t latest_code; + int string_length; + uint32_t output_bit_buffer; + int output_bit_count; + int output_octet_count; + uint8_t output_buf[1024]; + v42bis_dict_node_t dict[V42BIS_MAX_CODEWORDS]; + /*! \brief TRUE if we are in transparent (i.e. uncompressable) mode */ + int transparent; + int change_transparency; + /*! \brief IIR filter state, used in assessing compressibility. */ + int compressibility_filter; + int compressibility_persistence; + + /*! \brief Next empty dictionary entry */ + uint32_t v42bis_parm_c1; + /*! \brief Current codeword size */ + int v42bis_parm_c2; + /*! \brief Threshold for codeword size change */ + uint32_t v42bis_parm_c3; + + /*! \brief Mark that this is the first octet/code to be processed */ + int first; + uint8_t escape_code; +} v42bis_compress_state_t; + +/*! + V.42bis decompression. This defines the working state for a single instance + of V.42bis decompression. +*/ +typedef struct +{ + /*! \brief Callback function to handle decompressed data. */ + v42bis_data_handler_t handler; + /*! \brief An opaque pointer passed in calls to data_handler. */ + void *user_data; + /*! \brief The maximum decompressed data block length allowed */ + int max_len; + + uint32_t old_code; + uint32_t last_old_code; + uint32_t input_bit_buffer; + int input_bit_count; + int octet; + int last_length; + int output_octet_count; + uint8_t output_buf[1024]; + v42bis_dict_node_t dict[V42BIS_MAX_CODEWORDS]; + /*! \brief TRUE if we are in transparent (i.e. uncompressable) mode */ + int transparent; + + int last_extra_octet; + + /*! \brief Next empty dictionary entry */ + uint32_t v42bis_parm_c1; + /*! \brief Current codeword size */ + int v42bis_parm_c2; + /*! \brief Threshold for codeword size change */ + uint32_t v42bis_parm_c3; + + /*! \brief Mark that this is the first octet/code to be processed */ + int first; + uint8_t escape_code; + int escaped; +} v42bis_decompress_state_t; + +/*! + V.42bis compression/decompression descriptor. This defines the working state for a + single instance of V.42bis compress/decompression. +*/ +struct v42bis_state_s +{ + /*! \brief V.42bis data compression directions. */ + int v42bis_parm_p0; + + /*! \brief Compression state. */ + v42bis_compress_state_t compress; + /*! \brief Decompression state. */ + v42bis_decompress_state_t decompress; + + /*! \brief Maximum codeword size (bits) */ + int v42bis_parm_n1; + /*! \brief Total number of codewords */ + uint32_t v42bis_parm_n2; + /*! \brief Maximum string length */ + int v42bis_parm_n7; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/spandsp/src/spandsp/private/v8.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v8.h Tue Jan 27 22:48:03 2009 @@ -0,0 +1,82 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * private/v8.h - V.8 modem negotiation processing. + * + * Written by Steve Underwood + * + * Copyright (C) 2004 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: v8.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + */ + +#if !defined(_SPANDSP_PRIVATE_V8_H_) +#define _SPANDSP_PRIVATE_V8_H_ + +struct v8_state_s +{ + /*! \brief TRUE if we are the calling modem */ + int caller; + /*! \brief The current state of the V8 protocol */ + int state; + int negotiation_timer; + int ci_timer; + int ci_count; + fsk_tx_state_t v21tx; + fsk_rx_state_t v21rx; + queue_state_t *tx_queue; + modem_connect_tones_tx_state_t ansam_tx; + modem_connect_tones_rx_state_t ansam_rx; + + v8_result_handler_t *result_handler; + void *result_handler_user_data; + + /*! \brief Modulation schemes available at this end. */ + int available_modulations; + int common_modulations; + int negotiated_modulation; + int far_end_modulations; + + int call_function; + int protocol; + int pstn_access; + int nsf_seen; + int pcm_modem_availability; + int t66_seen; + + /* V8 data parsing */ + unsigned int bit_stream; + int bit_cnt; + /* Indicates the type of message coming up */ + int preamble_type; + uint8_t rx_data[64]; + int rx_data_ptr; + + /*! \brief a reference copy of the last CM or JM message, used when + testing for matches. */ + uint8_t cm_jm_data[64]; + int cm_jm_count; + int got_cm_jm; + int got_cj; + int zero_byte_count; + /*! \brief Error and flow logging control */ + logging_state_t logging; +}; + +#endif +/*- End of file ------------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/spandsp/queue.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/queue.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/queue.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: queue.h,v 1.17 2008/09/09 16:25:51 steveu Exp $ + * $Id: queue.h,v 1.18 2008/11/30 13:08:42 steveu Exp $ */ /*! \file */ @@ -53,21 +53,7 @@ Queue descriptor. This defines the working state for a single instance of a byte stream or message oriented queue. */ -typedef struct -{ - /*! \brief Flags indicating the mode of the queue. */ - int flags; - /*! \brief The length of the data buffer. */ - int len; - /*! \brief The buffer input pointer. */ - volatile int iptr; - /*! \brief The buffer output pointer. */ - volatile int optr; -#if defined(FULLY_DEFINE_QUEUE_STATE_T) - /*! \brief The data buffer, sized at the time the structure is created. */ - uint8_t data[]; -#endif -} queue_state_t; +typedef struct queue_state_s queue_state_t; #define QUEUE_STATE_T_SIZE(len) (sizeof(queue_state_t) + len + 1) Modified: freeswitch/trunk/libs/spandsp/src/spandsp/schedule.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/schedule.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/schedule.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: schedule.h,v 1.16 2008/04/17 14:27:00 steveu Exp $ + * $Id: schedule.h,v 1.17 2008/11/30 05:43:37 steveu Exp $ */ /*! \file */ @@ -38,27 +38,13 @@ #if !defined(_SPANDSP_SCHEDULE_H_) #define _SPANDSP_SCHEDULE_H_ -typedef struct span_sched_state_s span_sched_state_t; - -typedef void (*span_sched_callback_func_t)(span_sched_state_t *s, void *user_data); - /*! A scheduled event entry. */ -typedef struct -{ - uint64_t when; - span_sched_callback_func_t callback; - void *user_data; -} span_sched_t; +typedef struct span_sched_s span_sched_t; /*! A scheduled event queue. */ -struct span_sched_state_s -{ - uint64_t ticker; - int allocated; - int max_to_date; - span_sched_t *sched; - logging_state_t logging; -}; +typedef struct span_sched_state_s span_sched_state_t; + +typedef void (*span_sched_callback_func_t)(span_sched_state_t *s, void *user_data); #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/sig_tone.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/sig_tone.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/sig_tone.h Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: sig_tone.h,v 1.14 2008/07/29 14:15:21 steveu Exp $ + * $Id: sig_tone.h,v 1.15 2008/11/30 13:08:42 steveu Exp $ */ /*! \file */ @@ -87,152 +87,11 @@ single instance of the transmit and receive sides of a signaling tone processor. */ -typedef struct -{ - /*! \brief The tones used. */ - int tone_freq[2]; - /*! \brief The high and low tone amplitudes. */ - int tone_amp[2]; - - /*! \brief The delay, in audio samples, before the high level tone drops - to a low level tone. */ - int high_low_timeout; - - /*! \brief Some signaling tone detectors use a sharp initial filter, - changing to a broader band filter after some delay. This - parameter defines the delay. 0 means it never changes. */ - int sharp_flat_timeout; - - /*! \brief Parameters to control the behaviour of the notch filter, used - to remove the tone from the voice path in some protocols. */ - int notch_lag_time; - int notch_allowed; - - /*! \brief The tone on persistence check, in audio samples. */ - int tone_on_check_time; - /*! \brief The tone off persistence check, in audio samples. */ - int tone_off_check_time; - - int tones; - /*! \brief The coefficients for the cascaded bi-quads notch filter. */ - struct - { -#if defined(SPANDSP_USE_FIXED_POINT) - int32_t notch_a1[3]; - int32_t notch_b1[3]; - int32_t notch_a2[3]; - int32_t notch_b2[3]; - int notch_postscale; -#else - float notch_a1[3]; - float notch_b1[3]; - float notch_a2[3]; - float notch_b2[3]; -#endif - } tone[2]; - +typedef struct sig_tone_descriptor_s sig_tone_descriptor_t; - /*! \brief Flat mode bandpass bi-quad parameters */ -#if defined(SPANDSP_USE_FIXED_POINT) - int32_t broad_a[3]; - int32_t broad_b[3]; - int broad_postscale; -#else - float broad_a[3]; - float broad_b[3]; -#endif - /*! \brief The coefficients for the post notch leaky integrator. */ - int32_t notch_slugi; - int32_t notch_slugp; - - /*! \brief The coefficients for the post modulus leaky integrator in the - unfiltered data path. The prescale value incorporates the - detection ratio. This is called the guard ratio in some - protocols. */ - int32_t unfiltered_slugi; - int32_t unfiltered_slugp; - - /*! \brief The coefficients for the post modulus leaky integrator in the - bandpass filter data path. */ - int32_t broad_slugi; - int32_t broad_slugp; - - /*! \brief Masks which effectively threshold the notched, weighted and - bandpassed data. */ - int32_t notch_threshold; - int32_t unfiltered_threshold; - int32_t broad_threshold; -} sig_tone_descriptor_t; - -typedef struct -{ - /*! \brief The callback function used to handle signaling changes. */ - sig_tone_func_t sig_update; - /*! \brief A user specified opaque pointer passed to the callback function. */ - void *user_data; - - sig_tone_descriptor_t *desc; - - /*! The scaling values for the high and low level tones */ - int32_t tone_scaling[2]; - /*! The sample timer, used to switch between the high and low level tones. */ - int high_low_timer; - - /*! The phase rates for the one or two tones */ - int32_t phase_rate[2]; - /*! The phase accumulators for the one or two tones */ - uint32_t phase_acc[2]; - - int current_tx_tone; - int current_tx_timeout; - int signaling_state_duration; -} sig_tone_tx_state_t; - -typedef struct -{ - /*! \brief The callback function used to handle signaling changes. */ - sig_tone_func_t sig_update; - /*! \brief A user specified opaque pointer passed to the callback function. */ - void *user_data; - - sig_tone_descriptor_t *desc; - - int current_rx_tone; - int high_low_timer; - - struct - { - /*! \brief The z's for the notch filter */ -#if defined(SPANDSP_USE_FIXED_POINT) - int32_t notch_z1[3]; - int32_t notch_z2[3]; -#else - float notch_z1[3]; - float notch_z2[3]; -#endif - - /*! \brief The z's for the notch integrators. */ - int32_t notch_zl; - } tone[2]; - - /*! \brief The z's for the weighting/bandpass filter. */ -#if defined(SPANDSP_USE_FIXED_POINT) - int32_t broad_z[3]; -#else - float broad_z[3]; -#endif - /*! \brief The z for the broadband integrator. */ - int32_t broad_zl; +typedef struct sig_tone_tx_state_s sig_tone_tx_state_t; - int flat_mode; - int tone_present; - int notch_enabled; - int flat_mode_timeout; - int notch_insertion_timeout; - int tone_persistence_timeout; - - int signaling_state_duration; -} sig_tone_rx_state_t; +typedef struct sig_tone_rx_state_s sig_tone_rx_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/super_tone_rx.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/super_tone_rx.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/super_tone_rx.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: super_tone_rx.h,v 1.17 2008/06/13 14:46:52 steveu Exp $ + * $Id: super_tone_rx.h,v 1.18 2008/11/30 10:17:31 steveu Exp $ */ #if !defined(_SPANDSP_SUPER_TONE_RX_H_) @@ -57,40 +57,11 @@ /*! Tone detection indication callback routine */ typedef void (*tone_report_func_t)(void *user_data, int code, int level, int delay); -#define BINS 128 +typedef struct super_tone_rx_segment_s super_tone_rx_segment_t; -typedef struct -{ - int f1; - int f2; - int recognition_duration; - int min_duration; - int max_duration; -} super_tone_rx_segment_t; - -typedef struct -{ - int used_frequencies; - int monitored_frequencies; - int pitches[BINS/2][2]; - int tones; - super_tone_rx_segment_t **tone_list; - int *tone_segs; - goertzel_descriptor_t *desc; -} super_tone_rx_descriptor_t; +typedef struct super_tone_rx_descriptor_s super_tone_rx_descriptor_t; -typedef struct -{ - super_tone_rx_descriptor_t *desc; - float energy; - int detected_tone; - int rotation; - tone_report_func_t tone_callback; - void (*segment_callback)(void *data, int f1, int f2, int duration); - void *callback_data; - super_tone_rx_segment_t segments[11]; - goertzel_state_t state[]; -} super_tone_rx_state_t; +typedef struct super_tone_rx_state_s super_tone_rx_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/super_tone_tx.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/super_tone_tx.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/super_tone_tx.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: super_tone_tx.h,v 1.13 2008/04/17 14:27:00 steveu Exp $ + * $Id: super_tone_tx.h,v 1.14 2008/11/30 10:17:31 steveu Exp $ */ #if !defined(_SPANDSP_SUPER_TONE_TX_H_) @@ -43,25 +43,7 @@ typedef struct super_tone_tx_step_s super_tone_tx_step_t; -struct super_tone_tx_step_s -{ - tone_gen_tone_descriptor_t tone[4]; - int tone_on; - int length; - int cycles; - super_tone_tx_step_t *next; - super_tone_tx_step_t *nest; -}; - -typedef struct -{ - tone_gen_tone_descriptor_t tone[4]; - uint32_t phase[4]; - int current_position; - int level; - super_tone_tx_step_t *levels[4]; - int cycles[4]; -} super_tone_tx_state_t; +typedef struct super_tone_tx_state_s super_tone_tx_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/t30.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/t30.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/t30.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t30.h,v 1.115 2008/09/04 14:40:05 steveu Exp $ + * $Id: t30.h,v 1.120 2009/01/19 17:14:10 steveu Exp $ */ /*! \file */ @@ -329,45 +329,76 @@ dying. */ T30_FRONT_END_RECEIVE_COMPLETE, T30_FRONT_END_SIGNAL_PRESENT, - T30_FRONT_END_SIGNAL_ABSENT + T30_FRONT_END_SIGNAL_ABSENT, + T30_FRONT_END_CED_PRESENT, + T30_FRONT_END_CNG_PRESENT }; enum { + /*! Support the V.27ter modem (2400, and 4800bps) for image transfer. */ T30_SUPPORT_V27TER = 0x01, + /*! Support the V.29 modem (9600, and 7200bps) for image transfer. */ T30_SUPPORT_V29 = 0x02, + /*! Support the V.17 modem (14400, 12000, 9600 and 7200bps) for image transfer. */ T30_SUPPORT_V17 = 0x04, + /*! Support the V.34 modem (up to 33,600bps) for image transfer. */ T30_SUPPORT_V34 = 0x08, + /*! Support the Internet Aware FAX mode (no bit rate limit) for image transfer. */ T30_SUPPORT_IAF = 0x10 }; enum { + /*! No compression */ T30_SUPPORT_NO_COMPRESSION = 0x01, + /*! T.1 1D compression */ T30_SUPPORT_T4_1D_COMPRESSION = 0x02, + /*! T.4 2D compression */ T30_SUPPORT_T4_2D_COMPRESSION = 0x04, + /*! T.6 2D compression */ T30_SUPPORT_T6_COMPRESSION = 0x08, - T30_SUPPORT_T85_COMPRESSION = 0x10, /* Monochrome JBIG */ - T30_SUPPORT_T43_COMPRESSION = 0x20, /* Colour JBIG */ - T30_SUPPORT_T45_COMPRESSION = 0x40 /* Run length colour compression */ + /*! T.85 monochrome JBIG coding */ + T30_SUPPORT_T85_COMPRESSION = 0x10, + /*! T.43 colour JBIG coding */ + T30_SUPPORT_T43_COMPRESSION = 0x20, + /*! T.45 run length colour compression */ + T30_SUPPORT_T45_COMPRESSION = 0x40, + /*! T.81 + T.30 Annex E colour JPEG coding */ + T30_SUPPORT_T81_COMPRESSION = 0x80, + /*! T.81 + T.30 Annex K colour sYCC-JPEG coding */ + T30_SUPPORT_SYCC_T81_COMPRESSION = 0x100 }; enum { + /*! Support standard FAX Y-resolution 98/100dpi */ T30_SUPPORT_STANDARD_RESOLUTION = 0x01, + /*! Support fine FAX Y-resolution 196/200dpi */ T30_SUPPORT_FINE_RESOLUTION = 0x02, + /*! Support super-fine FAX Y-resolution 392/400dpi */ T30_SUPPORT_SUPERFINE_RESOLUTION = 0x04, + /*! Support half FAX X-resolution 100/102dpi */ T30_SUPPORT_R4_RESOLUTION = 0x10000, + /*! Support standard FAX X-resolution 200/204dpi */ T30_SUPPORT_R8_RESOLUTION = 0x20000, + /*! Support double FAX X-resolution 400dpi */ T30_SUPPORT_R16_RESOLUTION = 0x40000, + /*! Support 300dpi x 300 dpi */ T30_SUPPORT_300_300_RESOLUTION = 0x100000, + /*! Support 400dpi x 400 dpi */ T30_SUPPORT_400_400_RESOLUTION = 0x200000, + /*! Support 600dpi x 600 dpi */ T30_SUPPORT_600_600_RESOLUTION = 0x400000, + /*! Support 1200dpi x 1200 dpi */ T30_SUPPORT_1200_1200_RESOLUTION = 0x800000, + /*! Support 300dpi x 600 dpi */ T30_SUPPORT_300_600_RESOLUTION = 0x1000000, + /*! Support 400dpi x 800 dpi */ T30_SUPPORT_400_800_RESOLUTION = 0x2000000, + /*! Support 600dpi x 1200 dpi */ T30_SUPPORT_600_1200_RESOLUTION = 0x4000000 }; @@ -386,29 +417,29 @@ enum { - /*! Enable support of identification, through the SID and/or PWD frames */ + /*! Enable support of identification, through the SID and/or PWD frames. */ T30_SUPPORT_IDENTIFICATION = 0x01, - /*! Enable support of selective polling, through the SEP frame */ + /*! Enable support of selective polling, through the SEP frame. */ T30_SUPPORT_SELECTIVE_POLLING = 0x02, - /*! Enable support of polling sub-addressing, through the PSA frame */ + /*! Enable support of polling sub-addressing, through the PSA frame. */ T30_SUPPORT_POLLED_SUB_ADDRESSING = 0x04, - /*! Enable support of multiple selective polling, through repeated used of the SEP and PSA frames */ + /*! Enable support of multiple selective polling, through repeated used of the SEP and PSA frames. */ T30_SUPPORT_MULTIPLE_SELECTIVE_POLLING = 0x08, - /*! Enable support of sub-addressing, through the SUB frame */ + /*! Enable support of sub-addressing, through the SUB frame. */ T30_SUPPORT_SUB_ADDRESSING = 0x10, - /*! Enable support of transmitting subscriber internet address, through the TSA frame */ + /*! Enable support of transmitting subscriber internet address, through the TSA frame. */ T30_SUPPORT_TRANSMITTING_SUBSCRIBER_INTERNET_ADDRESS = 0x20, - /*! Enable support of internet routing address, through the IRA frame */ + /*! Enable support of internet routing address, through the IRA frame. */ T30_SUPPORT_INTERNET_ROUTING_ADDRESS = 0x40, - /*! Enable support of calling subscriber internet address, through the CIA frame */ + /*! Enable support of calling subscriber internet address, through the CIA frame. */ T30_SUPPORT_CALLING_SUBSCRIBER_INTERNET_ADDRESS = 0x80, - /*! Enable support of internet selective polling address, through the ISP frame */ + /*! Enable support of internet selective polling address, through the ISP frame. */ T30_SUPPORT_INTERNET_SELECTIVE_POLLING_ADDRESS = 0x100, - /*! Enable support of called subscriber internet address, through the CSA frame */ + /*! Enable support of called subscriber internet address, through the CSA frame. */ T30_SUPPORT_CALLED_SUBSCRIBER_INTERNET_ADDRESS = 0x200, - /*! Enable support of the field not valid (FNV) frame */ + /*! Enable support of the field not valid (FNV) frame. */ T30_SUPPORT_FIELD_NOT_VALID = 0x400, - /*! Enable support of the command repeat (CRP) frame */ + /*! Enable support of the command repeat (CRP) frame. */ T30_SUPPORT_COMMAND_REPEAT = 0x800 }; @@ -427,7 +458,10 @@ them. */ T30_IAF_MODE_NO_FILL_BITS = 0x20, /*! No indicators means do not send indicator messages when using T.38. */ - T30_IAF_MODE_NO_INDICATORS = 0x40 + T30_IAF_MODE_NO_INDICATORS = 0x40, + /*! Use relaxed timers for T.38. This is appropriate when using TCP/TPKT for T.38, + as there is no point in anything but a long backstop timeout in such a mode. */ + T30_IAF_MODE_RELAXED_TIMERS = 0x80 }; typedef struct @@ -475,251 +509,6 @@ size_t csa_len; } t30_exchanged_info_t; -/*! - T.30 FAX channel descriptor. This defines the state of a single working - instance of a T.30 FAX channel. -*/ -struct t30_state_s -{ - /* This must be kept the first thing in the structure, so it can be pointed - to reliably as the structures change over time. */ - /*! \brief T.4 context for reading or writing image data. */ - t4_state_t t4; - - int operation_in_progress; - - /*! \brief TRUE if behaving as the calling party */ - int calling_party; - - /*! \brief The received DCS, formatted as an ASCII string, for inclusion - in the TIFF file. */ - char rx_dcs_string[T30_MAX_DIS_DTC_DCS_LEN*3 + 1]; - /*! \brief The text which will be used in FAX page header. No text results - in no header line. */ - char header_info[T30_MAX_PAGE_HEADER_INFO + 1]; - /*! \brief The information fields received. */ - t30_exchanged_info_t rx_info; - /*! \brief The information fields to be transmitted. */ - t30_exchanged_info_t tx_info; - /*! \brief The country of origin of the remote machine, if known, else NULL. */ - const char *country; - /*! \brief The vendor of the remote machine, if known, else NULL. */ - const char *vendor; - /*! \brief The model of the remote machine, if known, else NULL. */ - const char *model; - - /*! \brief A pointer to a callback routine to be called when phase B events - occur. */ - t30_phase_b_handler_t *phase_b_handler; - /*! \brief An opaque pointer supplied in event B callbacks. */ - void *phase_b_user_data; - /*! \brief A pointer to a callback routine to be called when phase D events - occur. */ - t30_phase_d_handler_t *phase_d_handler; - /*! \brief An opaque pointer supplied in event D callbacks. */ - void *phase_d_user_data; - /*! \brief A pointer to a callback routine to be called when phase E events - occur. */ - t30_phase_e_handler_t *phase_e_handler; - /*! \brief An opaque pointer supplied in event E callbacks. */ - void *phase_e_user_data; - /*! \brief A pointer to a callback routine to be called when frames are - exchanged. */ - t30_real_time_frame_handler_t *real_time_frame_handler; - /*! \brief An opaque pointer supplied in real time frame callbacks. */ - void *real_time_frame_user_data; - - /*! \brief A pointer to a callback routine to be called when document events - (e.g. end of transmitted document) occur. */ - t30_document_handler_t *document_handler; - /*! \brief An opaque pointer supplied in document callbacks. */ - void *document_user_data; - - /*! \brief The handler for changes to the receive mode */ - t30_set_handler_t *set_rx_type_handler; - /*! \brief An opaque pointer passed to the handler for changes to the receive mode */ - void *set_rx_type_user_data; - /*! \brief The handler for changes to the transmit mode */ - t30_set_handler_t *set_tx_type_handler; - /*! \brief An opaque pointer passed to the handler for changes to the transmit mode */ - void *set_tx_type_user_data; - - /*! \brief The transmitted HDLC frame handler. */ - t30_send_hdlc_handler_t *send_hdlc_handler; - /*! \brief An opaque pointer passed to the transmitted HDLC frame handler. */ - void *send_hdlc_user_data; - - /*! \brief The DIS code for the minimum scan row time we require. This is usually 0ms, - but if we are trying to simulate another type of FAX machine, we may need a non-zero - value here. */ - uint8_t local_min_scan_time_code; - - /*! \brief The current T.30 phase. */ - int phase; - /*! \brief The T.30 phase to change to when the current phase ends. */ - int next_phase; - /*! \brief The current state of the T.30 state machine. */ - int state; - /*! \brief The step in sending a sequence of HDLC frames. */ - int step; - - /*! \brief The preparation buffer for the DCS message to be transmitted. */ - uint8_t dcs_frame[T30_MAX_DIS_DTC_DCS_LEN]; - /*! \brief The length of the DCS message to be transmitted. */ - int dcs_len; - /*! \brief The preparation buffer for DIS or DTC message to be transmitted. */ - uint8_t local_dis_dtc_frame[T30_MAX_DIS_DTC_DCS_LEN]; - /*! \brief The length of the DIS or DTC message to be transmitted. */ - int local_dis_dtc_len; - /*! \brief The last DIS or DTC message received form the far end. */ - uint8_t far_dis_dtc_frame[T30_MAX_DIS_DTC_DCS_LEN]; - /*! \brief The length of the last DIS or DTC message received form the far end. */ - int far_dis_dtc_len; - /*! \brief TRUE if a valid DIS has been received from the far end. */ - int dis_received; - - /*! \brief A flag to indicate a message is in progress. */ - int in_message; - - /*! \brief TRUE if the short training sequence should be used. */ - int short_train; - - /*! \brief A count of the number of bits in the trainability test. This counts down to zero when - sending TCF, and counts up when receiving it. */ - int tcf_test_bits; - /*! \brief The current count of consecutive received zero bits, during the trainability test. */ - int tcf_current_zeros; - /*! \brief The maximum consecutive received zero bits seen to date, during the trainability test. */ - int tcf_most_zeros; - - /*! \brief The current fallback step for the fast message transfer modem. */ - int current_fallback; - /*! \brief The subset of supported modems allowed at the current time, allowing for negotiation. */ - int current_permitted_modems; - /*! \brief TRUE if a carrier is present. Otherwise FALSE. */ - int rx_signal_present; - /*! \brief TRUE if a modem has trained correctly. */ - int rx_trained; - /*! \brief TRUE if a valid HDLC frame has been received in the current reception period. */ - int rx_frame_received; - - /*! \brief Current reception mode. */ - int current_rx_type; - /*! \brief Current transmission mode. */ - int current_tx_type; - - /*! \brief T0 is the answer timeout when calling another FAX machine. - Placing calls is handled outside the FAX processing, but this timeout keeps - running until V.21 modulation is sent or received. - T1 is the remote terminal identification timeout (in audio samples). */ - int timer_t0_t1; - /*! \brief T2, T2A and T2B are the HDLC command timeouts. - T4, T4A and T4B are the HDLC response timeouts (in audio samples). */ - int timer_t2_t4; - /*! \brief A value specifying which of the possible timers is currently running in timer_t2_t4 */ - int timer_t2_t4_is; - /*! \brief Procedural interrupt timeout (in audio samples). */ - int timer_t3; - /*! \brief This is only used in error correcting mode. */ - int timer_t5; - /*! \brief This is only used in full duplex (e.g. ISDN) modes. */ - int timer_t6; - /*! \brief This is only used in full duplex (e.g. ISDN) modes. */ - int timer_t7; - /*! \brief This is only used in full duplex (e.g. ISDN) modes. */ - int timer_t8; - - /*! \brief TRUE once the far end FAX entity has been detected. */ - int far_end_detected; - - /*! \brief TRUE if a local T.30 interrupt is pending. */ - int local_interrupt_pending; - /*! \brief The image coding being used on the line. */ - int line_encoding; - /*! \brief The image coding being used for output files. */ - int output_encoding; - /*! \brief The current DCS message minimum scan time code. */ - uint8_t min_scan_time_code; - /*! \brief The X direction resolution of the current image, in pixels per metre. */ - int x_resolution; - /*! \brief The Y direction resolution of the current image, in pixels per metre. */ - int y_resolution; - /*! \brief The width of the current image, in pixels. */ - t4_image_width_t image_width; - /*! \brief Current number of retries of the action in progress. */ - int retries; - /*! \brief TRUE if error correcting mode is used. */ - int error_correcting_mode; - /*! \brief The current count of consecutive T30_PPR messages. */ - int ppr_count; - /*! \brief The current count of consecutive T30_RNR messages. */ - int receiver_not_ready_count; - /*! \brief The number of octets to be used per ECM frame. */ - int octets_per_ecm_frame; - /*! \brief The ECM partial page buffer. */ - uint8_t ecm_data[256][260]; - /*! \brief The lengths of the frames in the ECM partial page buffer. */ - int16_t ecm_len[256]; - /*! \brief A bit map of the OK ECM frames, constructed as a PPR frame. */ - uint8_t ecm_frame_map[3 + 32]; - - /*! \brief The current page number for receiving, in ECM mode. This is reset at the start of a call. */ - int ecm_rx_page; - /*! \brief The current page number for sending, in ECM mode. This is reset at the start of a call. */ - int ecm_tx_page; - /*! \brief The current block number, in ECM mode */ - int ecm_block; - /*! \brief The number of frames in the current block number, in ECM mode */ - int ecm_frames; - /*! \brief The number of frames sent in the current burst of image transmission, in ECM mode */ - int ecm_frames_this_tx_burst; - /*! \brief The current ECM frame, during ECM transmission. */ - int ecm_current_tx_frame; - /*! \brief TRUE if we are at the end of an ECM page to se sent - i.e. there are no more - partial pages still to come. */ - int ecm_at_page_end; - int next_tx_step; - int next_rx_step; - /*! \brief Image file name for image reception. */ - char rx_file[256]; - /*! \brief The last page we are prepared accept for a received image file. -1 means no restriction. */ - int rx_stop_page; - /*! \brief Image file name to be sent. */ - char tx_file[256]; - /*! \brief The first page to be sent from the image file. -1 means no restriction. */ - int tx_start_page; - /*! \brief The last page to be sent from the image file. -1 means no restriction. */ - int tx_stop_page; - int current_status; - /*! \brief Internet Aware FAX mode bit mask. */ - int iaf; - /*! \brief A bit mask of the currently supported modem types. */ - int supported_modems; - /*! \brief A bit mask of the currently supported image compression modes. */ - int supported_compressions; - /*! \brief A bit mask of the currently supported image resolutions. */ - int supported_resolutions; - /*! \brief A bit mask of the currently supported image sizes. */ - int supported_image_sizes; - /*! \brief A bit mask of the currently supported T.30 special features. */ - int supported_t30_features; - /*! \brief TRUE is ECM mode handling is enabled. */ - int ecm_allowed; - - /*! \brief the FCF2 field of the last PPS message we received. */ - int last_pps_fcf2; - /*! \brief The number of the first ECM frame which we do not currently received correctly. For - a partial page received correctly, this will be one greater than the number of frames it - contains. */ - int ecm_first_bad_frame; - /*! \brief A count of successfully received ECM frames, to assess progress as a basis for - deciding whether to continue error correction when PPRs keep repeating. */ - int ecm_progress; - - /*! \brief Error and flow logging control */ - logging_state_t logging; -}; - typedef struct { /*! \brief The current bit rate for image transfer. */ @@ -730,22 +519,24 @@ int pages_transferred; /*! \brief The number of pages in the file (<0 if not known). */ int pages_in_file; + /*! \brief The horizontal column-to-column resolution of the page, in pixels per metre */ + int x_resolution; + /*! \brief The vertical row-to-row resolution of the page, in pixels per metre */ + int y_resolution; /*! \brief The number of horizontal pixels in the most recent page. */ int width; /*! \brief The number of vertical pixels in the most recent page. */ int length; + /*! \brief The size of the image, in bytes */ + int image_size; + /*! \brief The type of compression used between the FAX machines */ + int encoding; /*! \brief The number of bad pixel rows in the most recent page. */ int bad_rows; /*! \brief The largest number of bad pixel rows in a block in the most recent page. */ int longest_bad_row_run; - /*! \brief The horizontal column-to-column resolution of the page in pixels per metre */ - int x_resolution; - /*! \brief The vertical row-to-row resolution of the page in pixels per metre */ - int y_resolution; - /*! \brief The type of compression used between the FAX machines */ - int encoding; - /*! \brief The size of the image, in bytes */ - int image_size; + /*! \brief The number of HDLC frame retries, if error correcting mode is used. */ + int error_correcting_mode_retries; /*! \brief Current status */ int current_status; } t30_stats_t; @@ -794,6 +585,13 @@ \return 0 for OK, else -1. */ int t30_restart(t30_state_t *s); +/*! Check if a T.30 call is still active. This may be used to regularly poll + if the job has finished. + \brief Check if a T.30 call is still active. + \param s The T.30 context. + \return TRUE for call still active, or FALSE for call completed. */ +int t30_call_active(t30_state_t *s); + /*! Cleanup a T.30 context if the call terminates. \brief Cleanup a T.30 context if the call terminates. \param s The T.30 context. */ Modified: freeswitch/trunk/libs/spandsp/src/spandsp/t30_api.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/t30_api.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/t30_api.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t30_api.h,v 1.6 2008/08/14 14:06:05 steveu Exp $ + * $Id: t30_api.h,v 1.7 2008/10/13 13:14:00 steveu Exp $ */ /*! \file */ @@ -552,6 +552,13 @@ \param user_data An opaque pointer passed to the callback function. */ void t30_set_real_time_frame_handler(t30_state_t *s, t30_real_time_frame_handler_t *handler, void *user_data); +/*! Get a pointer to the logging context associated with a T.30 context. + \brief Get a pointer to the logging context associated with a T.30 context. + \param s The T.30 context. + \return A pointer to the logging context, or NULL. +*/ +logging_state_t *t30_get_logging_state(t30_state_t *s); + #if defined(__cplusplus) } #endif Modified: freeswitch/trunk/libs/spandsp/src/spandsp/t31.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/t31.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/t31.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t31.h,v 1.52 2008/07/31 12:55:30 steveu Exp $ + * $Id: t31.h,v 1.55 2009/01/09 16:09:06 steveu Exp $ */ /*! \file */ @@ -38,6 +38,10 @@ \section t31_page_sec_2 How does it work? */ +/*! + T.31 descriptor. This defines the working state for a single instance of + a T.31 FAX modem. +*/ typedef struct t31_state_s t31_state_t; typedef int (t31_modem_control_handler_t)(t31_state_t *s, void *user_data, int op, const char *num); @@ -48,150 +52,6 @@ #define T31_MAX_HDLC_LEN 284 #define T31_T38_MAX_HDLC_LEN 260 -/*! - Analogue FAX front end channel descriptor. This defines the state of a single working - instance of an analogue line FAX front end. -*/ -typedef struct -{ - fax_modems_state_t modems; - - /*! The transmit signal handler to be used when the current one has finished sending. */ - span_tx_handler_t *next_tx_handler; - void *next_tx_user_data; - - /*! \brief No of data bits in current_byte. */ - int bit_no; - /*! \brief The current data byte in progress. */ - int current_byte; - - /*! \brief Rx power meter, used to detect silence. */ - power_meter_t rx_power; - /*! \brief Last sample, used for an elementary HPF for the power meter. */ - int16_t last_sample; - /*! \brief The current silence threshold. */ - int32_t silence_threshold_power; - - /*! \brief Samples of silence heard */ - int silence_heard; -} t31_audio_front_end_state_t; - -/*! - Analogue FAX front end channel descriptor. This defines the state of a single working - instance of an analogue line FAX front end. -*/ -typedef struct -{ - t38_core_state_t t38; - - /*! \brief The number of octets to send in each image packet (non-ECM or ECM) at the current - rate and the current specified packet interval. */ - int octets_per_data_packet; - - int timed_step; - - int ms_per_tx_chunk; - int merge_tx_fields; - - /*! \brief TRUE is there has been some T.38 data missed */ - int missing_data; - - /*! \brief The number of times an indicator packet will be sent. Numbers greater than one - will increase reliability for UDP transmission. Zero is valid, to suppress all - indicator packets for TCP transmission. */ - int indicator_tx_count; - - /*! \brief The number of times a data packet which ends transmission will be sent. Numbers - greater than one will increase reliability for UDP transmission. Zero is not valid. */ - int data_end_tx_count; - - /*! \brief The current T.38 data type being transmitted */ - int current_tx_data_type; - /*! \brief The next queued tramsit indicator */ - int next_tx_indicator; - - int trailer_bytes; - - struct - { - uint8_t buf[T31_T38_MAX_HDLC_LEN]; - int len; - } hdlc_rx; - - int current_rx_type; - int current_tx_type; - - int32_t next_tx_samples; - int32_t timeout_rx_samples; - /*! \brief A "sample" count, used to time events */ - int32_t samples; -} t31_t38_front_end_state_t; - -/*! - T.31 descriptor. This defines the working state for a single instance of - a T.31 FAX modem. -*/ -struct t31_state_s -{ - at_state_t at_state; - t31_modem_control_handler_t *modem_control_handler; - void *modem_control_user_data; - - t31_audio_front_end_state_t audio; - t31_t38_front_end_state_t t38_fe; - /*! TRUE if working in T.38 mode. */ - int t38_mode; - - /*! HDLC buffer, for composing an HDLC frame from the computer to the channel. */ - struct - { - uint8_t buf[T31_MAX_HDLC_LEN]; - int len; - int ptr; - /*! \brief TRUE when the end of HDLC data from the computer has been detected. */ - int final; - } hdlc_tx; - /*! Buffer for data from the computer to the channel. */ - struct - { - uint8_t data[T31_TX_BUF_LEN]; - /*! \brief The number of bytes stored in transmit buffer. */ - int in_bytes; - /*! \brief The number of bytes sent from the transmit buffer. */ - int out_bytes; - /*! \brief TRUE if the flow of real data has started. */ - int data_started; - /*! \brief TRUE if holding up further data into the buffer, for flow control. */ - int holding; - /*! \brief TRUE when the end of non-ECM data from the computer has been detected. */ - int final; - } tx; - - /*! TRUE if DLE prefix just used */ - int dled; - - /*! \brief Samples of silence awaited, as specified in a "wait for silence" command */ - int silence_awaited; - - /*! \brief The current bit rate for the FAX fast message transfer modem. */ - int bit_rate; - /*! \brief TRUE if a valid HDLC frame has been received in the current reception period. */ - int rx_frame_received; - - /*! \brief Samples elapsed in the current call */ - int64_t call_samples; - int64_t dte_data_timeout; - - /*! \brief The currently queued modem type. */ - int modem; - /*! \brief TRUE when short training mode has been selected by the computer. */ - int short_train; - queue_state_t *rx_queue; - - /*! \brief Error and flow logging control */ - logging_state_t logging; -}; - #if defined(__cplusplus) extern "C" { @@ -244,6 +104,17 @@ */ void t31_set_t38_config(t31_state_t *s, int without_pacing); +void t31_set_mode(t31_state_t *s, int t38_mode); + +/*! Get a pointer to the logging context associated with a T.31 context. + \brief Get a pointer to the logging context associated with a T.31 context. + \param s The T.31 context. + \return A pointer to the logging context, or NULL. +*/ +logging_state_t *t31_get_logging_state(t31_state_t *s); + +t38_core_state_t *t31_get_t38_core_state(t31_state_t *s); + /*! Initialise a T.31 context. This must be called before the first use of the context, to initialise its contents. \brief Initialise a T.31 context. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_core.h,v 1.29 2008/09/04 14:40:05 steveu Exp $ + * $Id: t38_core.h,v 1.33 2009/01/23 16:07:14 steveu Exp $ */ /*! \file */ @@ -160,6 +160,13 @@ T38_TRANSPORT_TCP }; +/*! T.38 TCF management types */ +enum t38_data_rate_management_types_e +{ + T38_DATA_RATE_MANAGEMENT_LOCAL_TCF = 1, + T38_DATA_RATE_MANAGEMENT_TRANSFERRED_TCF = 2 +}; + #define T38_RX_BUF_LEN 2048 #define T38_TX_BUF_LEN 16384 @@ -171,6 +178,9 @@ int field_len; } t38_data_field_t; +/*! + Core T.38 state, common to all modes of T.38. +*/ typedef struct t38_core_state_s t38_core_state_t; typedef int (t38_tx_packet_handler_t)(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count); @@ -179,113 +189,6 @@ typedef int (t38_rx_data_handler_t)(t38_core_state_t *s, void *user_data, int data_type, int field_type, const uint8_t *buf, int len); typedef int (t38_rx_missing_handler_t)(t38_core_state_t *s, void *user_data, int rx_seq_no, int expected_seq_no); -/*! - Core T.38 state, common to all modes of T.38. -*/ -struct t38_core_state_s -{ - /*! Handler routine to transmit IFP packets generated by the T.38 protocol engine */ - t38_tx_packet_handler_t *tx_packet_handler; - /*! An opaque pointer passed to tx_packet_handler */ - void *tx_packet_user_data; - - /*! Handler routine to process received indicator packets */ - t38_rx_indicator_handler_t *rx_indicator_handler; - /*! Handler routine to process received data packets */ - t38_rx_data_handler_t *rx_data_handler; - /*! Handler routine to process the missing packet condition */ - t38_rx_missing_handler_t *rx_missing_handler; - /*! An opaque pointer passed to any of the above receive handling routines */ - void *rx_user_data; - - /*! NOTE - Bandwidth reduction shall only be done on suitable Phase C data, i.e., MH, MR - and - in the case of transcoding to JBIG - MMR. MMR and JBIG require reliable data - transport such as that provided by TCP. When transcoding is selected, it shall be - applied to every suitable page in a call. */ - - /*! Method 1: Local generation of TCF (required for use with TCP). - Method 2: Transfer of TCF is required for use with UDP (UDPTL or RTP). - Method 2 is not recommended for use with TCP. */ - int data_rate_management_method; - - /*! The emitting gateway may indicate a preference for either UDP/UDPTL, or - UDP/RTP, or TCP for transport of T.38 IFP Packets. The receiving device - selects the transport protocol. */ - int data_transport_protocol; - - /*! Indicates the capability to remove and insert fill bits in Phase C, non-ECM - data to reduce bandwidth in the packet network. */ - int fill_bit_removal; - - /*! Indicates the ability to convert to/from MMR from/to the line format to - improve the compression of the data, and reduce the bandwidth, in the - packet network. */ - int mmr_transcoding; - - /*! Indicates the ability to convert to/from JBIG to reduce bandwidth. */ - int jbig_transcoding; - - /*! For UDP (UDPTL or RTP) modes, this option indicates the maximum - number of octets that can be stored on the remote device before an overflow - condition occurs. It is the responsibility of the transmitting application to - limit the transfer rate to prevent an overflow. The negotiated data rate - should be used to determine the rate at which data is being removed from - the buffer. */ - int max_buffer_size; - - /*! This option indicates the maximum size of a UDPTL packet or the - maximum size of the payload within an RTP packet that can be accepted by - the remote device. */ - int max_datagram_size; - - /*! This is the version number of ITU-T Rec. T.38. New versions shall be - compatible with previous versions. */ - int t38_version; - - /*! The fastest data rate supported by the T.38 channel. */ - int fastest_image_data_rate; - - /*! \brief The number of times an indicator packet will be sent. Numbers greater than one - will increase reliability for UDP transmission. Zero is valid, to suppress all - indicator packets for TCP transmission. */ - int indicator_tx_count; - - /*! \brief The number of times a data packet which does not end transmission will be sent. - Numbers greater than one will increase reliability for UDP transmission. Zero - is not valid. */ - int data_tx_count; - - /*! \brief The number of times a data packet which ends transmission will be sent. Numbers - greater than one will increase reliability for UDP transmission. Zero is not valid. */ - int data_end_tx_count; - - /*! TRUE if IFP packet sequence numbers are relevant. For some transports, like TPKT - over TCP they are not relevent. */ - int check_sequence_numbers; - - /*! The sequence number for the next packet to be transmitted */ - int tx_seq_no; - /*! The sequence number expected in the next received packet */ - int rx_expected_seq_no; - - /*! The current receive indicator - i.e. the last indicator received */ - int current_rx_indicator; - /*! The current receive data type - i.e. the last data type received */ - int current_rx_data_type; - /*! The current receive field type - i.e. the last field_type received */ - int current_rx_field_type; - /*! The current transmit indicator - i.e. the last indicator transmitted */ - int current_tx_indicator; - /*! The bit rate for V.34 operation */ - int v34_rate; - - /*! A count of missing receive packets. This count might not be accurate if the - received packet numbers jump wildly. */ - int missing_packets; - - logging_state_t logging; -}; - #if defined(__cplusplus) extern "C" { @@ -327,9 +230,15 @@ \param s The T.38 context. \param indicator The indicator to send. \param count The number of copies of the packet to send. - \return ??? */ + \return The delay to allow after this indicator is sent. */ int t38_core_send_indicator(t38_core_state_t *s, int indicator, int count); +/*! \brief Find the delay to allow for HDLC flags after sending an indicator + \param s The T.38 context. + \param indicator The indicator to send. + \return The delay to allow for initial HDLC flags after this indicator is sent. */ +int t38_core_send_flags_delay(t38_core_state_t *s, int indicator); + /*! \brief Send a data packet \param s The T.38 context. \param data_type The packet's data type. @@ -399,13 +308,26 @@ */ void t38_set_t38_version(t38_core_state_t *s, int t38_version); -/* Set the sequence number handling option. +/*! Set the sequence number handling option. \param s The T.38 context. \param check TRUE to check sequence numbers, and handle gaps reasonably. FALSE for no sequence number processing (e.g. for TPKT over TCP transport). */ void t38_set_sequence_number_handling(t38_core_state_t *s, int check); +/*! Set the TEP handling option. + \param s The T.38 context. + \param allow_for_tep TRUE to allow for TEP playout, else FALSE. +*/ +void t38_set_tep_handling(t38_core_state_t *s, int allow_for_tep); + +/*! Get a pointer to the logging context associated with a T.38 context. + \brief Get a pointer to the logging context associated with a T.38 context. + \param s The T.38 context. + \return A pointer to the logging context, or NULL. +*/ +logging_state_t *t38_core_get_logging_state(t38_core_state_t *s); + t38_core_state_t *t38_core_init(t38_core_state_t *s, t38_rx_indicator_handler_t *rx_indicator_handler, t38_rx_data_handler_t *rx_data_handler, Modified: freeswitch/trunk/libs/spandsp/src/spandsp/t38_gateway.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/t38_gateway.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/t38_gateway.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_gateway.h,v 1.57 2008/09/02 13:56:10 steveu Exp $ + * $Id: t38_gateway.h,v 1.59 2008/10/13 13:14:01 steveu Exp $ */ /*! \file */ @@ -62,167 +62,6 @@ const uint8_t *msg, int len); -/*! - T.38 gateway T.38 side channel descriptor. -*/ -typedef struct -{ - /*! Core T.38 IFP support */ - t38_core_state_t t38; - - /*! \brief TRUE if the NSF, NSC, and NSS are to be suppressed by altering - their contents to something the far end will not recognise. */ - int suppress_nsx_len[2]; - /*! \brief TRUE if we need to corrupt the HDLC frame in progress, so the receiver cannot - interpret it. The two values are for the two directions. */ - int corrupt_current_frame[2]; - - /*! \brief the current class of field being received - i.e. none, non-ECM or HDLC */ - int current_rx_field_class; - /*! \brief The T.38 indicator currently in use */ - int in_progress_rx_indicator; - - /*! \brief The current T.38 data type being sent. */ - int current_tx_data_type; -} t38_gateway_t38_state_t; - -/*! - T.38 gateway audio side channel descriptor. -*/ -typedef struct -{ - fax_modems_state_t modems; - /*! \brief The current receive signal handler. Actual receiving hop between this - and a dummy receive routine. */ - span_rx_handler_t *base_rx_handler; -} t38_gateway_audio_state_t; - -typedef struct -{ - /*! \brief non-ECM and HDLC modem receive data buffer. */ - uint8_t data[T38_RX_BUF_LEN]; - /*! \brief Current pointer into the data buffer. */ - int data_ptr; - /*! \brief The current octet being received as non-ECM data. */ - unsigned int bit_stream; - /*! \brief The number of bits taken from the modem for the current scan row. This - is used during non-ECM transmission will fill bit removal to see that - T.38 packet transmissions do not stretch too far apart. */ - int bits_absorbed; - /*! \brief The current bit number in the current non-ECM octet. */ - int bit_no; - /*! \brief Progressively calculated CRC for HDLC messages received from a modem. */ - uint16_t crc; - /*! \brief TRUE if non-ECM fill bits are to be stripped when sending image data. */ - int fill_bit_removal; - /*! \brief The number of octets to send in each image packet (non-ECM or ECM) at the current - rate and the current specified packet interval. */ - int octets_per_data_packet; - - int in_bits; - int out_octets; -} t38_gateway_to_t38_state_t; - -typedef struct -{ - /*! \brief HDLC message buffers. */ - uint8_t buf[T38_MAX_HDLC_LEN]; - /*! \brief HDLC message lengths. */ - int len; - /*! \brief HDLC message status flags. */ - int flags; - /*! \brief HDLC buffer contents. */ - int contents; -} t38_gateway_hdlc_buf_t; - -typedef struct -{ - /*! \brief HDLC message buffers. */ - t38_gateway_hdlc_buf_t buf[T38_TX_HDLC_BUFS]; -#if 0 - /*! \brief HDLC message buffers. */ - uint8_t buf[T38_TX_HDLC_BUFS][T38_MAX_HDLC_LEN]; - /*! \brief HDLC message lengths. */ - int len[T38_TX_HDLC_BUFS]; - /*! \brief HDLC message status flags. */ - int flags[T38_TX_HDLC_BUFS]; - /*! \brief HDLC buffer contents. */ - int contents[T38_TX_HDLC_BUFS]; -#endif - /*! \brief HDLC buffer number for input. */ - int in; - /*! \brief HDLC buffer number for output. */ - int out; -} t38_gateway_hdlc_state_t; - -/*! - T.38 gateway core descriptor. -*/ -typedef struct -{ - /*! \brief A bit mask of the currently supported modem types. */ - int supported_modems; - /*! \brief TRUE if ECM FAX mode is allowed through the gateway. */ - int ecm_allowed; - - /*! \brief TRUE if in image data modem is to use short training. This usually - follows image_data_mode, but in ECM mode T.30 defines recovery - conditions in which long training is used for image data. */ - int short_train; - /*! \brief TRUE if in image data mode, as opposed to TCF mode. */ - int image_data_mode; - /*! \brief The minimum permitted bits per FAX scan line row. */ - int min_row_bits; - - /*! \brief TRUE if we should count the next MCF as a page end, else FALSE */ - int count_page_on_mcf; - /*! \brief The number of pages for which a confirm (MCF) message was returned. */ - int pages_confirmed; - - /*! \brief TRUE if we are in error correcting (ECM) mode */ - int ecm_mode; - /*! \brief The current bit rate for the fast modem. */ - int fast_bit_rate; - /*! \brief The current fast modem type. */ - int fast_modem; - /*! \brief The type of fast receive modem currently active, which may be T38_NONE */ - int fast_rx_active; - - /*! \brief TRUE if between DCS and TCF, and we want the fast image modem to - start in the T.38 data at a predictable time from the end of the - V.21 signal. */ - int tcf_mode_predictable_modem_start; - - /*! \brief The number of samples until the next timeout event */ - int samples_to_timeout; - - /*! Buffer for HDLC and non-ECM data going to the T.38 channel */ - t38_gateway_to_t38_state_t to_t38; - /*! Buffer for data going to an HDLC modem. */ - t38_gateway_hdlc_state_t hdlc_to_modem; - /*! Buffer for data going to a non-ECM mode modem. */ - t38_non_ecm_buffer_state_t non_ecm_to_modem; - - /*! \brief A pointer to a callback routine to be called when frames are - exchanged. */ - t38_gateway_real_time_frame_handler_t *real_time_frame_handler; - /*! \brief An opaque pointer supplied in real time frame callbacks. */ - void *real_time_frame_user_data; -} t38_gateway_core_state_t; - -/*! - T.38 gateway state. -*/ -struct t38_gateway_state_s -{ - t38_gateway_t38_state_t t38x; - t38_gateway_audio_state_t audio; - t38_gateway_core_state_t core; - - /*! \brief Error and flow logging control */ - logging_state_t logging; -}; - typedef struct { /*! \brief The current bit rate for image transfer. */ @@ -331,6 +170,22 @@ \param t A pointer to a buffer for the statistics. */ void t38_gateway_get_transfer_statistics(t38_gateway_state_t *s, t38_stats_t *t); +/*! Get a pointer to the T.38 core IFP packet engine associated with a + gateway mode T.38 context. + \brief Get a pointer to the T.38 core IFP packet engine associated + with a T.38 context. + \param s The T.38 context. + \return A pointer to the T.38 core context, or NULL. +*/ +t38_core_state_t *t38_gateway_get_t38_core_state(t38_gateway_state_t *s); + +/*! Get a pointer to the logging context associated with a T.38 context. + \brief Get a pointer to the logging context associated with a T.38 context. + \param s The T.38 context. + \return A pointer to the logging context, or NULL. +*/ +logging_state_t *t38_gateway_get_logging_state(t38_gateway_state_t *s); + /*! Set a callback function for T.30 frame exchange monitoring. This is called from the heart of the signal processing, so don't take too long in the handler routine. \brief Set a callback function for T.30 frame exchange monitoring. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/t38_non_ecm_buffer.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/t38_non_ecm_buffer.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/t38_non_ecm_buffer.h Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_non_ecm_buffer.h,v 1.2 2008/09/02 13:56:10 steveu Exp $ + * $Id: t38_non_ecm_buffer.h,v 1.3 2008/10/13 13:14:01 steveu Exp $ */ /*! \file */ @@ -47,55 +47,7 @@ /*! \brief A flow controlled non-ECM image data buffer, for buffering T.38 to analogue modem data. */ -typedef struct -{ - /*! \brief Minimum number of bits per row, used when fill bits are being deleted on the - link, and restored at the emitting gateway. */ - int min_row_bits; - - /*! \brief non-ECM modem transmit data buffer. */ - uint8_t data[T38_NON_ECM_TX_BUF_LEN]; - /*! \brief The current write point in the buffer. */ - int in_ptr; - /*! \brief The current read point in the buffer. */ - int out_ptr; - /*! \brief The location of the most recent EOL marker in the buffer. */ - int latest_eol_ptr; - /*! \brief The number of bits to date in the current row, used when min_row_bits is - to be applied. */ - int row_bits; - - /*! \brief The bit stream entering the buffer, used to detect EOLs */ - unsigned int bit_stream; - /*! \brief The non-ECM flow control fill octet (0xFF before the first data, and 0x00 - once data has started). */ - uint8_t flow_control_fill_octet; - /*! \brief TRUE if we are in the initial all ones part of non-ECM transmission. */ - int at_initial_all_ones; - /*! \brief TRUE is the end of non-ECM data indication has been received. */ - int data_finished; - /*! \brief The current octet being transmitted from the buffer. */ - unsigned int octet; - /*! \brief The current bit number in the current non-ECM octet. */ - int bit_no; - /*! \brief TRUE if in image data mode, as opposed to TCF mode. */ - int image_data_mode; - - /*! \brief The number of octets input to the buffer. */ - int in_octets; - /*! \brief The number of rows input to the buffer. */ - int in_rows; - /*! \brief The number of non-ECM fill octets generated for minimum row bits - purposes. */ - int min_row_bits_fill_octets; - /*! \brief The number of octets output from the buffer. */ - int out_octets; - /*! \brief The number of rows output from the buffer. */ - int out_rows; - /*! \brief The number of non-ECM fill octets generated for flow control - purposes. */ - int flow_control_fill_octets; -} t38_non_ecm_buffer_state_t; +typedef struct t38_non_ecm_buffer_state_s t38_non_ecm_buffer_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/t38_terminal.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/t38_terminal.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/t38_terminal.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_terminal.h,v 1.37 2008/08/14 14:06:05 steveu Exp $ + * $Id: t38_terminal.h,v 1.39 2008/10/13 13:14:01 steveu Exp $ */ /*! \file */ @@ -39,91 +39,7 @@ /* Make sure the HDLC frame buffers are big enough for ECM frames. */ #define T38_MAX_HDLC_LEN 260 -typedef struct -{ - /*! \brief Internet Aware FAX mode bit mask. */ - int iaf; - /*! \brief Required time between T.38 transmissions, in ms. */ - int ms_per_tx_chunk; - /*! \brief Bit fields controlling the way data is packed into chunked for transmission. */ - int chunking_modes; - - /*! \brief Core T.38 IFP support */ - t38_core_state_t t38; - - /*! \brief The current transmit step being timed */ - int timed_step; - - /*! \brief TRUE is there has been some T.38 data missed (i.e. lost packets) in the current - reception period. */ - int rx_data_missing; - - /*! \brief The number of octets to send in each image packet (non-ECM or ECM) at the current - rate and the current specified packet interval. */ - int octets_per_data_packet; - - struct - { - /*! \brief HDLC receive buffer */ - uint8_t buf[T38_MAX_HDLC_LEN]; - /*! \brief The length of the contents of the HDLC receive buffer */ - int len; - } hdlc_rx; - - struct - { - /*! \brief HDLC transmit buffer */ - uint8_t buf[T38_MAX_HDLC_LEN]; - /*! \brief The length of the contents of the HDLC transmit buffer */ - int len; - /*! \brief Current pointer within the contents of the HDLC transmit buffer */ - int ptr; - /*! \brief The number of extra bits in a fully stuffed version of the - contents of the HDLC transmit buffer. This is needed to accurately - estimate the playout time for this frame, through an analogue modem. */ - int extra_bits; - } tx; - - /*! \brief Counter for trailing non-ECM bytes, used to flush out the far end's modem. */ - int non_ecm_trailer_bytes; - - /*! \brief The next T.38 indicator queued for transmission. */ - int next_tx_indicator; - /*! \brief The current T.38 data type being transmitted. */ - int current_tx_data_type; - - /*! \brief TRUE if a carrier is present. Otherwise FALSE. */ - int rx_signal_present; - - /*! \brief The current operating mode of the receiver. */ - int current_rx_type; - /*! \brief The current operating mode of the transmitter. */ - int current_tx_type; - - /*! \brief Current transmission bit rate. */ - int tx_bit_rate; - /*! \brief A "sample" count, used to time events. */ - int32_t samples; - /*! \brief The value for samples at the next transmission point. */ - int32_t next_tx_samples; - /*! \brief The current receive timeout. */ - int32_t timeout_rx_samples; -} t38_terminal_front_end_state_t; - -/*! - T.38 terminal state. -*/ -typedef struct -{ - /*! \brief The T.30 back-end */ - t30_state_t t30; - - /*! \brief The T.38 front-end */ - t38_terminal_front_end_state_t t38_fe; - - /*! \brief Error and flow logging control */ - logging_state_t logging; -} t38_terminal_state_t; +typedef struct t38_terminal_state_s t38_terminal_state_t; #if defined(__cplusplus) extern "C" @@ -155,6 +71,22 @@ */ t30_state_t *t38_terminal_get_t30_state(t38_terminal_state_t *s); +/*! Get a pointer to the T.38 core IFP packet engine associated with a + termination mode T.38 context. + \brief Get a pointer to the T.38 core IFP packet engine associated + with a T.38 context. + \param s The T.38 context. + \return A pointer to the T.38 core context, or NULL. +*/ +t38_core_state_t *t38_terminal_get_t38_core_state(t38_terminal_state_t *s); + +/*! Get a pointer to the logging context associated with a T.38 context. + \brief Get a pointer to the logging context associated with a T.38 context. + \param s The T.38 context. + \return A pointer to the logging context, or NULL. +*/ +logging_state_t *t38_terminal_get_logging_state(t38_terminal_state_t *s); + /*! \brief Initialise a termination mode T.38 context. \param s The T.38 context. \param calling_party TRUE if the context is for a calling party. FALSE if the Modified: freeswitch/trunk/libs/spandsp/src/spandsp/t4.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/t4.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/t4.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t4.h,v 1.52 2008/07/22 13:48:15 steveu Exp $ + * $Id: t4.h,v 1.53 2008/10/13 13:14:01 steveu Exp $ */ /*! \file */ @@ -175,170 +175,7 @@ T.4 FAX compression/decompression descriptor. This defines the working state for a single instance of a T.4 FAX compression or decompression channel. */ -typedef struct -{ - /*! \brief The same structure is used for T.4 transmit and receive. This variable - records which mode is in progress. */ - int rx; - /* "Background" information about the FAX, which can be stored in a TIFF file. */ - /*! \brief The vendor of the machine which produced the TIFF file. */ - const char *vendor; - /*! \brief The model of machine which produced the TIFF file. */ - const char *model; - /*! \brief The local ident string. */ - const char *local_ident; - /*! \brief The remote end's ident string. */ - const char *far_ident; - /*! \brief The FAX sub-address. */ - const char *sub_address; - /*! \brief The FAX DCS information, as an ASCII string. */ - const char *dcs; - /*! \brief The text which will be used in FAX page header. No text results - in no header line. */ - const char *header_info; - - /*! \brief The type of compression used between the FAX machines. */ - int line_encoding; - /*! \brief The minimum number of encoded bits per row. This is a timing thing - for hardware FAX machines. */ - int min_bits_per_row; - - /*! \brief The compression type for output to the TIFF file. */ - int output_compression; - /*! \brief The TIFF G3 FAX options. */ - int output_t4_options; - - /*! \brief Callback function to read a row of pixels from the image source. */ - t4_row_read_handler_t row_read_handler; - /*! \brief Opaque pointer passed to row_read_handler. */ - void *row_read_user_data; - /*! \brief Callback function to write a row of pixels to the image destination. */ - t4_row_write_handler_t row_write_handler; - /*! \brief Opaque pointer passed to row_write_handler. */ - void *row_write_user_data; - - /*! \brief The time at which handling of the current page began. */ - time_t page_start_time; - - /*! \brief The current number of bytes per row of uncompressed image data. */ - int bytes_per_row; - /*! \brief The size of the image in the image buffer, in bytes. */ - int image_size; - /*! \brief The size of the compressed image on the line side, in bits. */ - int line_image_size; - /*! \brief The current size of the image buffer. */ - int image_buffer_size; - /*! \brief A point to the image buffer. */ - uint8_t *image_buffer; - - /*! \brief The libtiff context for the current TIFF file */ - TIFF *tiff_file; - /*! \brief The current file name. */ - const char *file; - /*! \brief The first page to transfer. -1 to start at the beginning of the file. */ - int start_page; - /*! \brief The last page to transfer. -1 to continue to the end of the file. */ - int stop_page; - - /*! \brief The number of pages transferred to date. */ - int pages_transferred; - /*! \brief The number of pages in the current TIFF file. */ - int pages_in_file; - /*! \brief Column-to-column (X) resolution in pixels per metre. */ - int x_resolution; - /*! \brief Row-to-row (Y) resolution in pixels per metre. */ - int y_resolution; - /*! \brief Width of the current page, in pixels. */ - int image_width; - /*! \brief Length of the current page, in pixels. */ - int image_length; - /*! \brief Current pixel row number. */ - int row; - /*! \brief The current number of consecutive bad rows. */ - int curr_bad_row_run; - /*! \brief The longest run of consecutive bad rows seen in the current page. */ - int longest_bad_row_run; - /*! \brief The total number of bad rows in the current page. */ - int bad_rows; - - /*! \brief Incoming bit buffer for decompression. */ - uint32_t rx_bitstream; - /*! \brief The number of bits currently in rx_bitstream. */ - int rx_bits; - /*! \brief The number of bits to be skipped before trying to match the next code word. */ - int rx_skip_bits; - - /*! \brief This variable is set if we are treating the current row as a 2D encoded - one. */ - int row_is_2d; - /*! \brief TRUE if the current run is black */ - int its_black; - /*! \brief The current length of the current row. */ - int row_len; - /*! \brief This variable is used to count the consecutive EOLS we have seen. If it - reaches six, this is the end of the image. It is initially set to -1 for - 1D and 2D decoding, as an indicator that we must wait for the first EOL, - before decodin any image data. */ - int consecutive_eols; - - /*! \brief Black and white run-lengths for the current row. */ - uint32_t *cur_runs; - /*! \brief Black and white run-lengths for the reference row. */ - uint32_t *ref_runs; - /*! \brief The number of runs currently in the reference row. */ - int ref_steps; - /*! \brief The current step into the reference row run-lengths buffer. */ - int b_cursor; - /*! \brief The current step into the current row run-lengths buffer. */ - int a_cursor; - - /*! \brief The reference or starting changing element on the coding line. At the - start of the coding line, a0 is set on an imaginary white changing element - situated just before the first element on the line. During the coding of - the coding line, the position of a0 is defined by the previous coding mode. - (See 4.2.1.3.2.). */ - int a0; - /*! \brief The first changing element on the reference line to the right of a0 and of - opposite colour to a0. */ - int b1; - /*! \brief The length of the in-progress run of black or white. */ - int run_length; - /*! \brief 2D horizontal mode control. */ - int black_white; - - /*! \brief Encoded data bits buffer. */ - uint32_t tx_bitstream; - /*! \brief The number of bits currently in tx_bitstream. */ - int tx_bits; - - /*! \brief A pointer into the image buffer indicating where the last row begins */ - int last_row_starts_at; - /*! \brief A pointer into the image buffer indicating where the current row begins */ - int row_starts_at; - - /*! \brief Pointer to the buffer for the current pixel row. */ - uint8_t *row_buf; - - /*! \brief Pointer to the byte containing the next image bit to transmit. */ - int bit_pos; - /*! \brief Pointer to the bit within the byte containing the next image bit to transmit. */ - int bit_ptr; - - /*! \brief The current maximum contiguous rows that may be 2D encoded. */ - int max_rows_to_next_1d_row; - /*! \brief Number of rows left that can be 2D encoded, before a 1D encoded row - must be used. */ - int rows_to_next_1d_row; - /*! \brief The current number of bits in the current encoded row. */ - int row_bits; - /*! \brief The minimum bits in any row of the current page. For monitoring only. */ - int min_row_bits; - /*! \brief The maximum bits in any row of the current page. For monitoring only. */ - int max_row_bits; - - /*! \brief Error and flow logging control */ - logging_state_t logging; -} t4_state_t; +typedef struct t4_state_s t4_state_t; /*! T.4 FAX compression/decompression statistics. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/telephony.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/telephony.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/telephony.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: telephony.h,v 1.12 2008/04/17 14:27:01 steveu Exp $ + * $Id: telephony.h,v 1.13 2009/01/19 17:14:10 steveu Exp $ */ #if !defined(_SPANDSP_TELEPHONY_H_) @@ -47,6 +47,7 @@ typedef int (span_tx_handler_t)(void *s, int16_t amp[], int max_len); #define ms_to_samples(t) (((t)*SAMPLE_RATE)/1000) +#define us_to_samples(t) (((t)*SAMPLE_RATE)/1000000) #if !defined(FALSE) #define FALSE 0 Modified: freeswitch/trunk/libs/spandsp/src/spandsp/time_scale.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/time_scale.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/time_scale.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: time_scale.h,v 1.16 2008/07/28 15:14:30 steveu Exp $ + * $Id: time_scale.h,v 1.17 2008/11/15 14:27:29 steveu Exp $ */ #if !defined(_SPANDSP_TIME_SCALE_H_) @@ -56,25 +56,8 @@ input_len*playout_rate + sample_rate/TIME_SCALE_MIN_PITCH + 1 */ -#define TIME_SCALE_MAX_SAMPLE_RATE 48000 -#define TIME_SCALE_MIN_PITCH 60 -#define TIME_SCALE_MAX_PITCH 250 -#define TIME_SCALE_BUF_LEN (2*TIME_SCALE_MAX_SAMPLE_RATE/TIME_SCALE_MIN_PITCH) - /*! Audio time scaling descriptor. */ -typedef struct -{ - int sample_rate; - int min_pitch; - int max_pitch; - int buf_len; - float playout_rate; - double rcomp; - double rate_nudge; - int fill; - int lcp; - int16_t buf[TIME_SCALE_BUF_LEN]; -} time_scale_state_t; +typedef struct time_scale_state_s time_scale_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/tone_detect.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/tone_detect.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/tone_detect.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: tone_detect.h,v 1.41 2008/06/13 14:46:52 steveu Exp $ + * $Id: tone_detect.h,v 1.42 2008/11/30 10:17:31 steveu Exp $ */ #if !defined(_SPANDSP_TONE_DETECT_H_) @@ -31,7 +31,7 @@ /*! Goertzel filter descriptor. */ -typedef struct +struct goertzel_descriptor_s { #if defined(SPANDSP_USE_FIXED_POINT) int16_t fac; @@ -39,12 +39,12 @@ float fac; #endif int samples; -} goertzel_descriptor_t; +}; /*! Goertzel filter state descriptor. */ -typedef struct +struct goertzel_state_s { #if defined(SPANDSP_USE_FIXED_POINT) int16_t v2; @@ -57,7 +57,17 @@ #endif int samples; int current_sample; -} goertzel_state_t; +}; + +/*! + Goertzel filter descriptor. +*/ +typedef struct goertzel_descriptor_s goertzel_descriptor_t; + +/*! + Goertzel filter state descriptor. +*/ +typedef struct goertzel_state_s goertzel_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/tone_generate.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/tone_generate.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/tone_generate.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: tone_generate.h,v 1.34 2008/09/11 15:13:42 steveu Exp $ + * $Id: tone_generate.h,v 1.35 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -45,41 +45,18 @@ conditions in which we will use it. */ -typedef struct -{ - int32_t phase_rate; -#if defined(SPANDSP_USE_FIXED_POINT) - int16_t gain; -#else - float gain; -#endif -} tone_gen_tone_descriptor_t; +typedef struct tone_gen_tone_descriptor_s tone_gen_tone_descriptor_t; /*! - Cadenced dual tone generator descriptor. + Cadenced multi-tone generator descriptor. */ -typedef struct -{ - tone_gen_tone_descriptor_t tone[4]; - int duration[4]; - int repeat; -} tone_gen_descriptor_t; +typedef struct tone_gen_descriptor_s tone_gen_descriptor_t; /*! - Cadenced dual tone generator state descriptor. This defines the state of + Cadenced multi-tone generator state descriptor. This defines the state of a single working instance of a generator. */ -typedef struct -{ - tone_gen_tone_descriptor_t tone[4]; - - uint32_t phase[4]; - int duration[4]; - int repeat; - - int current_section; - int current_position; -} tone_gen_state_t; +typedef struct tone_gen_state_s tone_gen_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v17rx.h,v 1.57 2008/09/18 14:59:30 steveu Exp $ + * $Id: v17rx.h,v 1.58 2008/10/13 13:14:01 steveu Exp $ */ /*! \file */ -#if !defined(_V17RX_H_) -#define _V17RX_H_ +#if !defined(_SPANDSP_V17RX_H_) +#define _SPANDSP_V17RX_H_ /*! \page v17rx_page The V.17 receiver \section v17rx_page_sec_1 What does it do? @@ -229,179 +229,7 @@ V.17 modem receive side descriptor. This defines the working state for a single instance of a V.17 modem receiver. */ -typedef struct -{ - /*! \brief The bit rate of the modem. Valid values are 7200 9600, 12000 and 14400. */ - int bit_rate; - /*! \brief The callback function used to put each bit received. */ - put_bit_func_t put_bit; - /*! \brief A user specified opaque pointer passed to the put_but routine. */ - void *put_bit_user_data; - - /*! \brief The callback function used to report modem status changes. */ - modem_rx_status_func_t status_handler; - /*! \brief A user specified opaque pointer passed to the status function. */ - void *status_user_data; - - /*! \brief A callback function which may be enabled to report every symbol's - constellation position. */ - qam_report_handler_t qam_report; - /*! \brief A user specified opaque pointer passed to the qam_report callback - routine. */ - void *qam_user_data; - - /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ -#if defined(SPANDSP_USE_FIXED_POINT) - int16_t rrc_filter[V17_RX_FILTER_STEPS]; -#else - float rrc_filter[V17_RX_FILTER_STEPS]; -#endif - /*! \brief Current offset into the RRC pulse shaping filter buffer. */ - int rrc_filter_step; - - /*! \brief The state of the differential decoder */ - int diff; - /*! \brief The register for the data scrambler. */ - unsigned int scramble_reg; - /*! \brief TRUE if the short training sequence is to be used. */ - int short_train; - /*! \brief The section of the training data we are currently in. */ - int training_stage; - /*! \brief A count of how far through the current training step we are. */ - int training_count; - /*! \brief A measure of how much mismatch there is between the real constellation, - and the decoded symbol positions. */ - float training_error; - /*! \brief The value of the last signal sample, using the a simple HPF for signal power estimation. */ - int16_t last_sample; - /*! \brief >0 if a signal above the minimum is present. It may or may not be a V.17 signal. */ - int signal_present; - /*! \brief Whether or not a carrier drop was detected and the signal delivery is pending. */ - int carrier_drop_pending; - /*! \brief A count of the current consecutive samples below the carrier off threshold. */ - int low_samples; - /*! \brief A highest magnitude sample seen. */ - int16_t high_sample; - - /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ - uint32_t carrier_phase; - /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ - int32_t carrier_phase_rate; - /*! \brief The carrier update rate saved for reuse when using short training. */ - int32_t carrier_phase_rate_save; -#if defined(SPANDSP_USE_FIXED_POINTx) - /*! \brief The proportional part of the carrier tracking filter. */ - float carrier_track_p; - /*! \brief The integral part of the carrier tracking filter. */ - float carrier_track_i; -#else - /*! \brief The proportional part of the carrier tracking filter. */ - float carrier_track_p; - /*! \brief The integral part of the carrier tracking filter. */ - float carrier_track_i; -#endif - - /*! \brief A power meter, to measure the HPF'ed signal power in the channel. */ - power_meter_t power; - /*! \brief The power meter level at which carrier on is declared. */ - int32_t carrier_on_power; - /*! \brief The power meter level at which carrier off is declared. */ - int32_t carrier_off_power; - - /*! \brief Current read offset into the equalizer buffer. */ - int eq_step; - /*! \brief Current write offset into the equalizer buffer. */ - int eq_put_step; - /*! \brief Symbol counter to the next equalizer update. */ - int eq_skip; - - /*! \brief The current half of the baud. */ - int baud_half; - -#if defined(SPANDSP_USE_FIXED_POINTx) - /*! \brief The scaling factor accessed by the AGC algorithm. */ - float agc_scaling; - /*! \brief The previous value of agc_scaling, needed to reuse old training. */ - float agc_scaling_save; - - /*! \brief The current delta factor for updating the equalizer coefficients. */ - float eq_delta; - /*! \brief The adaptive equalizer coefficients. */ - complexi16_t eq_coeff[V17_EQUALIZER_PRE_LEN + 1 + V17_EQUALIZER_POST_LEN]; - /*! \brief A saved set of adaptive equalizer coefficients for use after restarts. */ - complexi16_t eq_coeff_save[V17_EQUALIZER_PRE_LEN + 1 + V17_EQUALIZER_POST_LEN]; - /*! \brief The equalizer signal buffer. */ - complexi16_t eq_buf[V17_EQUALIZER_PRE_LEN + 1 + V17_EQUALIZER_POST_LEN]; - - /*! Low band edge filter for symbol sync. */ - int32_t symbol_sync_low[2]; - /*! High band edge filter for symbol sync. */ - int32_t symbol_sync_high[2]; - /*! DC filter for symbol sync. */ - int32_t symbol_sync_dc_filter[2]; - /*! Baud phase for symbol sync. */ - int32_t baud_phase; -#else - /*! \brief The scaling factor accessed by the AGC algorithm. */ - float agc_scaling; - /*! \brief The previous value of agc_scaling, needed to reuse old training. */ - float agc_scaling_save; - - /*! \brief The current delta factor for updating the equalizer coefficients. */ - float eq_delta; - /*! \brief The adaptive equalizer coefficients. */ - complexf_t eq_coeff[V17_EQUALIZER_PRE_LEN + 1 + V17_EQUALIZER_POST_LEN]; - /*! \brief A saved set of adaptive equalizer coefficients for use after restarts. */ - complexf_t eq_coeff_save[V17_EQUALIZER_PRE_LEN + 1 + V17_EQUALIZER_POST_LEN]; - /*! \brief The equalizer signal buffer. */ - complexf_t eq_buf[V17_EQUALIZER_PRE_LEN + 1 + V17_EQUALIZER_POST_LEN]; - - /*! Low band edge filter for symbol sync. */ - float symbol_sync_low[2]; - /*! High band edge filter for symbol sync. */ - float symbol_sync_high[2]; - /*! DC filter for symbol sync. */ - float symbol_sync_dc_filter[2]; - /*! Baud phase for symbol sync. */ - float baud_phase; -#endif - - /*! \brief The total symbol timing correction since the carrier came up. - This is only for performance analysis purposes. */ - int total_baud_timing_correction; - - /*! \brief Starting phase angles for the coarse carrier aquisition step. */ - int32_t start_angles[2]; - /*! \brief History list of phase angles for the coarse carrier aquisition step. */ - int32_t angles[16]; - /*! \brief A pointer to the current constellation. */ -#if defined(SPANDSP_USE_FIXED_POINTx) - const complexi16_t *constellation; -#else - const complexf_t *constellation; -#endif - /*! \brief A pointer to the current space map. There is a space map for - each trellis state. */ - int space_map; - /*! \brief The number of bits in each symbol at the current bit rate. */ - int bits_per_symbol; - - /*! \brief Current pointer to the trellis buffers */ - int trellis_ptr; - /*! \brief The trellis. */ - int full_path_to_past_state_locations[V17_TRELLIS_STORAGE_DEPTH][8]; - /*! \brief The trellis. */ - int past_state_locations[V17_TRELLIS_STORAGE_DEPTH][8]; - /*! \brief Euclidean distances (actually the squares of the distances) - from the last states of the trellis. */ -#if defined(SPANDSP_USE_FIXED_POINTx) - uint32_t distances[8]; -#else - float distances[8]; -#endif - /*! \brief Error and flow logging control */ - logging_state_t logging; -} v17_rx_state_t; +typedef struct v17_rx_state_s v17_rx_state_t; #if defined(__cplusplus) extern "C" @@ -431,6 +259,8 @@ \return 0 for OK */ int v17_rx_free(v17_rx_state_t *s); +logging_state_t *v17_rx_get_logging_state(v17_rx_state_t *s); + /*! Change the put_bit function associated with a V.17 modem receive context. \brief Change the put_bit function associated with a V.17 modem receive context. \param s The modem context. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v17tx.h,v 1.36 2008/07/16 14:23:48 steveu Exp $ + * $Id: v17tx.h,v 1.37 2008/10/13 13:14:01 steveu Exp $ */ /*! \file */ @@ -87,73 +87,7 @@ V.17 modem transmit side descriptor. This defines the working state for a single instance of a V.17 modem transmitter. */ -typedef struct -{ - /*! \brief The bit rate of the modem. Valid values are 4800, 7200 and 9600. */ - int bit_rate; - /*! \brief The callback function used to get the next bit to be transmitted. */ - get_bit_func_t get_bit; - /*! \brief A user specified opaque pointer passed to the get_bit function. */ - void *get_bit_user_data; - - /*! \brief The callback function used to report modem status changes. */ - modem_tx_status_func_t status_handler; - /*! \brief A user specified opaque pointer passed to the status function. */ - void *status_user_data; - - /*! \brief The gain factor needed to achieve the specified output power. */ -#if defined(SPANDSP_USE_FIXED_POINT) - int32_t gain; -#else - float gain; -#endif - - /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ -#if defined(SPANDSP_USE_FIXED_POINT) - complexi16_t rrc_filter[2*V17_TX_FILTER_STEPS]; -#else - complexf_t rrc_filter[2*V17_TX_FILTER_STEPS]; -#endif - /*! \brief Current offset into the RRC pulse shaping filter buffer. */ - int rrc_filter_step; - - /*! \brief The current state of the differential encoder. */ - int diff; - /*! \brief The current state of the convolutional encoder. */ - int convolution; - - /*! \brief The register for the data scrambler. */ - unsigned int scramble_reg; - /*! \brief TRUE if transmitting the training sequence. FALSE if transmitting user data. */ - int in_training; - /*! \brief TRUE if the short training sequence is to be used. */ - int short_train; - /*! \brief A counter used to track progress through sending the training sequence. */ - int training_step; - - /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ - uint32_t carrier_phase; - /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ - int32_t carrier_phase_rate; - /*! \brief The current fractional phase of the baud timing. */ - int baud_phase; - /*! \brief The code number for the current position in the constellation. */ - int constellation_state; - - /*! \brief A pointer to the constellation currently in use. */ -#if defined(SPANDSP_USE_FIXED_POINT) - const complexi16_t *constellation; -#else - const complexf_t *constellation; -#endif - /*! \brief The current number of data bits per symbol. This does not include - the redundant bit. */ - int bits_per_symbol; - /*! \brief The get_bit function in use at any instant. */ - get_bit_func_t current_get_bit; - /*! \brief Error and flow logging control */ - logging_state_t logging; -} v17_tx_state_t; +typedef struct v17_tx_state_s v17_tx_state_t; #if defined(__cplusplus) extern "C" @@ -192,6 +126,8 @@ \return 0 for OK */ int v17_tx_free(v17_tx_state_t *s); +logging_state_t *v17_tx_get_logging_state(v17_tx_state_t *s); + /*! Change the get_bit function associated with a V.17 modem transmit context. \brief Change the get_bit function associated with a V.17 modem transmit context. \param s The modem context. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v22bis.h,v 1.30 2008/07/25 13:56:54 steveu Exp $ + * $Id: v22bis.h,v 1.32 2008/11/30 03:40:12 steveu Exp $ */ /*! \file */ @@ -47,8 +47,8 @@ or 1200bps if one or both ends to not acknowledge that 2400bps is OK. */ -#if !defined(_V22BIS_H_) -#define _V22BIS_H_ +#if !defined(_SPANDSP_V22BIS_H_) +#define _SPANDSP_V22BIS_H_ #define V22BIS_EQUALIZER_LEN 7 /* this much to the left and this much to the right */ #define V22BIS_EQUALIZER_MASK 15 /* one less than a power of 2 >= (2*V22BIS_EQUALIZER_LEN + 1) */ @@ -61,152 +61,7 @@ V.22bis modem descriptor. This defines the working state for a single instance of a V.22bis modem. */ -typedef struct -{ - /*! \brief The bit rate of the modem. Valid values are 1200 and 2400. */ - int bit_rate; - /*! \brief TRUE is this is the calling side modem. */ - int caller; - /*! \brief The callback function used to put each bit received. */ - put_bit_func_t put_bit; - /*! \brief The callback function used to get the next bit to be transmitted. */ - get_bit_func_t get_bit; - /*! \brief A user specified opaque pointer passed to the callback routines. */ - void *user_data; - - /* RECEIVE SECTION */ - struct - { - /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ - float rrc_filter[2*V22BIS_RX_FILTER_STEPS]; - /*! \brief Current offset into the RRC pulse shaping filter buffer. */ - int rrc_filter_step; - - /*! \brief The register for the data scrambler. */ - unsigned int scramble_reg; - /*! \brief A counter for the number of consecutive bits of repeating pattern through - the scrambler. */ - int scrambler_pattern_count; - - /*! \brief 0 if receiving user data. A training stage value during training */ - int training; - /*! \brief A count of how far through the current training step we are. */ - int training_count; - - /*! \brief >0 if a signal above the minimum is present. It may or may not be a V.22bis signal. */ - int signal_present; - - /*! \brief A measure of how much mismatch there is between the real constellation, - and the decoded symbol positions. */ - float training_error; - - /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ - uint32_t carrier_phase; - /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ - int32_t carrier_phase_rate; - /*! \brief The proportional part of the carrier tracking filter. */ - float carrier_track_p; - /*! \brief The integral part of the carrier tracking filter. */ - float carrier_track_i; - - /*! \brief A callback function which may be enabled to report every symbol's - constellation position. */ - qam_report_handler_t qam_report; - /*! \brief A user specified opaque pointer passed to the qam_report callback - routine. */ - void *qam_user_data; - - /*! \brief A power meter, to measure the HPF'ed signal power in the channel. */ - power_meter_t rx_power; - /*! \brief The power meter level at which carrier on is declared. */ - int32_t carrier_on_power; - /*! \brief The power meter level at which carrier off is declared. */ - int32_t carrier_off_power; - /*! \brief The scaling factor accessed by the AGC algorithm. */ - float agc_scaling; - - int constellation_state; - - /*! \brief The current delta factor for updating the equalizer coefficients. */ - float eq_delta; -#if defined(SPANDSP_USE_FIXED_POINTx) - /*! \brief The adaptive equalizer coefficients. */ - complexi_t eq_coeff[2*V22BIS_EQUALIZER_LEN + 1]; - /*! \brief The equalizer signal buffer. */ - complexi_t eq_buf[V22BIS_EQUALIZER_MASK + 1]; -#else - complexf_t eq_coeff[2*V22BIS_EQUALIZER_LEN + 1]; - complexf_t eq_buf[V22BIS_EQUALIZER_MASK + 1]; -#endif - /*! \brief Current offset into the equalizer buffer. */ - int eq_step; - /*! \brief Current write offset into the equalizer buffer. */ - int eq_put_step; - - /*! \brief Integration variable for damping the Gardner algorithm tests. */ - int gardner_integrate; - /*! \brief Current step size of Gardner algorithm integration. */ - int gardner_step; - /*! \brief The total symbol timing correction since the carrier came up. - This is only for performance analysis purposes. */ - int total_baud_timing_correction; - /*! \brief The current fractional phase of the baud timing. */ - int baud_phase; - - int sixteen_way_decisions; - } rx; - - /* TRANSMIT SECTION */ - struct - { - /*! \brief The gain factor needed to achieve the specified output power. */ - float gain; - - /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ - complexf_t rrc_filter[2*V22BIS_TX_FILTER_STEPS]; - /*! \brief Current offset into the RRC pulse shaping filter buffer. */ - int rrc_filter_step; - - /*! \brief The register for the data scrambler. */ - unsigned int scramble_reg; - /*! \brief A counter for the number of consecutive bits of repeating pattern through - the scrambler. */ - int scrambler_pattern_count; - - /*! \brief 0 if transmitting user data. A training stage value during training */ - int training; - /*! \brief A counter used to track progress through sending the training sequence. */ - int training_count; - /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ - uint32_t carrier_phase; - /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ - int32_t carrier_phase_rate; - /*! \brief The current phase of the guard tone (i.e. the DDS parameter). */ - uint32_t guard_phase; - /*! \brief The update rate for the phase of the guard tone (i.e. the DDS increment). */ - int32_t guard_phase_rate; - float guard_level; - /*! \brief The current fractional phase of the baud timing. */ - int baud_phase; - /*! \brief The code number for the current position in the constellation. */ - int constellation_state; - /*! \brief An indicator to mark that we are tidying up to stop transmission. */ - int shutdown; - /*! \brief The get_bit function in use at any instant. */ - get_bit_func_t current_get_bit; - } tx; - - int detected_unscrambled_ones; - int detected_unscrambled_zeros; - - int detected_unscrambled_ones_or_zeros; - int detected_unscrambled_0011_ending; - int detected_scrambled_ones_or_zeros_at_1200bps; - int detected_scrambled_ones_at_2400bps; - - /*! \brief Error and flow logging control */ - logging_state_t logging; -} v22bis_state_t; +typedef struct v22bis_state_s v22bis_state_t; extern const complexf_t v22bis_constellation[16]; @@ -303,6 +158,8 @@ \return 0 for OK */ int v22bis_free(v22bis_state_t *s); +logging_state_t *v22bis_get_logging_state(v22bis_state_t *s); + /*! Change the get_bit function associated with a V.22bis modem context. \brief Change the get_bit function associated with a V.22bis modem context. \param s The modem context. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v27ter_rx.h,v 1.53 2008/09/18 14:59:30 steveu Exp $ + * $Id: v27ter_rx.h,v 1.54 2008/10/13 13:14:01 steveu Exp $ */ /*! \file */ -#if !defined(_V27TER_RX_H_) -#define _V27TER_RX_H_ +#if !defined(_SPANDSP_V27TER_RX_H_) +#define _SPANDSP_V27TER_RX_H_ /*! \page v27ter_rx_page The V.27ter receiver @@ -64,147 +64,7 @@ V.27ter modem receive side descriptor. This defines the working state for a single instance of a V.27ter modem receiver. */ -typedef struct -{ - /*! \brief The bit rate of the modem. Valid values are 2400 and 4800. */ - int bit_rate; - /*! \brief The callback function used to put each bit received. */ - put_bit_func_t put_bit; - /*! \brief A user specified opaque pointer passed to the put_bit routine. */ - void *put_bit_user_data; - - /*! \brief The callback function used to report modem status changes. */ - modem_rx_status_func_t status_handler; - /*! \brief A user specified opaque pointer passed to the status function. */ - void *status_user_data; - - /*! \brief A callback function which may be enabled to report every symbol's - constellation position. */ - qam_report_handler_t qam_report; - /*! \brief A user specified opaque pointer passed to the qam_report callback - routine. */ - void *qam_user_data; - - /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ -#if defined(SPANDSP_USE_FIXED_POINT) - int16_t rrc_filter[V27TER_RX_FILTER_STEPS]; -#else - float rrc_filter[V27TER_RX_FILTER_STEPS]; -#endif - /*! \brief Current offset into the RRC pulse shaping filter buffer. */ - int rrc_filter_step; - - /*! \brief The register for the training and data scrambler. */ - unsigned int scramble_reg; - /*! \brief A counter for the number of consecutive bits of repeating pattern through - the scrambler. */ - int scrambler_pattern_count; - /*! \brief The current step in the table of BC constellation positions. */ - int training_bc; - /*! \brief TRUE if the previous trained values are to be reused. */ - int old_train; - /*! \brief The section of the training data we are currently in. */ - int training_stage; - /*! \brief A count of how far through the current training step we are. */ - int training_count; - /*! \brief A measure of how much mismatch there is between the real constellation, - and the decoded symbol positions. */ - float training_error; - /*! \brief The value of the last signal sample, using the a simple HPF for signal power estimation. */ - int16_t last_sample; - /*! \brief >0 if a signal above the minimum is present. It may or may not be a V.27ter signal. */ - int signal_present; - /*! \brief Whether or not a carrier drop was detected and the signal delivery is pending. */ - int carrier_drop_pending; - /*! \brief A count of the current consecutive samples below the carrier off threshold. */ - int low_samples; - /*! \brief A highest magnitude sample seen. */ - int16_t high_sample; - - /*! \brief The position of the current symbol in the constellation, used for - differential decoding. */ - int constellation_state; - - /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ - uint32_t carrier_phase; - /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ - int32_t carrier_phase_rate; - /*! \brief The carrier update rate saved for reuse when using short training. */ - int32_t carrier_phase_rate_save; -#if defined(SPANDSP_USE_FIXED_POINTx) - /*! \brief The proportional part of the carrier tracking filter. */ - float carrier_track_p; - /*! \brief The integral part of the carrier tracking filter. */ - float carrier_track_i; -#else - /*! \brief The proportional part of the carrier tracking filter. */ - float carrier_track_p; - /*! \brief The integral part of the carrier tracking filter. */ - float carrier_track_i; -#endif - - /*! \brief A power meter, to measure the HPF'ed signal power in the channel. */ - power_meter_t power; - /*! \brief The power meter level at which carrier on is declared. */ - int32_t carrier_on_power; - /*! \brief The power meter level at which carrier off is declared. */ - int32_t carrier_off_power; - - /*! \brief Current read offset into the equalizer buffer. */ - int eq_step; - /*! \brief Current write offset into the equalizer buffer. */ - int eq_put_step; - /*! \brief Symbol counter to the next equalizer update. */ - int eq_skip; - - /*! \brief The current half of the baud. */ - int baud_half; - -#if defined(SPANDSP_USE_FIXED_POINT) - /*! \brief The scaling factor accessed by the AGC algorithm. */ - int16_t agc_scaling; - /*! \brief The previous value of agc_scaling, needed to reuse old training. */ - int16_t agc_scaling_save; - - /*! \brief The current delta factor for updating the equalizer coefficients. */ - float eq_delta; - /*! \brief The adaptive equalizer coefficients. */ - /*complexi16_t*/ complexf_t eq_coeff[V27TER_EQUALIZER_PRE_LEN + 1 + V27TER_EQUALIZER_POST_LEN]; - /*! \brief A saved set of adaptive equalizer coefficients for use after restarts. */ - /*complexi16_t*/ complexf_t eq_coeff_save[V27TER_EQUALIZER_PRE_LEN + 1 + V27TER_EQUALIZER_POST_LEN]; - /*! \brief The equalizer signal buffer. */ - /*complexi16_t*/ complexf_t eq_buf[V27TER_EQUALIZER_PRE_LEN + 1 + V27TER_EQUALIZER_POST_LEN]; -#else - /*! \brief The scaling factor accessed by the AGC algorithm. */ - float agc_scaling; - /*! \brief The previous value of agc_scaling, needed to reuse old training. */ - float agc_scaling_save; - - /*! \brief The current delta factor for updating the equalizer coefficients. */ - float eq_delta; - /*! \brief The adaptive equalizer coefficients. */ - complexf_t eq_coeff[V27TER_EQUALIZER_PRE_LEN + 1 + V27TER_EQUALIZER_POST_LEN]; - /*! \brief A saved set of adaptive equalizer coefficients for use after restarts. */ - complexf_t eq_coeff_save[V27TER_EQUALIZER_PRE_LEN + 1 + V27TER_EQUALIZER_POST_LEN]; - /*! \brief The equalizer signal buffer. */ - complexf_t eq_buf[V27TER_EQUALIZER_PRE_LEN + 1 + V27TER_EQUALIZER_POST_LEN]; -#endif - - /*! \brief Integration variable for damping the Gardner algorithm tests. */ - int gardner_integrate; - /*! \brief Current step size of Gardner algorithm integration. */ - int gardner_step; - /*! \brief The total symbol timing correction since the carrier came up. - This is only for performance analysis purposes. */ - int total_baud_timing_correction; - - /*! \brief Starting phase angles for the coarse carrier aquisition step. */ - int32_t start_angles[2]; - /*! \brief History list of phase angles for the coarse carrier aquisition step. */ - int32_t angles[16]; - /*! \brief Error and flow logging control */ - logging_state_t logging; -} v27ter_rx_state_t; +typedef struct v27ter_rx_state_s v27ter_rx_state_t; #if defined(__cplusplus) extern "C" @@ -234,6 +94,8 @@ \return 0 for OK */ int v27ter_rx_free(v27ter_rx_state_t *s); +logging_state_t *v27ter_rx_get_logging_state(v27ter_rx_state_t *s); + /*! Change the put_bit function associated with a V.27ter modem receive context. \brief Change the put_bit function associated with a V.27ter modem receive context. \param s The modem context. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v27ter_tx.h,v 1.36 2008/07/16 14:23:48 steveu Exp $ + * $Id: v27ter_tx.h,v 1.37 2008/10/13 13:14:01 steveu Exp $ */ /*! \file */ @@ -70,64 +70,7 @@ V.27ter modem transmit side descriptor. This defines the working state for a single instance of a V.27ter modem transmitter. */ -typedef struct -{ - /*! \brief The bit rate of the modem. Valid values are 2400 and 4800. */ - int bit_rate; - /*! \brief The callback function used to get the next bit to be transmitted. */ - get_bit_func_t get_bit; - /*! \brief A user specified opaque pointer passed to the get_bit function. */ - void *get_bit_user_data; - - /*! \brief The callback function used to report modem status changes. */ - modem_tx_status_func_t status_handler; - /*! \brief A user specified opaque pointer passed to the status function. */ - void *status_user_data; - -#if defined(SPANDSP_USE_FIXED_POINT) - /*! \brief The gain factor needed to achieve the specified output power at 2400bps. */ - int32_t gain_2400; - /*! \brief The gain factor needed to achieve the specified output power at 4800bps. */ - int32_t gain_4800; -#else - /*! \brief The gain factor needed to achieve the specified output power at 2400bps. */ - float gain_2400; - /*! \brief The gain factor needed to achieve the specified output power at 4800bps. */ - float gain_4800; -#endif - /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ -#if defined(SPANDSP_USE_FIXED_POINT) - complexi16_t rrc_filter[2*V27TER_TX_FILTER_STEPS]; -#else - complexf_t rrc_filter[2*V27TER_TX_FILTER_STEPS]; -#endif - /*! \brief Current offset into the RRC pulse shaping filter buffer. */ - int rrc_filter_step; - - /*! \brief The register for the training and data scrambler. */ - unsigned int scramble_reg; - /*! \brief A counter for the number of consecutive bits of repeating pattern through - the scrambler. */ - int scrambler_pattern_count; - /*! \brief TRUE if transmitting the training sequence, or shutting down transmission. - FALSE if transmitting user data. */ - int in_training; - /*! \brief A counter used to track progress through sending the training sequence. */ - int training_step; - - /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ - uint32_t carrier_phase; - /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ - int32_t carrier_phase_rate; - /*! \brief The current fractional phase of the baud timing. */ - int baud_phase; - /*! \brief The code number for the current position in the constellation. */ - int constellation_state; - /*! \brief The get_bit function in use at any instant. */ - get_bit_func_t current_get_bit; - /*! \brief Error and flow logging control */ - logging_state_t logging; -} v27ter_tx_state_t; +typedef struct v27ter_tx_state_s v27ter_tx_state_t; #if defined(__cplusplus) extern "C" @@ -164,6 +107,8 @@ \return 0 for OK */ int v27ter_tx_free(v27ter_tx_state_t *s); +logging_state_t *v27ter_tx_get_logging_state(v27ter_tx_state_t *s); + /*! Change the get_bit function associated with a V.27ter modem transmit context. \brief Change the get_bit function associated with a V.27ter modem transmit context. \param s The modem context. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v29rx.h,v 1.64 2008/09/18 14:59:30 steveu Exp $ + * $Id: v29rx.h,v 1.65 2008/10/13 13:14:01 steveu Exp $ */ /*! \file */ -#if !defined(_V29RX_H_) -#define _V29RX_H_ +#if !defined(_SPANDSP_V29RX_H_) +#define _SPANDSP_V29RX_H_ /*! \page v29rx_page The V.29 receiver \section v29rx_page_sec_1 What does it do? @@ -133,160 +133,7 @@ V.29 modem receive side descriptor. This defines the working state for a single instance of a V.29 modem receiver. */ -typedef struct -{ - /*! \brief The bit rate of the modem. Valid values are 4800, 7200 and 9600. */ - int bit_rate; - /*! \brief The callback function used to put each bit received. */ - put_bit_func_t put_bit; - /*! \brief A user specified opaque pointer passed to the put_bit routine. */ - void *put_bit_user_data; - - /*! \brief The callback function used to report modem status changes. */ - modem_rx_status_func_t status_handler; - /*! \brief A user specified opaque pointer passed to the status function. */ - void *status_user_data; - - /*! \brief A callback function which may be enabled to report every symbol's - constellation position. */ - qam_report_handler_t qam_report; - /*! \brief A user specified opaque pointer passed to the qam_report callback - routine. */ - void *qam_user_data; - - /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ -#if defined(SPANDSP_USE_FIXED_POINT) - int16_t rrc_filter[V29_RX_FILTER_STEPS]; -#else - float rrc_filter[V29_RX_FILTER_STEPS]; -#endif - /*! \brief Current offset into the RRC pulse shaping filter buffer. */ - int rrc_filter_step; - - /*! \brief The register for the data scrambler. */ - unsigned int scramble_reg; - /*! \brief The register for the training scrambler. */ - uint8_t training_scramble_reg; - /*! \brief The current step in the table of CD constellation positions. */ - int training_cd; - /*! \brief TRUE if the previous trained values are to be reused. */ - int old_train; - /*! \brief The section of the training data we are currently in. */ - int training_stage; - /*! \brief A count of how far through the current training step we are. */ - int training_count; - /*! \brief A measure of how much mismatch there is between the real constellation, - and the decoded symbol positions. */ - float training_error; - /*! \brief The value of the last signal sample, using the a simple HPF for signal power estimation. */ - int16_t last_sample; - /*! \brief >0 if a signal above the minimum is present. It may or may not be a V.29 signal. */ - int signal_present; - /*! \brief Whether or not a carrier drop was detected and the signal delivery is pending. */ - int carrier_drop_pending; - /*! \brief A count of the current consecutive samples below the carrier off threshold. */ - int low_samples; - /*! \brief A highest magnitude sample seen. */ - int16_t high_sample; - - /*! \brief The position of the current symbol in the constellation, used for - differential decoding. */ - int constellation_state; - - /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ - uint32_t carrier_phase; - /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ - int32_t carrier_phase_rate; - /*! \brief The carrier update rate saved for reuse when using short training. */ - int32_t carrier_phase_rate_save; -#if defined(SPANDSP_USE_FIXED_POINT) - /*! \brief The proportional part of the carrier tracking filter. */ - int32_t carrier_track_p; - /*! \brief The integral part of the carrier tracking filter. */ - int32_t carrier_track_i; -#else - /*! \brief The proportional part of the carrier tracking filter. */ - float carrier_track_p; - /*! \brief The integral part of the carrier tracking filter. */ - float carrier_track_i; -#endif - - /*! \brief A power meter, to measure the HPF'ed signal power in the channel. */ - power_meter_t power; - /*! \brief The power meter level at which carrier on is declared. */ - int32_t carrier_on_power; - /*! \brief The power meter level at which carrier off is declared. */ - int32_t carrier_off_power; - - /*! \brief Current read offset into the equalizer buffer. */ - int eq_step; - /*! \brief Current write offset into the equalizer buffer. */ - int eq_put_step; - /*! \brief Symbol counter to the next equalizer update. */ - int eq_skip; - - /*! \brief The current half of the baud. */ - int baud_half; - -#if defined(SPANDSP_USE_FIXED_POINT) - /*! \brief The scaling factor accessed by the AGC algorithm. */ - int16_t agc_scaling; - /*! \brief The previous value of agc_scaling, needed to reuse old training. */ - int16_t agc_scaling_save; - - /*! \brief The current delta factor for updating the equalizer coefficients. */ - int16_t eq_delta; - /*! \brief The adaptive equalizer coefficients. */ - complexi16_t eq_coeff[V29_EQUALIZER_PRE_LEN + 1 + V29_EQUALIZER_POST_LEN]; - /*! \brief A saved set of adaptive equalizer coefficients for use after restarts. */ - complexi16_t eq_coeff_save[V29_EQUALIZER_PRE_LEN + 1 + V29_EQUALIZER_POST_LEN]; - /*! \brief The equalizer signal buffer. */ - complexi16_t eq_buf[V29_EQUALIZER_PRE_LEN + 1 + V29_EQUALIZER_POST_LEN]; - - /*! Low band edge filter for symbol sync. */ - int32_t symbol_sync_low[2]; - /*! High band edge filter for symbol sync. */ - int32_t symbol_sync_high[2]; - /*! DC filter for symbol sync. */ - int32_t symbol_sync_dc_filter[2]; - /*! Baud phase for symbol sync. */ - int32_t baud_phase; -#else - /*! \brief The scaling factor accessed by the AGC algorithm. */ - float agc_scaling; - /*! \brief The previous value of agc_scaling, needed to reuse old training. */ - float agc_scaling_save; - - /*! \brief The current delta factor for updating the equalizer coefficients. */ - float eq_delta; - /*! \brief The adaptive equalizer coefficients. */ - complexf_t eq_coeff[V29_EQUALIZER_PRE_LEN + 1 + V29_EQUALIZER_POST_LEN]; - /*! \brief A saved set of adaptive equalizer coefficients for use after restarts. */ - complexf_t eq_coeff_save[V29_EQUALIZER_PRE_LEN + 1 + V29_EQUALIZER_POST_LEN]; - /*! \brief The equalizer signal buffer. */ - complexf_t eq_buf[V29_EQUALIZER_PRE_LEN + 1 + V29_EQUALIZER_POST_LEN]; - - /*! Low band edge filter for symbol sync. */ - float symbol_sync_low[2]; - /*! High band edge filter for symbol sync. */ - float symbol_sync_high[2]; - /*! DC filter for symbol sync. */ - float symbol_sync_dc_filter[2]; - /*! Baud phase for symbol sync. */ - float baud_phase; -#endif - - /*! \brief The total symbol timing correction since the carrier came up. - This is only for performance analysis purposes. */ - int total_baud_timing_correction; - - /*! \brief Starting phase angles for the coarse carrier aquisition step. */ - int32_t start_angles[2]; - /*! \brief History list of phase angles for the coarse carrier aquisition step. */ - int32_t angles[16]; - /*! \brief Error and flow logging control */ - logging_state_t logging; -} v29_rx_state_t; +typedef struct v29_rx_state_s v29_rx_state_t; #if defined(__cplusplus) extern "C" @@ -316,6 +163,8 @@ \return 0 for OK */ int v29_rx_free(v29_rx_state_t *s); +logging_state_t *v29_rx_get_logging_state(v29_rx_state_t *s); + /*! Change the put_bit function associated with a V.29 modem receive context. \brief Change the put_bit function associated with a V.29 modem receive context. \param s The modem context. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v29tx.h,v 1.34 2008/07/16 14:23:48 steveu Exp $ + * $Id: v29tx.h,v 1.35 2008/10/13 13:14:01 steveu Exp $ */ /*! \file */ @@ -100,66 +100,7 @@ V.29 modem transmit side descriptor. This defines the working state for a single instance of a V.29 modem transmitter. */ -typedef struct -{ - /*! \brief The bit rate of the modem. Valid values are 4800, 7200 and 9600. */ - int bit_rate; - /*! \brief The callback function used to get the next bit to be transmitted. */ - get_bit_func_t get_bit; - /*! \brief A user specified opaque pointer passed to the get_bit function. */ - void *get_bit_user_data; - - /*! \brief The callback function used to report modem status changes. */ - modem_tx_status_func_t status_handler; - /*! \brief A user specified opaque pointer passed to the status function. */ - void *status_user_data; - - /*! \brief Gain required to achieve the specified output power, not allowing - for the size of the current constellation. */ - float base_gain; - /*! \brief Gain required to achieve the specified output power, allowing - for the size of the current constellation. */ -#if defined(SPANDSP_USE_FIXED_POINT) - int32_t gain; -#else - float gain; -#endif - - /*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */ -#if defined(SPANDSP_USE_FIXED_POINT) - complexi16_t rrc_filter[2*V29_TX_FILTER_STEPS]; -#else - complexf_t rrc_filter[2*V29_TX_FILTER_STEPS]; -#endif - /*! \brief Current offset into the RRC pulse shaping filter buffer. */ - int rrc_filter_step; - - /*! \brief The register for the data scrambler. */ - unsigned int scramble_reg; - /*! \brief The register for the training scrambler. */ - uint8_t training_scramble_reg; - /*! \brief TRUE if transmitting the training sequence, or shutting down transmission. - FALSE if transmitting user data. */ - int in_training; - /*! \brief A counter used to track progress through sending the training sequence. */ - int training_step; - /*! \brief An offset value into the table of training parameters, used to match the - training pattern to the bit rate. */ - int training_offset; - - /*! \brief The current phase of the carrier (i.e. the DDS parameter). */ - uint32_t carrier_phase; - /*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */ - int32_t carrier_phase_rate; - /*! \brief The current fractional phase of the baud timing. */ - int baud_phase; - /*! \brief The code number for the current position in the constellation. */ - int constellation_state; - /*! \brief The get_bit function in use at any instant. */ - get_bit_func_t current_get_bit; - /*! \brief Error and flow logging control */ - logging_state_t logging; -} v29_tx_state_t; +typedef struct v29_tx_state_s v29_tx_state_t; #if defined(__cplusplus) extern "C" @@ -197,6 +138,8 @@ \return 0 for OK */ int v29_tx_free(v29_tx_state_t *s); +logging_state_t *v29_tx_get_logging_state(v29_tx_state_t *s); + /*! Change the get_bit function associated with a V.29 modem transmit context. \brief Change the get_bit function associated with a V.29 modem transmit context. \param s The modem context. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v42.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/v42.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/v42.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v42.h,v 1.25 2008/04/17 14:27:01 steveu Exp $ + * $Id: v42.h,v 1.26 2008/11/15 14:43:08 steveu Exp $ */ /*! \page v42_page V.42 modem error correction @@ -63,89 +63,12 @@ /*! LAP-M descriptor. This defines the working state for a single instance of LAP-M. */ -typedef struct -{ - int handle; - hdlc_rx_state_t hdlc_rx; - hdlc_tx_state_t hdlc_tx; - - v42_frame_handler_t iframe_receive; - void *iframe_receive_user_data; - - v42_status_func_t status_callback; - void *status_callback_user_data; - - int state; - int tx_waiting; - int debug; - /*! TRUE if originator. FALSE if answerer */ - int we_are_originator; - /*! Remote network type (unknown, answerer. originator) */ - int peer_is_originator; - /*! Next N(S) for transmission */ - int next_tx_frame; - /*! The last of our frames which the peer acknowledged */ - int last_frame_peer_acknowledged; - /*! Next N(R) for reception */ - int next_expected_frame; - /*! The last of the peer's frames which we acknowledged */ - int last_frame_we_acknowledged; - /*! TRUE if we sent an I or S frame with the F-bit set */ - int solicit_f_bit; - /*! Retransmission count */ - int retransmissions; - /*! TRUE if peer is busy */ - int busy; - - /*! Acknowledgement timer */ - int t401_timer; - /*! Reply delay timer - optional */ - int t402_timer; - /*! Inactivity timer - optional */ - int t403_timer; - /*! Maximum number of octets in an information field */ - int n401; - /*! Window size */ - int window_size_k; - - lapm_frame_queue_t *txqueue; - lapm_frame_queue_t *tx_next; - lapm_frame_queue_t *tx_last; - queue_state_t *tx_queue; - - span_sched_state_t sched; - /*! \brief Error and flow logging control */ - logging_state_t logging; -} lapm_state_t; +typedef struct lapm_state_s lapm_state_t; /*! V.42 descriptor. This defines the working state for a single instance of V.42. */ -typedef struct -{ - /*! TRUE if we are the calling party, otherwise FALSE */ - int caller; - /*! TRUE if we should detect whether the far end is V.42 capable. FALSE if we go - directly to protocol establishment */ - int detect; - - /*! Stage in negotiating V.42 support */ - int rx_negotiation_step; - int rxbits; - int rxstream; - int rxoks; - int odp_seen; - int txbits; - int txstream; - int txadps; - /*! The LAP.M context */ - lapm_state_t lapm; - - /*! V.42 support detection timer */ - int t400_timer; - /*! \brief Error and flow logging control */ - logging_state_t logging; -} v42_state_t; +typedef struct v42_state_s v42_state_t; /*! Log the raw HDLC frames */ #define LAPM_DEBUG_LAPM_RAW (1 << 0) Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v42bis.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/v42bis.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/v42bis.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v42bis.h,v 1.22 2008/04/17 14:27:01 steveu Exp $ + * $Id: v42bis.h,v 1.23 2008/11/15 14:43:08 steveu Exp $ */ /*! \page v42bis_page V.42bis modem data compression @@ -60,123 +60,10 @@ typedef void (*v42bis_data_handler_t)(void *user_data, const uint8_t *buf, int len); /*! - V.42bis dictionary node. -*/ -typedef struct -{ - /*! \brief The prior code for each defined code. */ - uint16_t parent_code; - /*! \brief The number of leaf nodes this node has */ - int16_t leaves; - /*! \brief This leaf octet for each defined code. */ - uint8_t node_octet; - /*! \brief Bit map of the children which exist */ - uint32_t children[8]; -} v42bis_dict_node_t; - -/*! - V.42bis compression. This defines the working state for a single instance - of V.42bis compression. -*/ -typedef struct -{ - /*! \brief Compression mode. */ - int compression_mode; - /*! \brief Callback function to handle received frames. */ - v42bis_frame_handler_t handler; - /*! \brief An opaque pointer passed in calls to frame_handler. */ - void *user_data; - /*! \brief The maximum frame length allowed */ - int max_len; - - uint32_t string_code; - uint32_t latest_code; - int string_length; - uint32_t output_bit_buffer; - int output_bit_count; - int output_octet_count; - uint8_t output_buf[1024]; - v42bis_dict_node_t dict[V42BIS_MAX_CODEWORDS]; - /*! \brief TRUE if we are in transparent (i.e. uncompressable) mode */ - int transparent; - int change_transparency; - /*! \brief IIR filter state, used in assessing compressibility. */ - int compressibility_filter; - int compressibility_persistence; - - /*! \brief Next empty dictionary entry */ - uint32_t v42bis_parm_c1; - /*! \brief Current codeword size */ - int v42bis_parm_c2; - /*! \brief Threshold for codeword size change */ - uint32_t v42bis_parm_c3; - - /*! \brief Mark that this is the first octet/code to be processed */ - int first; - uint8_t escape_code; -} v42bis_compress_state_t; - -/*! - V.42bis decompression. This defines the working state for a single instance - of V.42bis decompression. -*/ -typedef struct -{ - /*! \brief Callback function to handle decompressed data. */ - v42bis_data_handler_t handler; - /*! \brief An opaque pointer passed in calls to data_handler. */ - void *user_data; - /*! \brief The maximum decompressed data block length allowed */ - int max_len; - - uint32_t old_code; - uint32_t last_old_code; - uint32_t input_bit_buffer; - int input_bit_count; - int octet; - int last_length; - int output_octet_count; - uint8_t output_buf[1024]; - v42bis_dict_node_t dict[V42BIS_MAX_CODEWORDS]; - /*! \brief TRUE if we are in transparent (i.e. uncompressable) mode */ - int transparent; - - int last_extra_octet; - - /*! \brief Next empty dictionary entry */ - uint32_t v42bis_parm_c1; - /*! \brief Current codeword size */ - int v42bis_parm_c2; - /*! \brief Threshold for codeword size change */ - uint32_t v42bis_parm_c3; - - /*! \brief Mark that this is the first octet/code to be processed */ - int first; - uint8_t escape_code; - int escaped; -} v42bis_decompress_state_t; - -/*! V.42bis compression/decompression descriptor. This defines the working state for a single instance of V.42bis compress/decompression. */ -typedef struct -{ - /*! \brief V.42bis data compression directions. */ - int v42bis_parm_p0; - - /*! \brief Compression state. */ - v42bis_compress_state_t compress; - /*! \brief Decompression state. */ - v42bis_decompress_state_t decompress; - - /*! \brief Maximum codeword size (bits) */ - int v42bis_parm_n1; - /*! \brief Total number of codewords */ - uint32_t v42bis_parm_n2; - /*! \brief Maximum string length */ - int v42bis_parm_n7; -} v42bis_state_t; +typedef struct v42bis_state_s v42bis_state_t; #if defined(__cplusplus) extern "C" Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v8.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/v8.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/v8.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v8.h,v 1.23 2008/09/04 14:40:05 steveu Exp $ + * $Id: v8.h,v 1.25 2008/10/13 14:19:18 steveu Exp $ */ /*! \file */ @@ -100,55 +100,7 @@ V8_PSTN_PCM_MODEM_V91 = 0x80 }; -typedef struct -{ - /*! \brief TRUE if we are the calling modem */ - int caller; - /*! \brief The current state of the V8 protocol */ - int state; - int negotiation_timer; - int ci_timer; - int ci_count; - fsk_tx_state_t v21tx; - fsk_rx_state_t v21rx; - queue_state_t *tx_queue; - modem_connect_tones_tx_state_t ansam_tx; - modem_connect_tones_rx_state_t ansam_rx; - - v8_result_handler_t *result_handler; - void *result_handler_user_data; - - /*! \brief Modulation schemes available at this end. */ - int available_modulations; - int common_modulations; - int negotiated_modulation; - int far_end_modulations; - - int call_function; - int protocol; - int pstn_access; - int nsf_seen; - int pcm_modem_availability; - int t66_seen; - - /* V8 data parsing */ - unsigned int bit_stream; - int bit_cnt; - /* Indicates the type of message coming up */ - int preamble_type; - uint8_t rx_data[64]; - int rx_data_ptr; - - /*! \brief a reference copy of the last CM or JM message, used when - testing for matches. */ - uint8_t cm_jm_data[64]; - int cm_jm_count; - int got_cm_jm; - int got_cj; - int zero_byte_count; - /*! \brief Error and flow logging control */ - logging_state_t logging; -} v8_state_t; +typedef struct v8_state_s v8_state_t; struct v8_result_s { @@ -188,6 +140,14 @@ \return 0 for OK. */ int v8_release(v8_state_t *s); +/*! Free a V.8 context. + \brief Release a V.8 context. + \param s The V.8 context. + \return 0 for OK. */ +int v8_free(v8_state_t *s); + +logging_state_t *v8_get_logging_state(v8_state_t *s); + /*! Generate a block of V.8 audio samples. \brief Generate a block of V.8 audio samples. \param s The V.8 context. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/vector_float.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/vector_float.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/vector_float.h Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: vector_float.h,v 1.13 2008/09/18 13:54:32 steveu Exp $ + * $Id: vector_float.h,v 1.14 2008/10/09 13:25:19 steveu Exp $ */ #if !defined(_SPANDSP_VECTOR_FLOAT_H_) @@ -41,6 +41,14 @@ void vec_copyl(long double z[], const long double x[], int n); #endif +void vec_negatef(float z[], const float x[], int n); + +void vec_negate(double z[], const double x[], int n); + +#if defined(HAVE_LONG_DOUBLE) +void vec_negatel(long double z[], const long double x[], int n); +#endif + void vec_zerof(float z[], int n); void vec_zero(double z[], int n); @@ -65,12 +73,20 @@ void vec_addl(long double z[], const long double x[], const long double y[], int n); #endif -void vec_scaled_addf(float z[], const float x[], float x_scale, const float y[], float y_scale, int n); +void vec_scaledxy_addf(float z[], const float x[], float x_scale, const float y[], float y_scale, int n); -void vec_scaled_add(double z[], const double x[], double x_scale, const double y[], double y_scale, int n); +void vec_scaledxy_add(double z[], const double x[], double x_scale, const double y[], double y_scale, int n); #if defined(HAVE_LONG_DOUBLE) -void vec_scaled_addl(long double z[], const long double x[], long double x_scale, const long double y[], long double y_scale, int n); +void vec_scaledxy_addl(long double z[], const long double x[], long double x_scale, const long double y[], long double y_scale, int n); +#endif + +void vec_scaledy_addf(float z[], const float x[], const float y[], float y_scale, int n); + +void vec_scaledy_add(double z[], const double x[], const double y[], double y_scale, int n); + +#if defined(HAVE_LONG_DOUBLE) +void vec_scaledy_addl(long double z[], const long double x[], const long double y[], long double y_scale, int n); #endif void vec_subf(float z[], const float x[], const float y[], int n); @@ -81,12 +97,28 @@ void vec_subl(long double z[], const long double x[], const long double y[], int n); #endif -void vec_scaled_subf(float z[], const float x[], float x_scale, const float y[], float y_scale, int n); +void vec_scaledxy_subf(float z[], const float x[], float x_scale, const float y[], float y_scale, int n); + +void vec_scaledxy_sub(double z[], const double x[], double x_scale, const double y[], double y_scale, int n); + +#if defined(HAVE_LONG_DOUBLE) +void vec_scaledxy_subl(long double z[], const long double x[], long double x_scale, const long double y[], long double y_scale, int n); +#endif + +void vec_scaledx_subf(float z[], const float x[], float x_scale, const float y[], int n); -void vec_scaled_sub(double z[], const double x[], double x_scale, const double y[], double y_scale, int n); +void vec_scaledx_sub(double z[], const double x[], double x_scale, const double y[], int n); #if defined(HAVE_LONG_DOUBLE) -void vec_scaled_subl(long double z[], const long double x[], long double x_scale, const long double y[], long double y_scale, int n); +void vec_scaledx_subl(long double z[], const long double x[], long double x_scale, const long double y[], int n); +#endif + +void vec_scaledy_subf(float z[], const float x[], const float y[], float y_scale, int n); + +void vec_scaledy_sub(double z[], const double x[], const double y[], double y_scale, int n); + +#if defined(HAVE_LONG_DOUBLE) +void vec_scaledy_subl(long double z[], const long double x[], const long double y[], long double y_scale, int n); #endif void vec_scalar_mulf(float z[], const float x[], float y, int n); @@ -97,6 +129,22 @@ void vec_scalar_mull(long double z[], const long double x[], long double y, int n); #endif +void vec_scalar_addf(float z[], const float x[], float y, int n); + +void vec_scalar_add(double z[], const double x[], double y, int n); + +#if defined(HAVE_LONG_DOUBLE) +void vec_scalar_addl(long double z[], const long double x[], long double y, int n); +#endif + +void vec_scalar_subf(float z[], const float x[], float y, int n); + +void vec_scalar_sub(double z[], const double x[], double y, int n); + +#if defined(HAVE_LONG_DOUBLE) +void vec_scalar_subl(long double z[], const long double x[], long double y, int n); +#endif + void vec_mulf(float z[], const float x[], const float y[], int n); void vec_mul(double z[], const double x[], const double y[], int n); Modified: freeswitch/trunk/libs/spandsp/src/spandsp/version.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/version.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/version.h Tue Jan 27 22:48:03 2009 @@ -30,8 +30,8 @@ /* The date and time of the version are in UTC form. */ -#define SPANDSP_RELEASE_DATE 20080930 -#define SPANDSP_RELEASE_TIME 181513 +#define SPANDSP_RELEASE_DATE 20090128 +#define SPANDSP_RELEASE_TIME 034417 #endif /*- End of file ------------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/super_tone_rx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/super_tone_rx.c (original) +++ freeswitch/trunk/libs/spandsp/src/super_tone_rx.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: super_tone_rx.c,v 1.29 2008/07/25 13:56:54 steveu Exp $ + * $Id: super_tone_rx.c,v 1.31 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -38,13 +38,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/complex.h" @@ -54,6 +54,8 @@ #include "spandsp/tone_generate.h" #include "spandsp/super_tone_rx.h" +#include "spandsp/private/super_tone_rx.h" + #if defined(SPANDSP_USE_FIXED_POINT) #define DETECTION_THRESHOLD 16439 /* -42dBm0 */ #define TONE_TWIST 4 /* 6dB */ Modified: freeswitch/trunk/libs/spandsp/src/super_tone_tx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/super_tone_tx.c (original) +++ freeswitch/trunk/libs/spandsp/src/super_tone_tx.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: super_tone_tx.c,v 1.25 2008/07/02 14:48:26 steveu Exp $ + * $Id: super_tone_tx.c,v 1.27 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -38,13 +38,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/complex.h" @@ -52,6 +52,9 @@ #include "spandsp/tone_generate.h" #include "spandsp/super_tone_tx.h" +#include "spandsp/private/tone_generate.h" +#include "spandsp/private/super_tone_tx.h" + /* The tone played to wake folk up when they have left the phone off hook is an oddity amongst supervisory tones. It is designed to sound loud and nasty. Most Modified: freeswitch/trunk/libs/spandsp/src/t30.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t30.c (original) +++ freeswitch/trunk/libs/spandsp/src/t30.c Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t30.c,v 1.267 2008/09/16 12:45:01 steveu Exp $ + * $Id: t30.c,v 1.278 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -37,13 +37,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" @@ -67,6 +67,10 @@ #include "spandsp/t30_api.h" #include "spandsp/t30_logging.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/t4.h" +#include "spandsp/private/t30.h" + #include "t30_local.h" #define MAX_MESSAGE_TRIES 3 @@ -371,13 +375,25 @@ s->operation_in_progress = OPERATION_IN_PROGRESS_NONE; return -1; } - s->ecm_tx_page++; s->ecm_block = 0; + s->error_correcting_mode_retries = 0; span_log(&s->logging, SPAN_LOG_FLOW, "Starting page %d of transfer\n", s->ecm_tx_page + 1); return 0; } /*- End of function --------------------------------------------------------*/ +static int tx_end_page(t30_state_t *s) +{ + s->retries = 0; + if (t4_tx_end_page(&(s->t4)) == 0) + { + s->ecm_tx_page++; + s->ecm_block = 0; + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + static int rx_start_page(t30_state_t *s) { int i; @@ -398,10 +414,21 @@ /* Clear the buffer */ for (i = 0; i < 256; i++) s->ecm_len[i] = -1; - s->ecm_rx_page++; s->ecm_block = 0; s->ecm_frames = -1; s->ecm_frames_this_tx_burst = 0; + s->error_correcting_mode_retries = 0; + return 0; +} +/*- End of function --------------------------------------------------------*/ + +static int rx_end_page(t30_state_t *s) +{ + if (t4_rx_end_page(&(s->t4)) == 0) + { + s->ecm_rx_page++; + s->ecm_block = 0; + } return 0; } /*- End of function --------------------------------------------------------*/ @@ -1981,7 +2008,7 @@ } if (s->phase_b_handler) { - new_status = s->phase_b_handler(s, s->phase_d_user_data, msg[2]); + new_status = s->phase_b_handler(s, s->phase_b_user_data, msg[2]); if (new_status != T30_ERR_OK) { span_log(&s->logging, SPAN_LOG_FLOW, "Application rejected DIS/DTC - '%s'\n", t30_completion_code_to_str(new_status)); @@ -2156,7 +2183,7 @@ if (s->phase_b_handler) { - new_status = s->phase_b_handler(s, s->phase_d_user_data, msg[2]); + new_status = s->phase_b_handler(s, s->phase_b_user_data, msg[2]); if (new_status != T30_ERR_OK) { span_log(&s->logging, SPAN_LOG_FLOW, "Application rejected DCS - '%s'\n", t30_completion_code_to_str(new_status)); @@ -2217,7 +2244,7 @@ default: /* We can confirm the whole page. */ s->next_rx_step = s->last_pps_fcf2; - t4_rx_end_page(&(s->t4)); + rx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, s->last_pps_fcf2); rx_start_page(s); @@ -2290,20 +2317,21 @@ span_log(&s->logging, SPAN_LOG_FLOW, "ECM rx block mismatch - expected %d, but received %d.\n", s->ecm_block, block); } /* Build a bit map of which frames we now have stored OK */ - frame_no = 0; s->ecm_first_bad_frame = 256; - for (i = 3; i < 3 + 32; i++) + for (i = 0; i < 32; i++) { - s->ecm_frame_map[i] = 0; + s->ecm_frame_map[i + 3] = 0; for (j = 0; j < 8; j++) { + frame_no = (i << 3) + j; if (s->ecm_len[frame_no] < 0) - { - s->ecm_frame_map[i] |= (1 << j); + { + s->ecm_frame_map[i + 3] |= (1 << j); if (frame_no < s->ecm_first_bad_frame) s->ecm_first_bad_frame = frame_no; + if (frame_no < s->ecm_frames) + s->error_correcting_mode_retries++; } - frame_no++; } } /* Are there any bad frames, or does our scan represent things being OK? */ @@ -2366,7 +2394,10 @@ else { if (frame_no < s->ecm_frames) + { span_log(&s->logging, SPAN_LOG_FLOW, "Frame %d to be resent\n", frame_no); + s->error_correcting_mode_retries++; + } #if 0 /* Diagnostic: See if the other end is complaining about something we didn't even send this time. */ if (s->ecm_len[frame_no] < 0) @@ -2892,13 +2923,13 @@ { case T30_COPY_QUALITY_PERFECT: case T30_COPY_QUALITY_GOOD: - t4_rx_end_page(&(s->t4)); + rx_end_page(s); rx_start_page(s); set_state(s, T30_STATE_III_Q_MCF); send_simple_frame(s, T30_MCF); break; case T30_COPY_QUALITY_POOR: - t4_rx_end_page(&(s->t4)); + rx_end_page(s); rx_start_page(s); set_state(s, T30_STATE_III_Q_RTP); send_simple_frame(s, T30_RTP); @@ -2921,14 +2952,14 @@ { case T30_COPY_QUALITY_PERFECT: case T30_COPY_QUALITY_GOOD: - t4_rx_end_page(&(s->t4)); + rx_end_page(s); t4_rx_end(&(s->t4)); s->operation_in_progress = OPERATION_IN_PROGRESS_NONE; s->in_message = FALSE; set_state(s, T30_STATE_III_Q_MCF); break; case T30_COPY_QUALITY_POOR: - t4_rx_end_page(&(s->t4)); + rx_end_page(s); t4_rx_end(&(s->t4)); s->operation_in_progress = OPERATION_IN_PROGRESS_NONE; s->in_message = FALSE; @@ -2950,13 +2981,13 @@ { case T30_COPY_QUALITY_PERFECT: case T30_COPY_QUALITY_GOOD: - t4_rx_end_page(&(s->t4)); + rx_end_page(s); rx_start_page(s); set_state(s, T30_STATE_III_Q_MCF); send_simple_frame(s, T30_MCF); break; case T30_COPY_QUALITY_POOR: - t4_rx_end_page(&(s->t4)); + rx_end_page(s); rx_start_page(s); set_state(s, T30_STATE_III_Q_RTP); send_simple_frame(s, T30_RTP); @@ -2979,14 +3010,14 @@ { case T30_COPY_QUALITY_PERFECT: case T30_COPY_QUALITY_GOOD: - t4_rx_end_page(&(s->t4)); + rx_end_page(s); t4_rx_end(&(s->t4)); s->operation_in_progress = OPERATION_IN_PROGRESS_NONE; s->in_message = FALSE; set_state(s, T30_STATE_III_Q_MCF); break; case T30_COPY_QUALITY_POOR: - t4_rx_end_page(&(s->t4)); + rx_end_page(s); t4_rx_end(&(s->t4)); s->operation_in_progress = OPERATION_IN_PROGRESS_NONE; s->in_message = FALSE; @@ -3006,7 +3037,7 @@ { case T30_COPY_QUALITY_PERFECT: case T30_COPY_QUALITY_GOOD: - t4_rx_end_page(&(s->t4)); + rx_end_page(s); t4_rx_end(&(s->t4)); s->operation_in_progress = OPERATION_IN_PROGRESS_NONE; s->in_message = FALSE; @@ -3014,7 +3045,7 @@ send_simple_frame(s, T30_MCF); break; case T30_COPY_QUALITY_POOR: - t4_rx_end_page(&(s->t4)); + rx_end_page(s); t4_rx_end(&(s->t4)); s->operation_in_progress = OPERATION_IN_PROGRESS_NONE; s->in_message = FALSE; @@ -3038,14 +3069,14 @@ { case T30_COPY_QUALITY_PERFECT: case T30_COPY_QUALITY_GOOD: - t4_rx_end_page(&(s->t4)); + rx_end_page(s); t4_rx_end(&(s->t4)); s->operation_in_progress = OPERATION_IN_PROGRESS_NONE; s->in_message = FALSE; set_state(s, T30_STATE_III_Q_MCF); break; case T30_COPY_QUALITY_POOR: - t4_rx_end_page(&(s->t4)); + rx_end_page(s); t4_rx_end(&(s->t4)); s->operation_in_progress = OPERATION_IN_PROGRESS_NONE; s->in_message = FALSE; @@ -3332,8 +3363,7 @@ { case T30_MPS: case T30_PRI_MPS: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_MCF); if (tx_start_page(s)) @@ -3347,8 +3377,7 @@ case T30_EOM: case T30_PRI_EOM: case T30_EOS: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_MCF); t4_tx_end(&(s->t4)); @@ -3362,8 +3391,7 @@ break; case T30_EOP: case T30_PRI_EOP: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_MCF); t4_tx_end(&(s->t4)); @@ -3382,8 +3410,7 @@ { case T30_MPS: case T30_PRI_MPS: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_RTP); if (tx_start_page(s)) @@ -3406,8 +3433,7 @@ case T30_EOM: case T30_PRI_EOM: case T30_EOS: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_RTP); t4_tx_end(&(s->t4)); @@ -3416,8 +3442,7 @@ break; case T30_EOP: case T30_PRI_EOP: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_RTP); t4_tx_end(&(s->t4)); @@ -3643,7 +3668,7 @@ span_log(&s->logging, SPAN_LOG_FLOW, "Is there more to send? - %d %d\n", s->ecm_frames, s->ecm_len[255]); if (!s->ecm_at_page_end && get_partial_ecm_page(s) > 0) { - span_log(&s->logging, SPAN_LOG_WARNING, "Additional image data to send\n"); + span_log(&s->logging, SPAN_LOG_FLOW, "Additional image data to send\n"); s->ecm_block++; set_state(s, T30_STATE_IV); queue_phase(s, T30_PHASE_C_ECM_TX); @@ -3656,8 +3681,7 @@ { case T30_MPS: case T30_PRI_MPS: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_MCF); if (tx_start_page(s)) @@ -3675,8 +3699,7 @@ case T30_EOM: case T30_PRI_EOM: case T30_EOS: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_MCF); t4_tx_end(&(s->t4)); @@ -3690,8 +3713,7 @@ break; case T30_EOP: case T30_PRI_EOP: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_MCF); t4_tx_end(&(s->t4)); @@ -3748,7 +3770,7 @@ span_log(&s->logging, SPAN_LOG_FLOW, "Is there more to send? - %d %d\n", s->ecm_frames, s->ecm_len[255]); if (!s->ecm_at_page_end && get_partial_ecm_page(s) > 0) { - span_log(&s->logging, SPAN_LOG_WARNING, "Additional image data to send\n"); + span_log(&s->logging, SPAN_LOG_FLOW, "Additional image data to send\n"); s->ecm_block++; set_state(s, T30_STATE_IV); queue_phase(s, T30_PHASE_C_ECM_TX); @@ -3761,8 +3783,7 @@ { case T30_MPS: case T30_PRI_MPS: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_MCF); if (tx_start_page(s)) @@ -3780,8 +3801,7 @@ case T30_EOM: case T30_PRI_EOM: case T30_EOS: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_MCF); t4_tx_end(&(s->t4)); @@ -3795,8 +3815,7 @@ break; case T30_EOP: case T30_PRI_EOP: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_MCF); t4_tx_end(&(s->t4)); @@ -3869,7 +3888,7 @@ span_log(&s->logging, SPAN_LOG_FLOW, "Is there more to send? - %d %d\n", s->ecm_frames, s->ecm_len[255]); if (!s->ecm_at_page_end && get_partial_ecm_page(s) > 0) { - span_log(&s->logging, SPAN_LOG_WARNING, "Additional image data to send\n"); + span_log(&s->logging, SPAN_LOG_FLOW, "Additional image data to send\n"); s->ecm_block++; set_state(s, T30_STATE_IV); queue_phase(s, T30_PHASE_C_ECM_TX); @@ -3882,8 +3901,7 @@ { case T30_MPS: case T30_PRI_MPS: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_MCF); if (tx_start_page(s)) @@ -3901,8 +3919,7 @@ case T30_EOM: case T30_PRI_EOM: case T30_EOS: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_MCF); t4_tx_end(&(s->t4)); @@ -3916,8 +3933,7 @@ break; case T30_EOP: case T30_PRI_EOP: - s->retries = 0; - t4_tx_end_page(&(s->t4)); + tx_end_page(s); if (s->phase_d_handler) s->phase_d_handler(s, s->phase_d_user_data, T30_MCF); t4_tx_end(&(s->t4)); @@ -4872,17 +4888,16 @@ int was_trained; s = (t30_state_t *) user_data; + span_log(&s->logging, SPAN_LOG_FLOW, "Non-ECM signal status is %s (%d) in state %d\n", signal_status_to_str(status), status, s->state); switch (status) { case SIG_STATUS_TRAINING_IN_PROGRESS: break; case SIG_STATUS_TRAINING_FAILED: - span_log(&s->logging, SPAN_LOG_FLOW, "Non-ECM carrier training failed in state %d\n", s->state); s->rx_trained = FALSE; break; case SIG_STATUS_TRAINING_SUCCEEDED: /* The modem is now trained */ - span_log(&s->logging, SPAN_LOG_FLOW, "Non-ECM carrier trained in state %d\n", s->state); /* In case we are in trainability test mode... */ s->tcf_test_bits = 0; s->tcf_current_zeros = 0; @@ -4892,10 +4907,8 @@ s->timer_t2_t4 = 0; break; case SIG_STATUS_CARRIER_UP: - span_log(&s->logging, SPAN_LOG_FLOW, "Non-ECM carrier up in state %d\n", s->state); break; case SIG_STATUS_CARRIER_DOWN: - span_log(&s->logging, SPAN_LOG_FLOW, "Non-ECM carrier down in state %d\n", s->state); was_trained = s->rx_trained; s->rx_signal_present = FALSE; s->rx_trained = FALSE; @@ -5199,22 +5212,20 @@ t30_state_t *s; s = (t30_state_t *) user_data; + span_log(&s->logging, SPAN_LOG_FLOW, "HDLC signal status is %s (%d) in state %d\n", signal_status_to_str(status), status, s->state); switch (status) { case SIG_STATUS_TRAINING_IN_PROGRESS: break; case SIG_STATUS_TRAINING_FAILED: - span_log(&s->logging, SPAN_LOG_FLOW, "HDLC carrier training failed in state %d\n", s->state); s->rx_trained = FALSE; break; case SIG_STATUS_TRAINING_SUCCEEDED: /* The modem is now trained */ - span_log(&s->logging, SPAN_LOG_FLOW, "HDLC carrier trained in state %d\n", s->state); s->rx_signal_present = TRUE; s->rx_trained = TRUE; break; case SIG_STATUS_CARRIER_UP: - span_log(&s->logging, SPAN_LOG_FLOW, "HDLC carrier up in state %d\n", s->state); s->rx_signal_present = TRUE; switch (s->timer_t2_t4_is) { @@ -5229,7 +5240,6 @@ } break; case SIG_STATUS_CARRIER_DOWN: - span_log(&s->logging, SPAN_LOG_FLOW, "HDLC carrier down in state %d\n", s->state); s->rx_signal_present = FALSE; s->rx_trained = FALSE; /* If a phase change has been queued to occur after the receive signal drops, @@ -5258,7 +5268,6 @@ } break; case SIG_STATUS_FRAMING_OK: - span_log(&s->logging, SPAN_LOG_FLOW, "HDLC framing OK in state %d\n", s->state); if (!s->far_end_detected && s->timer_t0_t1 > 0) { s->timer_t0_t1 = ms_to_samples(DEFAULT_TIMER_T1); @@ -5507,7 +5516,7 @@ } else { - /* We just sent the disconnect message. Now it is time to disconnect */ + /* We just sent the disconnect message. Now it is time to disconnect. */ disconnect(s); } break; @@ -5650,6 +5659,14 @@ span_log(&s->logging, SPAN_LOG_FLOW, "No signal is present\n"); /* TODO: Should we do anything here? */ break; + case T30_FRONT_END_CED_PRESENT: + span_log(&s->logging, SPAN_LOG_FLOW, "CED tone is present\n"); + /* TODO: Should we do anything here? */ + break; + case T30_FRONT_END_CNG_PRESENT: + span_log(&s->logging, SPAN_LOG_FLOW, "CNG tone is present\n"); + /* TODO: Should we do anything here? */ + break; } } /*- End of function --------------------------------------------------------*/ @@ -5742,6 +5759,7 @@ t->bit_rate = fallback_sequence[s->current_fallback].bit_rate; t->error_correcting_mode = s->error_correcting_mode; + t->error_correcting_mode_retries = s->error_correcting_mode_retries; t4_get_transfer_statistics(&s->t4, &stats); t->pages_transferred = stats.pages_transferred; t->pages_in_file = stats.pages_in_file; @@ -5798,8 +5816,8 @@ s->far_end_detected = FALSE; s->timer_t0_t1 = ms_to_samples(DEFAULT_TIMER_T0); release_resources(s); - s->ecm_rx_page = -1; - s->ecm_tx_page = -1; + s->ecm_rx_page = 0; + s->ecm_tx_page = 0; return 0; } /*- End of function --------------------------------------------------------*/ @@ -5870,4 +5888,10 @@ return 0; } /*- End of function --------------------------------------------------------*/ + +int t30_call_active(t30_state_t *s) +{ + return (s->phase != T30_PHASE_CALL_FINISHED); +} +/*- End of function --------------------------------------------------------*/ /*- End of file ------------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/t30_api.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t30_api.c (original) +++ freeswitch/trunk/libs/spandsp/src/t30_api.c Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t30_api.c,v 1.8 2008/08/14 14:06:05 steveu Exp $ + * $Id: t30_api.c,v 1.12 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -37,13 +37,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" @@ -67,6 +67,10 @@ #include "spandsp/t30_api.h" #include "spandsp/t30_logging.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/t4.h" +#include "spandsp/private/t30.h" + #include "t30_local.h" int t30_set_tx_ident(t30_state_t *s, const char *id) @@ -724,4 +728,10 @@ s->real_time_frame_user_data = user_data; } /*- End of function --------------------------------------------------------*/ + +logging_state_t *t30_get_logging_state(t30_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ /*- End of file ------------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/t30_logging.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t30_logging.c (original) +++ freeswitch/trunk/libs/spandsp/src/t30_logging.c Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t30_logging.c,v 1.6 2008/08/01 17:59:46 steveu Exp $ + * $Id: t30_logging.c,v 1.10 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -37,13 +37,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" @@ -66,6 +66,10 @@ #include "spandsp/t30.h" #include "spandsp/t30_logging.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/t4.h" +#include "spandsp/private/t30.h" + #include "t30_local.h" typedef struct Modified: freeswitch/trunk/libs/spandsp/src/t31.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t31.c (original) +++ freeswitch/trunk/libs/spandsp/src/t31.c Tue Jan 27 22:48:03 2009 @@ -8,7 +8,7 @@ * Special thanks to Lee Howard * for his great work debugging and polishing this code. * - * Copyright (C) 2004, 2005, 2006 Steve Underwood + * Copyright (C) 2004, 2005, 2006, 2008 Steve Underwood * * All rights reserved. * @@ -25,13 +25,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t31.c,v 1.120 2008/09/07 12:45:17 steveu Exp $ + * $Id: t31.c,v 1.136 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -42,13 +42,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include @@ -62,15 +62,16 @@ #include "spandsp/tone_detect.h" #include "spandsp/tone_generate.h" #include "spandsp/async.h" +#include "spandsp/crc.h" #include "spandsp/hdlc.h" #include "spandsp/silence_gen.h" #include "spandsp/fsk.h" -#include "spandsp/v29rx.h" #include "spandsp/v29tx.h" -#include "spandsp/v27ter_rx.h" +#include "spandsp/v29rx.h" #include "spandsp/v27ter_tx.h" -#include "spandsp/v17rx.h" +#include "spandsp/v27ter_rx.h" #include "spandsp/v17tx.h" +#include "spandsp/v17rx.h" #include "spandsp/super_tone_rx.h" #include "spandsp/modem_connect_tones.h" #include "spandsp/t4.h" @@ -82,20 +83,35 @@ #include "spandsp/fax_modems.h" #include "spandsp/t31.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/t38_core.h" +#include "spandsp/private/fsk.h" +#include "spandsp/private/v17tx.h" +#include "spandsp/private/v17rx.h" +#include "spandsp/private/v27ter_tx.h" +#include "spandsp/private/v27ter_rx.h" +#include "spandsp/private/v29tx.h" +#include "spandsp/private/v29rx.h" +#include "spandsp/private/modem_connect_tones.h" +#include "spandsp/private/hdlc.h" +#include "spandsp/private/fax_modems.h" +#include "spandsp/private/at_interpreter.h" +#include "spandsp/private/t31.h" + /* Settings suitable for paced transmission over a UDP transport */ -#define MS_PER_TX_CHUNK 30 -#define INDICATOR_TX_COUNT 3 -#define DATA_TX_COUNT 1 -#define DATA_END_TX_COUNT 3 -#define DEFAULT_DTE_TIMEOUT 5 +#define MS_PER_TX_CHUNK 30 +#define INDICATOR_TX_COUNT 3 +#define DATA_TX_COUNT 1 +#define DATA_END_TX_COUNT 3 +#define DEFAULT_DTE_TIMEOUT 5 /* Settings suitable for unpaced transmission over a TCP transport */ -#define MAX_OCTETS_PER_UNPACED_CHUNK 300 +#define MAX_OCTETS_PER_UNPACED_CHUNK 300 /* Backstop timeout if reception of packets stops in the middle of a burst */ -#define MID_RX_TIMEOUT 15000 +#define MID_RX_TIMEOUT 15000 -#define HDLC_FRAMING_OK_THRESHOLD 5 +#define HDLC_FRAMING_OK_THRESHOLD 5 typedef const char *(*at_cmd_service_t)(t31_state_t *s, const char *cmd); @@ -125,30 +141,44 @@ enum { + T38_CHUNKING_MERGE_FCS_WITH_DATA = 0x0001, + T38_CHUNKING_WHOLE_FRAMES = 0x0002, + T38_CHUNKING_ALLOW_TEP_TIME = 0x0004 +}; + +enum +{ T38_TIMED_STEP_NONE = 0, - T38_TIMED_STEP_NON_ECM_MODEM, - T38_TIMED_STEP_NON_ECM_MODEM_2, - T38_TIMED_STEP_NON_ECM_MODEM_3, - T38_TIMED_STEP_NON_ECM_MODEM_4, - T38_TIMED_STEP_NON_ECM_MODEM_5, - T38_TIMED_STEP_HDLC_MODEM, - T38_TIMED_STEP_HDLC_MODEM_2, - T38_TIMED_STEP_HDLC_MODEM_3, - T38_TIMED_STEP_HDLC_MODEM_4, - T38_TIMED_STEP_CED, - T38_TIMED_STEP_CED_2, - T38_TIMED_STEP_CNG, - T38_TIMED_STEP_CNG_2, - T38_TIMED_STEP_PAUSE + T38_TIMED_STEP_NON_ECM_MODEM = 0x10, + T38_TIMED_STEP_NON_ECM_MODEM_2 = 0x11, + T38_TIMED_STEP_NON_ECM_MODEM_3 = 0x12, + T38_TIMED_STEP_NON_ECM_MODEM_4 = 0x13, + T38_TIMED_STEP_NON_ECM_MODEM_5 = 0x14, + T38_TIMED_STEP_HDLC_MODEM = 0x20, + T38_TIMED_STEP_HDLC_MODEM_2 = 0x21, + T38_TIMED_STEP_HDLC_MODEM_3 = 0x22, + T38_TIMED_STEP_HDLC_MODEM_4 = 0x23, + T38_TIMED_STEP_HDLC_MODEM_5 = 0x24, + T38_TIMED_STEP_CED = 0x30, + T38_TIMED_STEP_CED_2 = 0x31, + T38_TIMED_STEP_CED_3 = 0x32, + T38_TIMED_STEP_CNG = 0x40, + T38_TIMED_STEP_CNG_2 = 0x41, + T38_TIMED_STEP_PAUSE = 0x50 }; static int restart_modem(t31_state_t *s, int new_modem); -static void hdlc_accept(void *user_data, const uint8_t *msg, int len, int ok); +static void hdlc_accept_frame(void *user_data, const uint8_t *msg, int len, int ok); static int v17_v21_rx(void *user_data, const int16_t amp[], int len); static int v27ter_v21_rx(void *user_data, const int16_t amp[], int len); static int v29_v21_rx(void *user_data, const int16_t amp[], int len); static int silence_rx(void *user_data, const int16_t amp[], int len); static int cng_rx(void *user_data, const int16_t amp[], int len); +static void non_ecm_put_bit(void *user_data, int bit); +static void non_ecm_put_chunk(void *user_data, const uint8_t buf[], int len); +static int non_ecm_get_chunk(void *user_data, uint8_t buf[], int len); +static void non_ecm_rx_status(void *user_data, int status); +static void hdlc_rx_status(void *user_data, int status); static __inline__ void t31_set_at_rx_mode(t31_state_t *s, int new_mode) { @@ -156,12 +186,105 @@ } /*- End of function --------------------------------------------------------*/ +static void front_end_status(t31_state_t *s, int status) +{ + span_log(&s->logging, SPAN_LOG_FLOW, "Front end status %d\n", status); + switch (status) + { + case T30_FRONT_END_SEND_STEP_COMPLETE: + switch (s->modem) + { + case T31_SILENCE_TX: + s->modem = T31_NONE; + at_put_response_code(&s->at_state, AT_RESPONSE_CODE_OK); + if (s->at_state.do_hangup) + { + at_modem_control(&s->at_state, AT_MODEM_CONTROL_HANGUP, NULL); + t31_set_at_rx_mode(s, AT_MODE_ONHOOK_COMMAND); + s->at_state.do_hangup = FALSE; + } + else + { + t31_set_at_rx_mode(s, AT_MODE_OFFHOOK_COMMAND); + } + break; + case T31_CED_TONE: + /* Go directly to V.21/HDLC transmit. */ + s->modem = T31_NONE; + restart_modem(s, T31_V21_TX); + t31_set_at_rx_mode(s, AT_MODE_HDLC); + break; + case T31_V21_TX: + case T31_V17_TX: + case T31_V27TER_TX: + case T31_V29_TX: + s->modem = T31_NONE; + at_put_response_code(&s->at_state, AT_RESPONSE_CODE_OK); + t31_set_at_rx_mode(s, AT_MODE_OFFHOOK_COMMAND); + restart_modem(s, T31_SILENCE_TX); + break; + } + break; + case T30_FRONT_END_RECEIVE_COMPLETE: + break; + } +} +/*- End of function --------------------------------------------------------*/ + +static int extra_bits_in_stuffed_frame(const uint8_t buf[], int len) +{ + int bitstream; + int ones; + int stuffed; + int i; + int j; + + bitstream = 0; + ones = 0; + stuffed = 0; + /* We should really append the CRC, and include the stuffed bits for that, to get + the exact number of bits in the frame. */ + //len = crc_itu16_append(buf, len); + for (i = 0; i < len; i++) + { + bitstream = buf[i]; + for (j = 0; j < 8; j++) + { + if ((bitstream & 1)) + { + if (++ones >= 5) + { + ones = 0; + stuffed++; + } + } + else + { + ones = 0; + } + bitstream >>= 1; + } + } + /* The total length of the frame is: + the number of bits in the body + + the number of additional bits in the body due to stuffing + + the number of bits in the CRC + + the number of additional bits in the CRC due to stuffing + + 16 bits for the two terminating flag octets. + Lets just allow 3 bits for the CRC, which is the worst case. It + avoids calculating the real CRC, and the worst it can do is cause + a flag octet's worth of additional output. + */ + return stuffed + 16 + 3 + 16; +} +/*- End of function --------------------------------------------------------*/ + static int process_rx_missing(t38_core_state_t *t, void *user_data, int rx_seq_no, int expected_seq_no) { t31_state_t *s; s = (t31_state_t *) user_data; - s->t38_fe.missing_data = TRUE; + s->t38_fe.rx_data_missing = TRUE; return 0; } /*- End of function --------------------------------------------------------*/ @@ -170,15 +293,20 @@ { t31_state_t *s; t31_t38_front_end_state_t *fe; - + s = (t31_state_t *) user_data; fe = &s->t38_fe; if (t->current_rx_indicator == indicator) { - /* This is probably due to the far end repeating itself. Ignore it. Its harmless */ + /* This is probably due to the far end repeating itself, or slipping + preamble messages in between HDLC frames. T.38/V.1.3 tells us to + ignore it. Its harmless. */ return 0; } + /* In termination mode we don't care very much about indicators telling us training + is starting. We only care about V.21 preamble starting, for timeout control, and + the actual data. */ switch (indicator) { case T38_IND_NO_SIGNAL: @@ -186,19 +314,22 @@ && (fe->current_rx_type == T30_MODEM_V21 || fe->current_rx_type == T30_MODEM_CNG)) { - /* TODO: report carrier down */ + hdlc_rx_status(s, SIG_STATUS_CARRIER_DOWN); } fe->timeout_rx_samples = 0; - /* TODO: report end of signal */ + front_end_status(s, T30_FRONT_END_SIGNAL_ABSENT); break; case T38_IND_CNG: + front_end_status(s, T30_FRONT_END_CNG_PRESENT); break; case T38_IND_CED: + front_end_status(s, T30_FRONT_END_CED_PRESENT); break; case T38_IND_V21_PREAMBLE: - /* Some people pop these preamble indicators between HDLC frames, so we need to be tolerant of that. */ + /* Some T.38 implementations insert these preamble indicators between HDLC frames, so + we need to be tolerant of that. */ fe->timeout_rx_samples = fe->samples + ms_to_samples(MID_RX_TIMEOUT); - /* TODO: report signal present */ + front_end_status(s, T30_FRONT_END_SIGNAL_PRESENT); break; case T38_IND_V27TER_2400_TRAINING: case T38_IND_V27TER_4800_TRAINING: @@ -214,22 +345,25 @@ case T38_IND_V17_14400_LONG_TRAINING: case T38_IND_V33_12000_TRAINING: case T38_IND_V33_14400_TRAINING: + /* We really don't care what kind of modem is delivering the following image data. + We only care that some kind of fast modem signal is coming next. */ fe->timeout_rx_samples = fe->samples + ms_to_samples(MID_RX_TIMEOUT); - /* TODO: report signal present */ + front_end_status(s, T30_FRONT_END_SIGNAL_PRESENT); break; case T38_IND_V8_ANSAM: case T38_IND_V8_SIGNAL: case T38_IND_V34_CNTL_CHANNEL_1200: case T38_IND_V34_PRI_CHANNEL: case T38_IND_V34_CC_RETRAIN: - /* TODO: report signal present */ + /* V.34 support is a work in progress. */ + front_end_status(s, T30_FRONT_END_SIGNAL_PRESENT); break; default: - /* TODO: report end of signal */ + front_end_status(s, T30_FRONT_END_SIGNAL_ABSENT); break; } fe->hdlc_rx.len = 0; - fe->missing_data = FALSE; + fe->rx_data_missing = FALSE; return 0; } /*- End of function --------------------------------------------------------*/ @@ -247,6 +381,7 @@ s = (t31_state_t *) user_data; fe = &s->t38_fe; #if 0 + /* In termination mode we don't care very much what the data type is. */ switch (data_type) { case T38_DATA_V21: @@ -277,13 +412,13 @@ there is zero packet lost. Nasty, but true. Its a good idea to be tolerant of loss, though, so accepting a sudden start of HDLC data is the right thing to do. */ fe->timeout_rx_samples = fe->samples + ms_to_samples(MID_RX_TIMEOUT); - /* TODO: report signal present */ + front_end_status(s, T30_FRONT_END_SIGNAL_PRESENT); /* All real HDLC messages in the FAX world start with 0xFF. If this one is not starting with 0xFF it would appear some octets must have been missed before this one. */ - if (buf[0] != 0xFF) - fe->missing_data = TRUE; + if (len <= 0 || buf[0] != 0xFF) + fe->rx_data_missing = TRUE; } - if (fe->hdlc_rx.len + len <= T31_T38_MAX_HDLC_LEN) + if (len > 0 && fe->hdlc_rx.len + len <= T31_T38_MAX_HDLC_LEN) { bit_reverse(fe->hdlc_rx.buf + fe->hdlc_rx.len, buf, len); fe->hdlc_rx.len += len; @@ -302,11 +437,13 @@ of the incrementing sequence numbers. We need to filter them here in a context sensitive manner. */ if (t->current_rx_data_type != data_type || t->current_rx_field_type != field_type) { - span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC OK (%s)\n", (fe->hdlc_rx.len >= 3) ? t30_frametype(fe->hdlc_rx.buf[2]) : "???", (fe->missing_data) ? "missing octets" : "clean"); - hdlc_accept((void *) s, fe->hdlc_rx.buf, fe->hdlc_rx.len, !fe->missing_data); + span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC OK (%s)\n", (fe->hdlc_rx.len >= 3) ? t30_frametype(fe->hdlc_rx.buf[2]) : "???", (fe->rx_data_missing) ? "missing octets" : "clean"); + crc_itu16_append(fe->hdlc_rx.buf, fe->hdlc_rx.len); + hdlc_accept_frame(s, fe->hdlc_rx.buf, fe->hdlc_rx.len, !fe->rx_data_missing); } fe->hdlc_rx.len = 0; - fe->missing_data = FALSE; + fe->rx_data_missing = FALSE; + fe->timeout_rx_samples = fe->samples + ms_to_samples(MID_RX_TIMEOUT); break; case T38_FIELD_HDLC_FCS_BAD: if (len > 0) @@ -320,11 +457,12 @@ of the incrementing sequence numbers. We need to filter them here in a context sensitive manner. */ if (t->current_rx_data_type != data_type || t->current_rx_field_type != field_type) { - span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC bad (%s)\n", (fe->hdlc_rx.len >= 3) ? t30_frametype(fe->hdlc_rx.buf[2]) : "???", (fe->missing_data) ? "missing octets" : "clean"); - hdlc_accept((void *) s, fe->hdlc_rx.buf, fe->hdlc_rx.len, FALSE); + span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC bad (%s)\n", (fe->hdlc_rx.len >= 3) ? t30_frametype(fe->hdlc_rx.buf[2]) : "???", (fe->rx_data_missing) ? "missing octets" : "clean"); + hdlc_accept_frame(s, fe->hdlc_rx.buf, fe->hdlc_rx.len, FALSE); } fe->hdlc_rx.len = 0; - fe->missing_data = FALSE; + fe->rx_data_missing = FALSE; + fe->timeout_rx_samples = fe->samples + ms_to_samples(MID_RX_TIMEOUT); break; case T38_FIELD_HDLC_FCS_OK_SIG_END: if (len > 0) @@ -333,47 +471,75 @@ /* The sender has incorrectly included data in this message. It is unclear what we should do with it, to maximise tolerance of buggy implementations. */ } - span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC OK, sig end (%s)\n", t30_frametype(s->tx.data[2]), (fe->missing_data) ? "missing octets" : "clean"); - if (fe->current_rx_type == T31_V21_RX) + /* Some T.38 implementations send multiple T38_FIELD_HDLC_FCS_OK_SIG_END messages, in IFP packets with + incrementing sequence numbers, which are actually repeats. They get through to this point because + of the incrementing sequence numbers. We need to filter them here in a context sensitive manner. */ + if (t->current_rx_data_type != data_type || t->current_rx_field_type != field_type) { - /* Don't deal with zero length frames. Some T.38 implementations send multiple T38_FIELD_HDLC_FCS_OK - packets, when they have sent no data for the body of the frame. */ - if (s->tx.out_bytes > 0) - hdlc_accept((void *) s, fe->hdlc_rx.buf, fe->hdlc_rx.len, TRUE); - hdlc_accept((void *) s, NULL, SIG_STATUS_CARRIER_DOWN, TRUE); + span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC OK, sig end (%s)\n", (fe->hdlc_rx.len >= 3) ? t30_frametype(fe->hdlc_rx.buf[2]) : "???", (fe->rx_data_missing) ? "missing octets" : "clean"); + crc_itu16_append(fe->hdlc_rx.buf, fe->hdlc_rx.len); + hdlc_accept_frame(s, fe->hdlc_rx.buf, fe->hdlc_rx.len, !fe->rx_data_missing); + hdlc_rx_status(s, SIG_STATUS_CARRIER_DOWN); } - s->tx.out_bytes = 0; - fe->missing_data = FALSE; fe->hdlc_rx.len = 0; + fe->rx_data_missing = FALSE; + fe->timeout_rx_samples = 0; break; case T38_FIELD_HDLC_FCS_BAD_SIG_END: if (len > 0) + { span_log(&s->logging, SPAN_LOG_WARNING, "There is data in a T38_FIELD_HDLC_FCS_BAD_SIG_END!\n"); - span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC bad, sig end (%s)\n", t30_frametype(s->tx.data[2]), (fe->missing_data) ? "missing octets" : "clean"); - if (fe->current_rx_type == T31_V21_RX) - hdlc_accept((void *) s, NULL, SIG_STATUS_CARRIER_DOWN, TRUE); + /* The sender has incorrectly included data in this message. We can safely ignore it, as the + bad FCS means we will throw away the whole message, anyway. */ + } + /* Some T.38 implementations send multiple T38_FIELD_HDLC_FCS_BAD_SIG_END messages, in IFP packets with + incrementing sequence numbers, which are actually repeats. They get through to this point because + of the incrementing sequence numbers. We need to filter them here in a context sensitive manner. */ + if (t->current_rx_data_type != data_type || t->current_rx_field_type != field_type) + { + span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC bad, sig end (%s)\n", (fe->hdlc_rx.len >= 3) ? t30_frametype(fe->hdlc_rx.buf[2]) : "???", (fe->rx_data_missing) ? "missing octets" : "clean"); + hdlc_accept_frame(s, fe->hdlc_rx.buf, fe->hdlc_rx.len, FALSE); + hdlc_rx_status(s, SIG_STATUS_CARRIER_DOWN); + } fe->hdlc_rx.len = 0; - fe->missing_data = FALSE; + fe->rx_data_missing = FALSE; + fe->timeout_rx_samples = 0; break; case T38_FIELD_HDLC_SIG_END: if (len > 0) + { span_log(&s->logging, SPAN_LOG_WARNING, "There is data in a T38_FIELD_HDLC_SIG_END!\n"); - /* This message is expected under 2 circumstances. One is as an alternative to T38_FIELD_HDLC_FCS_OK_SIG_END - - i.e. they send T38_FIELD_HDLC_FCS_OK, and then T38_FIELD_HDLC_SIG_END when the carrier actually drops. - The other is because the HDLC signal drops unexpectedly - i.e. not just after a final frame. */ - if (fe->current_rx_type == T31_V21_RX) - hdlc_accept((void *) s, NULL, SIG_STATUS_CARRIER_DOWN, TRUE); - fe->hdlc_rx.len = 0; - fe->missing_data = FALSE; + /* The sender has incorrectly included data in this message, but there seems nothing meaningful + it could be. There could not be an FCS good/bad report beyond this. */ + } + /* Some T.38 implementations send multiple T38_FIELD_HDLC_SIG_END messages, in IFP packets with + incrementing sequence numbers, which are actually repeats. They get through to this point because + of the incrementing sequence numbers. We need to filter them here in a context sensitive manner. */ + if (t->current_rx_data_type != data_type || t->current_rx_field_type != field_type) + { + /* WORKAROUND: At least some Mediatrix boxes have a bug, where they can send this message at the + end of non-ECM data. We need to tolerate this. We use the generic receive complete + indication, rather than the specific HDLC carrier down. */ + /* This message is expected under 2 circumstances. One is as an alternative to T38_FIELD_HDLC_FCS_OK_SIG_END - + i.e. they send T38_FIELD_HDLC_FCS_OK, and then T38_FIELD_HDLC_SIG_END when the carrier actually drops. + The other is because the HDLC signal drops unexpectedly - i.e. not just after a final frame. */ + fe->hdlc_rx.len = 0; + fe->rx_data_missing = FALSE; + fe->timeout_rx_samples = 0; + hdlc_rx_status(s, SIG_STATUS_CARRIER_DOWN); + } break; case T38_FIELD_T4_NON_ECM_DATA: if (!s->at_state.rx_signal_present) { - /* TODO: report training succeeded */ + non_ecm_rx_status(s, SIG_STATUS_TRAINING_SUCCEEDED); s->at_state.rx_signal_present = TRUE; } - bit_reverse(buf2, buf, len); - /* TODO: put the chunk */ + if (len > 0) + { + bit_reverse(buf2, buf, len); + non_ecm_put_chunk(s, buf, len); + } fe->timeout_rx_samples = fe->samples + ms_to_samples(MID_RX_TIMEOUT); break; case T38_FIELD_T4_NON_ECM_SIG_END: @@ -386,25 +552,50 @@ { if (!s->at_state.rx_signal_present) { - /* TODO: report training succeeded */ + non_ecm_rx_status(s, SIG_STATUS_TRAINING_SUCCEEDED); s->at_state.rx_signal_present = TRUE; } bit_reverse(buf2, buf, len); - /* TODO: put the chunk */ + non_ecm_put_chunk(s, buf, len); } /* WORKAROUND: At least some Mediatrix boxes have a bug, where they can send HDLC signal end where they should send non-ECM signal end. It is possible they also do the opposite. We need to tolerate this, so we use the generic receive complete indication, rather than the specific non-ECM carrier down. */ - /* TODO: report receive complete */ + non_ecm_rx_status(s, SIG_STATUS_CARRIER_DOWN); } s->at_state.rx_signal_present = FALSE; fe->timeout_rx_samples = 0; break; case T38_FIELD_CM_MESSAGE: + if (len >= 1) + span_log(&s->logging, SPAN_LOG_FLOW, "CM profile %d - %s\n", buf[0] - '0', t38_cm_profile_to_str(buf[0])); + else + span_log(&s->logging, SPAN_LOG_FLOW, "Bad length for CM message - %d\n", len); + break; case T38_FIELD_JM_MESSAGE: + if (len >= 2) + span_log(&s->logging, SPAN_LOG_FLOW, "JM - %s\n", t38_jm_to_str(buf, len)); + else + span_log(&s->logging, SPAN_LOG_FLOW, "Bad length for JM message - %d\n", len); + break; case T38_FIELD_CI_MESSAGE: + if (len >= 1) + span_log(&s->logging, SPAN_LOG_FLOW, "CI 0x%X\n", buf[0]); + else + span_log(&s->logging, SPAN_LOG_FLOW, "Bad length for CI message - %d\n", len); + break; case T38_FIELD_V34RATE: + if (len >= 3) + { + fe->t38.v34_rate = t38_v34rate_to_bps(buf, len); + span_log(&s->logging, SPAN_LOG_FLOW, "V.34 rate %d bps\n", fe->t38.v34_rate); + } + else + { + span_log(&s->logging, SPAN_LOG_FLOW, "Bad length for V34rate message - %d\n", len); + } + break; default: break; } @@ -412,248 +603,378 @@ } /*- End of function --------------------------------------------------------*/ -int t31_t38_send_timeout(t31_state_t *s, int samples) +static void send_hdlc(void *user_data, const uint8_t *msg, int len) { - int len; - int i; - int previous; - uint8_t buf[MAX_OCTETS_PER_UNPACED_CHUNK + 50]; - t31_t38_front_end_state_t *fe; - t38_data_field_t data_fields[2]; - /* The times for training, the optional TEP, and the HDLC preamble, for all the modem options, in ms. - Note that the preamble for V.21 is 1s+-15%, and for the other modems is 200ms+100ms. */ - static const struct - { - int tep; - int training; - int flags; - } startup_time[] = - { - { 0, 0, 0}, /* T38_IND_NO_SIGNAL */ - { 0, 0, 0}, /* T38_IND_CNG */ - { 0, 0, 0}, /* T38_IND_CED */ - { 0, 0, 1000}, /* T38_IND_V21_PREAMBLE */ /* TODO: 850ms should be OK for this, but it causes trouble with some ATAs. Why? */ - { 215, 943, 200}, /* T38_IND_V27TER_2400_TRAINING */ - { 215, 708, 200}, /* T38_IND_V27TER_4800_TRAINING */ - { 215, 234, 200}, /* T38_IND_V29_7200_TRAINING */ - { 215, 234, 200}, /* T38_IND_V29_9600_TRAINING */ - { 215, 142, 200}, /* T38_IND_V17_7200_SHORT_TRAINING */ - { 215, 1393, 200}, /* T38_IND_V17_7200_LONG_TRAINING */ - { 215, 142, 200}, /* T38_IND_V17_9600_SHORT_TRAINING */ - { 215, 1393, 200}, /* T38_IND_V17_9600_LONG_TRAINING */ - { 215, 142, 200}, /* T38_IND_V17_12000_SHORT_TRAINING */ - { 215, 1393, 200}, /* T38_IND_V17_12000_LONG_TRAINING */ - { 215, 142, 200}, /* T38_IND_V17_14400_SHORT_TRAINING */ - { 215, 1393, 200}, /* T38_IND_V17_14400_LONG_TRAINING */ - { 215, 0, 0}, /* T38_IND_V8_ANSAM */ - { 215, 0, 0}, /* T38_IND_V8_SIGNAL */ - { 215, 0, 0}, /* T38_IND_V34_CNTL_CHANNEL_1200 */ - { 215, 0, 0}, /* T38_IND_V34_PRI_CHANNEL */ - { 215, 0, 0}, /* T38_IND_V34_CC_RETRAIN */ - { 215, 0, 0}, /* T38_IND_V33_12000_TRAINING */ - { 215, 0, 0} /* T38_IND_V33_14400_TRAINING */ - }; + t31_state_t *s; - fe = &s->t38_fe; - if (fe->current_rx_type == T30_MODEM_DONE || fe->current_tx_type == T30_MODEM_DONE) - return TRUE; + s = (t31_state_t *) user_data; + if (len <= 0) + { + s->hdlc_tx.len = -1; + } + else + { + s->t38_fe.hdlc_tx.extra_bits = extra_bits_in_stuffed_frame(msg, len); + bit_reverse(s->hdlc_tx.buf, msg, len); + s->hdlc_tx.len = len; + s->hdlc_tx.ptr = 0; + } +} +/*- End of function --------------------------------------------------------*/ - fe->samples += samples; - if (fe->timeout_rx_samples && fe->samples > fe->timeout_rx_samples) +static __inline__ int bits_to_us(t31_state_t *s, int bits) +{ + if (s->t38_fe.ms_per_tx_chunk == 0) + return 0; + return bits*1000000/s->t38_fe.tx_bit_rate; +} +/*- End of function --------------------------------------------------------*/ + +static void set_octets_per_data_packet(t31_state_t *s, int bit_rate) +{ + s->t38_fe.tx_bit_rate = bit_rate; + if (s->t38_fe.ms_per_tx_chunk == 0) { - span_log(&s->logging, SPAN_LOG_FLOW, "Timeout mid-receive\n"); - fe->timeout_rx_samples = 0; - /* TODO: report completion */ + s->t38_fe.octets_per_data_packet = MAX_OCTETS_PER_UNPACED_CHUNK; } - if (fe->timed_step == T38_TIMED_STEP_NONE) - return FALSE; - if (fe->samples < fe->next_tx_samples) - return FALSE; - /* Its time to send something */ - switch (fe->timed_step) + else { - case T38_TIMED_STEP_NON_ECM_MODEM: - /* Create a 75ms silence */ - if (fe->t38.current_tx_indicator != T38_IND_NO_SIGNAL) - t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); - fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_2; - fe->next_tx_samples += ms_to_samples(75); - break; - case T38_TIMED_STEP_NON_ECM_MODEM_2: - /* Switch on a fast modem, and give the training time to complete */ - t38_core_send_indicator(&fe->t38, fe->next_tx_indicator, fe->t38.indicator_tx_count); - fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_3; - fe->next_tx_samples += ms_to_samples(startup_time[fe->next_tx_indicator].training); - if (s->audio.modems.use_tep) - fe->next_tx_samples += ms_to_samples(startup_time[fe->next_tx_indicator].tep); - break; - case T38_TIMED_STEP_NON_ECM_MODEM_3: - /* Send a chunk of non-ECM image data */ - /* T.38 says it is OK to send the last of the non-ECM data in the signal end message. - However, I think the early versions of T.38 said the signal end message should not - contain data. Hopefully, following the current spec will not cause compatibility - issues. */ - /* Get a chunk of data */ - len = fe->octets_per_data_packet; - bit_reverse(buf, buf, len); - if (len < fe->octets_per_data_packet) - { - /* That's the end of the image data. Do a little padding now */ - memset(buf + len, 0, fe->octets_per_data_packet - len); - fe->trailer_bytes = 3*fe->octets_per_data_packet + len; - len = fe->octets_per_data_packet; - fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_4; - } - t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, DATA_TX_COUNT); - fe->next_tx_samples += ms_to_samples(fe->ms_per_tx_chunk); - break; - case T38_TIMED_STEP_NON_ECM_MODEM_4: - /* This pads the end of the data with some zeros. If we just stop abruptly - at the end of the EOLs, some ATAs fail to clean up properly before - shutting down their transmit modem, and the last few rows of the image - get corrupted. Simply delaying the no-signal message does not help for - all implentations. It often appears to be ignored. */ - len = fe->octets_per_data_packet; - fe->trailer_bytes -= len; - if (fe->trailer_bytes <= 0) + s->t38_fe.octets_per_data_packet = s->t38_fe.ms_per_tx_chunk*bit_rate/(8*1000); + /* Make sure we have a positive number (i.e. we didn't truncate to zero). */ + if (s->t38_fe.octets_per_data_packet < 1) + s->t38_fe.octets_per_data_packet = 1; + } +} +/*- End of function --------------------------------------------------------*/ + +static int stream_non_ecm(t31_state_t *s) +{ + t31_t38_front_end_state_t *fe; + uint8_t buf[MAX_OCTETS_PER_UNPACED_CHUNK + 50]; + int delay; + int len; + + fe = &s->t38_fe; + for (delay = 0; delay == 0; ) + { + switch (fe->timed_step) { - len += fe->trailer_bytes; + case T38_TIMED_STEP_NON_ECM_MODEM: + /* Create a 75ms silence */ + if (fe->t38.current_tx_indicator != T38_IND_NO_SIGNAL) + delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); + fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_2; + fe->next_tx_samples = fe->samples; + break; + case T38_TIMED_STEP_NON_ECM_MODEM_2: + /* Switch on a fast modem, and give the training time to complete */ + delay = t38_core_send_indicator(&fe->t38, fe->next_tx_indicator, fe->t38.indicator_tx_count); + fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_3; + break; + case T38_TIMED_STEP_NON_ECM_MODEM_3: + /* Send a chunk of non-ECM image data */ + /* T.38 says it is OK to send the last of the non-ECM data in the signal end message. + However, I think the early versions of T.38 said the signal end message should not + contain data. Hopefully, following the current spec will not cause compatibility + issues. */ + len = non_ecm_get_chunk(s, buf, fe->octets_per_data_packet); + if (len > 0) + bit_reverse(buf, buf, len); + if (len < fe->octets_per_data_packet) + { + /* That's the end of the image data. Do a little padding now */ + memset(buf + len, 0, fe->octets_per_data_packet - len); + fe->non_ecm_trailer_bytes = 3*fe->octets_per_data_packet + len; + len = fe->octets_per_data_packet; + fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_4; + } + t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, fe->t38.data_tx_count); + delay = bits_to_us(s, 8*len); + break; + case T38_TIMED_STEP_NON_ECM_MODEM_4: + /* This pads the end of the data with some zeros. If we just stop abruptly + at the end of the EOLs, some ATAs fail to clean up properly before + shutting down their transmit modem, and the last few rows of the image + are corrupted. Simply delaying the no-signal message does not help for + all implentations. It is usually ignored, which is probably the right + thing to do after receiving a message saying the signal has ended. */ + len = fe->octets_per_data_packet; + fe->non_ecm_trailer_bytes -= len; + if (fe->non_ecm_trailer_bytes <= 0) + { + len += fe->non_ecm_trailer_bytes; + memset(buf, 0, len); + t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, buf, len, fe->t38.data_end_tx_count); + fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_5; + /* Allow a bit more time than the data will take to play out, to ensure the far ATA does not + cut things short. */ + delay = bits_to_us(s, 8*len) + 60000; + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); + break; + } memset(buf, 0, len); - t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, buf, len, fe->data_end_tx_count); - fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_5; - fe->next_tx_samples += ms_to_samples(60); + t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, fe->t38.data_tx_count); + delay = bits_to_us(s, 8*len); break; + case T38_TIMED_STEP_NON_ECM_MODEM_5: + /* This should not be needed, since the message above indicates the end of the signal, but it + seems like it can improve compatibility with quirky implementations. */ + delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); + fe->timed_step = T38_TIMED_STEP_NONE; + return delay; } - memset(buf, 0, len); - t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, DATA_TX_COUNT); - fe->next_tx_samples += ms_to_samples(fe->ms_per_tx_chunk); - break; - case T38_TIMED_STEP_NON_ECM_MODEM_5: - /* This should not be needed, since the message above indicates the end of the signal, but it - seems like it can improve compatibility with quirky implementations. */ - t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); - fe->timed_step = T38_TIMED_STEP_NONE; - /* TODO: report send complete */ - break; - case T38_TIMED_STEP_HDLC_MODEM: - /* Send HDLC preambling */ - t38_core_send_indicator(&fe->t38, fe->next_tx_indicator, fe->t38.indicator_tx_count); - fe->next_tx_samples += ms_to_samples(startup_time[fe->next_tx_indicator].training + startup_time[fe->next_tx_indicator].flags); - if (s->audio.modems.use_tep) - fe->next_tx_samples += ms_to_samples(startup_time[fe->next_tx_indicator].tep); - fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_2; - break; - case T38_TIMED_STEP_HDLC_MODEM_2: - /* Send a chunk of HDLC data */ - i = s->hdlc_tx.len - s->hdlc_tx.ptr; - if (fe->octets_per_data_packet >= i) - { - /* The last part of the HDLC frame */ - if (fe->merge_tx_fields) - { - /* Copy the data, as we might be about to refill the buffer it is in */ - memcpy(buf, &s->hdlc_tx.buf[s->hdlc_tx.ptr], i); - data_fields[0].field_type = T38_FIELD_HDLC_DATA; - data_fields[0].field = buf; - data_fields[0].field_len = i; - - /* Now see about the next HDLC frame. This will tell us whether to send FCS_OK or FCS_OK_SIG_END */ - previous = fe->current_tx_data_type; - s->hdlc_tx.ptr = 0; - s->hdlc_tx.len = 0; - /* TODO: report completion */ - /* The above step should have got the next HDLC step ready - either another frame, or an instruction to stop transmission. */ - if (s->hdlc_tx.len < 0) + } + return delay; +} +/*- End of function --------------------------------------------------------*/ + +static int stream_hdlc(t31_state_t *s) +{ + t31_t38_front_end_state_t *fe; + uint8_t buf[MAX_OCTETS_PER_UNPACED_CHUNK + 50]; + t38_data_field_t data_fields[2]; + int previous; + int delay; + int i; + + fe = &s->t38_fe; + for (delay = 0; delay == 0; ) + { + switch (fe->timed_step) + { + case T38_TIMED_STEP_HDLC_MODEM: + /* Create a 75ms silence */ + if (fe->t38.current_tx_indicator != T38_IND_NO_SIGNAL) + delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_2; + fe->next_tx_samples = fe->samples + ms_to_samples(75); + break; + case T38_TIMED_STEP_HDLC_MODEM_2: + /* Send HDLC preambling */ + delay = t38_core_send_indicator(&fe->t38, fe->next_tx_indicator, fe->t38.indicator_tx_count); + delay += t38_core_send_flags_delay(&fe->t38, fe->next_tx_indicator); + at_put_response_code(&s->at_state, AT_RESPONSE_CODE_CONNECT); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3; + break; + case T38_TIMED_STEP_HDLC_MODEM_3: + /* Send a chunk of HDLC data */ + if (s->hdlc_tx.len == 0) + { + /* We don't have a frame ready yet, so wait a little */ + delay = MS_PER_TX_CHUNK*1000; + break; + } + i = s->hdlc_tx.len - s->hdlc_tx.ptr; + if (fe->octets_per_data_packet >= i) + { + /* The last part of an HDLC frame */ + if (fe->chunking_modes & T38_CHUNKING_MERGE_FCS_WITH_DATA) { - data_fields[1].field_type = T38_FIELD_HDLC_FCS_OK_SIG_END; - fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_4; + /* Copy the data, as we might be about to refill the buffer it is in */ + memcpy(buf, &s->hdlc_tx.buf[s->hdlc_tx.ptr], i); + data_fields[0].field_type = T38_FIELD_HDLC_DATA; + data_fields[0].field = buf; + data_fields[0].field_len = i; + + /* Now see about the next HDLC frame. This will tell us whether to send FCS_OK or FCS_OK_SIG_END */ + previous = fe->current_tx_data_type; + s->hdlc_tx.ptr = 0; + s->hdlc_tx.len = 0; + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); + if (s->hdlc_tx.final) + { + data_fields[1].field_type = T38_FIELD_HDLC_FCS_OK_SIG_END; + data_fields[1].field = NULL; + data_fields[1].field_len = 0; + t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, fe->t38.data_tx_count); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_5; + /* We add a bit of extra time here, as with some implementations + the carrier falling too abruptly causes data loss. */ + delay = bits_to_us(s, i*8 + fe->hdlc_tx.extra_bits) + 100000; + at_put_response_code(&s->at_state, AT_RESPONSE_CODE_OK); + t31_set_at_rx_mode(s, AT_MODE_OFFHOOK_COMMAND); + } + else + { + data_fields[1].field_type = T38_FIELD_HDLC_FCS_OK; + data_fields[1].field = NULL; + data_fields[1].field_len = 0; + t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, fe->t38.data_tx_count); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3; + delay = bits_to_us(s, i*8 + fe->hdlc_tx.extra_bits); + at_put_response_code(&s->at_state, AT_RESPONSE_CODE_CONNECT); + } } else { - data_fields[1].field_type = T38_FIELD_HDLC_FCS_OK; - fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_2; + t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &s->hdlc_tx.buf[s->hdlc_tx.ptr], i, fe->t38.data_tx_count); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_4; + delay = bits_to_us(s, i*8); } - data_fields[1].field = NULL; - data_fields[1].field_len = 0; - t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, DATA_TX_COUNT); + break; } - else + t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &s->hdlc_tx.buf[s->hdlc_tx.ptr], fe->octets_per_data_packet, fe->t38.data_tx_count); + s->hdlc_tx.ptr += fe->octets_per_data_packet; + delay = bits_to_us(s, fe->octets_per_data_packet*8); + break; + case T38_TIMED_STEP_HDLC_MODEM_4: + /* End of HDLC frame */ + previous = fe->current_tx_data_type; + s->hdlc_tx.ptr = 0; + s->hdlc_tx.len = 0; + if (s->hdlc_tx.final) { - t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &s->hdlc_tx.buf[s->hdlc_tx.ptr], i, DATA_TX_COUNT); - fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3; + /* End of transmission */ + s->hdlc_tx.len = 0; + s->hdlc_tx.final = FALSE; + t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK, NULL, 0, fe->t38.data_tx_count); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_5; + /* We add a bit of extra time here, as with some implementations + the carrier falling too abruptly causes data loss. */ + delay = bits_to_us(s, fe->hdlc_tx.extra_bits) + 100000; + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); + break; } - fe->next_tx_samples += ms_to_samples(fe->ms_per_tx_chunk); + /* Finish the current frame off, and prepare for the next one. */ + t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK, NULL, 0, fe->t38.data_tx_count); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3; + at_put_response_code(&s->at_state, AT_RESPONSE_CODE_CONNECT); + /* We should now wait enough time for everything to clear through an analogue modem at the far end. */ + delay = bits_to_us(s, fe->hdlc_tx.extra_bits); + if (s->hdlc_tx.len == 0) + span_log(&s->logging, SPAN_LOG_FLOW, "No new frame or end transmission condition.\n"); break; + case T38_TIMED_STEP_HDLC_MODEM_5: + /* Note that some boxes do not like us sending a T38_FIELD_HDLC_SIG_END at this point. + A T38_IND_NO_SIGNAL should always be OK. */ + t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_SIG_END, NULL, 0, fe->t38.data_end_tx_count); + delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); + fe->timed_step = T38_TIMED_STEP_NONE; + at_put_response_code(&s->at_state, AT_RESPONSE_CODE_OK); + t31_set_at_rx_mode(s, AT_MODE_OFFHOOK_COMMAND); + return 0; } - t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &s->hdlc_tx.buf[s->hdlc_tx.ptr], fe->octets_per_data_packet, DATA_TX_COUNT); - s->hdlc_tx.ptr += fe->octets_per_data_packet; - fe->next_tx_samples += ms_to_samples(fe->ms_per_tx_chunk); - break; - case T38_TIMED_STEP_HDLC_MODEM_3: - /* End of HDLC frame */ - previous = fe->current_tx_data_type; - s->hdlc_tx.ptr = 0; - s->hdlc_tx.len = 0; - /* TODO: report completion */ - /* The above step should have got the next HDLC step ready - either another frame, or an instruction to stop transmission. */ - if (s->hdlc_tx.len < 0) + } + return delay; +} +/*- End of function --------------------------------------------------------*/ + +static int stream_ced(t31_state_t *s) +{ + t31_t38_front_end_state_t *fe; + int delay; + + fe = &s->t38_fe; + for (delay = 0; delay == 0; ) + { + switch (fe->timed_step) { - t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK_SIG_END, NULL, 0, fe->data_end_tx_count); - fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_4; - fe->next_tx_samples += ms_to_samples(100); + case T38_TIMED_STEP_CED: + /* It seems common practice to start with a no signal indicator, though + this is not a specified requirement. Since we should be sending 200ms + of silence, starting the delay with a no signal indication makes sense. + We do need a 200ms delay, as that is a specification requirement. */ + fe->timed_step = T38_TIMED_STEP_CED_2; + delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); + delay = 200000; + fe->next_tx_samples = fe->samples; + break; + case T38_TIMED_STEP_CED_2: + /* Initial 200ms delay over. Send the CED indicator */ + fe->timed_step = T38_TIMED_STEP_CED_3; + delay = t38_core_send_indicator(&fe->t38, T38_IND_CED, fe->t38.indicator_tx_count); + fe->current_tx_data_type = T38_DATA_NONE; break; + case T38_TIMED_STEP_CED_3: + /* End of CED */ + fe->timed_step = T38_TIMED_STEP_NONE; + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); + return 0; } - t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK, NULL, 0, DATA_TX_COUNT); - if (s->hdlc_tx.len) - fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_2; - fe->next_tx_samples += ms_to_samples(fe->ms_per_tx_chunk); + } + return delay; +} +/*- End of function --------------------------------------------------------*/ + +static int stream_cng(t31_state_t *s) +{ + t31_t38_front_end_state_t *fe; + int delay; + + fe = &s->t38_fe; + for (delay = 0; delay == 0; ) + { + switch (fe->timed_step) + { + case T38_TIMED_STEP_CNG: + /* It seems common practice to start with a no signal indicator, though + this is not a specified requirement of the T.38 spec. Since we should + be sending 200ms of silence, according to T.30, starting that delay with + a no signal indication makes sense. */ + fe->timed_step = T38_TIMED_STEP_CNG_2; + delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); + delay = 200000; + fe->next_tx_samples = fe->samples; + break; + case T38_TIMED_STEP_CNG_2: + /* Initial short delay over. Send the CNG indicator. CNG persists until something + coming the other way interrupts it, or a long timeout controlled by the T.30 engine + expires. */ + fe->timed_step = T38_TIMED_STEP_NONE; + delay = t38_core_send_indicator(&fe->t38, T38_IND_CNG, fe->t38.indicator_tx_count); + fe->current_tx_data_type = T38_DATA_NONE; + return delay; + } + } + return delay; +} +/*- End of function --------------------------------------------------------*/ + +int t31_t38_send_timeout(t31_state_t *s, int samples) +{ + t31_t38_front_end_state_t *fe; + int delay; + + fe = &s->t38_fe; + if (fe->current_rx_type == T30_MODEM_DONE || fe->current_tx_type == T30_MODEM_DONE) + return TRUE; + + fe->samples += samples; + if (fe->timeout_rx_samples && fe->samples > fe->timeout_rx_samples) + { + span_log(&s->logging, SPAN_LOG_FLOW, "Timeout mid-receive\n"); + fe->timeout_rx_samples = 0; + front_end_status(s, T30_FRONT_END_RECEIVE_COMPLETE); + } + if (fe->timed_step == T38_TIMED_STEP_NONE) + return FALSE; + /* Wait until the right time comes along, unless we are working in "no delays" mode, while talking to an + IAF terminal. */ + if (fe->ms_per_tx_chunk && fe->samples < fe->next_tx_samples) + return FALSE; + /* Its time to send something */ + delay = 0; + switch (fe->timed_step & 0xFFF0) + { + case T38_TIMED_STEP_NON_ECM_MODEM: + delay = stream_non_ecm(s); break; - case T38_TIMED_STEP_HDLC_MODEM_4: - /* Note that some boxes do not like us sending a T38_FIELD_HDLC_SIG_END at this point. - A T38_IND_NO_SIGNAL should always be OK. */ - t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); - s->hdlc_tx.len = 0; - //t30_front_end_status(&(s->t30), T30_FRONT_END_SEND_STEP_COMPLETE); + case T38_TIMED_STEP_HDLC_MODEM: + delay = stream_hdlc(s); break; case T38_TIMED_STEP_CED: - /* It seems common practice to start with a no signal indicator, though - this is not a specified requirement. Since we should be sending 200ms - of silence, starting the delay with a no signal indication makes sense. - We do need a 200ms delay, as that is a specification requirement. */ - fe->timed_step = T38_TIMED_STEP_CED_2; - fe->next_tx_samples = fe->samples + ms_to_samples(200); - t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); - fe->current_tx_data_type = T38_DATA_NONE; - break; - case T38_TIMED_STEP_CED_2: - /* Initial 200ms delay over. Send the CED indicator */ - fe->next_tx_samples = fe->samples + ms_to_samples(3000); - fe->timed_step = T38_TIMED_STEP_PAUSE; - t38_core_send_indicator(&fe->t38, T38_IND_CED, fe->t38.indicator_tx_count); - fe->current_tx_data_type = T38_DATA_NONE; + delay = stream_ced(s); break; case T38_TIMED_STEP_CNG: - /* It seems common practice to start with a no signal indicator, though - this is not a specified requirement. Since we should be sending 200ms - of silence, starting the delay with a no signal indication makes sense. - We do need a 200ms delay, as that is a specification requirement. */ - fe->timed_step = T38_TIMED_STEP_CNG_2; - fe->next_tx_samples = fe->samples + ms_to_samples(200); - t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); - fe->current_tx_data_type = T38_DATA_NONE; - break; - case T38_TIMED_STEP_CNG_2: - /* Initial short delay over. Send the CNG indicator */ - fe->timed_step = T38_TIMED_STEP_NONE; - t38_core_send_indicator(&fe->t38, T38_IND_CNG, fe->t38.indicator_tx_count); - fe->current_tx_data_type = T38_DATA_NONE; + delay = stream_cng(s); break; case T38_TIMED_STEP_PAUSE: /* End of timed pause */ fe->timed_step = T38_TIMED_STEP_NONE; - //t30_front_end_status(&(s->t30), T30_FRONT_END_SEND_STEP_COMPLETE); + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); break; } + fe->next_tx_samples += us_to_samples(delay); return FALSE; } /*- End of function --------------------------------------------------------*/ @@ -682,7 +1003,10 @@ { t->at_state.rx_data[t->at_state.rx_data_bytes++] = DLE; t->at_state.rx_data[t->at_state.rx_data_bytes++] = ETX; - t->at_state.at_tx_handler(&t->at_state, t->at_state.at_tx_user_data, t->at_state.rx_data, t->at_state.rx_data_bytes); + t->at_state.at_tx_handler(&t->at_state, + t->at_state.at_tx_user_data, + t->at_state.rx_data, + t->at_state.rx_data_bytes); t->at_state.rx_data_bytes = 0; } restart_modem(t, T31_SILENCE_TX); @@ -726,7 +1050,10 @@ { s->at_state.rx_data[s->at_state.rx_data_bytes++] = DLE; s->at_state.rx_data[s->at_state.rx_data_bytes++] = ETX; - s->at_state.at_tx_handler(&s->at_state, s->at_state.at_tx_user_data, s->at_state.rx_data, s->at_state.rx_data_bytes); + s->at_state.at_tx_handler(&s->at_state, + s->at_state.at_tx_user_data, + s->at_state.rx_data, + s->at_state.rx_data_bytes); s->at_state.rx_data_bytes = 0; at_put_response_code(&s->at_state, AT_RESPONSE_CODE_NO_CARRIER); t31_set_at_rx_mode(s, AT_MODE_OFFHOOK_COMMAND); @@ -760,7 +1087,10 @@ s->at_state.rx_data[s->at_state.rx_data_bytes++] = (uint8_t) s->audio.current_byte; if (s->at_state.rx_data_bytes >= 250) { - s->at_state.at_tx_handler(&s->at_state, s->at_state.at_tx_user_data, s->at_state.rx_data, s->at_state.rx_data_bytes); + s->at_state.at_tx_handler(&s->at_state, + s->at_state.at_tx_user_data, + s->at_state.rx_data, + s->at_state.rx_data_bytes); s->at_state.rx_data_bytes = 0; } s->audio.bit_no = 0; @@ -769,6 +1099,32 @@ } /*- End of function --------------------------------------------------------*/ +static void non_ecm_put_chunk(void *user_data, const uint8_t buf[], int len) +{ + t31_state_t *s; + int i; + + s = (t31_state_t *) user_data; + /* Ignore any fractional bytes which may have accumulated */ + for (i = 0; i < len; i++) + { + if (buf[i] == DLE) + s->at_state.rx_data[s->at_state.rx_data_bytes++] = DLE; + s->at_state.rx_data[s->at_state.rx_data_bytes++] = buf[i]; + if (s->at_state.rx_data_bytes >= 250) + { + s->at_state.at_tx_handler(&s->at_state, + s->at_state.at_tx_user_data, + s->at_state.rx_data, + s->at_state.rx_data_bytes); + s->at_state.rx_data_bytes = 0; + } + } + s->audio.bit_no = 0; + s->audio.current_byte = 0; +} +/*- End of function --------------------------------------------------------*/ + static int non_ecm_get_bit(void *user_data) { t31_state_t *s; @@ -784,12 +1140,13 @@ if (s->tx.out_bytes > T31_TX_BUF_LEN - 1) { s->tx.out_bytes = T31_TX_BUF_LEN - 1; - fprintf(stderr, "End of transmit buffer reached!\n"); + span_log(&s->logging, SPAN_LOG_FLOW, "End of transmit buffer reached!\n"); } if (s->tx.holding) { - /* See if the buffer is approaching empty. It might be time to release flow control. */ - if (s->tx.out_bytes > 1024) + /* See if the buffer is approaching empty. It might be time to + release flow control. */ + if (s->tx.out_bytes > T31_TX_BUF_LOW_TIDE) { s->tx.holding = FALSE; /* Tell the application to release further data */ @@ -820,6 +1177,56 @@ } /*- End of function --------------------------------------------------------*/ +static int non_ecm_get_chunk(void *user_data, uint8_t buf[], int len) +{ + t31_state_t *s; + int i; + + s = (t31_state_t *) user_data; + for (i = 0; i < len; i++) + { + if (s->tx.out_bytes != s->tx.in_bytes) + { + /* There is real data available to send */ + buf[i] = s->tx.data[s->tx.out_bytes++]; + if (s->tx.out_bytes > T31_TX_BUF_LEN - 1) + { + s->tx.out_bytes = T31_TX_BUF_LEN - 1; + span_log(&s->logging, SPAN_LOG_FLOW, "End of transmit buffer reached!\n"); + } + if (s->tx.holding) + { + /* See if the buffer is approaching empty. It might be time to release flow control. */ + if (s->tx.out_bytes > T31_TX_BUF_LOW_TIDE) + { + s->tx.holding = FALSE; + /* Tell the application to release further data */ + at_modem_control(&s->at_state, AT_MODEM_CONTROL_CTS, (void *) 1); + } + } + s->tx.data_started = TRUE; + } + else + { + if (s->tx.final) + { + s->tx.final = FALSE; + /* This will put the modem into its shutdown sequence. When + it has finally shut down, an OK response will be sent. */ + //return SIG_STATUS_END_OF_DATA; + return i; + } + /* Fill with 0xFF bytes at the start of transmission, or 0x00 if we are in + the middle of transmission. This follows T.31 and T.30 practice. */ + buf[i] = (s->tx.data_started) ? 0x00 : 0xFF; + } + } + s->audio.bit_no = 0; + s->audio.current_byte = 0; + return len; +} +/*- End of function --------------------------------------------------------*/ + static void tone_detected(void *user_data, int on, int level, int delay) { t31_state_t *s; @@ -958,7 +1365,7 @@ } /*- End of function --------------------------------------------------------*/ -static void hdlc_accept(void *user_data, const uint8_t *msg, int len, int ok) +static void hdlc_accept_frame(void *user_data, const uint8_t *msg, int len, int ok) { t31_state_t *s; uint8_t buf[256]; @@ -1031,7 +1438,7 @@ static void t31_v21_rx(t31_state_t *s) { - hdlc_rx_init(&(s->audio.modems.hdlc_rx), FALSE, TRUE, HDLC_FRAMING_OK_THRESHOLD, hdlc_accept, s); + hdlc_rx_init(&(s->audio.modems.hdlc_rx), FALSE, TRUE, HDLC_FRAMING_OK_THRESHOLD, hdlc_accept_frame, s); s->at_state.ok_is_pending = FALSE; s->hdlc_tx.final = FALSE; s->hdlc_tx.len = 0; @@ -1044,7 +1451,7 @@ static int restart_modem(t31_state_t *s, int new_modem) { - int ind; + int use_hdlc; fax_modems_state_t *t; t = &s->audio.modems; @@ -1059,12 +1466,15 @@ s->rx_frame_received = FALSE; t->rx_handler = (span_rx_handler_t *) &span_dummy_rx; t->rx_user_data = NULL; + use_hdlc = FALSE; switch (s->modem) { case T31_CNG_TONE: if (s->t38_mode) { - t38_core_send_indicator(&s->t38_fe.t38, T38_IND_CNG, INDICATOR_TX_COUNT); + s->t38_fe.next_tx_samples = s->t38_fe.samples; + s->t38_fe.timed_step = T38_TIMED_STEP_CNG; + s->t38_fe.current_tx_data_type = T38_DATA_NONE; } else { @@ -1101,7 +1511,9 @@ case T31_CED_TONE: if (s->t38_mode) { - t38_core_send_indicator(&s->t38_fe.t38, T38_IND_CED, INDICATOR_TX_COUNT); + s->t38_fe.next_tx_samples = s->t38_fe.samples; + s->t38_fe.timed_step = T38_TIMED_STEP_CED; + s->t38_fe.current_tx_data_type = T38_DATA_NONE; } else { @@ -1115,7 +1527,11 @@ case T31_V21_TX: if (s->t38_mode) { - t38_core_send_indicator(&s->t38_fe.t38, T38_IND_V21_PREAMBLE, INDICATOR_TX_COUNT); + s->t38_fe.next_tx_indicator = T38_IND_V21_PREAMBLE; + s->t38_fe.current_tx_data_type = T38_DATA_V21; + use_hdlc = TRUE; + s->t38_fe.timed_step = (use_hdlc) ? T38_TIMED_STEP_HDLC_MODEM : T38_TIMED_STEP_NON_ECM_MODEM; + set_octets_per_data_packet(s, 300); } else { @@ -1149,20 +1565,24 @@ switch (s->bit_rate) { case 7200: - ind = (s->short_train) ? T38_IND_V17_7200_SHORT_TRAINING : T38_IND_V17_7200_LONG_TRAINING; + s->t38_fe.next_tx_indicator = (s->short_train) ? T38_IND_V17_7200_SHORT_TRAINING : T38_IND_V17_7200_LONG_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V17_7200; break; case 9600: - ind = (s->short_train) ? T38_IND_V17_9600_SHORT_TRAINING : T38_IND_V17_9600_LONG_TRAINING; + s->t38_fe.next_tx_indicator = (s->short_train) ? T38_IND_V17_9600_SHORT_TRAINING : T38_IND_V17_9600_LONG_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V17_9600; break; case 12000: - ind = (s->short_train) ? T38_IND_V17_12000_SHORT_TRAINING : T38_IND_V17_12000_LONG_TRAINING; + s->t38_fe.next_tx_indicator = (s->short_train) ? T38_IND_V17_12000_SHORT_TRAINING : T38_IND_V17_12000_LONG_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V17_12000; break; case 14400: - default: - ind = (s->short_train) ? T38_IND_V17_14400_SHORT_TRAINING : T38_IND_V17_14400_LONG_TRAINING; + s->t38_fe.next_tx_indicator = (s->short_train) ? T38_IND_V17_14400_SHORT_TRAINING : T38_IND_V17_14400_LONG_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V17_14400; break; } - t38_core_send_indicator(&s->t38_fe.t38, ind, INDICATOR_TX_COUNT); + set_octets_per_data_packet(s, s->bit_rate); + s->t38_fe.timed_step = (use_hdlc) ? T38_TIMED_STEP_HDLC_MODEM : T38_TIMED_STEP_NON_ECM_MODEM; } else { @@ -1192,14 +1612,16 @@ switch (s->bit_rate) { case 2400: - ind = T38_IND_V27TER_2400_TRAINING; + s->t38_fe.next_tx_indicator = T38_IND_V27TER_2400_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V27TER_2400; break; case 4800: - default: - ind = T38_IND_V27TER_4800_TRAINING; + s->t38_fe.next_tx_indicator = T38_IND_V27TER_4800_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V27TER_4800; break; } - t38_core_send_indicator(&s->t38_fe.t38, ind, INDICATOR_TX_COUNT); + set_octets_per_data_packet(s, s->bit_rate); + s->t38_fe.timed_step = (use_hdlc) ? T38_TIMED_STEP_HDLC_MODEM : T38_TIMED_STEP_NON_ECM_MODEM; } else { @@ -1229,14 +1651,16 @@ switch (s->bit_rate) { case 7200: - ind = T38_IND_V29_7200_TRAINING; + s->t38_fe.next_tx_indicator = T38_IND_V29_7200_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V29_7200; break; case 9600: - default: - ind = T38_IND_V29_9600_TRAINING; + s->t38_fe.next_tx_indicator = T38_IND_V29_9600_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V29_9600; break; } - t38_core_send_indicator(&s->t38_fe.t38, ind, INDICATOR_TX_COUNT); + set_octets_per_data_packet(s, s->bit_rate); + s->t38_fe.timed_step = (use_hdlc) ? T38_TIMED_STEP_HDLC_MODEM : T38_TIMED_STEP_NON_ECM_MODEM; } else { @@ -1264,6 +1688,9 @@ if (s->t38_mode) { t38_core_send_indicator(&s->t38_fe.t38, T38_IND_NO_SIGNAL, INDICATOR_TX_COUNT); + s->t38_fe.next_tx_samples = s->t38_fe.samples + ms_to_samples(700); + s->t38_fe.timed_step = T38_TIMED_STEP_PAUSE; + s->t38_fe.current_tx_data_type = T38_DATA_NONE; } else { @@ -1323,15 +1750,16 @@ s->dled = FALSE; if (stuffed[i] == ETX) { + s->hdlc_tx.final = (s->hdlc_tx.buf[1] & 0x10); if (s->t38_mode) { + send_hdlc(s, s->hdlc_tx.buf, s->hdlc_tx.len); } else { hdlc_tx_frame(&(s->audio.modems.hdlc_tx), s->hdlc_tx.buf, s->hdlc_tx.len); + s->hdlc_tx.len = 0; } - s->hdlc_tx.final = (s->hdlc_tx.buf[1] & 0x10); - s->hdlc_tx.len = 0; } else if (stuffed[i] == SUB) { @@ -1379,14 +1807,14 @@ if (s->tx.in_bytes > T31_TX_BUF_LEN - 1) { /* Oops. We hit the end of the buffer. Give up. Loose stuff. :-( */ - fprintf(stderr, "No room in buffer for new data!\n"); + span_log(&s->logging, SPAN_LOG_FLOW, "No room in buffer for new data!\n"); return; } } if (!s->tx.holding) { /* See if the buffer is approaching full. We might need to apply flow control. */ - if (s->tx.in_bytes > T31_TX_BUF_LEN - 1024) + if (s->tx.in_bytes > T31_TX_BUF_HIGH_TIDE) { s->tx.holding = TRUE; /* Tell the application to hold further data */ @@ -1417,7 +1845,10 @@ { /* Send a specified period of silence, to space transmissions. */ restart_modem(s, T31_SILENCE_TX); - silence_gen_alter(&(s->audio.modems.silence_gen), ms_to_samples(val*10)); + if (s->t38_mode) + s->t38_fe.next_tx_samples = s->t38_fe.samples + ms_to_samples(val*10); + else + silence_gen_alter(&(s->audio.modems.silence_gen), ms_to_samples(val*10)); s->at_state.transmit = TRUE; } else @@ -1426,7 +1857,15 @@ queue_flush(s->rx_queue); s->silence_awaited = ms_to_samples(val*10); t31_set_at_rx_mode(s, AT_MODE_DELIVERY); - restart_modem(s, T31_SILENCE_RX); + if (s->t38_mode) + { + at_put_response_code(&s->at_state, AT_RESPONSE_CODE_OK); + t31_set_at_rx_mode(s, AT_MODE_OFFHOOK_COMMAND); + } + else + { + restart_modem(s, T31_SILENCE_RX); + } } immediate_response = FALSE; span_log(&s->logging, SPAN_LOG_FLOW, "Silence %dms\n", val*10); @@ -1452,7 +1891,8 @@ if (new_transmit) { t31_set_at_rx_mode(s, AT_MODE_HDLC); - at_put_response_code(&s->at_state, AT_RESPONSE_CODE_CONNECT); + if (!s->t38_mode) + at_put_response_code(&s->at_state, AT_RESPONSE_CODE_CONNECT); } else { @@ -1495,61 +1935,85 @@ switch (val) { case 24: + s->t38_fe.next_tx_indicator = T38_IND_V27TER_2400_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V27TER_2400; new_modem = (new_transmit) ? T31_V27TER_TX : T31_V27TER_RX; s->short_train = FALSE; s->bit_rate = 2400; break; case 48: + s->t38_fe.next_tx_indicator = T38_IND_V27TER_4800_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V27TER_4800; new_modem = (new_transmit) ? T31_V27TER_TX : T31_V27TER_RX; s->short_train = FALSE; s->bit_rate = 4800; break; case 72: + s->t38_fe.next_tx_indicator = T38_IND_V29_7200_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V29_7200; new_modem = (new_transmit) ? T31_V29_TX : T31_V29_RX; s->short_train = FALSE; s->bit_rate = 7200; break; case 96: + s->t38_fe.next_tx_indicator = T38_IND_V29_9600_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V29_9600; new_modem = (new_transmit) ? T31_V29_TX : T31_V29_RX; s->short_train = FALSE; s->bit_rate = 9600; break; case 73: + s->t38_fe.next_tx_indicator = T38_IND_V17_7200_LONG_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V17_7200; new_modem = (new_transmit) ? T31_V17_TX : T31_V17_RX; s->short_train = FALSE; s->bit_rate = 7200; break; case 74: + s->t38_fe.next_tx_indicator = T38_IND_V17_7200_SHORT_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V17_7200; new_modem = (new_transmit) ? T31_V17_TX : T31_V17_RX; s->short_train = TRUE; s->bit_rate = 7200; break; case 97: + s->t38_fe.next_tx_indicator = T38_IND_V17_9600_LONG_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V17_9600; new_modem = (new_transmit) ? T31_V17_TX : T31_V17_RX; s->short_train = FALSE; s->bit_rate = 9600; break; case 98: + s->t38_fe.next_tx_indicator = T38_IND_V17_9600_SHORT_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V17_9600; new_modem = (new_transmit) ? T31_V17_TX : T31_V17_RX; s->short_train = TRUE; s->bit_rate = 9600; break; case 121: + s->t38_fe.next_tx_indicator = T38_IND_V17_12000_LONG_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V17_12000; new_modem = (new_transmit) ? T31_V17_TX : T31_V17_RX; s->short_train = FALSE; s->bit_rate = 12000; break; case 122: + s->t38_fe.next_tx_indicator = T38_IND_V17_12000_SHORT_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V17_12000; new_modem = (new_transmit) ? T31_V17_TX : T31_V17_RX; s->short_train = TRUE; s->bit_rate = 12000; break; case 145: + s->t38_fe.next_tx_indicator = T38_IND_V17_14400_LONG_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V17_14400; new_modem = (new_transmit) ? T31_V17_TX : T31_V17_RX; s->short_train = FALSE; s->bit_rate = 14400; break; case 146: + s->t38_fe.next_tx_indicator = T38_IND_V17_14400_SHORT_TRAINING; + s->t38_fe.current_tx_data_type = T38_DATA_V17_14400; new_modem = (new_transmit) ? T31_V17_TX : T31_V17_RX; s->short_train = TRUE; s->bit_rate = 14400; @@ -1766,7 +2230,7 @@ { s->use_tep = use_tep; - hdlc_rx_init(&s->hdlc_rx, FALSE, TRUE, HDLC_FRAMING_OK_THRESHOLD, hdlc_accept, user_data); + hdlc_rx_init(&s->hdlc_rx, FALSE, TRUE, HDLC_FRAMING_OK_THRESHOLD, hdlc_accept_frame, user_data); hdlc_tx_init(&s->hdlc_tx, FALSE, 2, FALSE, hdlc_tx_underflow, user_data); fsk_rx_init(&s->v21_rx, &preset_fsk_specs[FSK_V21CH2], TRUE, (put_bit_func_t) hdlc_rx_put_bit, &s->hdlc_rx); fsk_rx_signal_cutoff(&s->v21_rx, -39.09); @@ -1849,7 +2313,7 @@ s->audio.next_tx_handler = NULL; return 0; } - /* If there is nothing else to change to, so use zero length silence */ + /* There is nothing else to change to, so use zero length silence */ silence_gen_alter(&(s->audio.modems.silence_gen), 0); s->audio.modems.tx_handler = (span_tx_handler_t *) &silence_gen; s->audio.modems.tx_user_data = &(s->audio.modems.silence_gen); @@ -1870,40 +2334,7 @@ /* Allow for one change of tx handler within a block */ set_next_tx_type(s); if ((len += s->audio.modems.tx_handler(s->audio.modems.tx_user_data, amp + len, max_len - len)) < max_len) - { - switch (s->modem) - { - case T31_SILENCE_TX: - s->modem = T31_NONE; - at_put_response_code(&s->at_state, AT_RESPONSE_CODE_OK); - if (s->at_state.do_hangup) - { - at_modem_control(&s->at_state, AT_MODEM_CONTROL_HANGUP, NULL); - t31_set_at_rx_mode(s, AT_MODE_ONHOOK_COMMAND); - s->at_state.do_hangup = FALSE; - } - else - { - t31_set_at_rx_mode(s, AT_MODE_OFFHOOK_COMMAND); - } - break; - case T31_CED_TONE: - /* Go directly to V.21/HDLC transmit. */ - s->modem = T31_NONE; - restart_modem(s, T31_V21_TX); - t31_set_at_rx_mode(s, AT_MODE_HDLC); - break; - case T31_V21_TX: - case T31_V17_TX: - case T31_V27TER_TX: - case T31_V29_TX: - s->modem = T31_NONE; - at_put_response_code(&s->at_state, AT_RESPONSE_CODE_OK); - t31_set_at_rx_mode(s, AT_MODE_OFFHOOK_COMMAND); - restart_modem(s, T31_SILENCE_TX); - break; - } - } + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); } } if (s->audio.modems.transmit_on_idle) @@ -1933,7 +2364,9 @@ if (without_pacing) { /* Continuous streaming mode, as used for TPKT over TCP transport */ + /* Inhibit indicator packets */ s->t38_fe.t38.indicator_tx_count = 0; + s->t38_fe.t38.data_tx_count = 1; s->t38_fe.t38.data_end_tx_count = 1; s->t38_fe.ms_per_tx_chunk = 0; } @@ -1941,9 +2374,74 @@ { /* Paced streaming mode, as used for UDP transports */ s->t38_fe.t38.indicator_tx_count = INDICATOR_TX_COUNT; + s->t38_fe.t38.data_tx_count = DATA_TX_COUNT; s->t38_fe.t38.data_end_tx_count = DATA_END_TX_COUNT; s->t38_fe.ms_per_tx_chunk = MS_PER_TX_CHUNK; } + set_octets_per_data_packet(s, 300); +} +/*- End of function --------------------------------------------------------*/ + +void t31_set_mode(t31_state_t *s, int t38_mode) +{ + s->t38_mode = t38_mode; + span_log(&s->logging, SPAN_LOG_FLOW, "Mode set to %d\n", s->t38_mode); +} +/*- End of function --------------------------------------------------------*/ + +logging_state_t *t31_get_logging_state(t31_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + +t38_core_state_t *t31_get_t38_core_state(t31_state_t *s) +{ + return &s->t38_fe.t38; +} +/*- End of function --------------------------------------------------------*/ + +static int t31_t38_fe_init(t31_state_t *t, + t38_tx_packet_handler_t *tx_packet_handler, + void *tx_packet_user_data) +{ + t31_t38_front_end_state_t *s; + + s = &t->t38_fe; + + t38_core_init(&s->t38, + process_rx_indicator, + process_rx_data, + process_rx_missing, + (void *) t, + tx_packet_handler, + tx_packet_user_data); + s->t38.fastest_image_data_rate = 14400; + + s->timed_step = T38_TIMED_STEP_NONE; + //s->iaf = T30_IAF_MODE_T37 | T30_IAF_MODE_T38; + s->iaf = T30_IAF_MODE_T38; + + s->current_tx_data_type = T38_DATA_NONE; + s->next_tx_samples = 0; + s->chunking_modes = T38_CHUNKING_ALLOW_TEP_TIME; + + t->hdlc_tx.ptr = 0; + + hdlc_tx_init(&s->hdlc_tx_term, + FALSE, + 1, + FALSE, + NULL, + NULL); + hdlc_rx_init(&s->hdlc_rx_term, + FALSE, + TRUE, + 2, + NULL, + NULL); + + return 0; } /*- End of function --------------------------------------------------------*/ @@ -1999,13 +2497,9 @@ s->at_state.dte_inactivity_timeout = DEFAULT_DTE_TIMEOUT; if (tx_t38_packet_handler) { - t38_core_init(&s->t38_fe.t38, - process_rx_indicator, - process_rx_data, - process_rx_missing, - (void *) s, - tx_t38_packet_handler, - tx_t38_packet_user_data); + t31_t38_fe_init(s, + tx_t38_packet_handler, + tx_t38_packet_user_data); t31_set_t38_config(s, FALSE); } s->t38_mode = FALSE; Modified: freeswitch/trunk/libs/spandsp/src/t35.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t35.c (original) +++ freeswitch/trunk/libs/spandsp/src/t35.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t35.c,v 1.27 2008/05/13 13:17:23 steveu Exp $ + * $Id: t35.c,v 1.28 2009/01/05 13:48:31 steveu Exp $ */ /* @@ -57,7 +57,7 @@ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include Modified: freeswitch/trunk/libs/spandsp/src/t38_core.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t38_core.c (original) +++ freeswitch/trunk/libs/spandsp/src/t38_core.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_core.c,v 1.44 2008/07/02 14:48:26 steveu Exp $ + * $Id: t38_core.c,v 1.50 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -37,13 +37,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include #include @@ -53,8 +53,45 @@ #include "spandsp/bit_operations.h" #include "spandsp/t38_core.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/t38_core.h" + #define ACCEPTABLE_SEQ_NO_OFFSET 2000 +/* The times for training, the optional TEP, and the HDLC preamble, for all the modem options, in ms. + Note that the preamble for V.21 is 1s+-15%, and for the other modems is 200ms+100ms. */ +static const struct +{ + int tep; + int training; + int flags; +} modem_startup_time[] = +{ + { 0, 75000, 0}, /* T38_IND_NO_SIGNAL */ + { 0, 0, 0}, /* T38_IND_CNG */ + { 0, 3000000, 0}, /* T38_IND_CED */ + { 0, 0, 1000000}, /* T38_IND_V21_PREAMBLE */ /* TODO: 850ms should be OK for this, but it causes trouble with some ATAs. Why? */ + { 215000, 943000, 200000}, /* T38_IND_V27TER_2400_TRAINING */ + { 215000, 708000, 200000}, /* T38_IND_V27TER_4800_TRAINING */ + { 215000, 234000, 200000}, /* T38_IND_V29_7200_TRAINING */ + { 215000, 234000, 200000}, /* T38_IND_V29_9600_TRAINING */ + { 215000, 142000, 200000}, /* T38_IND_V17_7200_SHORT_TRAINING */ + { 215000, 1393000, 200000}, /* T38_IND_V17_7200_LONG_TRAINING */ + { 215000, 142000, 200000}, /* T38_IND_V17_9600_SHORT_TRAINING */ + { 215000, 1393000, 200000}, /* T38_IND_V17_9600_LONG_TRAINING */ + { 215000, 142000, 200000}, /* T38_IND_V17_12000_SHORT_TRAINING */ + { 215000, 1393000, 200000}, /* T38_IND_V17_12000_LONG_TRAINING */ + { 215000, 142000, 200000}, /* T38_IND_V17_14400_SHORT_TRAINING */ + { 215000, 1393000, 200000}, /* T38_IND_V17_14400_LONG_TRAINING */ + { 215000, 0, 0}, /* T38_IND_V8_ANSAM */ + { 215000, 0, 0}, /* T38_IND_V8_SIGNAL */ + { 215000, 0, 0}, /* T38_IND_V34_CNTL_CHANNEL_1200 */ + { 215000, 0, 0}, /* T38_IND_V34_PRI_CHANNEL */ + { 215000, 0, 0}, /* T38_IND_V34_CC_RETRAIN */ + { 215000, 0, 0}, /* T38_IND_V33_12000_TRAINING */ + { 215000, 0, 0} /* T38_IND_V33_14400_TRAINING */ +}; + const char *t38_indicator_to_str(int indicator) { switch (indicator) @@ -368,12 +405,17 @@ } s->rx_expected_seq_no = seq_no; } - s->rx_expected_seq_no = (s->rx_expected_seq_no + 1) & 0xFFFF; - } - else - { - s->rx_expected_seq_no++; } + /* The sequence numbering is defined as rolling from 0xFFFF to 0x0000. Some implementations + of T.38 roll from 0xFFFF to 0x0001. Isn't standardisation a wonderful thing? The T.38 + document specifies only a small fraction of what it should, yet then they actually nail + something properly, people ignore it. Developers in this industry truly deserves the **** + **** **** **** **** **** documents they have to live with. Anyway, when the far end has a + broken rollover behaviour we will get a hiccup at the rollover point. Don't worry too + much. We will just treat the message in progress as one with some missing data. With any + luck a retry will ride over the problem. Rollovers don't occur that often. It takes quite + a few FAX pages to reach rollover. */ + s->rx_expected_seq_no = (s->rx_expected_seq_no + 1) & 0xFFFF; data_field_present = (buf[0] >> 7) & 1; type = (buf[0] >> 6) & 1; ptr = 0; @@ -739,22 +781,37 @@ { uint8_t buf[100]; int len; + int delay; - /* Zero is a valid count, to suppress the transmission of indicators when the - transport is TCP. */ - if (count) + delay = 0; + /* Only send an indicator if it represents a change of state. */ + if (s->current_tx_indicator != indicator) { - if ((len = t38_encode_indicator(s, buf, indicator)) < 0) + /* Zero is a valid count, to suppress the transmission of indicators when the + transport means they are not needed - e.g. TPKT/TCP. */ + if (count) { - span_log(&s->logging, SPAN_LOG_FLOW, "T.38 indicator len is %d\n", len); - return len; + if ((len = t38_encode_indicator(s, buf, indicator)) < 0) + { + span_log(&s->logging, SPAN_LOG_FLOW, "T.38 indicator len is %d\n", len); + return len; + } + span_log(&s->logging, SPAN_LOG_FLOW, "Tx %5d: indicator %s\n", s->tx_seq_no, t38_indicator_to_str(indicator)); + s->tx_packet_handler(s, s->tx_packet_user_data, buf, len, count); + s->tx_seq_no = (s->tx_seq_no + 1) & 0xFFFF; + delay = modem_startup_time[indicator].training; + if (s->allow_for_tep) + delay += modem_startup_time[indicator].tep; } - span_log(&s->logging, SPAN_LOG_FLOW, "Tx %5d: indicator %s\n", s->tx_seq_no, t38_indicator_to_str(indicator)); - s->tx_packet_handler(s, s->tx_packet_user_data, buf, len, count); - s->tx_seq_no = (s->tx_seq_no + 1) & 0xFFFF; + s->current_tx_indicator = indicator; } - s->current_tx_indicator = indicator; - return 0; + return delay; +} +/*- End of function --------------------------------------------------------*/ + +int t38_core_send_flags_delay(t38_core_state_t *s, int indicator) +{ + return modem_startup_time[indicator].flags; } /*- End of function --------------------------------------------------------*/ @@ -848,12 +905,24 @@ } /*- End of function --------------------------------------------------------*/ +void t38_set_tep_handling(t38_core_state_t *s, int allow_for_tep) +{ + s->allow_for_tep = allow_for_tep; +} +/*- End of function --------------------------------------------------------*/ + int t38_get_fastest_image_data_rate(t38_core_state_t *s) { return s->fastest_image_data_rate; } /*- End of function --------------------------------------------------------*/ +logging_state_t *t38_core_get_logging_state(t38_core_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + t38_core_state_t *t38_core_init(t38_core_state_t *s, t38_rx_indicator_handler_t *rx_indicator_handler, t38_rx_data_handler_t *rx_data_handler, @@ -871,8 +940,9 @@ span_log_init(&s->logging, SPAN_LOG_NONE, NULL); span_log_set_protocol(&s->logging, "T.38"); - span_log(&s->logging, SPAN_LOG_FLOW, "Start tx document\n"); - s->data_rate_management_method = 2; + /* Set some defaults for the parameters configurable from outside the + T.38 domain - e.g. from SDP data. */ + s->data_rate_management_method = T38_DATA_RATE_MANAGEMENT_TRANSFERRED_TCF; s->data_transport_protocol = T38_TRANSPORT_UDPTL; s->fill_bit_removal = FALSE; s->mmr_transcoding = FALSE; @@ -882,10 +952,16 @@ s->t38_version = 0; s->check_sequence_numbers = TRUE; + /* Set the initial current receive states to something invalid, so the + first data received is seen as a change of state. */ s->current_rx_indicator = -1; s->current_rx_data_type = -1; s->current_rx_field_type = -1; + /* Set the initial current indicator state to something invalid, so the + first attempt to send an indicator will work. */ + s->current_tx_indicator = -1; + s->rx_indicator_handler = rx_indicator_handler; s->rx_data_handler = rx_data_handler; s->rx_missing_handler = rx_missing_handler; @@ -893,6 +969,9 @@ s->tx_packet_handler = tx_packet_handler; s->tx_packet_user_data = tx_packet_user_data; + /* We have no initial expectation of the received packet sequence number. + They most often start at 0 or 1 for a UDPTL transport, but random + starting numbers are possible. */ s->rx_expected_seq_no = -1; return s; } Modified: freeswitch/trunk/libs/spandsp/src/t38_gateway.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t38_gateway.c (original) +++ freeswitch/trunk/libs/spandsp/src/t38_gateway.c Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_gateway.c,v 1.142 2008/09/07 12:45:17 steveu Exp $ + * $Id: t38_gateway.c,v 1.151 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -38,13 +38,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #if defined(LOG_FAX_AUDIO) #include @@ -65,12 +65,12 @@ #include "spandsp/hdlc.h" #include "spandsp/silence_gen.h" #include "spandsp/fsk.h" -#include "spandsp/v29rx.h" #include "spandsp/v29tx.h" -#include "spandsp/v27ter_rx.h" +#include "spandsp/v29rx.h" #include "spandsp/v27ter_tx.h" -#include "spandsp/v17rx.h" +#include "spandsp/v27ter_rx.h" #include "spandsp/v17tx.h" +#include "spandsp/v17rx.h" #include "spandsp/super_tone_rx.h" #include "spandsp/modem_connect_tones.h" #include "spandsp/t4.h" @@ -78,12 +78,28 @@ #include "spandsp/t35.h" #include "spandsp/t30.h" #include "spandsp/t30_logging.h" - #include "spandsp/fax_modems.h" #include "spandsp/t38_core.h" #include "spandsp/t38_non_ecm_buffer.h" #include "spandsp/t38_gateway.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/fsk.h" +#include "spandsp/private/v17tx.h" +#include "spandsp/private/v17rx.h" +#include "spandsp/private/v27ter_tx.h" +#include "spandsp/private/v27ter_rx.h" +#include "spandsp/private/v29tx.h" +#include "spandsp/private/v29rx.h" +#include "spandsp/private/modem_connect_tones.h" +#include "spandsp/private/hdlc.h" +#include "spandsp/private/fax_modems.h" +#include "spandsp/private/t4.h" +#include "spandsp/private/t30.h" +#include "spandsp/private/t38_core.h" +#include "spandsp/private/t38_non_ecm_buffer.h" +#include "spandsp/private/t38_gateway.h" + /* This is the target time per transmission chunk. The actual packet timing will sync to the data octets. */ #define MS_PER_TX_CHUNK 30 @@ -127,6 +143,15 @@ FLAG_DATA = 0x200 }; +enum +{ + TCF_MODE_PREDICTABLE_MODEM_START_OFF = 0, + TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED, + TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_SEEN, + TCF_MODE_PREDICTABLE_MODEM_START_PAST_V21_MODEM, + TCF_MODE_PREDICTABLE_MODEM_START_BEGIN +}; + #define MAX_NSX_SUPPRESSION 10 #define HDLC_FRAMING_OK_THRESHOLD 5 @@ -399,7 +424,7 @@ } else { - span_log(&s->logging, SPAN_LOG_FLOW, "non-ECM mode\n"); + span_log(&s->logging, SPAN_LOG_FLOW, "Non-ECM mode\n"); get_bit_func = t38_non_ecm_buffer_get_bit; get_bit_user_data = (void *) &s->core.non_ecm_to_modem; } @@ -643,6 +668,18 @@ } /*endswitch*/ break; + case 4: + switch (buf[2]) + { + case T30_DIS: + /* Make sure the V.8 capability doesn't pass through. If it + did then two V.34 capable FAX machines might start some + V.8 re-negotiation. */ + buf[3] &= ~DISBIT6; + break; + } + /*endswitch*/ + break; case 5: switch (buf[2]) { @@ -750,7 +787,7 @@ if (len < 3) return; /*endif*/ - s->core.tcf_mode_predictable_modem_start = 0; + s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_OFF; switch (buf[2]) { case T30_CFR: @@ -807,7 +844,7 @@ s->core.image_data_mode = FALSE; s->core.short_train = FALSE; if (from_modem) - s->core.tcf_mode_predictable_modem_start = 2; + s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_BEGIN; /*endif*/ break; case T30_PPS: @@ -1007,11 +1044,15 @@ if (hdlc_buf->contents != (data_type | FLAG_DATA)) { queue_missing_indicator(s, data_type); + /* All real HDLC messages in the FAX world start with 0xFF. If this one is not starting + with 0xFF it would appear some octets must have been missed before this one. */ + if (len <= 0 || buf[0] != 0xFF) + s->core.hdlc_to_modem.buf[s->core.hdlc_to_modem.in].flags |= HDLC_FLAG_MISSING_DATA; hdlc_buf = &s->core.hdlc_to_modem.buf[s->core.hdlc_to_modem.in]; } /*endif*/ /* Check if this data would overflow the buffer. */ - if (hdlc_buf->len + len > T38_MAX_HDLC_LEN) + if (len <= 0 || hdlc_buf->len + len > T38_MAX_HDLC_LEN) break; /*endif*/ hdlc_buf->contents = (data_type | FLAG_DATA); @@ -1275,7 +1316,8 @@ queue_missing_indicator(s, data_type); hdlc_buf = &s->core.hdlc_to_modem.buf[s->core.hdlc_to_modem.in]; } - t38_non_ecm_buffer_inject(&s->core.non_ecm_to_modem, buf, len); + if (len > 0) + t38_non_ecm_buffer_inject(&s->core.non_ecm_to_modem, buf, len); xx->corrupt_current_frame[0] = FALSE; break; case T38_FIELD_T4_NON_ECM_SIG_END: @@ -1486,31 +1528,36 @@ t38_gateway_state_t *s; s = (t38_gateway_state_t *) user_data; + span_log(&s->logging, SPAN_LOG_FLOW, "Non-ECM signal status is %s (%d)\n", signal_status_to_str(status), status); switch (status) { case SIG_STATUS_TRAINING_IN_PROGRESS: - span_log(&s->logging, SPAN_LOG_FLOW, "Non-ECM carrier training in progress\n"); - if (s->core.tcf_mode_predictable_modem_start) - s->core.tcf_mode_predictable_modem_start = 0; - else + if (s->core.tcf_mode_predictable_modem_start == TCF_MODE_PREDICTABLE_MODEM_START_OFF) + { announce_training(s); + } + else + { + if (s->core.tcf_mode_predictable_modem_start == TCF_MODE_PREDICTABLE_MODEM_START_PAST_V21_MODEM) + s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_SEEN; + else + s->core.samples_to_timeout = ms_to_samples(500); + set_fast_packetisation(s); + } break; case SIG_STATUS_TRAINING_FAILED: - span_log(&s->logging, SPAN_LOG_FLOW, "Non-ECM carrier training failed\n"); break; case SIG_STATUS_TRAINING_SUCCEEDED: /* The modem is now trained */ - span_log(&s->logging, SPAN_LOG_FLOW, "Non-ECM carrier trained\n"); s->audio.modems.rx_signal_present = TRUE; s->audio.modems.rx_trained = TRUE; + s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_OFF; + s->core.samples_to_timeout = 0; to_t38_buffer_init(&s->core.to_t38); break; case SIG_STATUS_CARRIER_UP: - span_log(&s->logging, SPAN_LOG_FLOW, "Non-ECM carrier up\n"); break; case SIG_STATUS_CARRIER_DOWN: - span_log(&s->logging, SPAN_LOG_FLOW, "Non-ECM carrier down\n"); - s->core.tcf_mode_predictable_modem_start = 0; switch (s->t38x.current_tx_data_type) { case T38_DATA_V17_7200: @@ -1521,8 +1568,13 @@ case T38_DATA_V27TER_4800: case T38_DATA_V29_7200: case T38_DATA_V29_9600: - non_ecm_push_residue(s); - t38_core_send_indicator(&s->t38x.t38, T38_IND_NO_SIGNAL, s->t38x.t38.indicator_tx_count); + if (s->core.tcf_mode_predictable_modem_start != TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED) + { + /* TODO: If the carrier really did fall for good during the 500ms TEP blocking timeout, we + won't declare the no-signal condition. */ + non_ecm_push_residue(s); + t38_core_send_indicator(&s->t38x.t38, T38_IND_NO_SIGNAL, s->t38x.t38.indicator_tx_count); + } restart_rx_modem(s); break; } @@ -1653,7 +1705,7 @@ t38_gateway_state_t *s; s = (t38_gateway_state_t *) t->user_data; - span_log(&s->logging, SPAN_LOG_FLOW, "HDLC carrier status is %s (%d)\n", signal_status_to_str(status), status); + span_log(&s->logging, SPAN_LOG_FLOW, "HDLC signal status is %s (%d)\n", signal_status_to_str(status), status); switch (status) { case SIG_STATUS_TRAINING_IN_PROGRESS: @@ -1686,14 +1738,15 @@ t->framing_ok_announced = FALSE; } restart_rx_modem(s); - if (s->core.tcf_mode_predictable_modem_start == 2) + if (s->core.tcf_mode_predictable_modem_start == TCF_MODE_PREDICTABLE_MODEM_START_BEGIN) { /* If we are doing TCF, we need to announce the fast carrier training very quickly, to ensure it starts 75+-20ms after the HDLC carrier ends. Waiting until it trains will be too late. We need to announce the fast modem a fixed time after - the end of the V.21 carrier, in anticipation of its arrival. */ + the end of the V.21 carrier, in anticipation of its arrival. If we announce it, + and it doesn't arrive, we will worry about that later. */ s->core.samples_to_timeout = ms_to_samples(75); - s->core.tcf_mode_predictable_modem_start = 1; + s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_PAST_V21_MODEM; } break; default: @@ -1975,9 +2028,25 @@ { if ((s->core.samples_to_timeout -= len) <= 0) { - if (s->core.tcf_mode_predictable_modem_start == 1) + switch (s->core.tcf_mode_predictable_modem_start) + { + case TCF_MODE_PREDICTABLE_MODEM_START_PAST_V21_MODEM: + /* Timed announcement of training, 75ms after the DCS carrier fell. */ + s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED; announce_training(s); - /*endif*/ + break; + case TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_SEEN: + /* Timed announcement of training, 75ms after the DCS carrier fell. */ + /* Use a timeout to ride over TEP, if it is present */ + s->core.samples_to_timeout = ms_to_samples(500); + announce_training(s); + break; + case TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED: + s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_OFF; + span_log(&s->logging, SPAN_LOG_FLOW, "TEP jamming expired\n"); + break; + } + /*endswitch*/ } /*endif*/ } @@ -2044,6 +2113,18 @@ } /*- End of function --------------------------------------------------------*/ +t38_core_state_t *t38_gateway_get_t38_core_state(t38_gateway_state_t *s) +{ + return &s->t38x.t38; +} +/*- End of function --------------------------------------------------------*/ + +logging_state_t *t38_gateway_get_logging_state(t38_gateway_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + void t38_gateway_set_ecm_capability(t38_gateway_state_t *s, int ecm_allowed) { s->core.ecm_allowed = ecm_allowed; Modified: freeswitch/trunk/libs/spandsp/src/t38_non_ecm_buffer.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t38_non_ecm_buffer.c (original) +++ freeswitch/trunk/libs/spandsp/src/t38_non_ecm_buffer.c Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_non_ecm_buffer.c,v 1.3 2008/09/07 12:45:17 steveu Exp $ + * $Id: t38_non_ecm_buffer.c,v 1.5 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -38,13 +38,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #if defined(LOG_FAX_AUDIO) #include @@ -56,9 +56,10 @@ #include "spandsp/dc_restore.h" #include "spandsp/bit_operations.h" #include "spandsp/async.h" - #include "spandsp/t38_non_ecm_buffer.h" +#include "spandsp/private/t38_non_ecm_buffer.h" + static void restart_buffer(t38_non_ecm_buffer_state_t *s) { /* This should be called when draining the buffer is complete, which should Modified: freeswitch/trunk/libs/spandsp/src/t38_terminal.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t38_terminal.c (original) +++ freeswitch/trunk/libs/spandsp/src/t38_terminal.c Tue Jan 27 22:48:03 2009 @@ -5,7 +5,7 @@ * * Written by Steve Underwood * - * Copyright (C) 2005, 2006 Steve Underwood + * Copyright (C) 2005, 2006, 2008 Steve Underwood * * All rights reserved. * @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_terminal.c,v 1.101 2008/09/07 12:45:17 steveu Exp $ + * $Id: t38_terminal.c,v 1.119 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -31,19 +31,19 @@ #include "config.h" #endif +#include #include #include -#include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include @@ -57,12 +57,12 @@ #include "spandsp/async.h" #include "spandsp/hdlc.h" #include "spandsp/fsk.h" -#include "spandsp/v29rx.h" #include "spandsp/v29tx.h" -#include "spandsp/v27ter_rx.h" +#include "spandsp/v29rx.h" #include "spandsp/v27ter_tx.h" -#include "spandsp/v17rx.h" +#include "spandsp/v27ter_rx.h" #include "spandsp/v17tx.h" +#include "spandsp/v17rx.h" #include "spandsp/t4.h" #include "spandsp/t30_fcf.h" #include "spandsp/t35.h" @@ -72,6 +72,12 @@ #include "spandsp/t38_core.h" #include "spandsp/t38_terminal.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/t4.h" +#include "spandsp/private/t30.h" +#include "spandsp/private/t38_core.h" +#include "spandsp/private/t38_terminal.h" + /* Settings suitable for paced transmission over a UDP transport */ #define MS_PER_TX_CHUNK 30 @@ -85,29 +91,46 @@ /* Backstop timeout if reception of packets stops in the middle of a burst */ #define MID_RX_TIMEOUT 15000 -#define T38_CHUNKING_MERGE_FCS_WITH_DATA 0x0001 -#define T38_CHUNKING_WHOLE_FRAMES 0x0002 -#define T38_CHUNKING_ALLOW_TEP_TIME 0x0004 +enum +{ + T38_CHUNKING_MERGE_FCS_WITH_DATA = 0x0001, + T38_CHUNKING_WHOLE_FRAMES = 0x0002, + T38_CHUNKING_ALLOW_TEP_TIME = 0x0004 +}; enum { T38_TIMED_STEP_NONE = 0, - T38_TIMED_STEP_NON_ECM_MODEM, - T38_TIMED_STEP_NON_ECM_MODEM_2, - T38_TIMED_STEP_NON_ECM_MODEM_3, - T38_TIMED_STEP_NON_ECM_MODEM_4, - T38_TIMED_STEP_NON_ECM_MODEM_5, - T38_TIMED_STEP_HDLC_MODEM, - T38_TIMED_STEP_HDLC_MODEM_2, - T38_TIMED_STEP_HDLC_MODEM_3, - T38_TIMED_STEP_HDLC_MODEM_4, - T38_TIMED_STEP_CED, - T38_TIMED_STEP_CED_2, - T38_TIMED_STEP_CNG, - T38_TIMED_STEP_CNG_2, - T38_TIMED_STEP_PAUSE + T38_TIMED_STEP_NON_ECM_MODEM = 0x10, + T38_TIMED_STEP_NON_ECM_MODEM_2 = 0x11, + T38_TIMED_STEP_NON_ECM_MODEM_3 = 0x12, + T38_TIMED_STEP_NON_ECM_MODEM_4 = 0x13, + T38_TIMED_STEP_NON_ECM_MODEM_5 = 0x14, + T38_TIMED_STEP_HDLC_MODEM = 0x20, + T38_TIMED_STEP_HDLC_MODEM_2 = 0x21, + T38_TIMED_STEP_HDLC_MODEM_3 = 0x22, + T38_TIMED_STEP_HDLC_MODEM_4 = 0x23, + T38_TIMED_STEP_HDLC_MODEM_5 = 0x24, + T38_TIMED_STEP_CED = 0x30, + T38_TIMED_STEP_CED_2 = 0x31, + T38_TIMED_STEP_CED_3 = 0x32, + T38_TIMED_STEP_CNG = 0x40, + T38_TIMED_STEP_CNG_2 = 0x41, + T38_TIMED_STEP_PAUSE = 0x50 }; +static __inline__ void front_end_status(t38_terminal_state_t *s, int status) +{ + t30_front_end_status(&s->t30, status); +} +/*- End of function --------------------------------------------------------*/ + +static __inline__ void hdlc_accept_frame(t38_terminal_state_t *s, const uint8_t *msg, int len, int ok) +{ + t30_hdlc_accept(&s->t30, msg, len, ok); +} +/*- End of function --------------------------------------------------------*/ + static int extra_bits_in_stuffed_frame(const uint8_t buf[], int len) { int bitstream; @@ -119,7 +142,7 @@ bitstream = 0; ones = 0; stuffed = 0; - /* We should really append the CRC, and included the stuffed bits for that, to get + /* We should really append the CRC, and include the stuffed bits for that, to get the exact number of bits in the frame. */ //len = crc_itu16_append(buf, len); for (i = 0; i < len; i++) @@ -191,23 +214,27 @@ && (fe->current_rx_type == T30_MODEM_V21 || fe->current_rx_type == T30_MODEM_CNG)) { - t30_hdlc_accept(&s->t30, NULL, SIG_STATUS_CARRIER_DOWN, TRUE); + hdlc_accept_frame(s, NULL, SIG_STATUS_CARRIER_DOWN, TRUE); } fe->timeout_rx_samples = 0; - t30_front_end_status(&s->t30, T30_FRONT_END_SIGNAL_ABSENT); + front_end_status(s, T30_FRONT_END_SIGNAL_ABSENT); break; case T38_IND_CNG: - case T38_IND_CED: /* We are completely indifferent to the startup tones. They serve no purpose for us. We can't even assume that the existance of a tone means the far end is achieving proper communication. Some T.38 gateways will just send out a CED or CNG indicator - without having seen anything from the far end FAX terminal. */ + without having seen anything from the far end FAX terminal. + Just report them for completeness. */ + front_end_status(s, T30_FRONT_END_CNG_PRESENT); + break; + case T38_IND_CED: + front_end_status(s, T30_FRONT_END_CED_PRESENT); break; case T38_IND_V21_PREAMBLE: /* Some T.38 implementations insert these preamble indicators between HDLC frames, so we need to be tolerant of that. */ fe->timeout_rx_samples = fe->samples + ms_to_samples(MID_RX_TIMEOUT); - t30_front_end_status(&s->t30, T30_FRONT_END_SIGNAL_PRESENT); + front_end_status(s, T30_FRONT_END_SIGNAL_PRESENT); break; case T38_IND_V27TER_2400_TRAINING: case T38_IND_V27TER_4800_TRAINING: @@ -226,7 +253,7 @@ /* We really don't care what kind of modem is delivering the following image data. We only care that some kind of fast modem signal is coming next. */ fe->timeout_rx_samples = fe->samples + ms_to_samples(MID_RX_TIMEOUT); - t30_front_end_status(&s->t30, T30_FRONT_END_SIGNAL_PRESENT); + front_end_status(s, T30_FRONT_END_SIGNAL_PRESENT); break; case T38_IND_V8_ANSAM: case T38_IND_V8_SIGNAL: @@ -234,10 +261,10 @@ case T38_IND_V34_PRI_CHANNEL: case T38_IND_V34_CC_RETRAIN: /* V.34 support is a work in progress. */ - t30_front_end_status(&s->t30, T30_FRONT_END_SIGNAL_PRESENT); + front_end_status(s, T30_FRONT_END_SIGNAL_PRESENT); break; default: - t30_front_end_status(&s->t30, T30_FRONT_END_SIGNAL_ABSENT); + front_end_status(s, T30_FRONT_END_SIGNAL_ABSENT); break; } fe->hdlc_rx.len = 0; @@ -251,7 +278,7 @@ t38_terminal_state_t *s; t38_terminal_front_end_state_t *fe; #if defined(_MSC_VER) - uint8_t *buf2 = alloca(len); + uint8_t *buf2 = (uint8_t *) alloca(len); #else uint8_t buf2[len]; #endif @@ -281,7 +308,6 @@ break; } #endif - switch (field_type) { case T38_FIELD_HDLC_DATA: @@ -291,13 +317,13 @@ there is zero packet lost. Nasty, but true. Its a good idea to be tolerant of loss, though, so accepting a sudden start of HDLC data is the right thing to do. */ fe->timeout_rx_samples = fe->samples + ms_to_samples(MID_RX_TIMEOUT); - t30_front_end_status(&s->t30, T30_FRONT_END_SIGNAL_PRESENT); + front_end_status(s, T30_FRONT_END_SIGNAL_PRESENT); /* All real HDLC messages in the FAX world start with 0xFF. If this one is not starting with 0xFF it would appear some octets must have been missed before this one. */ - if (buf[0] != 0xFF) + if (len <= 0 || buf[0] != 0xFF) fe->rx_data_missing = TRUE; } - if (fe->hdlc_rx.len + len <= T38_MAX_HDLC_LEN) + if (len > 0 && fe->hdlc_rx.len + len <= T38_MAX_HDLC_LEN) { bit_reverse(fe->hdlc_rx.buf + fe->hdlc_rx.len, buf, len); fe->hdlc_rx.len += len; @@ -317,7 +343,7 @@ if (t->current_rx_data_type != data_type || t->current_rx_field_type != field_type) { span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC OK (%s)\n", (fe->hdlc_rx.len >= 3) ? t30_frametype(fe->hdlc_rx.buf[2]) : "???", (fe->rx_data_missing) ? "missing octets" : "clean"); - t30_hdlc_accept(&s->t30, fe->hdlc_rx.buf, fe->hdlc_rx.len, !fe->rx_data_missing); + hdlc_accept_frame(s, fe->hdlc_rx.buf, fe->hdlc_rx.len, !fe->rx_data_missing); } fe->hdlc_rx.len = 0; fe->rx_data_missing = FALSE; @@ -336,7 +362,7 @@ if (t->current_rx_data_type != data_type || t->current_rx_field_type != field_type) { span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC bad (%s)\n", (fe->hdlc_rx.len >= 3) ? t30_frametype(fe->hdlc_rx.buf[2]) : "???", (fe->rx_data_missing) ? "missing octets" : "clean"); - t30_hdlc_accept(&s->t30, fe->hdlc_rx.buf, fe->hdlc_rx.len, FALSE); + hdlc_accept_frame(s, fe->hdlc_rx.buf, fe->hdlc_rx.len, FALSE); } fe->hdlc_rx.len = 0; fe->rx_data_missing = FALSE; @@ -355,8 +381,8 @@ if (t->current_rx_data_type != data_type || t->current_rx_field_type != field_type) { span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC OK, sig end (%s)\n", (fe->hdlc_rx.len >= 3) ? t30_frametype(fe->hdlc_rx.buf[2]) : "???", (fe->rx_data_missing) ? "missing octets" : "clean"); - t30_hdlc_accept(&s->t30, fe->hdlc_rx.buf, fe->hdlc_rx.len, !fe->rx_data_missing); - t30_hdlc_accept(&s->t30, NULL, SIG_STATUS_CARRIER_DOWN, TRUE); + hdlc_accept_frame(s, fe->hdlc_rx.buf, fe->hdlc_rx.len, !fe->rx_data_missing); + hdlc_accept_frame(s, NULL, SIG_STATUS_CARRIER_DOWN, TRUE); } fe->hdlc_rx.len = 0; fe->rx_data_missing = FALSE; @@ -375,8 +401,8 @@ if (t->current_rx_data_type != data_type || t->current_rx_field_type != field_type) { span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC bad, sig end (%s)\n", (fe->hdlc_rx.len >= 3) ? t30_frametype(fe->hdlc_rx.buf[2]) : "???", (fe->rx_data_missing) ? "missing octets" : "clean"); - t30_hdlc_accept(&s->t30, fe->hdlc_rx.buf, fe->hdlc_rx.len, FALSE); - t30_hdlc_accept(&s->t30, NULL, SIG_STATUS_CARRIER_DOWN, TRUE); + hdlc_accept_frame(s, fe->hdlc_rx.buf, fe->hdlc_rx.len, FALSE); + hdlc_accept_frame(s, NULL, SIG_STATUS_CARRIER_DOWN, TRUE); } fe->hdlc_rx.len = 0; fe->rx_data_missing = FALSE; @@ -403,7 +429,7 @@ fe->hdlc_rx.len = 0; fe->rx_data_missing = FALSE; fe->timeout_rx_samples = 0; - t30_front_end_status(&s->t30, T30_FRONT_END_RECEIVE_COMPLETE); + front_end_status(s, T30_FRONT_END_RECEIVE_COMPLETE); } break; case T38_FIELD_T4_NON_ECM_DATA: @@ -412,8 +438,11 @@ t30_non_ecm_put_bit(&s->t30, SIG_STATUS_TRAINING_SUCCEEDED); fe->rx_signal_present = TRUE; } - bit_reverse(buf2, buf, len); - t30_non_ecm_put_chunk(&s->t30, buf2, len); + if (len > 0) + { + bit_reverse(buf2, buf, len); + t30_non_ecm_put_chunk(&s->t30, buf2, len); + } fe->timeout_rx_samples = fe->samples + ms_to_samples(MID_RX_TIMEOUT); break; case T38_FIELD_T4_NON_ECM_SIG_END: @@ -436,7 +465,7 @@ they should send non-ECM signal end. It is possible they also do the opposite. We need to tolerate this, so we use the generic receive complete indication, rather than the specific non-ECM carrier down. */ - t30_front_end_status(&s->t30, T30_FRONT_END_RECEIVE_COMPLETE); + front_end_status(s, T30_FRONT_END_RECEIVE_COMPLETE); } fe->rx_signal_present = FALSE; fe->timeout_rx_samples = 0; @@ -484,88 +513,322 @@ s = (t38_terminal_state_t *) user_data; if (len <= 0) { - s->t38_fe.tx.len = -1; + s->t38_fe.hdlc_tx.len = -1; } else { - s->t38_fe.tx.extra_bits = extra_bits_in_stuffed_frame(msg, len); - bit_reverse(s->t38_fe.tx.buf, msg, len); - s->t38_fe.tx.len = len; - s->t38_fe.tx.ptr = 0; + s->t38_fe.hdlc_tx.extra_bits = extra_bits_in_stuffed_frame(msg, len); + bit_reverse(s->t38_fe.hdlc_tx.buf, msg, len); + s->t38_fe.hdlc_tx.len = len; + s->t38_fe.hdlc_tx.ptr = 0; } } /*- End of function --------------------------------------------------------*/ -static __inline__ int bits_to_samples(t38_terminal_state_t *s, int bits) +static __inline__ int bits_to_us(t38_terminal_state_t *s, int bits) { - /* This does not handle fractions properly, so they may accumulate. They - shouldn't be able to accumulate far enough to be troublesome. */ - /* TODO: Is the above statement accurate when sending a long string of - octets, one per IFP packet, at V.21 rate? */ if (s->t38_fe.ms_per_tx_chunk == 0) return 0; - return bits*8000/s->t38_fe.tx_bit_rate; + return bits*1000000/s->t38_fe.tx_bit_rate; } /*- End of function --------------------------------------------------------*/ static void set_octets_per_data_packet(t38_terminal_state_t *s, int bit_rate) { s->t38_fe.tx_bit_rate = bit_rate; - if (s->t38_fe.ms_per_tx_chunk == 0) - { - s->t38_fe.octets_per_data_packet = MAX_OCTETS_PER_UNPACED_CHUNK; - } - else + if (s->t38_fe.ms_per_tx_chunk) { s->t38_fe.octets_per_data_packet = s->t38_fe.ms_per_tx_chunk*bit_rate/(8*1000); /* Make sure we have a positive number (i.e. we didn't truncate to zero). */ if (s->t38_fe.octets_per_data_packet < 1) s->t38_fe.octets_per_data_packet = 1; } + else + { + s->t38_fe.octets_per_data_packet = MAX_OCTETS_PER_UNPACED_CHUNK; + } } /*- End of function --------------------------------------------------------*/ -int t38_terminal_send_timeout(t38_terminal_state_t *s, int samples) +static int stream_non_ecm(t38_terminal_state_t *s) { - int len; - int i; - int previous; + t38_terminal_front_end_state_t *fe; uint8_t buf[MAX_OCTETS_PER_UNPACED_CHUNK + 50]; + int delay; + int len; + + fe = &s->t38_fe; + for (delay = 0; delay == 0; ) + { + switch (fe->timed_step) + { + case T38_TIMED_STEP_NON_ECM_MODEM: + /* Create a 75ms silence */ + if (fe->t38.current_tx_indicator != T38_IND_NO_SIGNAL) + delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); + fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_2; + fe->next_tx_samples = fe->samples; + break; + case T38_TIMED_STEP_NON_ECM_MODEM_2: + /* Switch on a fast modem, and give the training time to complete */ + delay = t38_core_send_indicator(&fe->t38, fe->next_tx_indicator, fe->t38.indicator_tx_count); + fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_3; + break; + case T38_TIMED_STEP_NON_ECM_MODEM_3: + /* Send a chunk of non-ECM image data */ + /* T.38 says it is OK to send the last of the non-ECM data in the signal end message. + However, I think the early versions of T.38 said the signal end message should not + contain data. Hopefully, following the current spec will not cause compatibility + issues. */ + len = t30_non_ecm_get_chunk(&s->t30, buf, fe->octets_per_data_packet); + if (len > 0) + bit_reverse(buf, buf, len); + if (len < fe->octets_per_data_packet) + { + /* That's the end of the image data. Do a little padding now */ + memset(buf + len, 0, fe->octets_per_data_packet - len); + fe->non_ecm_trailer_bytes = 3*fe->octets_per_data_packet + len; + len = fe->octets_per_data_packet; + fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_4; + } + t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, fe->t38.data_tx_count); + delay = bits_to_us(s, 8*len); + break; + case T38_TIMED_STEP_NON_ECM_MODEM_4: + /* This pads the end of the data with some zeros. If we just stop abruptly + at the end of the EOLs, some ATAs fail to clean up properly before + shutting down their transmit modem, and the last few rows of the image + are corrupted. Simply delaying the no-signal message does not help for + all implentations. It is usually ignored, which is probably the right + thing to do after receiving a message saying the signal has ended. */ + len = fe->octets_per_data_packet; + fe->non_ecm_trailer_bytes -= len; + if (fe->non_ecm_trailer_bytes <= 0) + { + len += fe->non_ecm_trailer_bytes; + memset(buf, 0, len); + t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, buf, len, fe->t38.data_end_tx_count); + fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_5; + /* Allow a bit more time than the data will take to play out, to ensure the far ATA does not + cut things short. */ + delay = bits_to_us(s, 8*len) + 60000; + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); + break; + } + memset(buf, 0, len); + t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, fe->t38.data_tx_count); + delay = bits_to_us(s, 8*len); + break; + case T38_TIMED_STEP_NON_ECM_MODEM_5: + /* This should not be needed, since the message above indicates the end of the signal, but it + seems like it can improve compatibility with quirky implementations. */ + delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); + fe->timed_step = T38_TIMED_STEP_NONE; + return delay; + } + } + return delay; +} +/*- End of function --------------------------------------------------------*/ + +static int stream_hdlc(t38_terminal_state_t *s) +{ t38_terminal_front_end_state_t *fe; + uint8_t buf[MAX_OCTETS_PER_UNPACED_CHUNK + 50]; t38_data_field_t data_fields[2]; - /* The times for training, the optional TEP, and the HDLC preamble, for all the modem options, in ms. - Note that the preamble for V.21 is 1s+-15%, and for the other modems is 200ms+100ms. */ - static const struct - { - int tep; - int training; - int flags; - } startup_time[] = - { - { 0, 0, 0}, /* T38_IND_NO_SIGNAL */ - { 0, 0, 0}, /* T38_IND_CNG */ - { 0, 0, 0}, /* T38_IND_CED */ - { 0, 0, 1000}, /* T38_IND_V21_PREAMBLE */ /* TODO: 850ms should be OK for this, but it causes trouble with some ATAs. Why? */ - { 215, 943, 200}, /* T38_IND_V27TER_2400_TRAINING */ - { 215, 708, 200}, /* T38_IND_V27TER_4800_TRAINING */ - { 215, 234, 200}, /* T38_IND_V29_7200_TRAINING */ - { 215, 234, 200}, /* T38_IND_V29_9600_TRAINING */ - { 215, 142, 200}, /* T38_IND_V17_7200_SHORT_TRAINING */ - { 215, 1393, 200}, /* T38_IND_V17_7200_LONG_TRAINING */ - { 215, 142, 200}, /* T38_IND_V17_9600_SHORT_TRAINING */ - { 215, 1393, 200}, /* T38_IND_V17_9600_LONG_TRAINING */ - { 215, 142, 200}, /* T38_IND_V17_12000_SHORT_TRAINING */ - { 215, 1393, 200}, /* T38_IND_V17_12000_LONG_TRAINING */ - { 215, 142, 200}, /* T38_IND_V17_14400_SHORT_TRAINING */ - { 215, 1393, 200}, /* T38_IND_V17_14400_LONG_TRAINING */ - { 215, 0, 0}, /* T38_IND_V8_ANSAM */ - { 215, 0, 0}, /* T38_IND_V8_SIGNAL */ - { 215, 0, 0}, /* T38_IND_V34_CNTL_CHANNEL_1200 */ - { 215, 0, 0}, /* T38_IND_V34_PRI_CHANNEL */ - { 215, 0, 0}, /* T38_IND_V34_CC_RETRAIN */ - { 215, 0, 0}, /* T38_IND_V33_12000_TRAINING */ - { 215, 0, 0} /* T38_IND_V33_14400_TRAINING */ - }; + int previous; + int delay; + int i; + + fe = &s->t38_fe; + for (delay = 0; delay == 0; ) + { + switch (fe->timed_step) + { + case T38_TIMED_STEP_HDLC_MODEM: + /* Create a 75ms silence */ + if (fe->t38.current_tx_indicator != T38_IND_NO_SIGNAL) + delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_2; + fe->next_tx_samples = fe->samples; + break; + case T38_TIMED_STEP_HDLC_MODEM_2: + /* Send HDLC preambling */ + delay = t38_core_send_indicator(&fe->t38, fe->next_tx_indicator, fe->t38.indicator_tx_count); + delay += t38_core_send_flags_delay(&fe->t38, fe->next_tx_indicator); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3; + break; + case T38_TIMED_STEP_HDLC_MODEM_3: + /* Send a chunk of HDLC data */ + i = fe->hdlc_tx.len - fe->hdlc_tx.ptr; + if (fe->octets_per_data_packet >= i) + { + /* The last part of an HDLC frame */ + if (fe->chunking_modes & T38_CHUNKING_MERGE_FCS_WITH_DATA) + { + /* Copy the data, as we might be about to refill the buffer it is in */ + memcpy(buf, &fe->hdlc_tx.buf[fe->hdlc_tx.ptr], i); + data_fields[0].field_type = T38_FIELD_HDLC_DATA; + data_fields[0].field = buf; + data_fields[0].field_len = i; + + /* Now see about the next HDLC frame. This will tell us whether to send FCS_OK or FCS_OK_SIG_END */ + previous = fe->current_tx_data_type; + fe->hdlc_tx.ptr = 0; + fe->hdlc_tx.len = 0; + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); + /* The above step should have got the next HDLC step ready - either another frame, or an instruction to stop transmission. */ + if (fe->hdlc_tx.len < 0) + { + data_fields[1].field_type = T38_FIELD_HDLC_FCS_OK_SIG_END; + data_fields[1].field = NULL; + data_fields[1].field_len = 0; + t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, fe->t38.data_tx_count); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_5; + /* We add a bit of extra time here, as with some implementations + the carrier falling too abruptly causes data loss. */ + delay = bits_to_us(s, i*8 + fe->hdlc_tx.extra_bits) + 100000; + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); + } + else + { + data_fields[1].field_type = T38_FIELD_HDLC_FCS_OK; + data_fields[1].field = NULL; + data_fields[1].field_len = 0; + t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, fe->t38.data_tx_count); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3; + delay = bits_to_us(s, i*8 + fe->hdlc_tx.extra_bits); + } + } + else + { + t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &fe->hdlc_tx.buf[fe->hdlc_tx.ptr], i, fe->t38.data_tx_count); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_4; + delay = bits_to_us(s, i*8); + } + break; + } + t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &fe->hdlc_tx.buf[fe->hdlc_tx.ptr], fe->octets_per_data_packet, fe->t38.data_tx_count); + fe->hdlc_tx.ptr += fe->octets_per_data_packet; + delay = bits_to_us(s, fe->octets_per_data_packet*8); + break; + case T38_TIMED_STEP_HDLC_MODEM_4: + /* End of HDLC frame */ + previous = fe->current_tx_data_type; + fe->hdlc_tx.ptr = 0; + fe->hdlc_tx.len = 0; + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); + /* The above step should have got the next HDLC step ready - either another frame, or an instruction to stop transmission. */ + if (fe->hdlc_tx.len < 0) + { + /* End of transmission */ + t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK_SIG_END, NULL, 0, fe->t38.data_end_tx_count); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_5; + /* We add a bit of extra time here, as with some implementations + the carrier falling too abruptly causes data loss. */ + delay = bits_to_us(s, fe->hdlc_tx.extra_bits) + 100000; + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); + break; + } + if (fe->hdlc_tx.len == 0) + { + /* Now, how did we get here? We have finished a frame, but have no new frame to + send, and no end of transmission condition. */ + span_log(&s->logging, SPAN_LOG_FLOW, "No new frame or end transmission condition.\n"); + } + /* Finish the current frame off, and prepare for the next one. */ + t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK, NULL, 0, fe->t38.data_tx_count); + fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3; + /* We should now wait enough time for everything to clear through an analogue modem at the far end. */ + delay = bits_to_us(s, fe->hdlc_tx.extra_bits); + break; + case T38_TIMED_STEP_HDLC_MODEM_5: + /* Note that some boxes do not like us sending a T38_FIELD_HDLC_SIG_END at this point. + A T38_IND_NO_SIGNAL should always be OK. */ + delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); + fe->timed_step = T38_TIMED_STEP_NONE; + return delay; + } + } + return delay; +} +/*- End of function --------------------------------------------------------*/ + +static int stream_ced(t38_terminal_state_t *s) +{ + t38_terminal_front_end_state_t *fe; + int delay; + + fe = &s->t38_fe; + for (delay = 0; delay == 0; ) + { + switch (fe->timed_step) + { + case T38_TIMED_STEP_CED: + /* It seems common practice to start with a no signal indicator, though + this is not a specified requirement. Since we should be sending 200ms + of silence, starting the delay with a no signal indication makes sense. + We do need a 200ms delay, as that is a specification requirement. */ + fe->timed_step = T38_TIMED_STEP_CED_2; + delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); + delay = 200000; + fe->next_tx_samples = fe->samples; + break; + case T38_TIMED_STEP_CED_2: + /* Initial 200ms delay over. Send the CED indicator */ + fe->timed_step = T38_TIMED_STEP_CED_3; + delay = t38_core_send_indicator(&fe->t38, T38_IND_CED, fe->t38.indicator_tx_count); + fe->current_tx_data_type = T38_DATA_NONE; + break; + case T38_TIMED_STEP_CED_3: + /* End of CED */ + fe->timed_step = T38_TIMED_STEP_NONE; + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); + return 0; + } + } + return delay; +} +/*- End of function --------------------------------------------------------*/ + +static int stream_cng(t38_terminal_state_t *s) +{ + t38_terminal_front_end_state_t *fe; + int delay; + + fe = &s->t38_fe; + for (delay = 0; delay == 0; ) + { + switch (fe->timed_step) + { + case T38_TIMED_STEP_CNG: + /* It seems common practice to start with a no signal indicator, though + this is not a specified requirement of the T.38 spec. Since we should + be sending 200ms of silence, according to T.30, starting that delay with + a no signal indication makes sense. */ + fe->timed_step = T38_TIMED_STEP_CNG_2; + delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); + delay = 200000; + fe->next_tx_samples = fe->samples; + break; + case T38_TIMED_STEP_CNG_2: + /* Initial short delay over. Send the CNG indicator. CNG persists until something + coming the other way interrupts it, or a long timeout controlled by the T.30 engine + expires. */ + fe->timed_step = T38_TIMED_STEP_NONE; + delay = t38_core_send_indicator(&fe->t38, T38_IND_CNG, fe->t38.indicator_tx_count); + fe->current_tx_data_type = T38_DATA_NONE; + return delay; + } + } + return delay; +} +/*- End of function --------------------------------------------------------*/ + +int t38_terminal_send_timeout(t38_terminal_state_t *s, int samples) +{ + t38_terminal_front_end_state_t *fe; + int delay; fe = &s->t38_fe; if (fe->current_rx_type == T30_MODEM_DONE || fe->current_tx_type == T30_MODEM_DONE) @@ -577,7 +840,7 @@ { span_log(&s->logging, SPAN_LOG_FLOW, "Timeout mid-receive\n"); fe->timeout_rx_samples = 0; - t30_front_end_status(&s->t30, T30_FRONT_END_RECEIVE_COMPLETE); + front_end_status(s, T30_FRONT_END_RECEIVE_COMPLETE); } if (fe->timed_step == T38_TIMED_STEP_NONE) return FALSE; @@ -586,205 +849,28 @@ if (fe->ms_per_tx_chunk && fe->samples < fe->next_tx_samples) return FALSE; /* Its time to send something */ - switch (fe->timed_step) + delay = 0; + switch (fe->timed_step & 0xFFF0) { case T38_TIMED_STEP_NON_ECM_MODEM: - /* Create a 75ms silence */ - if (fe->t38.current_tx_indicator != T38_IND_NO_SIGNAL) - t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); - fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_2; - fe->next_tx_samples += ms_to_samples(75); - break; - case T38_TIMED_STEP_NON_ECM_MODEM_2: - /* Switch on a fast modem, and give the training time to complete */ - t38_core_send_indicator(&fe->t38, fe->next_tx_indicator, fe->t38.indicator_tx_count); - fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_3; - fe->next_tx_samples += ms_to_samples(startup_time[fe->next_tx_indicator].training); - if ((fe->chunking_modes & T38_CHUNKING_ALLOW_TEP_TIME)) - fe->next_tx_samples += ms_to_samples(startup_time[fe->next_tx_indicator].tep); - break; - case T38_TIMED_STEP_NON_ECM_MODEM_3: - /* Send a chunk of non-ECM image data */ - /* T.38 says it is OK to send the last of the non-ECM data in the signal end message. - However, I think the early versions of T.38 said the signal end message should not - contain data. Hopefully, following the current spec will not cause compatibility - issues. */ - len = t30_non_ecm_get_chunk(&s->t30, buf, fe->octets_per_data_packet); - bit_reverse(buf, buf, len); - if (len < fe->octets_per_data_packet) - { - /* That's the end of the image data. Do a little padding now */ - memset(buf + len, 0, fe->octets_per_data_packet - len); - fe->non_ecm_trailer_bytes = 3*fe->octets_per_data_packet + len; - len = fe->octets_per_data_packet; - fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_4; - } - t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, fe->t38.data_tx_count); - fe->next_tx_samples += bits_to_samples(s, 8*len); - break; - case T38_TIMED_STEP_NON_ECM_MODEM_4: - /* This pads the end of the data with some zeros. If we just stop abruptly - at the end of the EOLs, some ATAs fail to clean up properly before - shutting down their transmit modem, and the last few rows of the image - get corrupted. Simply delaying the no-signal message does not help for - all implentations. It often appears to be ignored. */ - len = fe->octets_per_data_packet; - fe->non_ecm_trailer_bytes -= len; - if (fe->non_ecm_trailer_bytes <= 0) - { - len += fe->non_ecm_trailer_bytes; - memset(buf, 0, len); - t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, buf, len, fe->t38.data_end_tx_count); - fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_5; - /* Allow a bit more time than the data will take to play out, to ensure the far ATA does not - cut things short. */ - fe->next_tx_samples += (bits_to_samples(s, 8*len) + ms_to_samples(60)); - break; - } - memset(buf, 0, len); - t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, fe->t38.data_tx_count); - fe->next_tx_samples += bits_to_samples(s, 8*len); - break; - case T38_TIMED_STEP_NON_ECM_MODEM_5: - /* This should not be needed, since the message above indicates the end of the signal, but it - seems like it can improve compatibility with quirky implementations. */ - t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); - fe->timed_step = T38_TIMED_STEP_NONE; - t30_front_end_status(&s->t30, T30_FRONT_END_SEND_STEP_COMPLETE); + delay = stream_non_ecm(s); break; case T38_TIMED_STEP_HDLC_MODEM: - /* Send HDLC preambling */ - t38_core_send_indicator(&fe->t38, fe->next_tx_indicator, fe->t38.indicator_tx_count); - fe->next_tx_samples += ms_to_samples(startup_time[fe->next_tx_indicator].training + startup_time[fe->next_tx_indicator].flags); - if (fe->chunking_modes & T38_CHUNKING_ALLOW_TEP_TIME) - fe->next_tx_samples += ms_to_samples(startup_time[fe->next_tx_indicator].tep); - fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_2; - break; - case T38_TIMED_STEP_HDLC_MODEM_2: - /* Send a chunk of HDLC data */ - i = fe->tx.len - fe->tx.ptr; - if (fe->octets_per_data_packet >= i) - { - /* The last part of an HDLC frame */ - if (fe->chunking_modes & T38_CHUNKING_MERGE_FCS_WITH_DATA) - { - /* Copy the data, as we might be about to refill the buffer it is in */ - memcpy(buf, &fe->tx.buf[fe->tx.ptr], i); - data_fields[0].field_type = T38_FIELD_HDLC_DATA; - data_fields[0].field = buf; - data_fields[0].field_len = i; - - /* Now see about the next HDLC frame. This will tell us whether to send FCS_OK or FCS_OK_SIG_END */ - previous = fe->current_tx_data_type; - fe->tx.ptr = 0; - fe->tx.len = 0; - t30_front_end_status(&s->t30, T30_FRONT_END_SEND_STEP_COMPLETE); - /* The above step should have got the next HDLC step ready - either another frame, or an instruction to stop transmission. */ - if (fe->tx.len < 0) - { - data_fields[1].field_type = T38_FIELD_HDLC_FCS_OK_SIG_END; - fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_4; - /* We add a bit of extra time here, as with some implementations - the carrier falling too abruptly causes data loss. */ - fe->next_tx_samples += (bits_to_samples(s, i*8 + fe->tx.extra_bits) + ms_to_samples(100)); - } - else - { - data_fields[1].field_type = T38_FIELD_HDLC_FCS_OK; - fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_2; - fe->next_tx_samples += bits_to_samples(s, i*8 + fe->tx.extra_bits); - } - data_fields[1].field = NULL; - data_fields[1].field_len = 0; - t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, fe->t38.data_tx_count); - } - else - { - t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &fe->tx.buf[fe->tx.ptr], i, fe->t38.data_tx_count); - fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3; - fe->next_tx_samples += bits_to_samples(s, i*8); - } - break; - } - t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &fe->tx.buf[fe->tx.ptr], fe->octets_per_data_packet, fe->t38.data_tx_count); - fe->tx.ptr += fe->octets_per_data_packet; - fe->next_tx_samples += bits_to_samples(s, fe->octets_per_data_packet*8); - break; - case T38_TIMED_STEP_HDLC_MODEM_3: - /* End of HDLC frame */ - previous = fe->current_tx_data_type; - fe->tx.ptr = 0; - fe->tx.len = 0; - t30_front_end_status(&s->t30, T30_FRONT_END_SEND_STEP_COMPLETE); - /* The above step should have got the next HDLC step ready - either another frame, or an instruction to stop transmission. */ - if (fe->tx.len < 0) - { - /* End of transmission */ - t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK_SIG_END, NULL, 0, fe->t38.data_end_tx_count); - fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_4; - fe->next_tx_samples += (bits_to_samples(s, fe->tx.extra_bits) + ms_to_samples(100)); - break; - } - if (fe->tx.len == 0) - { - /* Now, how did we get here? We have finished a frame, but have no new frame to - send, and no end of transmission condition. */ - span_log(&s->logging, SPAN_LOG_FLOW, "No new frame or end transmission condition.\n"); - } - /* Finish the current frame off, and prepare for the next one. */ - t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK, NULL, 0, fe->t38.data_tx_count); - fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_2; - /* We should now wait 3 octet times - the duration of the FCS + a flag octet - and send the - next chunk. To give a little more latitude, and allow for stuffing in the FCS, add - time for an extra flag octet. */ - fe->next_tx_samples += bits_to_samples(s, fe->tx.extra_bits); - break; - case T38_TIMED_STEP_HDLC_MODEM_4: - /* Note that some boxes do not like us sending a T38_FIELD_HDLC_SIG_END at this point. - A T38_IND_NO_SIGNAL should always be OK. */ - t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); - fe->timed_step = T38_TIMED_STEP_NONE; - t30_front_end_status(&s->t30, T30_FRONT_END_SEND_STEP_COMPLETE); + delay = stream_hdlc(s); break; case T38_TIMED_STEP_CED: - /* It seems common practice to start with a no signal indicator, though - this is not a specified requirement. Since we should be sending 200ms - of silence, starting the delay with a no signal indication makes sense. - We do need a 200ms delay, as that is a specification requirement. */ - fe->timed_step = T38_TIMED_STEP_CED_2; - fe->next_tx_samples = fe->samples + ms_to_samples(200); - t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); - fe->current_tx_data_type = T38_DATA_NONE; - break; - case T38_TIMED_STEP_CED_2: - /* Initial 200ms delay over. Send the CED indicator */ - fe->next_tx_samples = fe->samples + ms_to_samples(3000); - fe->timed_step = T38_TIMED_STEP_PAUSE; - t38_core_send_indicator(&fe->t38, T38_IND_CED, fe->t38.indicator_tx_count); - fe->current_tx_data_type = T38_DATA_NONE; + delay = stream_ced(s); break; case T38_TIMED_STEP_CNG: - /* It seems common practice to start with a no signal indicator, though - this is not a specified requirement. Since we should be sending 200ms - of silence, starting the delay with a no signal indication makes sense. - We do need a 200ms delay, as that is a specification requirement. */ - fe->timed_step = T38_TIMED_STEP_CNG_2; - fe->next_tx_samples = fe->samples + ms_to_samples(200); - t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count); - fe->current_tx_data_type = T38_DATA_NONE; - break; - case T38_TIMED_STEP_CNG_2: - /* Initial short delay over. Send the CNG indicator */ - fe->timed_step = T38_TIMED_STEP_NONE; - t38_core_send_indicator(&fe->t38, T38_IND_CNG, fe->t38.indicator_tx_count); - fe->current_tx_data_type = T38_DATA_NONE; + delay = stream_cng(s); break; case T38_TIMED_STEP_PAUSE: /* End of timed pause */ fe->timed_step = T38_TIMED_STEP_NONE; - t30_front_end_status(&s->t30, T30_FRONT_END_SEND_STEP_COMPLETE); + front_end_status(s, T30_FRONT_END_SEND_STEP_COMPLETE); break; } + fe->next_tx_samples += us_to_samples(delay); return FALSE; } /*- End of function --------------------------------------------------------*/ @@ -799,119 +885,122 @@ } /*- End of function --------------------------------------------------------*/ +static void start_tx(t38_terminal_front_end_state_t *fe, int use_hdlc) +{ + /* The actual transmission process depends on whether we are sending at a paced manner, + for interaction with a traditional FAX machine, or streaming as fast as we can, normally + over a TCP connection to a machine directly connected to the internet. */ + if (fe->ms_per_tx_chunk) + { + /* Start the paced packet transmission process. */ + fe->timed_step = (use_hdlc) ? T38_TIMED_STEP_HDLC_MODEM : T38_TIMED_STEP_NON_ECM_MODEM; + if (fe->next_tx_samples < fe->samples) + fe->next_tx_samples = fe->samples; + } + else + { + /* Start the fast streaming transmission process. */ + } +} +/*- End of function --------------------------------------------------------*/ + static void set_tx_type(void *user_data, int type, int bit_rate, int short_train, int use_hdlc) { t38_terminal_state_t *s; + t38_terminal_front_end_state_t *fe; s = (t38_terminal_state_t *) user_data; + fe = &s->t38_fe; span_log(&s->logging, SPAN_LOG_FLOW, "Set tx type %d\n", type); - if (s->t38_fe.current_tx_type == type) + if (fe->current_tx_type == type) return; set_octets_per_data_packet(s, bit_rate); switch (type) { case T30_MODEM_NONE: - s->t38_fe.timed_step = T38_TIMED_STEP_NONE; - s->t38_fe.current_tx_data_type = T38_DATA_NONE; + /* If a "no signal" indicator is waiting to be played out, don't disturb it. */ + if (fe->timed_step != T38_TIMED_STEP_NON_ECM_MODEM_5 && fe->timed_step != T38_TIMED_STEP_HDLC_MODEM_5) + fe->timed_step = T38_TIMED_STEP_NONE; + fe->current_tx_data_type = T38_DATA_NONE; break; case T30_MODEM_PAUSE: - s->t38_fe.next_tx_samples = s->t38_fe.samples + ms_to_samples(short_train); - s->t38_fe.timed_step = T38_TIMED_STEP_PAUSE; - s->t38_fe.current_tx_data_type = T38_DATA_NONE; + fe->next_tx_samples = fe->samples + ms_to_samples(short_train); + fe->timed_step = T38_TIMED_STEP_PAUSE; + fe->current_tx_data_type = T38_DATA_NONE; break; case T30_MODEM_CED: + fe->next_tx_samples = fe->samples; + fe->timed_step = T38_TIMED_STEP_CED; + fe->current_tx_data_type = T38_DATA_NONE; + break; case T30_MODEM_CNG: - if (type == T30_MODEM_CED) - { - /* A 200ms initial delay is specified. Delay this amount before the CED indicator is sent. */ - s->t38_fe.next_tx_samples = s->t38_fe.samples; - s->t38_fe.timed_step = T38_TIMED_STEP_CED; - } - else - { - /* Allow a short initial delay, so the chances of the other end actually being ready to receive - the CNG indicator are improved. */ - s->t38_fe.next_tx_samples = s->t38_fe.samples; - s->t38_fe.timed_step = T38_TIMED_STEP_CNG; - } - s->t38_fe.current_tx_data_type = T38_DATA_NONE; + fe->next_tx_samples = fe->samples; + fe->timed_step = T38_TIMED_STEP_CNG; + fe->current_tx_data_type = T38_DATA_NONE; break; case T30_MODEM_V21: - if (s->t38_fe.current_tx_type > T30_MODEM_V21) - { - /* Pause before switching from phase C, as per T.30. If we omit this, the receiver - might not see the carrier fall between the high speed and low speed sections. */ - s->t38_fe.next_tx_samples = s->t38_fe.samples + ms_to_samples(75); - } - else - { - s->t38_fe.next_tx_samples = s->t38_fe.samples; - } - s->t38_fe.next_tx_indicator = T38_IND_V21_PREAMBLE; - s->t38_fe.current_tx_data_type = T38_DATA_V21; - s->t38_fe.timed_step = (use_hdlc) ? T38_TIMED_STEP_HDLC_MODEM : T38_TIMED_STEP_NON_ECM_MODEM; + fe->next_tx_indicator = T38_IND_V21_PREAMBLE; + fe->current_tx_data_type = T38_DATA_V21; + start_tx(fe, use_hdlc); break; case T30_MODEM_V27TER: switch (bit_rate) { case 2400: - s->t38_fe.next_tx_indicator = T38_IND_V27TER_2400_TRAINING; - s->t38_fe.current_tx_data_type = T38_DATA_V27TER_2400; + fe->next_tx_indicator = T38_IND_V27TER_2400_TRAINING; + fe->current_tx_data_type = T38_DATA_V27TER_2400; break; case 4800: - s->t38_fe.next_tx_indicator = T38_IND_V27TER_4800_TRAINING; - s->t38_fe.current_tx_data_type = T38_DATA_V27TER_4800; + fe->next_tx_indicator = T38_IND_V27TER_4800_TRAINING; + fe->current_tx_data_type = T38_DATA_V27TER_4800; break; } - s->t38_fe.timed_step = (use_hdlc) ? T38_TIMED_STEP_HDLC_MODEM : T38_TIMED_STEP_NON_ECM_MODEM; - s->t38_fe.next_tx_samples = s->t38_fe.samples + ms_to_samples(30); + start_tx(fe, use_hdlc); break; case T30_MODEM_V29: switch (bit_rate) { case 7200: - s->t38_fe.next_tx_indicator = T38_IND_V29_7200_TRAINING; - s->t38_fe.current_tx_data_type = T38_DATA_V29_7200; + fe->next_tx_indicator = T38_IND_V29_7200_TRAINING; + fe->current_tx_data_type = T38_DATA_V29_7200; break; case 9600: - s->t38_fe.next_tx_indicator = T38_IND_V29_9600_TRAINING; - s->t38_fe.current_tx_data_type = T38_DATA_V29_9600; + fe->next_tx_indicator = T38_IND_V29_9600_TRAINING; + fe->current_tx_data_type = T38_DATA_V29_9600; break; } - s->t38_fe.timed_step = (use_hdlc) ? T38_TIMED_STEP_HDLC_MODEM : T38_TIMED_STEP_NON_ECM_MODEM; - s->t38_fe.next_tx_samples = s->t38_fe.samples + ms_to_samples(30); + start_tx(fe, use_hdlc); break; case T30_MODEM_V17: switch (bit_rate) { case 7200: - s->t38_fe.next_tx_indicator = (short_train) ? T38_IND_V17_7200_SHORT_TRAINING : T38_IND_V17_7200_LONG_TRAINING; - s->t38_fe.current_tx_data_type = T38_DATA_V17_7200; + fe->next_tx_indicator = (short_train) ? T38_IND_V17_7200_SHORT_TRAINING : T38_IND_V17_7200_LONG_TRAINING; + fe->current_tx_data_type = T38_DATA_V17_7200; break; case 9600: - s->t38_fe.next_tx_indicator = (short_train) ? T38_IND_V17_9600_SHORT_TRAINING : T38_IND_V17_9600_LONG_TRAINING; - s->t38_fe.current_tx_data_type = T38_DATA_V17_9600; + fe->next_tx_indicator = (short_train) ? T38_IND_V17_9600_SHORT_TRAINING : T38_IND_V17_9600_LONG_TRAINING; + fe->current_tx_data_type = T38_DATA_V17_9600; break; case 12000: - s->t38_fe.next_tx_indicator = (short_train) ? T38_IND_V17_12000_SHORT_TRAINING : T38_IND_V17_12000_LONG_TRAINING; - s->t38_fe.current_tx_data_type = T38_DATA_V17_12000; + fe->next_tx_indicator = (short_train) ? T38_IND_V17_12000_SHORT_TRAINING : T38_IND_V17_12000_LONG_TRAINING; + fe->current_tx_data_type = T38_DATA_V17_12000; break; case 14400: - s->t38_fe.next_tx_indicator = (short_train) ? T38_IND_V17_14400_SHORT_TRAINING : T38_IND_V17_14400_LONG_TRAINING; - s->t38_fe.current_tx_data_type = T38_DATA_V17_14400; + fe->next_tx_indicator = (short_train) ? T38_IND_V17_14400_SHORT_TRAINING : T38_IND_V17_14400_LONG_TRAINING; + fe->current_tx_data_type = T38_DATA_V17_14400; break; } - s->t38_fe.timed_step = (use_hdlc) ? T38_TIMED_STEP_HDLC_MODEM : T38_TIMED_STEP_NON_ECM_MODEM; - s->t38_fe.next_tx_samples = s->t38_fe.samples + ms_to_samples(30); + start_tx(fe, use_hdlc); break; case T30_MODEM_DONE: span_log(&s->logging, SPAN_LOG_FLOW, "FAX exchange complete\n"); - s->t38_fe.timed_step = T38_TIMED_STEP_NONE; - s->t38_fe.current_tx_data_type = T38_DATA_NONE; + fe->timed_step = T38_TIMED_STEP_NONE; + fe->current_tx_data_type = T38_DATA_NONE; break; } - s->t38_fe.current_tx_type = type; + fe->current_tx_type = type; } /*- End of function --------------------------------------------------------*/ @@ -944,6 +1033,7 @@ s->t38_fe.chunking_modes |= T38_CHUNKING_ALLOW_TEP_TIME; else s->t38_fe.chunking_modes &= ~T38_CHUNKING_ALLOW_TEP_TIME; + t38_set_tep_handling(&s->t38_fe.t38, use_tep); } /*- End of function --------------------------------------------------------*/ @@ -963,6 +1053,12 @@ } /*- End of function --------------------------------------------------------*/ +t38_core_state_t *t38_terminal_get_t38_core_state(t38_terminal_state_t *s) +{ + return &s->t38_fe.t38; +} +/*- End of function --------------------------------------------------------*/ + static int t38_terminal_t38_fe_init(t38_terminal_state_t *t, t38_tx_packet_handler_t *tx_packet_handler, void *tx_packet_user_data) @@ -977,21 +1073,29 @@ (void *) t, tx_packet_handler, tx_packet_user_data); + s->t38.fastest_image_data_rate = 14400; + s->rx_signal_present = FALSE; s->timed_step = T38_TIMED_STEP_NONE; - s->tx.ptr = 0; - s->iaf = T30_IAF_MODE_T37 | T30_IAF_MODE_T38; + //s->iaf = T30_IAF_MODE_T37 | T30_IAF_MODE_T38; + s->iaf = T30_IAF_MODE_T38; s->current_tx_data_type = T38_DATA_NONE; s->next_tx_samples = 0; s->chunking_modes = T38_CHUNKING_ALLOW_TEP_TIME; - s->t38.fastest_image_data_rate = 14400; + s->hdlc_tx.ptr = 0; return 0; } /*- End of function --------------------------------------------------------*/ +logging_state_t *t38_terminal_get_logging_state(t38_terminal_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + t38_terminal_state_t *t38_terminal_init(t38_terminal_state_t *s, int calling_party, t38_tx_packet_handler_t *tx_packet_handler, Modified: freeswitch/trunk/libs/spandsp/src/t4.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t4.c (original) +++ freeswitch/trunk/libs/spandsp/src/t4.c Tue Jan 27 22:48:03 2009 @@ -24,7 +24,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t4.c,v 1.113 2008/09/07 12:45:17 steveu Exp $ + * $Id: t4.c,v 1.119 2009/01/28 03:41:27 steveu Exp $ */ /* @@ -60,7 +60,7 @@ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -72,13 +72,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp/telephony.h" @@ -87,7 +87,17 @@ #include "spandsp/async.h" #include "spandsp/t4.h" -#define CM_PER_INCH 2.54f +#include "spandsp/private/logging.h" +#include "spandsp/private/t4.h" + +#define CM_PER_INCH 2.54f + +#define EOLS_TO_END_T4_TX_PAGE 6 +#define EOLS_TO_END_T6_TX_PAGE 2 + +#define EOLS_TO_END_ANY_RX_PAGE 6 +#define EOLS_TO_END_T4_RX_PAGE 5 +#define EOLS_TO_END_T6_RX_PAGE 2 /* Finite state machine state codes */ enum @@ -780,7 +790,7 @@ s->rx_bits = 0; s->rx_skip_bits = 0; s->rx_bitstream = 0; - s->consecutive_eols = 5; + s->consecutive_eols = EOLS_TO_END_ANY_RX_PAGE; s->image_size = 0; return 0; @@ -824,18 +834,23 @@ return FALSE; if (s->consecutive_eols) { - /* Check if the image has already terminated */ - if (s->consecutive_eols >= 5) + /* Check if the image has already terminated. */ + if (s->consecutive_eols >= EOLS_TO_END_ANY_RX_PAGE) return TRUE; + /* Check if the image hasn't even started. */ if (s->consecutive_eols < 0) { /* We are waiting for the very first EOL (1D or 2D only). */ + /* We need to take this bit by bit, as the EOL could be anywhere, + and any junk could preceed it. */ while ((s->rx_bitstream & 0xFFF) != 0x800) { s->rx_bitstream >>= 1; if (--s->rx_bits < 13) return FALSE; } + /* We have an EOL, so now the page begins and we can proceed to + process the bit stream as image data. */ s->consecutive_eols = 0; if (s->line_encoding == T4_COMPRESSION_ITU_T4_1D) { @@ -847,7 +862,6 @@ s->row_is_2d = !(s->rx_bitstream & 0x1000); force_drop_rx_bits(s, 13); } - /* We can proceed to processing the bit stream as an image now */ } } @@ -864,11 +878,39 @@ STATE_TRACE("EOL\n"); if (s->row_len == 0) { - if (++s->consecutive_eols >= 5) - return TRUE; + /* A zero length row - i.e. 2 consecutive EOLs - is distinctly + the end of page condition. That's all we actually get on a + T.6 page. However, there are a minimum of 6 EOLs at the end of + any T.4 page. We can look for more than 2 EOLs in case bit + errors simulate the end of page condition at the wrong point. + Such robust checking is irrelevant for a T.6 page, as it should + be error free. */ + /* Note that for a T.6 page we should get here on the very first + EOL, as the row length should be zero at that point. Therefore + we should count up both EOLs, unless there is some bogus partial + row ahead of them. */ + s->consecutive_eols++; + if (s->line_encoding == T4_COMPRESSION_ITU_T6) + { + if (s->consecutive_eols >= EOLS_TO_END_T6_RX_PAGE) + { + s->consecutive_eols = EOLS_TO_END_ANY_RX_PAGE; + return TRUE; + } + } + else + { + if (s->consecutive_eols >= EOLS_TO_END_T4_RX_PAGE) + { + s->consecutive_eols = EOLS_TO_END_ANY_RX_PAGE; + return TRUE; + } + } } else { + /* The EOLs are not back-to-back, so they are not part of the + end of page condition. */ if (s->run_length > 0) add_run_to_row(s); s->consecutive_eols = 0; @@ -876,14 +918,14 @@ return TRUE; update_row_bit_info(s); } - if (s->line_encoding == T4_COMPRESSION_ITU_T4_1D) + if (s->line_encoding == T4_COMPRESSION_ITU_T4_2D) { - force_drop_rx_bits(s, 12); + s->row_is_2d = !(s->rx_bitstream & 0x1000); + force_drop_rx_bits(s, 13); } else { - s->row_is_2d = !(s->rx_bitstream & 0x1000); - force_drop_rx_bits(s, 13); + force_drop_rx_bits(s, 12); } s->its_black = FALSE; s->black_white = 0; @@ -1206,7 +1248,7 @@ s->row_is_2d = (s->line_encoding == T4_COMPRESSION_ITU_T6); /* We start at -1 EOLs for 1D and 2D decoding, as an indication we are waiting for the - first EOL. */ + first EOL. T.6 coding starts without any preamble. */ s->consecutive_eols = (s->line_encoding == T4_COMPRESSION_ITU_T6) ? 0 : -1; s->bad_rows = 0; @@ -1456,8 +1498,8 @@ a0 a1 a2 - a) Pass mode - This mode is identified when the position of b2 lies to the left of a1. When this mode + a) Pass mode + This mode is identified when the position of b2 lies to the left of a1. When this mode has been coded, a0 is set on the element of the coding line below b2 in preparation for the next coding (i.e. on a0'). @@ -1478,16 +1520,16 @@ Not pass mode - b) Vertical mode - When this mode is identified, the position of a1 is coded relative to the position of b1. + b) Vertical mode + When this mode is identified, the position of a1 is coded relative to the position of b1. The relative distance a1b1 can take on one of seven values V(0), VR(1), VR(2), VR(3), VL(1), VL(2) and VL(3), each of which is represented by a separate code word. The subscripts R and L indicate that a1 is to the right or left respectively of b1, and the number in brackets indicates the value of the distance a1b1. After vertical mode coding has occurred, the position of a0 is set on a1 (see figure below). - c) Horizontal mode - When this mode is identified, both the run-lengths a0a1 and a1a2 are coded using the code + c) Horizontal mode + When this mode is identified, both the run-lengths a0a1 and a1a2 are coded using the code words H + M(a0a1) + M(a1a2). H is the flag code word 001 taken from the two-dimensional code table. M(a0a1) and M(a1a2) are code words which represent the length and "colour" of the runs a0a1 and a1a2 respectively and are taken from the appropriate white or black @@ -1901,14 +1943,14 @@ if (s->line_encoding == T4_COMPRESSION_ITU_T6) { /* Attach an EOFB (end of facsimile block) to the end of the page */ - encode_eol(s); - encode_eol(s); + for (i = 0; i < EOLS_TO_END_T6_TX_PAGE; i++) + encode_eol(s); } else { /* Attach a return to control (RTC == 6 x EOLs) to the end of the page */ s->row_is_2d = FALSE; - for (i = 0; i < 6; i++) + for (i = 0; i < EOLS_TO_END_T4_TX_PAGE; i++) encode_eol(s); } @@ -2079,7 +2121,7 @@ more reliable. */ max = 0; while (TIFFSetDirectory(s->tiff_file, (tdir_t) max)) - max++; + max++; s->pages_in_file = max; /* Back to the previous page */ if (!TIFFSetDirectory(s->tiff_file, (tdir_t) s->pages_transferred)) Modified: freeswitch/trunk/libs/spandsp/src/testcpuid.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/testcpuid.c (original) +++ freeswitch/trunk/libs/spandsp/src/testcpuid.c Tue Jan 27 22:48:03 2009 @@ -23,13 +23,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: testcpuid.c,v 1.12 2008/05/13 13:17:24 steveu Exp $ + * $Id: testcpuid.c,v 1.13 2009/01/05 13:48:31 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include Modified: freeswitch/trunk/libs/spandsp/src/time_scale.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/time_scale.c (original) +++ freeswitch/trunk/libs/spandsp/src/time_scale.c Tue Jan 27 22:48:03 2009 @@ -22,13 +22,13 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: time_scale.c,v 1.24 2008/09/19 14:02:05 steveu Exp $ + * $Id: time_scale.c,v 1.27 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -38,18 +38,20 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/time_scale.h" #include "spandsp/saturated.h" +#include "spandsp/private/time_scale.h" + /* Time scaling for speech, based on the Pointer Interval Controlled OverLap and Add (PICOLA) method, developed by Morita Naotaka. Modified: freeswitch/trunk/libs/spandsp/src/tone_detect.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/tone_detect.c (original) +++ freeswitch/trunk/libs/spandsp/src/tone_detect.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: tone_detect.c,v 1.47 2008/07/02 14:48:26 steveu Exp $ + * $Id: tone_detect.c,v 1.49 2009/01/28 03:41:27 steveu Exp $ */ /*! \file tone_detect.h */ @@ -33,13 +33,13 @@ #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include #include @@ -51,6 +51,8 @@ #include "spandsp/tone_detect.h" #include "spandsp/tone_generate.h" +#include "spandsp/private/tone_detect.h" + #if !defined(M_PI) /* C99 systems may not define M_PI */ #define M_PI 3.14159265358979323846264338327 Modified: freeswitch/trunk/libs/spandsp/src/tone_generate.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/tone_generate.c (original) +++ freeswitch/trunk/libs/spandsp/src/tone_generate.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: tone_generate.c,v 1.46 2008/09/11 15:13:42 steveu Exp $ + * $Id: tone_generate.c,v 1.48 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -37,13 +37,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/dc_restore.h" @@ -51,6 +51,8 @@ #include "spandsp/dds.h" #include "spandsp/tone_generate.h" +#include "spandsp/private/tone_generate.h" + #if !defined(M_PI) /* C99 systems may not define M_PI */ #define M_PI 3.14159265358979323846264338327 Modified: freeswitch/trunk/libs/spandsp/src/v17rx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v17rx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v17rx.c Tue Jan 27 22:48:03 2009 @@ -22,26 +22,26 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v17rx.c,v 1.123 2008/09/18 15:59:55 steveu Exp $ + * $Id: v17rx.c,v 1.129 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/logging.h" @@ -60,6 +60,9 @@ #include "spandsp/v17tx.h" #include "spandsp/v17rx.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/v17rx.h" + #include "v17tx_constellation_maps.h" #include "v17rx_constellation_maps.h" #if defined(SPANDSP_USE_FIXED_POINT) @@ -111,6 +114,24 @@ #define SYNC_CROSS_CORR_COEFF_B 0.700036f /* alpha*sin(high_edge) */ #define SYNC_CROSS_CORR_COEFF_C -0.449451f /* -alpha*sin(low_edge) */ +#if defined(SPANDSP_USE_FIXED_POINTx) +static const int constellation_spacing[4] = +{ + ((int)(FP_FACTOR*1.414f), + ((int)(FP_FACTOR*2.0f)}, + ((int)(FP_FACTOR*2.828f)}, + ((int)(FP_FACTOR*4.0f)}, +}; +#else +static const float constellation_spacing[4] = +{ + 1.414f, + 2.0f, + 2.828f, + 4.0f +}; +#endif + float v17_rx_carrier_frequency(v17_rx_state_t *s) { return dds_frequencyf(s->carrier_phase_rate); @@ -777,7 +798,7 @@ else if (s->training_count >= V17_TRAINING_SEG_2_LEN) { span_log(&s->logging, SPAN_LOG_FLOW, "Long training error %f\n", s->training_error); - if (s->training_error < 40.0f) + if (s->training_error < 20.0f*1.414f*constellation_spacing[s->space_map]) { s->training_count = 0; s->training_error = 0.0f; @@ -851,10 +872,10 @@ span_log(&s->logging, SPAN_LOG_FLOW, "Short training error %f\n", s->training_error); s->carrier_track_i = 100.0f; s->carrier_track_p = 500000.0f; - /* TODO: This was changed from 20.0 to 200.0 after studying real world failures. + /* TODO: This was increased by a factor of 10 after studying real world failures. However, it is not clear why this is an improvement, If something gives - a training error way over 20, surely it shouldn't decode too well? */ - if (s->training_error < 200.0f) + a huge training error, surely it shouldn't decode too well? */ + if (s->training_error < (V17_TRAINING_SHORT_SEG_2_LEN - 8)*4.0f*constellation_spacing[s->space_map]) { s->training_count = 0; s->training_stage = TRAINING_STAGE_TCM_WINDUP; @@ -897,14 +918,10 @@ s->training_error += powerf(&zz); if (++s->training_count >= V17_TRAINING_SEG_4_LEN) { -#if defined(IAXMODEM_STUFF) - if (s->training_error < 80.0f) -#else - if (s->training_error < 30.0f) -#endif + if (s->training_error < V17_TRAINING_SEG_4_LEN*constellation_spacing[s->space_map]) { /* We are up and running */ - span_log(&s->logging, SPAN_LOG_FLOW, "Training succeeded (constellation mismatch %f)\n", s->training_error); + span_log(&s->logging, SPAN_LOG_FLOW, "Training succeeded at %dbps (constellation mismatch %f)\n", s->bit_rate, s->training_error); report_status_change(s, SIG_STATUS_TRAINING_SUCCEEDED); /* Apply some lag to the carrier off condition, to ensure the last few bits get pushed through the processing. */ @@ -1107,6 +1124,12 @@ } /*- End of function --------------------------------------------------------*/ +logging_state_t *v17_rx_get_logging_state(v17_rx_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + int v17_rx_restart(v17_rx_state_t *s, int bit_rate, int short_train) { int i; Modified: freeswitch/trunk/libs/spandsp/src/v17tx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v17tx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v17tx.c Tue Jan 27 22:48:03 2009 @@ -22,26 +22,26 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v17tx.c,v 1.64 2008/09/07 12:45:17 steveu Exp $ + * $Id: v17tx.c,v 1.69 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/logging.h" @@ -54,6 +54,9 @@ #include "spandsp/v17tx.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/v17tx.h" + #if defined(SPANDSP_USE_FIXED_POINT) #define SPANDSP_USE_FIXED_POINTx #endif @@ -106,6 +109,11 @@ { 1, 0, 2, 3 }; +#if defined(SPANDSP_USE_FIXED_POINT) + static const complexi16_t zero = {0, 0}; +#else + static const complexf_t zero = {0.0f, 0.0f}; +#endif int bits; int shift; @@ -121,11 +129,7 @@ if (s->training_step <= V17_TRAINING_SEG_1) { /* Optional segment: silence (talker echo protection) */ -#if defined(SPANDSP_USE_FIXED_POINT) - return complex_seti16(0, 0); -#else - return complex_setf(0.0f, 0.0f); -#endif + return zero; } /* Segment 1: ABAB... */ return v17_abcd_constellation[(s->training_step & 1) ^ 1]; @@ -144,7 +148,7 @@ } /* Segment 3: Bridge... */ shift = ((s->training_step - V17_TRAINING_SEG_3 - 1) & 0x7) << 1; - span_log(&s->logging, SPAN_LOG_FLOW, "Seg 3 shift %d\n", shift); + //span_log(&s->logging, SPAN_LOG_FLOW, "Seg 3 shift %d\n", shift); bits = scramble(s, V17_BRIDGE_WORD >> shift); bits = (bits << 1) | scramble(s, V17_BRIDGE_WORD >> (shift + 1)); s->constellation_state = (s->constellation_state + dibit_to_step[bits]) & 3; @@ -332,6 +336,12 @@ } /*- End of function --------------------------------------------------------*/ +logging_state_t *v17_tx_get_logging_state(v17_tx_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + int v17_tx_restart(v17_tx_state_t *s, int bit_rate, int tep, int short_train) { switch (bit_rate) Modified: freeswitch/trunk/libs/spandsp/src/v22bis_rx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v22bis_rx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v22bis_rx.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v22bis_rx.c,v 1.42 2008/09/18 14:59:30 steveu Exp $ + * $Id: v22bis_rx.c,v 1.46 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -30,20 +30,20 @@ /* THIS IS A WORK IN PROGRESS - NOT YET FUNCTIONAL! */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/logging.h" @@ -58,6 +58,9 @@ #include "spandsp/v29rx.h" #include "spandsp/v22bis.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/v22bis.h" + #if defined(SPANDSP_USE_FIXED_POINT) #include "v22bis_rx_1200_floating_rrc.h" #include "v22bis_rx_2400_floating_rrc.h" Modified: freeswitch/trunk/libs/spandsp/src/v22bis_tx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v22bis_tx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v22bis_tx.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v22bis_tx.c,v 1.44 2008/09/07 12:45:17 steveu Exp $ + * $Id: v22bis_tx.c,v 1.49 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -30,20 +30,20 @@ /* THIS IS A WORK IN PROGRESS - NOT YET FUNCTIONAL! */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/logging.h" @@ -57,6 +57,9 @@ #include "spandsp/v29rx.h" #include "spandsp/v22bis.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/v22bis.h" + #if defined(SPANDSP_USE_FIXED_POINT) #include "v22bis_tx_fixed_rrc.h" #else @@ -603,6 +606,12 @@ } /*- End of function --------------------------------------------------------*/ +logging_state_t *v22bis_get_logging_state(v22bis_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + int v22bis_restart(v22bis_state_t *s, int bit_rate) { if (bit_rate != 2400 && bit_rate != 1200) Modified: freeswitch/trunk/libs/spandsp/src/v27ter_rx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v27ter_rx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v27ter_rx.c Tue Jan 27 22:48:03 2009 @@ -22,26 +22,26 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v27ter_rx.c,v 1.107 2008/09/18 14:59:30 steveu Exp $ + * $Id: v27ter_rx.c,v 1.113 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/logging.h" @@ -59,6 +59,9 @@ #include "spandsp/v29rx.h" #include "spandsp/v27ter_rx.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/v27ter_rx.h" + #if defined(SPANDSP_USE_FIXED_POINT) #include "v27ter_rx_4800_fixed_rrc.h" #include "v27ter_rx_2400_fixed_rrc.h" @@ -685,12 +688,14 @@ #endif if (++s->training_count >= V27TER_TRAINING_SEG_6_LEN) { - if ((s->bit_rate == 4800 && s->training_error < 0.5f) + /* At 4800bps the symbols are 1.08238 (Euclidian) apart. + At 2400bps the symbols are 2.0 (Euclidian) apart. */ + if ((s->bit_rate == 4800 && s->training_error < V27TER_TRAINING_SEG_6_LEN*0.25f) || - (s->bit_rate == 2400 && s->training_error < 1.0f)) + (s->bit_rate == 2400 && s->training_error < V27TER_TRAINING_SEG_6_LEN*0.5f)) { /* We are up and running */ - span_log(&s->logging, SPAN_LOG_FLOW, "Training succeeded (constellation mismatch %f)\n", s->training_error); + span_log(&s->logging, SPAN_LOG_FLOW, "Training succeeded at %dbps (constellation mismatch %f)\n", s->bit_rate, s->training_error); report_status_change(s, SIG_STATUS_TRAINING_SUCCEEDED); /* Apply some lag to the carrier off condition, to ensure the last few bits get pushed through the processing. */ @@ -1016,6 +1021,12 @@ } /*- End of function --------------------------------------------------------*/ +logging_state_t *v27ter_rx_get_logging_state(v27ter_rx_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + int v27ter_rx_restart(v27ter_rx_state_t *s, int bit_rate, int old_train) { span_log(&s->logging, SPAN_LOG_FLOW, "Restarting V.27ter\n"); Modified: freeswitch/trunk/libs/spandsp/src/v27ter_tx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v27ter_tx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v27ter_tx.c Tue Jan 27 22:48:03 2009 @@ -22,26 +22,26 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v27ter_tx.c,v 1.66 2008/09/07 12:45:17 steveu Exp $ + * $Id: v27ter_tx.c,v 1.71 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/logging.h" @@ -54,6 +54,9 @@ #include "spandsp/v27ter_tx.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/v27ter_tx.h" + #if defined(SPANDSP_USE_FIXED_POINT) #include "v27ter_tx_4800_fixed_rrc.h" #include "v27ter_tx_2400_fixed_rrc.h" @@ -148,6 +151,7 @@ { 0000, -1414}, /* 270deg */ { 1000, -1000} /* 315deg */ }; + static const complexi16_t zero = {0, 0}; #else static const complexf_t constellation[8] = { @@ -160,6 +164,7 @@ { 0.0f, -1.414f}, /* 270deg */ { 1.0f, -1.0f} /* 315deg */ }; + static const complexf_t zero = {0.0f, 0.0f}; #endif int bits; @@ -178,11 +183,7 @@ if (s->training_step <= V27TER_TRAINING_SEG_3) { /* Segment 2: Silence */ -#if defined(SPANDSP_USE_FIXED_POINT) - return complex_seti16(0, 0); -#else - return complex_setf(0.0f, 0.0f); -#endif + return zero; } /* Segment 3: Regular reversals... */ s->constellation_state = (s->constellation_state + 4) & 7; @@ -371,6 +372,12 @@ } /*- End of function --------------------------------------------------------*/ +logging_state_t *v27ter_tx_get_logging_state(v27ter_tx_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + int v27ter_tx_restart(v27ter_tx_state_t *s, int bit_rate, int tep) { if (bit_rate != 4800 && bit_rate != 2400) Modified: freeswitch/trunk/libs/spandsp/src/v29rx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v29rx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v29rx.c Tue Jan 27 22:48:03 2009 @@ -22,26 +22,26 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v29rx.c,v 1.144 2008/09/18 14:59:30 steveu Exp $ + * $Id: v29rx.c,v 1.150 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/logging.h" @@ -58,6 +58,9 @@ #include "spandsp/v29rx.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/v29rx.h" + #include "v29tx_constellation_maps.h" #if defined(SPANDSP_USE_FIXED_POINT) #include "v29rx_fixed_rrc.h" @@ -511,7 +514,11 @@ s->symbol_sync_dc_filter[0] = v; /* A little integration will now filter away much of the noise */ s->baud_phase -= p; +#if 0 if (fabsf(s->baud_phase) > 100.0f) +#else + if (fabsf(s->baud_phase) > 30.0f) +#endif { if (s->baud_phase > 0.0f) i = (s->baud_phase > 1000.0f) ? 5 : 1; @@ -731,7 +738,7 @@ if (++s->training_count >= V29_TRAINING_SEG_3_LEN) { span_log(&s->logging, SPAN_LOG_FLOW, "Constellation mismatch %f\n", s->training_error); - if (s->training_error < 100.0f) + if (s->training_error < 48.0f*2.0f) { s->training_count = 0; s->training_error = 0.0f; @@ -772,10 +779,10 @@ #endif if (++s->training_count >= V29_TRAINING_SEG_4_LEN) { - if (s->training_error < 50.0f) + if (s->training_error < 48.0f) { /* We are up and running */ - span_log(&s->logging, SPAN_LOG_FLOW, "Training succeeded (constellation mismatch %f)\n", s->training_error); + span_log(&s->logging, SPAN_LOG_FLOW, "Training succeeded at %dbps (constellation mismatch %f)\n", s->bit_rate, s->training_error); report_status_change(s, SIG_STATUS_TRAINING_SUCCEEDED); /* Apply some lag to the carrier off condition, to ensure the last few bits get pushed through the processing. */ @@ -1005,6 +1012,12 @@ } /*- End of function --------------------------------------------------------*/ +logging_state_t *v29_rx_get_logging_state(v29_rx_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + int v29_rx_restart(v29_rx_state_t *s, int bit_rate, int old_train) { switch (bit_rate) Modified: freeswitch/trunk/libs/spandsp/src/v29tx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v29tx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v29tx.c Tue Jan 27 22:48:03 2009 @@ -22,26 +22,26 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v29tx.c,v 1.79 2008/09/07 12:45:17 steveu Exp $ + * $Id: v29tx.c,v 1.84 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/logging.h" @@ -54,6 +54,9 @@ #include "spandsp/v29tx.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/v29tx.h" + #include "v29tx_constellation_maps.h" #if defined(SPANDSP_USE_FIXED_POINT) #include "v29tx_fixed_rrc.h" @@ -113,6 +116,11 @@ { 0, 2, 6, 4 }; +#if defined(SPANDSP_USE_FIXED_POINT) + static const complexi16_t zero = {0, 0}; +#else + static const complexf_t zero = {0.0f, 0.0f}; +#endif int bits; int amp; int bit; @@ -132,11 +140,7 @@ if (s->training_step <= V29_TRAINING_SEG_2) { /* Segment 1: silence */ -#if defined(SPANDSP_USE_FIXED_POINT) - return complex_seti16(0, 0); -#else - return complex_setf(0.0f, 0.0f); -#endif + return zero; } /* Segment 2: ABAB... */ return v29_abab_constellation[(s->training_step & 1) + s->training_offset]; @@ -310,6 +314,12 @@ } /*- End of function --------------------------------------------------------*/ +logging_state_t *v29_tx_get_logging_state(v29_tx_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + int v29_tx_restart(v29_tx_state_t *s, int bit_rate, int tep) { span_log(&s->logging, SPAN_LOG_FLOW, "Restarting V.29\n"); Modified: freeswitch/trunk/libs/spandsp/src/v42.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v42.c (original) +++ freeswitch/trunk/libs/spandsp/src/v42.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v42.c,v 1.43 2008/09/07 12:45:17 steveu Exp $ + * $Id: v42.c,v 1.47 2009/01/05 13:48:32 steveu Exp $ */ /* THIS IS A WORK IN PROGRESS. IT IS NOT FINISHED. */ @@ -30,7 +30,7 @@ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -47,6 +47,11 @@ #include "spandsp/queue.h" #include "spandsp/v42.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/schedule.h" +#include "spandsp/private/hdlc.h" +#include "spandsp/private/v42.h" + #if !defined(FALSE) #define FALSE 0 #endif Modified: freeswitch/trunk/libs/spandsp/src/v42bis.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v42bis.c (original) +++ freeswitch/trunk/libs/spandsp/src/v42bis.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v42bis.c,v 1.32 2008/05/13 13:17:25 steveu Exp $ + * $Id: v42bis.c,v 1.35 2009/01/05 13:48:32 steveu Exp $ */ /* THIS IS A WORK IN PROGRESS. IT IS NOT FINISHED. @@ -32,7 +32,7 @@ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include @@ -49,6 +49,9 @@ #include "spandsp/bit_operations.h" #include "spandsp/v42bis.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/v42bis.h" + /* Fixed parameters from the spec. */ #define V42BIS_N3 8 /* Character size (bits) */ #define V42BIS_N4 256 /* Number of characters in the alphabet */ Modified: freeswitch/trunk/libs/spandsp/src/v8.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v8.c (original) +++ freeswitch/trunk/libs/spandsp/src/v8.c Tue Jan 27 22:48:03 2009 @@ -22,26 +22,26 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v8.c,v 1.31 2008/09/07 12:45:17 steveu Exp $ + * $Id: v8.c,v 1.37 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include "spandsp/telephony.h" #include "spandsp/logging.h" @@ -57,6 +57,11 @@ #include "spandsp/modem_connect_tones.h" #include "spandsp/v8.h" +#include "spandsp/private/logging.h" +#include "spandsp/private/fsk.h" +#include "spandsp/private/modem_connect_tones.h" +#include "spandsp/private/v8.h" + #define ms_to_samples(t) (((t)*SAMPLE_RATE)/1000) enum @@ -120,21 +125,21 @@ case V8_MOD_V21: return "V.21 duplex"; case V8_MOD_V22: - return "V.22/V22.bis duplex"; + return "V.22/V.22bis duplex"; case V8_MOD_V23HALF: return "V.23 half-duplex"; case V8_MOD_V23: return "V.23 duplex"; case V8_MOD_V26BIS: - return "V.23 duplex"; + return "V.26bis duplex"; case V8_MOD_V26TER: - return "V.23 duplex"; + return "V.26ter duplex"; case V8_MOD_V27TER: - return "V.23 duplex"; + return "V.27ter duplex"; case V8_MOD_V29: return "V.29 half-duplex"; case V8_MOD_V32: - return "V.32/V32.bis duplex"; + return "V.32/V.32bis duplex"; case V8_MOD_V34HALF: return "V.34 half-duplex"; case V8_MOD_V34: @@ -845,6 +850,12 @@ } /*- End of function --------------------------------------------------------*/ +logging_state_t *v8_get_logging_state(v8_state_t *s) +{ + return &s->logging; +} +/*- End of function --------------------------------------------------------*/ + v8_state_t *v8_init(v8_state_t *s, int caller, int available_modulations, @@ -884,4 +895,14 @@ return queue_free(s->tx_queue); } /*- End of function --------------------------------------------------------*/ + +int v8_free(v8_state_t *s) +{ + int ret; + + ret = queue_free(s->tx_queue); + free(s); + return ret; +} +/*- End of function --------------------------------------------------------*/ /*- End of file ------------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/vector_float.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/vector_float.c (original) +++ freeswitch/trunk/libs/spandsp/src/vector_float.c Tue Jan 27 22:48:03 2009 @@ -22,26 +22,26 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: vector_float.c,v 1.14 2008/09/18 13:54:32 steveu Exp $ + * $Id: vector_float.c,v 1.19 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #if defined(SPANDSP_USE_MMX) @@ -55,7 +55,6 @@ #endif #if defined(SPANDSP_USE_SSE3) #include -#include #endif #if defined(SPANDSP_USE_SSE4_1) #include @@ -73,6 +72,32 @@ #include "spandsp/telephony.h" #include "spandsp/vector_float.h" +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_copyf(float z[], const float x[], int n) +{ + int i; + __m128 n1; + + if ((i = n & ~3)) + { + for (i -= 4; i >= 0; i -= 4) + { + n1 = _mm_loadu_ps(x + i); + _mm_storeu_ps(z + i, n1); + } + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + z[n - 3] = x[n - 3]; + case 2: + z[n - 2] = x[n - 2]; + case 1: + z[n - 1] = x[n - 1]; + } +} +#else void vec_copyf(float z[], const float x[], int n) { int i; @@ -80,6 +105,7 @@ for (i = 0; i < n; i++) z[i] = x[i]; } +#endif /*- End of function --------------------------------------------------------*/ void vec_copy(double z[], const double x[], int n) @@ -102,6 +128,90 @@ /*- End of function --------------------------------------------------------*/ #endif +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_negatef(float z[], const float x[], int n) +{ + int i; + static const uint32_t mask = 0x80000000; + __m128 n1; + __m128 n2; + + if ((i = n & ~3)) + { + n2 = _mm_set1_ps(*((float *) &mask)); + for (i -= 4; i >= 0; i -= 4) + { + n1 = _mm_loadu_ps(x + i); + n1 = _mm_xor_ps(n1, n2); + _mm_storeu_ps(z + i, n1); + } + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + z[n - 3] = -x[n - 3]; + case 2: + z[n - 2] = -x[n - 2]; + case 1: + z[n - 1] = -x[n - 1]; + } +} +#else +void vec_negatef(float z[], const float x[], int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = -x[i]; +} +#endif +/*- End of function --------------------------------------------------------*/ + +void vec_negate(double z[], const double x[], int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = -x[i]; +} +/*- End of function --------------------------------------------------------*/ + +#if defined(HAVE_LONG_DOUBLE) +void vec_negatel(long double z[], const long double x[], int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = -x[i]; +} +/*- End of function --------------------------------------------------------*/ +#endif + +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_zerof(float z[], int n) +{ + int i; + __m128 n1; + + if ((i = n & ~3)) + { + n1 = _mm_setzero_ps(); + for (i -= 4; i >= 0; i -= 4) + _mm_storeu_ps(z + i, n1); + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + z[n - 3] = 0; + case 2: + z[n - 2] = 0; + case 1: + z[n - 1] = 0; + } +} +#else void vec_zerof(float z[], int n) { int i; @@ -109,6 +219,7 @@ for (i = 0; i < n; i++) z[i] = 0.0f; } +#endif /*- End of function --------------------------------------------------------*/ void vec_zero(double z[], int n) @@ -131,6 +242,30 @@ /*- End of function --------------------------------------------------------*/ #endif +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_setf(float z[], float x, int n) +{ + int i; + __m128 n1; + + if ((i = n & ~3)) + { + n1 = _mm_set1_ps(x); + for (i -= 4; i >= 0; i -= 4) + _mm_storeu_ps(z + i, n1); + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + z[n - 3] = x; + case 2: + z[n - 2] = x; + case 1: + z[n - 1] = x; + } +} +#else void vec_setf(float z[], float x, int n) { int i; @@ -138,6 +273,7 @@ for (i = 0; i < n; i++) z[i] = x; } +#endif /*- End of function --------------------------------------------------------*/ void vec_set(double z[], double x, int n) @@ -160,6 +296,35 @@ /*- End of function --------------------------------------------------------*/ #endif +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_addf(float z[], const float x[], const float y[], int n) +{ + int i; + __m128 n1; + __m128 n2; + + if ((i = n & ~3)) + { + for (i -= 4; i >= 0; i -= 4) + { + n1 = _mm_loadu_ps(x + i); + n2 = _mm_loadu_ps(y + i); + n2 = _mm_add_ps(n1, n2); + _mm_storeu_ps(z + i, n2); + } + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + z[n - 3] = x[n - 3] + y[n - 3]; + case 2: + z[n - 2] = x[n - 2] + y[n - 2]; + case 1: + z[n - 1] = x[n - 1] + y[n - 1]; + } +} +#else void vec_addf(float z[], const float x[], const float y[], int n) { int i; @@ -167,6 +332,7 @@ for (i = 0; i < n; i++) z[i] = x[i] + y[i]; } +#endif /*- End of function --------------------------------------------------------*/ void vec_add(double z[], const double x[], const double y[], int n) @@ -187,16 +353,52 @@ } /*- End of function --------------------------------------------------------*/ -void vec_scaled_addf(float z[], const float x[], float x_scale, const float y[], float y_scale, int n) +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_scaledxy_addf(float z[], const float x[], float x_scale, const float y[], float y_scale, int n) +{ + int i; + __m128 n1; + __m128 n2; + __m128 n3; + __m128 n4; + + if ((i = n & ~3)) + { + n3 = _mm_set1_ps(x_scale); + n4 = _mm_set1_ps(y_scale); + for (i -= 4; i >= 0; i -= 4) + { + n1 = _mm_loadu_ps(x + i); + n2 = _mm_loadu_ps(y + i); + n1 = _mm_mul_ps(n1, n3); + n2 = _mm_mul_ps(n2, n4); + n2 = _mm_add_ps(n1, n2); + _mm_storeu_ps(z + i, n2); + } + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + z[n - 3] = x[n - 3]*x_scale + y[n - 3]*y_scale; + case 2: + z[n - 2] = x[n - 2]*x_scale + y[n - 2]*y_scale; + case 1: + z[n - 1] = x[n - 1]*x_scale + y[n - 1]*y_scale; + } +} +#else +void vec_scaledxy_addf(float z[], const float x[], float x_scale, const float y[], float y_scale, int n) { int i; for (i = 0; i < n; i++) z[i] = x[i]*x_scale + y[i]*y_scale; } +#endif /*- End of function --------------------------------------------------------*/ -void vec_scaled_add(double z[], const double x[], double x_scale, const double y[], double y_scale, int n) +void vec_scaledxy_add(double z[], const double x[], double x_scale, const double y[], double y_scale, int n) { int i; @@ -206,7 +408,7 @@ /*- End of function --------------------------------------------------------*/ #if defined(HAVE_LONG_DOUBLE) -void vec_scaled_addl(long double z[], const long double x[], long double x_scale, const long double y[], long double y_scale, int n) +void vec_scaledxy_addl(long double z[], const long double x[], long double x_scale, const long double y[], long double y_scale, int n) { int i; @@ -216,6 +418,97 @@ /*- End of function --------------------------------------------------------*/ #endif +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_scaledy_addf(float z[], const float x[], const float y[], float y_scale, int n) +{ + int i; + __m128 n1; + __m128 n2; + __m128 n3; + + if ((i = n & ~3)) + { + n3 = _mm_set1_ps(y_scale); + for (i -= 4; i >= 0; i -= 4) + { + n1 = _mm_loadu_ps(x + i); + n2 = _mm_loadu_ps(y + i); + n2 = _mm_mul_ps(n2, n3); + n2 = _mm_add_ps(n1, n2); + _mm_storeu_ps(z + i, n2); + } + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + z[n - 3] = x[n - 3] + y[n - 3]*y_scale; + case 2: + z[n - 2] = x[n - 2] + y[n - 2]*y_scale; + case 1: + z[n - 1] = x[n - 1] + y[n - 1]*y_scale; + } +} +#else +void vec_scaledy_addf(float z[], const float x[], const float y[], float y_scale, int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i] + y[i]*y_scale; +} +#endif +/*- End of function --------------------------------------------------------*/ + +void vec_scaledy_add(double z[], const double x[], const double y[], double y_scale, int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i] + y[i]*y_scale; +} +/*- End of function --------------------------------------------------------*/ + +#if defined(HAVE_LONG_DOUBLE) +void vec_scaledy_addl(long double z[], const long double x[], const long double y[], long double y_scale, int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i] + y[i]*y_scale; +} +/*- End of function --------------------------------------------------------*/ +#endif + +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_subf(float z[], const float x[], const float y[], int n) +{ + int i; + __m128 n1; + __m128 n2; + + if ((i = n & ~3)) + { + for (i -= 4; i >= 0; i -= 4) + { + n1 = _mm_loadu_ps(x + i); + n2 = _mm_loadu_ps(y + i); + n2 = _mm_sub_ps(n1, n2); + _mm_storeu_ps(z + i, n2); + } + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + z[n - 3] = x[n - 3] - y[n - 3]; + case 2: + z[n - 2] = x[n - 2] - y[n - 2]; + case 1: + z[n - 1] = x[n - 1] - y[n - 1]; + } +} +#else void vec_subf(float z[], const float x[], const float y[], int n) { int i; @@ -223,6 +516,7 @@ for (i = 0; i < n; i++) z[i] = x[i] - y[i]; } +#endif /*- End of function --------------------------------------------------------*/ void vec_sub(double z[], const double x[], const double y[], int n) @@ -245,7 +539,7 @@ /*- End of function --------------------------------------------------------*/ #endif -void vec_scaled_subf(float z[], const float x[], float x_scale, const float y[], float y_scale, int n) +void vec_scaledxy_subf(float z[], const float x[], float x_scale, const float y[], float y_scale, int n) { int i; @@ -254,7 +548,7 @@ } /*- End of function --------------------------------------------------------*/ -void vec_scaled_sub(double z[], const double x[], double x_scale, const double y[], double y_scale, int n) +void vec_scaledxy_sub(double z[], const double x[], double x_scale, const double y[], double y_scale, int n) { int i; @@ -264,7 +558,7 @@ /*- End of function --------------------------------------------------------*/ #if defined(HAVE_LONG_DOUBLE) -void vec_scaled_subl(long double z[], const long double x[], long double x_scale, const long double y[], long double y_scale, int n) +void vec_scaledxy_subl(long double z[], const long double x[], long double x_scale, const long double y[], long double y_scale, int n) { int i; @@ -274,6 +568,35 @@ /*- End of function --------------------------------------------------------*/ #endif +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_scalar_mulf(float z[], const float x[], float y, int n) +{ + int i; + __m128 n1; + __m128 n2; + + if ((i = n & ~3)) + { + n2 = _mm_set1_ps(y); + for (i -= 4; i >= 0; i -= 4) + { + n1 = _mm_loadu_ps(x + i); + n1 = _mm_mul_ps(n1, n2); + _mm_storeu_ps(z + i, n1); + } + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + z[n - 3] = x[n - 3]*y; + case 2: + z[n - 2] = x[n - 2]*y; + case 1: + z[n - 1] = x[n - 1]*y; + } +} +#else void vec_scalar_mulf(float z[], const float x[], float y, int n) { int i; @@ -281,6 +604,7 @@ for (i = 0; i < n; i++) z[i] = x[i]*y; } +#endif /*- End of function --------------------------------------------------------*/ void vec_scalar_mul(double z[], const double x[], double y, int n) @@ -292,17 +616,154 @@ } /*- End of function --------------------------------------------------------*/ +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_scalar_addf(float z[], const float x[], float y, int n) +{ + int i; + __m128 n1; + __m128 n2; + + if ((i = n & ~3)) + { + n2 = _mm_set1_ps(y); + for (i -= 4; i >= 0; i -= 4) + { + n1 = _mm_loadu_ps(x + i); + n1 = _mm_add_ps(n1, n2); + _mm_storeu_ps(z + i, n1); + } + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + z[n - 3] = x[n - 3] + y; + case 2: + z[n - 2] = x[n - 2] + y; + case 1: + z[n - 1] = x[n - 1] + y; + } +} +#else +void vec_scalar_addf(float z[], const float x[], float y, int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i] + y; +} +#endif +/*- End of function --------------------------------------------------------*/ + +void vec_scalar_add(double z[], const double x[], double y, int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i] + y; +} +/*- End of function --------------------------------------------------------*/ + #if defined(HAVE_LONG_DOUBLE) -void vec_scalar_mull(long double z[], const long double x[], long double y, int n) +void vec_scalar_addl(long double z[], const long double x[], long double y, int n) { int i; for (i = 0; i < n; i++) - z[i] = x[i]*y; + z[i] = x[i] + y; } /*- End of function --------------------------------------------------------*/ #endif +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_scalar_subf(float z[], const float x[], float y, int n) +{ + int i; + __m128 n1; + __m128 n2; + + if ((i = n & ~3)) + { + n2 = _mm_set1_ps(y); + for (i -= 4; i >= 0; i -= 4) + { + n1 = _mm_loadu_ps(x + i); + n1 = _mm_sub_ps(n1, n2); + _mm_storeu_ps(z + i, n1); + } + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + z[n - 3] = x[n - 3] - y; + case 2: + z[n - 2] = x[n - 2] - y; + case 1: + z[n - 1] = x[n - 1] - y; + } +} +#else +void vec_scalar_subf(float z[], const float x[], float y, int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i] - y; +} +#endif +/*- End of function --------------------------------------------------------*/ + +void vec_scalar_sub(double z[], const double x[], double y, int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i] - y; +} +/*- End of function --------------------------------------------------------*/ + +#if defined(HAVE_LONG_DOUBLE) +void vec_scalar_subl(long double z[], const long double x[], long double y, int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i] - y; +} +/*- End of function --------------------------------------------------------*/ +#endif + +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_mulf(float z[], const float x[], const float y[], int n) +{ + int i; + __m128 n1; + __m128 n2; + __m128 n3; + + if ((i = n & ~3)) + { + for (i -= 4; i >= 0; i -= 4) + { + n1 = _mm_loadu_ps(x + i); + n2 = _mm_loadu_ps(y + i); + n3 = _mm_mul_ps(n1, n2); + _mm_storeu_ps(z + i, n3); + } + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + z[n - 3] = x[n - 3]*y[n - 3]; + case 2: + z[n - 2] = x[n - 2]*y[n - 2]; + case 1: + z[n - 1] = x[n - 1]*y[n - 1]; + } +} +#else void vec_mulf(float z[], const float x[], const float y[], int n) { int i; @@ -311,6 +772,7 @@ z[i] = x[i]*y[i]; } /*- End of function --------------------------------------------------------*/ +#endif void vec_mul(double z[], const double x[], const double y[], int n) { @@ -344,7 +806,7 @@ z = 0.0f; if ((i = n & ~3)) - { + { n4 = _mm_setzero_ps(); //sets sum to zero for (i -= 4; i >= 0; i -= 4) { @@ -357,7 +819,7 @@ n4 = _mm_add_ss(_mm_shuffle_ps(n4, n4, 1), n4); _mm_store_ss(&z, n4); } - /* Now deal with the last 1 to 3 elements, which don't fill in an SSE2 register */ + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ switch (n & 3) { case 3: @@ -419,17 +881,54 @@ } /*- End of function --------------------------------------------------------*/ +#define LMS_LEAK_RATE 0.9999f + +#if defined(__GNUC__) && defined(SPANDSP_USE_SSE2) +void vec_lmsf(const float x[], float y[], int n, float error) +{ + int i; + __m128 n1; + __m128 n2; + __m128 n3; + __m128 n4; + + if ((i = n & ~3)) + { + n3 = _mm_set1_ps(error); + n4 = _mm_set1_ps(LMS_LEAK_RATE); + for (i -= 4; i >= 0; i -= 4) + { + n1 = _mm_loadu_ps(x + i); + n2 = _mm_loadu_ps(y + i); + n1 = _mm_mul_ps(n1, n3); + n2 = _mm_mul_ps(n2, n4); + n1 = _mm_add_ps(n1, n2); + _mm_storeu_ps(y + i, n1); + } + } + /* Now deal with the last 1 to 3 elements, which don't fill an SSE2 register */ + switch (n & 3) + { + case 3: + y[n - 3] = y[n - 3]*LMS_LEAK_RATE + x[n - 3]*error; + case 2: + y[n - 2] = y[n - 2]*LMS_LEAK_RATE + x[n - 2]*error; + case 1: + y[n - 1] = y[n - 1]*LMS_LEAK_RATE + x[n - 1]*error; + } +} +#else void vec_lmsf(const float x[], float y[], int n, float error) { int i; for (i = 0; i < n; i++) { - y[i] += x[i]*error; /* Leak a little to tame uncontrolled wandering */ - y[i] *= 0.9999f; + y[i] = y[i]*LMS_LEAK_RATE + x[i]*error; } } +#endif /*- End of function --------------------------------------------------------*/ void vec_circular_lmsf(const float x[], float y[], int n, int pos, float error) Modified: freeswitch/trunk/libs/spandsp/src/vector_int.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/vector_int.c (original) +++ freeswitch/trunk/libs/spandsp/src/vector_int.c Tue Jan 27 22:48:03 2009 @@ -22,28 +22,53 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: vector_int.c,v 1.15 2008/09/18 13:54:32 steveu Exp $ + * $Id: vector_int.c,v 1.23 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ #if defined(HAVE_CONFIG_H) -#include +#include "config.h" #endif #include #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include +#if defined(SPANDSP_USE_MMX) +#include +#endif +#if defined(SPANDSP_USE_SSE) +#include +#endif +#if defined(SPANDSP_USE_SSE2) +#include +#endif +#if defined(SPANDSP_USE_SSE3) +#include +#endif +#if defined(SPANDSP_USE_SSE4_1) +#include +#endif +#if defined(SPANDSP_USE_SSE4_2) +#include +#endif +#if defined(SPANDSP_USE_SSE4A) +#include +#endif +#if defined(SPANDSP_USE_SSE5) +#include +#endif + #include "spandsp/telephony.h" #include "spandsp/vector_int.h" @@ -52,6 +77,105 @@ int32_t z; #if defined(__GNUC__) && defined(SPANDSP_USE_MMX) +#if defined(__x86_64__) + __asm__ __volatile__( + " emms;\n" + " pxor %%mm0,%%mm0;\n" + " leaq -32(%%rsi,%%rax,2),%%rdx;\n" /* rdx = top - 32 */ + + " cmpq %%rdx,%%rsi;\n" + " ja 1f;\n" + + /* Work in blocks of 16 int16_t's until we are near the end */ + " .p2align 2;\n" + "2:\n" + " movq (%%rdi),%%mm1;\n" + " movq (%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + " movq 8(%%rdi),%%mm1;\n" + " movq 8(%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + " movq 16(%%rdi),%%mm1;\n" + " movq 16(%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + " movq 24(%%rdi),%%mm1;\n" + " movq 24(%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + + " addq $32,%%rsi;\n" + " addq $32,%%rdi;\n" + " cmpq %%rdx,%%rsi;\n" + " jbe 2b;\n" + + " .p2align 2;\n" + "1:\n" + " addq $24,%%rdx;\n" /* Now edx = top - 8 */ + " cmpq %%rdx,%%rsi;\n" + " ja 3f;\n" + + /* Work in blocks of 4 int16_t's until we are near the end */ + " .p2align 2;\n" + "4:\n" + " movq (%%rdi),%%mm1;\n" + " movq (%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + + " addq $8,%%rsi;\n" + " addq $8,%%rdi;\n" + " cmpq %%rdx,%%rsi;" + " jbe 4b;\n" + + " .p2align 2;\n" + "3:\n" + " addq $4,%%rdx;\n" /* Now edx = top - 4 */ + " cmpq %%rdx,%%rsi;\n" + " ja 5f;\n" + + /* Work in a block of 2 int16_t's */ + " movd (%%rdi),%%mm1;\n" + " movd (%%rsi),%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + + " addq $4,%%rsi;\n" + " addq $4,%%rdi;\n" + + " .p2align 2;\n" + "5:\n" + " addq $2,%%rdx;\n" /* Now edx = top - 2 */ + " cmpq %%rdx,%%rsi;\n" + " ja 6f;\n" + + /* Deal with the very last int16_t, when n is odd */ + " movswl (%%rdi),%%eax;\n" + " andl $65535,%%eax;\n" + " movd %%eax,%%mm1;\n" + " movswl (%%rsi),%%eax;\n" + " andl $65535,%%eax;\n" + " movd %%eax,%%mm2;\n" + " pmaddwd %%mm2,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + + " .p2align 2;\n" + "6:\n" + /* Merge the pieces of the answer */ + " movq %%mm0,%%mm1;\n" + " punpckhdq %%mm0,%%mm1;\n" + " paddd %%mm1,%%mm0;\n" + /* Et voila, eax has the final result */ + " movd %%mm0,%%eax;\n" + + " emms;\n" + : "=a" (z) + : "S" (x), "D" (y), "a" (n) + : "cc" + ); +#else __asm__ __volatile__( " emms;\n" " pxor %%mm0,%%mm0;\n" @@ -149,6 +273,7 @@ : "S" (x), "D" (y), "a" (n) : "cc" ); +#endif #else int i; @@ -193,6 +318,155 @@ static const int32_t upper_bound = 0x7FFF7FFF; int32_t max; +#if defined(__x86_64__) + __asm__ __volatile__( + " emms;\n" + " pushq %%rdx;\n" + " leaq -8(%%rsi,%%rax,2),%%rdx;\n" + + " cmpq %%rdx,%%rsi;\n" + " jbe 2f;\n" + " movd %[lower],%%mm0;\n" + " movd %[upper],%%mm1;\n" + " jmp 1f;\n" + + " .p2align 2;\n" + "2:\n" + " movq (%%rsi),%%mm0;\n" /* mm0 will be max's */ + " movq %%mm0,%%mm1;\n" /* mm1 will be min's */ + " addq $8,%%rsi;\n" + " cmpq %%rdx,%%rsi;\n" + " ja 4f;\n" + + "3:\n" + " movq (%%rsi),%%mm2;\n" + + " movq %%mm2,%%mm3;\n" + " pcmpgtw %%mm0,%%mm3;\n" /* mm3 is bitmask for words where mm2 > mm0 */ + " movq %%mm3,%%mm4;\n" + " pand %%mm2,%%mm3;\n" /* mm3 is mm2 masked to new max's */ + " pandn %%mm0,%%mm4;\n" /* mm4 is mm0 masked to its max's */ + " por %%mm3,%%mm4;\n" + " movq %%mm4,%%mm0;\n" /* Now mm0 is updated max's */ + + " movq %%mm1,%%mm3;\n" + " pcmpgtw %%mm2,%%mm3;\n" /* mm3 is bitmask for words where mm2 < mm1 */ + " pand %%mm3,%%mm2;\n" /* mm2 is mm2 masked to new min's */ + " pandn %%mm1,%%mm3;\n" /* mm3 is mm1 masked to its min's */ + " por %%mm3,%%mm2;\n" + " movq %%mm2,%%mm1;\n" /* now mm1 is updated min's */ + + " addq $8,%%rsi;\n" + " cmpq %%rdx,%%rsi;\n" + " jbe 3b;\n" + + " .p2align 2;\n" + "4:\n" + /* Merge down the 4-word max/mins to lower 2 words */ + " movq %%mm0,%%mm2;\n" + " psrlq $32,%%mm2;\n" + " movq %%mm2,%%mm3;\n" + " pcmpgtw %%mm0,%%mm3;\n" /* mm3 is bitmask for words where mm2 > mm0 */ + " pand %%mm3,%%mm2;\n" /* mm2 is mm2 masked to new max's */ + " pandn %%mm0,%%mm3;\n" /* mm3 is mm0 masked to its max's */ + " por %%mm3,%%mm2;\n" + " movq %%mm2,%%mm0;\n" /* now mm0 is updated max's */ + + " movq %%mm1,%%mm2;\n" + " psrlq $32,%%mm2;\n" + " movq %%mm1,%%mm3;\n" + " pcmpgtw %%mm2,%%mm3;\n" /* mm3 is bitmask for words where mm2 < mm1 */ + " pand %%mm3,%%mm2;\n" /* mm2 is mm2 masked to new min's */ + " pandn %%mm1,%%mm3;\n" /* mm3 is mm1 masked to its min's */ + " por %%mm3,%%mm2;\n" + " movq %%mm2,%%mm1;\n" /* now mm1 is updated min's */ + + " .p2align 2;\n" + "1:\n" + " addq $4,%%rdx;\n" /* now dx = top-4 */ + " cmpq %%rdx,%%rsi;\n" + " ja 5f;\n" + /* Here, there are >= 2 words of input remaining */ + " movd (%%rsi),%%mm2;\n" + + " movq %%mm2,%%mm3;\n" + " pcmpgtw %%mm0,%%mm3;\n" /* mm3 is bitmask for words where mm2 > mm0 */ + " movq %%mm3,%%mm4;\n" + " pand %%mm2,%%mm3;\n" /* mm3 is mm2 masked to new max's */ + " pandn %%mm0,%%mm4;\n" /* mm4 is mm0 masked to its max's */ + " por %%mm3,%%mm4;\n" + " movq %%mm4,%%mm0;\n" /* now mm0 is updated max's */ + + " movq %%mm1,%%mm3;\n" + " pcmpgtw %%mm2,%%mm3;\n" /* mm3 is bitmask for words where mm2 < mm1 */ + " pand %%mm3,%%mm2;\n" /* mm2 is mm2 masked to new min's */ + " pandn %%mm1,%%mm3;\n" /* mm3 is mm1 masked to its min's */ + " por %%mm3,%%mm2;\n" + " movq %%mm2,%%mm1;\n" /* now mm1 is updated min's */ + + " addq $4,%%rsi;\n" + + " .p2align 2;\n" + "5:\n" + /* Merge down the 2-word max/mins to 1 word */ + " movq %%mm0,%%mm2;\n" + " psrlq $16,%%mm2;\n" + " movq %%mm2,%%mm3;\n" + " pcmpgtw %%mm0,%%mm3;\n" /* mm3 is bitmask for words where mm2 > mm0 */ + " pand %%mm3,%%mm2;\n" /* mm2 is mm2 masked to new max's */ + " pandn %%mm0,%%mm3;\n" /* mm3 is mm0 masked to its max's */ + " por %%mm3,%%mm2;\n" + " movd %%mm2,%%ecx;\n" /* cx is max so far */ + + " movq %%mm1,%%mm2;\n" + " psrlq $16,%%mm2;\n" + " movq %%mm1,%%mm3;\n" + " pcmpgtw %%mm2,%%mm3;\n" /* mm3 is bitmask for words where mm2 < mm1 */ + " pand %%mm3,%%mm2;\n" /* mm2 is mm2 masked to new min's */ + " pandn %%mm1,%%mm3;\n" /* mm3 is mm1 masked to its min's */ + " por %%mm3,%%mm2;\n" + " movd %%mm2,%%eax;\n" /* ax is min so far */ + + " addq $2,%%rdx;\n" /* now dx = top-2 */ + " cmpq %%rdx,%%rsi;\n" + " ja 6f;\n" + + /* Here, there is one word of input left */ + " cmpw (%%rsi),%%cx;\n" + " jge 9f;\n" + " movw (%%rsi),%%cx;\n" + " .p2align 2;\n" + "9:\n" + " cmpw (%%rsi),%%ax;\n" + " jle 6f;\n" + " movw (%%rsi),%%ax;\n" + + " .p2align 2;\n" + "6:\n" + /* (finally!) cx is the max, ax the min */ + " movswl %%cx,%%ecx;\n" + " movswl %%ax,%%eax;\n" + + " popq %%rdx;\n" /* ptr to output max,min vals */ + " andq %%rdx,%%rdx;\n" + " jz 7f;\n" + " movw %%cx,(%%rdx);\n" /* max */ + " movw %%ax,2(%%rdx);\n" /* min */ + " .p2align 2;\n" + "7:\n" + /* Now calculate max absolute value */ + " negl %%eax;\n" + " cmpl %%ecx,%%eax;\n" + " jge 8f;\n" + " movl %%ecx,%%eax;\n" + " .p2align 2;\n" + "8:\n" + " emms;\n" + : "=a" (max) + : "S" (x), "a" (n), "d" (out), [lower] "m" (lower_bound), [upper] "m" (upper_bound) + : "ecx" + ); +#else __asm__ __volatile__( " emms;\n" " pushl %%edx;\n" @@ -341,6 +615,7 @@ : "S" (x), "a" (n), "d" (out), [lower] "m" (lower_bound), [upper] "m" (upper_bound) : "ecx" ); +#endif return max; #else int i; @@ -362,8 +637,11 @@ /*endif*/ } /*endfor*/ - out[0] = max; - out[1] = min; + if (out) + { + out[0] = max; + out[1] = min; + } z = abs(min); if (z > max) return z; Modified: freeswitch/trunk/libs/spandsp/tests/Makefile.am ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/Makefile.am (original) +++ freeswitch/trunk/libs/spandsp/tests/Makefile.am Tue Jan 27 22:48:03 2009 @@ -16,7 +16,7 @@ ## along with this program; if not, write to the Free Software ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ## -## $Id: Makefile.am,v 1.107 2008/09/18 12:05:35 steveu Exp $ +## $Id: Makefile.am,v 1.108 2008/11/30 10:17:31 steveu Exp $ AM_CFLAGS = $(COMP_VENDOR_CFLAGS) AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS) @@ -64,9 +64,9 @@ line_model_tests \ logging_tests \ lpc10_tests \ - make_g168_css \ - modem_echo_tests \ modem_connect_tones_tests \ + modem_echo_tests \ + make_g168_css \ noise_tests \ oki_adpcm_tests \ playout_tests \ Modified: freeswitch/trunk/libs/spandsp/tests/adsi_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/adsi_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/adsi_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: adsi_tests.c,v 1.45 2008/08/29 09:28:13 steveu Exp $ + * $Id: adsi_tests.c,v 1.48 2008/11/30 10:17:31 steveu Exp $ */ /*! \page adsi_tests_page ADSI tests @@ -36,6 +36,9 @@ \section adsi_tests_page_sec_2 How does it work? */ +/* Enable the following definition to enable direct probing into the FAX structures */ +//#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include "config.h" #endif @@ -48,6 +51,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -59,8 +66,8 @@ int errors = 0; -adsi_rx_state_t rx_adsi; -adsi_tx_state_t tx_adsi; +adsi_rx_state_t *rx_adsi; +adsi_tx_state_t *tx_adsi; int current_standard = 0; int good_message_received; @@ -232,7 +239,7 @@ printf("Message breakdown\n"); do { - l = adsi_next_field(&rx_adsi, msg, len, l, &field_type, &field_body, &field_len); + l = adsi_next_field(rx_adsi, msg, len, l, &field_type, &field_body, &field_len); if (l > 0) { if (field_body) @@ -626,22 +633,24 @@ the routines visible. */ /* Check the character encode/decode cycle */ current_standard = ADSI_STANDARD_TDD; - adsi_tx_init(&tx_adsi, ADSI_STANDARD_TDD); - adsi_rx_init(&rx_adsi, ADSI_STANDARD_TDD, put_adsi_msg, NULL); + tx_adsi = adsi_tx_init(NULL, ADSI_STANDARD_TDD); + rx_adsi = adsi_rx_init(NULL, ADSI_STANDARD_TDD, put_adsi_msg, NULL); s = "The quick Brown Fox Jumps Over The Lazy dog 0123456789!@#$%^&*()"; while ((ch = *s++)) { - xx = adsi_encode_baudot(&tx_adsi, ch); + xx = adsi_encode_baudot(tx_adsi, ch); if ((xx & 0x3E0)) { - yy = adsi_decode_baudot(&rx_adsi, (xx >> 5) & 0x1F); + yy = adsi_decode_baudot(rx_adsi, (xx >> 5) & 0x1F); if (yy) printf("%c", yy); } - yy = adsi_decode_baudot(&rx_adsi, xx & 0x1F); + yy = adsi_decode_baudot(rx_adsi, xx & 0x1F); if (yy) printf("%c", yy); } + adsi_tx_free(tx_adsi); + adsi_rx_free(rx_adsi); printf("\n"); #endif @@ -658,9 +667,11 @@ else current_standard = test_standard; - adsi_rx_init(&rx_adsi, current_standard, put_adsi_msg, NULL); - span_log_set_level(&rx_adsi.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); - span_log_set_tag(&rx_adsi.logging, "ADSI"); + rx_adsi = adsi_rx_init(NULL, current_standard, put_adsi_msg, NULL); +#if 0 + span_log_set_level(rx_adsi.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); + span_log_set_tag(rx_adsi.logging, "ADSI"); +#endif for (;;) { len = afReadFrames(inhandle, @@ -669,13 +680,14 @@ BLOCK_LEN); if (len == 0) break; - adsi_rx(&rx_adsi, amp, len); + adsi_rx(rx_adsi, amp, len); } if (afCloseFile(inhandle) != 0) { fprintf(stderr, " Cannot close wave file '%s'\n", decode_test_file); exit(2); } + adsi_rx_free(rx_adsi); } else { @@ -702,10 +714,10 @@ for (current_standard = first_standard; current_standard <= last_standard; current_standard++) { printf("Testing %s\n", adsi_standard_to_str(current_standard)); - adsi_tx_init(&tx_adsi, current_standard); + tx_adsi = adsi_tx_init(NULL, current_standard); if (short_preamble) - adsi_tx_set_preamble(&tx_adsi, 50, 20, 5, -1); - adsi_rx_init(&rx_adsi, current_standard, put_adsi_msg, NULL); + adsi_tx_set_preamble(tx_adsi, 50, 20, 5, -1); + rx_adsi = adsi_rx_init(NULL, current_standard, put_adsi_msg, NULL); /* Fake an OK condition for the first message test */ good_message_received = TRUE; @@ -714,7 +726,7 @@ { if (push == 0) { - if ((len = adsi_tx(&tx_adsi, amp, BLOCK_LEN)) == 0) + if ((len = adsi_tx(tx_adsi, amp, BLOCK_LEN)) == 0) push = 10; } else @@ -729,8 +741,8 @@ exit(2); } good_message_received = FALSE; - adsi_msg_len = adsi_create_message(&tx_adsi, adsi_msg); - adsi_msg_len = adsi_tx_put_message(&tx_adsi, adsi_msg, adsi_msg_len); + adsi_msg_len = adsi_create_message(tx_adsi, adsi_msg); + adsi_msg_len = adsi_tx_put_message(tx_adsi, adsi_msg, adsi_msg_len); } } if (len < BLOCK_LEN) @@ -750,8 +762,10 @@ exit(2); } } - adsi_rx(&rx_adsi, amp, len); + adsi_rx(rx_adsi, amp, len); } + adsi_rx_free(rx_adsi); + adsi_tx_free(tx_adsi); } if (log_audio) { Modified: freeswitch/trunk/libs/spandsp/tests/async_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/async_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/async_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: async_tests.c,v 1.17 2008/05/13 13:17:25 steveu Exp $ + * $Id: async_tests.c,v 1.18 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -40,6 +40,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" async_rx_state_t rx_async; Modified: freeswitch/trunk/libs/spandsp/tests/at_interpreter_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/at_interpreter_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/at_interpreter_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: at_interpreter_tests.c,v 1.19 2008/09/16 12:45:25 steveu Exp $ + * $Id: at_interpreter_tests.c,v 1.20 2008/11/30 05:43:37 steveu Exp $ */ /*! \file */ @@ -44,6 +44,7 @@ #include #include +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES #include "spandsp.h" #define DLE 0x10 Modified: freeswitch/trunk/libs/spandsp/tests/awgn_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/awgn_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/awgn_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: awgn_tests.c,v 1.17 2008/05/13 13:17:25 steveu Exp $ + * $Id: awgn_tests.c,v 1.18 2008/11/30 12:38:27 steveu Exp $ */ /*! \page awgn_tests_page AWGN tests @@ -37,6 +37,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #if !defined(M_PI) Modified: freeswitch/trunk/libs/spandsp/tests/bell_mf_rx_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/bell_mf_rx_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/bell_mf_rx_tests.c Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: bell_mf_rx_tests.c,v 1.12 2008/05/13 13:17:25 steveu Exp $ + * $Id: bell_mf_rx_tests.c,v 1.14 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -50,6 +50,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" /* Basic Bell MF specs: @@ -225,11 +229,11 @@ float rrb; float rcfo; time_t now; - bell_mf_rx_state_t mf_state; + bell_mf_rx_state_t *mf_state; awgn_state_t noise_source; time(&now); - bell_mf_rx_init(&mf_state, NULL, NULL); + mf_state = bell_mf_rx_init(NULL, NULL, NULL); /* Test 1: Mitel's test 1 isn't really a test. Its a calibration step, which has no meaning here. */ @@ -251,8 +255,8 @@ { len = my_mf_generate(amp, digit); codec_munge(amp, len); - bell_mf_rx(&mf_state, amp, len); - actual = bell_mf_rx_get(&mf_state, buf, 128); + bell_mf_rx(mf_state, amp, len); + actual = bell_mf_rx_get(mf_state, buf, 128); if (actual != 1 || buf[0] != digit[0]) { printf (" Sent '%s'\n", digit); @@ -304,16 +308,16 @@ my_mf_gen_init((float) i/1000.0, -17, 0.0, -17, 68, 68); len = my_mf_generate(amp, digit); codec_munge(amp, len); - bell_mf_rx(&mf_state, amp, len); - nplus += bell_mf_rx_get(&mf_state, buf, 128); + bell_mf_rx(mf_state, amp, len); + nplus += bell_mf_rx_get(mf_state, buf, 128); } for (nminus = 0, i = -1; i >= -60; i--) { my_mf_gen_init((float) i/1000.0, -17, 0.0, -17, 68, 68); len = my_mf_generate(amp, digit); codec_munge(amp, len); - bell_mf_rx(&mf_state, amp, len); - nminus += bell_mf_rx_get(&mf_state, buf, 128); + bell_mf_rx(mf_state, amp, len); + nminus += bell_mf_rx_get(mf_state, buf, 128); } rrb = (float) (nplus + nminus)/10.0; rcfo = (float) (nplus - nminus)/10.0; @@ -335,16 +339,16 @@ my_mf_gen_init(0.0, -17, (float) i/1000.0, -17, 68, 68); len = my_mf_generate(amp, digit); codec_munge(amp, len); - bell_mf_rx(&mf_state, amp, len); - nplus += bell_mf_rx_get(&mf_state, buf, 128); + bell_mf_rx(mf_state, amp, len); + nplus += bell_mf_rx_get(mf_state, buf, 128); } for (nminus = 0, i = -1; i >= -60; i--) { my_mf_gen_init(0.0, -17, (float) i/1000.0, -17, 68, 68); len = my_mf_generate(amp, digit); codec_munge(amp, len); - bell_mf_rx(&mf_state, amp, len); - nminus += bell_mf_rx_get(&mf_state, buf, 128); + bell_mf_rx(mf_state, amp, len); + nminus += bell_mf_rx_get(mf_state, buf, 128); } rrb = (float) (nplus + nminus)/10.0; rcfo = (float) (nplus - nminus)/10.0; @@ -380,8 +384,8 @@ len = my_mf_generate(amp, digit); codec_munge(amp, len); - bell_mf_rx(&mf_state, amp, len); - nplus += bell_mf_rx_get(&mf_state, buf, 128); + bell_mf_rx(mf_state, amp, len); + nplus += bell_mf_rx_get(mf_state, buf, 128); } printf(" %c normal twist = %.2fdB\n", digit[0], (float) nplus/10.0); if (nplus < 60) @@ -395,8 +399,8 @@ len = my_mf_generate(amp, digit); codec_munge(amp, len); - bell_mf_rx(&mf_state, amp, len); - nminus += bell_mf_rx_get(&mf_state, buf, 128); + bell_mf_rx(mf_state, amp, len); + nminus += bell_mf_rx_get(mf_state, buf, 128); } printf(" %c reverse twist = %.2fdB\n", digit[0], (float) nminus/10.0); if (nminus < 60) @@ -421,8 +425,8 @@ { len = my_mf_generate(amp, ALL_POSSIBLE_DIGITS); codec_munge(amp, len); - bell_mf_rx(&mf_state, amp, len); - if (bell_mf_rx_get(&mf_state, buf, 128) != 15) + bell_mf_rx(mf_state, amp, len); + if (bell_mf_rx_get(mf_state, buf, 128) != 15) break; if (strcmp(buf, ALL_POSSIBLE_DIGITS) != 0) break; @@ -462,9 +466,8 @@ { len = my_mf_generate(amp, ALL_POSSIBLE_DIGITS); codec_munge(amp, len); - bell_mf_rx(&mf_state, amp, len); - - if (bell_mf_rx_get(&mf_state, buf, 128) != 15) + bell_mf_rx(mf_state, amp, len); + if (bell_mf_rx_get(mf_state, buf, 128) != 15) break; if (strcmp(buf, ALL_POSSIBLE_DIGITS) != 0) break; @@ -495,9 +498,8 @@ for (sample = 0; sample < len; sample++) amp[sample] = saturate(amp[sample] + awgn(&noise_source)); codec_munge(amp, len); - bell_mf_rx(&mf_state, amp, len); - - if (bell_mf_rx_get(&mf_state, buf, 128) != 15) + bell_mf_rx(mf_state, amp, len); + if (bell_mf_rx_get(mf_state, buf, 128) != 15) break; if (strcmp(buf, ALL_POSSIBLE_DIGITS) != 0) break; @@ -523,14 +525,14 @@ printf("Test: Callback digit delivery mode.\n"); callback_ok = FALSE; callback_roll = 0; - bell_mf_rx_init(&mf_state, digit_delivery, (void *) 0x12345678); + mf_state = bell_mf_rx_init(NULL, digit_delivery, (void *) 0x12345678); my_mf_gen_init(0.0, -10, 0.0, -10, 68, 68); for (i = 1; i < 10; i++) { len = 0; for (j = 0; j < i; j++) len += my_mf_generate(amp + len, ALL_POSSIBLE_DIGITS); - bell_mf_rx(&mf_state, amp, len); + bell_mf_rx(mf_state, amp, len); if (!callback_ok) break; } Modified: freeswitch/trunk/libs/spandsp/tests/bell_mf_tx_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/bell_mf_tx_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/bell_mf_tx_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: bell_mf_tx_tests.c,v 1.12 2008/08/16 15:24:15 steveu Exp $ + * $Id: bell_mf_tx_tests.c,v 1.14 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -46,6 +46,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -53,7 +57,7 @@ int main(int argc, char *argv[]) { - bell_mf_tx_state_t gen; + bell_mf_tx_state_t *gen; int16_t amp[16384]; int len; AFfilehandle outhandle; @@ -66,40 +70,40 @@ exit(2); } - bell_mf_tx_init(&gen); - len = bell_mf_tx(&gen, amp, 16384); + gen = bell_mf_tx_init(NULL); + len = bell_mf_tx(gen, amp, 16384); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (bell_mf_tx_put(&gen, "123", -1)) + if (bell_mf_tx_put(gen, "123", -1)) printf("Ooops\n"); - len = bell_mf_tx(&gen, amp, 16384); + len = bell_mf_tx(gen, amp, 16384); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (bell_mf_tx_put(&gen, "456", -1)) + if (bell_mf_tx_put(gen, "456", -1)) printf("Ooops\n"); - len = bell_mf_tx(&gen, amp, 160); + len = bell_mf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (bell_mf_tx_put(&gen, "789", -1)) + if (bell_mf_tx_put(gen, "789", -1)) printf("Ooops\n"); - len = bell_mf_tx(&gen, amp, 160); + len = bell_mf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (bell_mf_tx_put(&gen, "*#", -1)) + if (bell_mf_tx_put(gen, "*#", -1)) printf("Ooops\n"); - len = bell_mf_tx(&gen, amp, 160); + len = bell_mf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, @@ -108,7 +112,7 @@ add_digits = 1; do { - len = bell_mf_tx(&gen, amp, 160); + len = bell_mf_tx(gen, amp, 160); printf("Generated %d samples\n", len); if (len > 0) { @@ -119,7 +123,7 @@ } if (add_digits) { - if (bell_mf_tx_put(&gen, "1234567890", -1)) + if (bell_mf_tx_put(gen, "1234567890", -1)) { printf("Digit buffer full\n"); add_digits = 0; @@ -128,48 +132,48 @@ } while (len > 0); - bell_mf_tx_init(&gen); - len = bell_mf_tx(&gen, amp, 16384); + bell_mf_tx_init(gen); + len = bell_mf_tx(gen, amp, 16384); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (bell_mf_tx_put(&gen, "123", -1)) + if (bell_mf_tx_put(gen, "123", -1)) printf("Ooops\n"); - len = bell_mf_tx(&gen, amp, 16384); + len = bell_mf_tx(gen, amp, 16384); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (bell_mf_tx_put(&gen, "456", -1)) + if (bell_mf_tx_put(gen, "456", -1)) printf("Ooops\n"); - len = bell_mf_tx(&gen, amp, 160); + len = bell_mf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (bell_mf_tx_put(&gen, "789", -1)) + if (bell_mf_tx_put(gen, "789", -1)) printf("Ooops\n"); - len = bell_mf_tx(&gen, amp, 160); + len = bell_mf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (bell_mf_tx_put(&gen, "0*#", -1)) + if (bell_mf_tx_put(gen, "0*#", -1)) printf("Ooops\n"); - len = bell_mf_tx(&gen, amp, 160); + len = bell_mf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (bell_mf_tx_put(&gen, "ABC", -1)) + if (bell_mf_tx_put(gen, "ABC", -1)) printf("Ooops\n"); - len = bell_mf_tx(&gen, amp, 160); + len = bell_mf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, @@ -178,7 +182,7 @@ add_digits = 1; do { - len = bell_mf_tx(&gen, amp, 160); + len = bell_mf_tx(gen, amp, 160); printf("Generated %d samples\n", len); if (len > 0) { @@ -189,7 +193,7 @@ } if (add_digits) { - if (bell_mf_tx_put(&gen, "1234567890", -1)) + if (bell_mf_tx_put(gen, "1234567890", -1)) { printf("Digit buffer full\n"); add_digits = 0; Modified: freeswitch/trunk/libs/spandsp/tests/bert_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/bert_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/bert_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: bert_tests.c,v 1.25 2008/09/07 12:45:17 steveu Exp $ + * $Id: bert_tests.c,v 1.26 2008/11/30 12:38:27 steveu Exp $ */ /*! \file */ @@ -42,6 +42,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" /* Use a local random generator, so the results are consistent across platforms */ Modified: freeswitch/trunk/libs/spandsp/tests/complex_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/complex_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/complex_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: complex_tests.c,v 1.1 2008/09/18 12:09:51 steveu Exp $ + * $Id: complex_tests.c,v 1.2 2009/01/28 03:41:27 steveu Exp $ */ /*! \page complex_tests_page Complex arithmetic tests @@ -39,13 +39,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include "spandsp.h" Modified: freeswitch/trunk/libs/spandsp/tests/complex_vector_float_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/complex_vector_float_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/complex_vector_float_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: complex_vector_float_tests.c,v 1.1 2008/09/18 12:05:35 steveu Exp $ + * $Id: complex_vector_float_tests.c,v 1.2 2008/10/09 13:25:19 steveu Exp $ */ #if defined(HAVE_CONFIG_H) @@ -37,6 +37,55 @@ #include "spandsp.h" +static void cvec_mulf_dumb(complexf_t z[], const complexf_t x[], const complexf_t y[], int n) +{ + int i; + + for (i = 0; i < n; i++) + { + z[i].re = x[i].re*y[i].re - x[i].im*y[i].im; + z[i].im = x[i].re*y[i].im + x[i].im*y[i].re; + } +} +/*- End of function --------------------------------------------------------*/ + +static int test_cvec_mulf(void) +{ + int i; + complexf_t x[100]; + complexf_t y[100]; + complexf_t za[100]; + complexf_t zb[100]; + complexf_t ratio; + + for (i = 0; i < 99; i++) + { + x[i].re = rand(); + x[i].im = rand(); + y[i].re = rand(); + y[i].im = rand(); + } + cvec_mulf(za, x, y, 99); + cvec_mulf_dumb(zb, x, y, 99); + for (i = 0; i < 99; i++) + printf("(%f,%f) (%f,%f) (%f,%f)\n", za[i].re, za[i].im, x[i].re, x[i].im, y[i].re, y[i].im); + for (i = 0; i < 99; i++) + { + ratio.re = za[i].re/zb[i].re; + ratio.im = za[i].im/zb[i].im; + if ((ratio.re < 0.9999 || ratio.re > 1.0001) + || + (ratio.im < 0.9999 || ratio.im > 1.0001)) + { + printf("cvec_mulf() - (%f,%f) (%f,%f)\n", za[i].re, za[i].im, zb[i].re, zb[i].im); + printf("Tests failed\n"); + exit(2); + } + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + static complexf_t cvec_dot_prodf_dumb(const complexf_t x[], const complexf_t y[], int n) { int i; @@ -79,7 +128,7 @@ || (ratio.im < 0.9999 || ratio.im > 1.0001)) { - printf("vec_dot_prod() - (%f,%f) (%f,%f)\n", zsa.re, zsa.im, zsb.re, zsb.im); + printf("cvec_dot_prodf() - (%f,%f) (%f,%f)\n", zsa.re, zsa.im, zsb.re, zsb.im); printf("Tests failed\n"); exit(2); } @@ -90,6 +139,7 @@ int main(int argc, char *argv[]) { + test_cvec_mulf(); test_cvec_dot_prodf(); printf("Tests passed.\n"); Modified: freeswitch/trunk/libs/spandsp/tests/dc_restore_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/dc_restore_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/dc_restore_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: dc_restore_tests.c,v 1.23 2008/05/13 13:17:25 steveu Exp $ + * $Id: dc_restore_tests.c,v 1.24 2008/11/30 12:38:27 steveu Exp $ */ /*! \page dc_restore_tests_page DC restoration tests @@ -38,6 +38,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" int main (int argc, char *argv[]) Modified: freeswitch/trunk/libs/spandsp/tests/dtmf_rx_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/dtmf_rx_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/dtmf_rx_tests.c Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: dtmf_rx_tests.c,v 1.42 2008/08/29 09:28:13 steveu Exp $ + * $Id: dtmf_rx_tests.c,v 1.44 2008/11/30 10:17:31 steveu Exp $ */ /* @@ -96,6 +96,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -314,12 +318,12 @@ int nminus; float rrb; float rcfo; - dtmf_rx_state_t dtmf_state; + dtmf_rx_state_t *dtmf_state; awgn_state_t noise_source; - dtmf_rx_init(&dtmf_state, NULL, NULL); + dtmf_state = dtmf_rx_init(NULL, NULL, NULL); if (use_dialtone_filter) - dtmf_rx_parms(&dtmf_state, TRUE, -1, -1, -99); + dtmf_rx_parms(dtmf_state, TRUE, -1, -1, -99); /* Test 1: Mitel's test 1 isn't really a test. Its a calibration step, which has no meaning here. */ @@ -342,9 +346,9 @@ { len = my_dtmf_generate(amp, digit); codec_munge(munge, amp, len); - dtmf_rx(&dtmf_state, amp, len); + dtmf_rx(dtmf_state, amp, len); - actual = dtmf_rx_get(&dtmf_state, buf, 128); + actual = dtmf_rx_get(dtmf_state, buf, 128); if (actual != 1 || buf[0] != digit[0]) { @@ -396,16 +400,16 @@ my_dtmf_gen_init((float) i/1000.0f, -17, 0.0f, -17, 50, 50); len = my_dtmf_generate(amp, digit); codec_munge(munge, amp, len); - dtmf_rx(&dtmf_state, amp, len); - nplus += dtmf_rx_get(&dtmf_state, buf, 128); + dtmf_rx(dtmf_state, amp, len); + nplus += dtmf_rx_get(dtmf_state, buf, 128); } for (nminus = 0, i = -1; i >= -60; i--) { my_dtmf_gen_init((float) i/1000.0f, -17, 0.0f, -17, 50, 50); len = my_dtmf_generate(amp, digit); codec_munge(munge, amp, len); - dtmf_rx(&dtmf_state, amp, len); - nminus += dtmf_rx_get(&dtmf_state, buf, 128); + dtmf_rx(dtmf_state, amp, len); + nminus += dtmf_rx_get(dtmf_state, buf, 128); } rrb = (float) (nplus + nminus)/10.0f; rcfo = (float) (nplus - nminus)/10.0f; @@ -426,16 +430,16 @@ my_dtmf_gen_init(0.0f, -17, (float) i/1000.0f, -17, 50, 50); len = my_dtmf_generate(amp, digit); codec_munge(munge, amp, len); - dtmf_rx(&dtmf_state, amp, len); - nplus += dtmf_rx_get(&dtmf_state, buf, 128); + dtmf_rx(dtmf_state, amp, len); + nplus += dtmf_rx_get(dtmf_state, buf, 128); } for (nminus = 0, i = -1; i >= -60; i--) { my_dtmf_gen_init(0.0f, -17, (float) i/1000.0f, -17, 50, 50); len = my_dtmf_generate(amp, digit); codec_munge(munge, amp, len); - dtmf_rx(&dtmf_state, amp, len); - nminus += dtmf_rx_get(&dtmf_state, buf, 128); + dtmf_rx(dtmf_state, amp, len); + nminus += dtmf_rx_get(dtmf_state, buf, 128); } rrb = (float) (nplus + nminus)/10.0f; rcfo = (float) (nplus - nminus)/10.0f; @@ -488,8 +492,8 @@ len = my_dtmf_generate(amp, digit); codec_munge(munge, amp, len); - dtmf_rx(&dtmf_state, amp, len); - nplus += dtmf_rx_get(&dtmf_state, buf, 128); + dtmf_rx(dtmf_state, amp, len); + nplus += dtmf_rx_get(dtmf_state, buf, 128); } printf(" %c normal twist = %.2fdB\n", digit[0], (float) nplus/10.0); if (nplus < 80) @@ -503,8 +507,8 @@ len = my_dtmf_generate(amp, digit); codec_munge(munge, amp, len); - dtmf_rx(&dtmf_state, amp, len); - nminus += dtmf_rx_get(&dtmf_state, buf, 128); + dtmf_rx(dtmf_state, amp, len); + nminus += dtmf_rx_get(dtmf_state, buf, 128); } printf(" %c reverse twist = %.2fdB\n", digit[0], (float) nminus/10.0); if (nminus < 40) @@ -531,8 +535,8 @@ len = my_dtmf_generate(amp, "1"); codec_munge(munge, amp, len); - dtmf_rx(&dtmf_state, amp, len); - nplus += dtmf_rx_get(&dtmf_state, buf, 128); + dtmf_rx(dtmf_state, amp, len); + nplus += dtmf_rx_get(dtmf_state, buf, 128); } printf(" Dynamic range = %ddB\n", nplus); /* We ought to set some pass/fail condition, even if Mitel did not. If @@ -560,8 +564,8 @@ len = my_dtmf_generate(amp, "1"); codec_munge(munge, amp, len); - dtmf_rx(&dtmf_state, amp, len); - nplus += dtmf_rx_get(&dtmf_state, buf, 128); + dtmf_rx(dtmf_state, amp, len); + nplus += dtmf_rx_get(dtmf_state, buf, 128); } printf(" Guard time = %dms\n", (500 - nplus)/10); printf(" Passed\n"); @@ -593,9 +597,9 @@ amp[sample] = saturate(amp[sample] + awgn(&noise_source)); codec_munge(munge, amp, len); - dtmf_rx(&dtmf_state, amp, len); + dtmf_rx(dtmf_state, amp, len); - if (dtmf_rx_get(&dtmf_state, buf, 128) != 1) + if (dtmf_rx_get(dtmf_state, buf, 128) != 1) break; } if (i == 1000) @@ -621,11 +625,11 @@ char buf[128 + 1]; AFfilehandle inhandle; int frames; - dtmf_rx_state_t dtmf_state; + dtmf_rx_state_t *dtmf_state; - dtmf_rx_init(&dtmf_state, NULL, NULL); + dtmf_state = dtmf_rx_init(NULL, NULL, NULL); if (use_dialtone_filter) - dtmf_rx_parms(&dtmf_state, TRUE, -1, -1, -99); + dtmf_rx_parms(dtmf_state, TRUE, -1, -1, -99); /* The remainder of the Mitel tape is the talk-off test */ /* Here we use the Bellcore test tapes (much tougher), in six @@ -645,8 +649,8 @@ hits = 0; while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, SAMPLE_RATE))) { - dtmf_rx(&dtmf_state, amp, frames); - len = dtmf_rx_get(&dtmf_state, buf, 128); + dtmf_rx(dtmf_state, amp, frames); + len = dtmf_rx_get(dtmf_state, buf, 128); if (len > 0) { for (i = 0; i < len; i++) @@ -686,13 +690,13 @@ int len; int sample; char buf[128 + 1]; - dtmf_rx_state_t dtmf_state; + dtmf_rx_state_t *dtmf_state; tone_gen_descriptor_t dial_tone_desc; tone_gen_state_t dial_tone; - dtmf_rx_init(&dtmf_state, NULL, NULL); + dtmf_state = dtmf_rx_init(NULL, NULL, NULL); if (use_dialtone_filter) - dtmf_rx_parms(&dtmf_state, TRUE, -1, -1, -99); + dtmf_rx_parms(dtmf_state, TRUE, -1, -1, -99); /* Test dial tone tolerance */ printf("Test: Dial tone tolerance.\n"); @@ -710,9 +714,9 @@ for (sample = 0; sample < len; sample++) amp[sample] = saturate(amp[sample] + amp2[sample]); codec_munge(munge, amp, len); - dtmf_rx(&dtmf_state, amp, len); + dtmf_rx(dtmf_state, amp, len); - if (dtmf_rx_get(&dtmf_state, buf, 128) != strlen(ALL_POSSIBLE_DIGITS)) + if (dtmf_rx_get(dtmf_state, buf, 128) != strlen(ALL_POSSIBLE_DIGITS)) break; } if (i != 10) @@ -736,23 +740,23 @@ int j; int len; int sample; - dtmf_rx_state_t dtmf_state; + dtmf_rx_state_t *dtmf_state; /* Test the callback mode for delivering detected digits */ printf("Test: Callback digit delivery mode.\n"); callback_hit = FALSE; callback_ok = TRUE; callback_roll = 0; - dtmf_rx_init(&dtmf_state, digit_delivery, (void *) 0x12345678); + dtmf_state = dtmf_rx_init(NULL, digit_delivery, (void *) 0x12345678); if (use_dialtone_filter) - dtmf_rx_parms(&dtmf_state, TRUE, -1, -1, -99); + dtmf_rx_parms(dtmf_state, TRUE, -1, -1, -99); my_dtmf_gen_init(0.0f, DEFAULT_DTMF_TX_LEVEL, 0.0f, DEFAULT_DTMF_TX_LEVEL, DEFAULT_DTMF_TX_ON_TIME, DEFAULT_DTMF_TX_OFF_TIME); for (i = 1; i < 10; i++) { len = 0; for (j = 0; j < i; j++) len += my_dtmf_generate(amp + len, ALL_POSSIBLE_DIGITS); - dtmf_rx(&dtmf_state, amp, len); + dtmf_rx(dtmf_state, amp, len); if (!callback_hit || !callback_ok) break; } @@ -768,10 +772,10 @@ callback_hit = FALSE; callback_ok = TRUE; callback_roll = 0; - dtmf_rx_init(&dtmf_state, NULL, NULL); - dtmf_rx_set_realtime_callback(&dtmf_state, digit_status, (void *) 0x12345678); + dtmf_rx_init(dtmf_state, NULL, NULL); + dtmf_rx_set_realtime_callback(dtmf_state, digit_status, (void *) 0x12345678); if (use_dialtone_filter) - dtmf_rx_parms(&dtmf_state, TRUE, -1, -1, -99); + dtmf_rx_parms(dtmf_state, TRUE, -1, -1, -99); my_dtmf_gen_init(0.0f, DEFAULT_DTMF_TX_LEVEL, 0.0f, DEFAULT_DTMF_TX_LEVEL, DEFAULT_DTMF_TX_ON_TIME, DEFAULT_DTMF_TX_OFF_TIME); step = 0; for (i = 1; i < 10; i++) @@ -781,7 +785,7 @@ len += my_dtmf_generate(amp + len, ALL_POSSIBLE_DIGITS); for (sample = 0, j = SAMPLES_PER_CHUNK; sample < len; sample += SAMPLES_PER_CHUNK, j = ((len - sample) >= SAMPLES_PER_CHUNK) ? SAMPLES_PER_CHUNK : (len - sample)) { - dtmf_rx(&dtmf_state, &[sample], j); + dtmf_rx(dtmf_state, &[sample], j); if (!callback_ok) break; step += j; @@ -801,15 +805,15 @@ { int16_t amp[SAMPLES_PER_CHUNK]; AFfilehandle inhandle; - dtmf_rx_state_t dtmf_state; + dtmf_rx_state_t *dtmf_state; char buf[128 + 1]; int actual; int samples; int total; - dtmf_rx_init(&dtmf_state, NULL, NULL); + dtmf_state = dtmf_rx_init(NULL, NULL, NULL); if (use_dialtone_filter) - dtmf_rx_parms(&dtmf_state, TRUE, -1, -1, -99); + dtmf_rx_parms(dtmf_state, TRUE, -1, -1, -99); /* We will decode the audio from a wave file. */ @@ -823,9 +827,9 @@ while ((samples = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, SAMPLES_PER_CHUNK)) > 0) { codec_munge(munge, amp, samples); - dtmf_rx(&dtmf_state, amp, samples); - //printf("Status 0x%X\n", dtmf_rx_status(&dtmf_state)); - if ((actual = dtmf_rx_get(&dtmf_state, buf, 128)) > 0) + dtmf_rx(dtmf_state, amp, samples); + //printf("Status 0x%X\n", dtmf_rx_status(dtmf_state)); + if ((actual = dtmf_rx_get(dtmf_state, buf, 128)) > 0) printf("Received '%s'\n", buf); total += actual; } Modified: freeswitch/trunk/libs/spandsp/tests/dtmf_tx_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/dtmf_tx_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/dtmf_tx_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: dtmf_tx_tests.c,v 1.20 2008/08/16 15:24:15 steveu Exp $ + * $Id: dtmf_tx_tests.c,v 1.22 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -46,6 +46,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -53,7 +57,7 @@ int main(int argc, char *argv[]) { - dtmf_tx_state_t gen; + dtmf_tx_state_t *gen; int16_t amp[16384]; int len; AFfilehandle outhandle; @@ -66,34 +70,34 @@ exit(2); } - dtmf_tx_init(&gen); - len = dtmf_tx(&gen, amp, 16384); + gen = dtmf_tx_init(NULL); + len = dtmf_tx(gen, amp, 16384); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (dtmf_tx_put(&gen, "123", -1)) + if (dtmf_tx_put(gen, "123", -1)) printf("Ooops\n"); - len = dtmf_tx(&gen, amp, 16384); + len = dtmf_tx(gen, amp, 16384); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (dtmf_tx_put(&gen, "456", -1)) + if (dtmf_tx_put(gen, "456", -1)) printf("Ooops\n"); - len = dtmf_tx(&gen, amp, 160); + len = dtmf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (dtmf_tx_put(&gen, "789", -1)) + if (dtmf_tx_put(gen, "789", -1)) printf("Ooops\n"); - len = dtmf_tx(&gen, amp, 160); + len = dtmf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (dtmf_tx_put(&gen, "*#", -1)) + if (dtmf_tx_put(gen, "*#", -1)) printf("Ooops\n"); - len = dtmf_tx(&gen, amp, 160); + len = dtmf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); add_digits = 1; do { - len = dtmf_tx(&gen, amp, 160); + len = dtmf_tx(gen, amp, 160); printf("Generated %d samples\n", len); if (len > 0) { @@ -101,7 +105,7 @@ } if (add_digits) { - if (dtmf_tx_put(&gen, "1234567890", -1)) + if (dtmf_tx_put(gen, "1234567890", -1)) { printf("Digit buffer full\n"); add_digits = 0; @@ -110,60 +114,60 @@ } while (len > 0); - dtmf_tx_init(&gen); - len = dtmf_tx(&gen, amp, 16384); + dtmf_tx_init(gen); + len = dtmf_tx(gen, amp, 16384); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (dtmf_tx_put(&gen, "123", -1)) + if (dtmf_tx_put(gen, "123", -1)) printf("Ooops\n"); - len = dtmf_tx(&gen, amp, 16384); + len = dtmf_tx(gen, amp, 16384); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (dtmf_tx_put(&gen, "456", -1)) + if (dtmf_tx_put(gen, "456", -1)) printf("Ooops\n"); - len = dtmf_tx(&gen, amp, 160); + len = dtmf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (dtmf_tx_put(&gen, "789", -1)) + if (dtmf_tx_put(gen, "789", -1)) printf("Ooops\n"); - len = dtmf_tx(&gen, amp, 160); + len = dtmf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (dtmf_tx_put(&gen, "0*#", -1)) + if (dtmf_tx_put(gen, "0*#", -1)) printf("Ooops\n"); - len = dtmf_tx(&gen, amp, 160); + len = dtmf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); - if (dtmf_tx_put(&gen, "ABCD", -1)) + if (dtmf_tx_put(gen, "ABCD", -1)) printf("Ooops\n"); - len = dtmf_tx(&gen, amp, 160); + len = dtmf_tx(gen, amp, 160); printf("Generated %d samples\n", len); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); /* Try modifying the level and length of the digits */ printf("Try different levels and timing\n"); - dtmf_tx_set_level(&gen, -20, 5); - dtmf_tx_set_timing(&gen, 100, 200); - if (dtmf_tx_put(&gen, "123", -1)) + dtmf_tx_set_level(gen, -20, 5); + dtmf_tx_set_timing(gen, 100, 200); + if (dtmf_tx_put(gen, "123", -1)) printf("Ooops\n"); do { - len = dtmf_tx(&gen, amp, 160); + len = dtmf_tx(gen, amp, 160); printf("Generated %d samples\n", len); if (len > 0) outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len); } while (len > 0); printf("Restore normal levels and timing\n"); - dtmf_tx_set_level(&gen, -10, 0); - dtmf_tx_set_timing(&gen, 50, 55); - if (dtmf_tx_put(&gen, "A", -1)) + dtmf_tx_set_level(gen, -10, 0); + dtmf_tx_set_timing(gen, 50, 55); + if (dtmf_tx_put(gen, "A", -1)) printf("Ooops\n"); add_digits = TRUE; do { - len = dtmf_tx(&gen, amp, 160); + len = dtmf_tx(gen, amp, 160); printf("Generated %d samples\n", len); if (len > 0) { @@ -171,7 +175,7 @@ } if (add_digits) { - if (dtmf_tx_put(&gen, "1234567890", -1)) + if (dtmf_tx_put(gen, "1234567890", -1)) { printf("Digit buffer full\n"); add_digits = FALSE; Modified: freeswitch/trunk/libs/spandsp/tests/echo_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/echo_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/echo_tests.c Tue Jan 27 22:48:03 2009 @@ -25,7 +25,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: echo_tests.c,v 1.36 2008/09/04 14:40:05 steveu Exp $ + * $Id: echo_tests.c,v 1.37 2008/11/30 10:17:31 steveu Exp $ */ /*! \page echo_can_tests_page Line echo cancellation for voice tests @@ -59,6 +59,10 @@ #define GEN_CONST #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp/g168models.h" #include "spandsp-sim.h" Modified: freeswitch/trunk/libs/spandsp/tests/fax_decode.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/fax_decode.c (original) +++ freeswitch/trunk/libs/spandsp/tests/fax_decode.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: fax_decode.c,v 1.48 2008/09/07 12:45:17 steveu Exp $ + * $Id: fax_decode.c,v 1.53 2009/01/27 05:13:12 steveu Exp $ */ /*! \page fax_decode_page FAX decoder @@ -43,6 +43,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #define SAMPLES_PER_CHUNK 160 @@ -217,27 +221,10 @@ if (len < 0) { /* Special conditions */ - switch (len) - { - case SIG_STATUS_CARRIER_UP: - fprintf(stderr, "HDLC carrier up\n"); - break; - case SIG_STATUS_CARRIER_DOWN: - fprintf(stderr, "HDLC carrier down\n"); - break; - case SIG_STATUS_FRAMING_OK: - fprintf(stderr, "HDLC framing OK\n"); - break; - case SIG_STATUS_ABORT: - /* Just ignore these */ - break; - default: - fprintf(stderr, "Unexpected HDLC special length - %d!\n", len); - break; - } + fprintf(stderr, "HDLC status is %s (%d)\n", signal_status_to_str(len), len); return; } - + if (ok) { if (msg[0] != 0xFF || !(msg[1] == 0x03 || msg[1] == 0x13)) @@ -329,28 +316,12 @@ if (bit < 0) { /* Special conditions */ + fprintf(stderr, "V.21 rx status is %s (%d)\n", signal_status_to_str(bit), bit); switch (bit) { - case SIG_STATUS_TRAINING_FAILED: - fprintf(stderr, "V.21 Training failed\n"); - break; - case SIG_STATUS_TRAINING_IN_PROGRESS: - fprintf(stderr, "V.21 Training in progress\n"); - break; - case SIG_STATUS_TRAINING_SUCCEEDED: - fprintf(stderr, "V.21 Training succeeded\n"); - t4_begin(); - break; - case SIG_STATUS_CARRIER_UP: - fprintf(stderr, "V.21 Carrier up\n"); - break; case SIG_STATUS_CARRIER_DOWN: - fprintf(stderr, "V.21 Carrier down\n"); //t4_end(); break; - default: - fprintf(stderr, "V.21 Eh!\n"); - break; } return; } @@ -365,31 +336,18 @@ if (bit < 0) { /* Special conditions */ + fprintf(stderr, "V.17 rx status is %s (%d)\n", signal_status_to_str(bit), bit); switch (bit) { - case SIG_STATUS_TRAINING_FAILED: - fprintf(stderr, "V.17 Training failed\n"); - break; - case SIG_STATUS_TRAINING_IN_PROGRESS: - fprintf(stderr, "V.17 Training in progress\n"); - break; case SIG_STATUS_TRAINING_SUCCEEDED: - fprintf(stderr, "V.17 Training succeeded\n"); fast_trained = FAX_V17_RX; t4_begin(); break; - case SIG_STATUS_CARRIER_UP: - fprintf(stderr, "V.17 Carrier up\n"); - break; case SIG_STATUS_CARRIER_DOWN: - fprintf(stderr, "V.17 Carrier down\n"); t4_end(); if (fast_trained == FAX_V17_RX) fast_trained = FAX_NONE; break; - default: - fprintf(stderr, "V.17 Eh!\n"); - break; } return; } @@ -414,31 +372,18 @@ if (bit < 0) { /* Special conditions */ + fprintf(stderr, "V.29 rx status is %s (%d)\n", signal_status_to_str(bit), bit); switch (bit) { - case SIG_STATUS_TRAINING_FAILED: - //fprintf(stderr, "V.29 Training failed\n"); - break; - case SIG_STATUS_TRAINING_IN_PROGRESS: - fprintf(stderr, "V.29 Training in progress\n"); - break; case SIG_STATUS_TRAINING_SUCCEEDED: - fprintf(stderr, "V.29 Training succeeded\n"); fast_trained = FAX_V29_RX; t4_begin(); break; - case SIG_STATUS_CARRIER_UP: - //fprintf(stderr, "V.29 Carrier up\n"); - break; case SIG_STATUS_CARRIER_DOWN: - //fprintf(stderr, "V.29 Carrier down\n"); t4_end(); if (fast_trained == FAX_V29_RX) fast_trained = FAX_NONE; break; - default: - fprintf(stderr, "V.29 Eh!\n"); - break; } return; } @@ -463,31 +408,18 @@ if (bit < 0) { /* Special conditions */ + fprintf(stderr, "V.27ter rx status is %s (%d)\n", signal_status_to_str(bit), bit); switch (bit) { - case SIG_STATUS_TRAINING_FAILED: - //fprintf(stderr, "V.27ter Training failed\n"); - break; - case SIG_STATUS_TRAINING_IN_PROGRESS: - fprintf(stderr, "V.27ter Training in progress\n"); - break; case SIG_STATUS_TRAINING_SUCCEEDED: - fprintf(stderr, "V.27ter Training succeeded\n"); fast_trained = FAX_V27TER_RX; t4_begin(); break; - case SIG_STATUS_CARRIER_UP: - //fprintf(stderr, "V.27ter Carrier up\n"); - break; case SIG_STATUS_CARRIER_DOWN: - //fprintf(stderr, "V.27ter Carrier down\n"); t4_end(); if (fast_trained == FAX_V27TER_RX) fast_trained = FAX_NONE; break; - default: - fprintf(stderr, "V.27ter Eh!\n"); - break; } return; } @@ -509,15 +441,16 @@ int main(int argc, char *argv[]) { - fsk_rx_state_t fsk; - v17_rx_state_t v17; - v29_rx_state_t v29; - v27ter_rx_state_t v27ter; + fsk_rx_state_t *fsk; + v17_rx_state_t *v17; + v29_rx_state_t *v29; + v27ter_rx_state_t *v27ter; int16_t amp[SAMPLES_PER_CHUNK]; AFfilehandle inhandle; int len; const char *filename; float x; + logging_state_t *logging; filename = "fax_samp.wav"; @@ -549,27 +482,32 @@ span_log_set_protocol(&t30_dummy.logging, "T.30"); hdlc_rx_init(&hdlcrx, FALSE, TRUE, 5, hdlc_accept, NULL); - fsk_rx_init(&fsk, &preset_fsk_specs[FSK_V21CH2], TRUE, v21_put_bit, NULL); - v17_rx_init(&v17, 14400, v17_put_bit, NULL); - v29_rx_init(&v29, 9600, v29_put_bit, NULL); - //v29_rx_init(&v29, 7200, v29_put_bit, NULL); - v27ter_rx_init(&v27ter, 4800, v27ter_put_bit, NULL); - fsk_rx_signal_cutoff(&fsk, -45.5); - v17_rx_signal_cutoff(&v17, -45.5); - v29_rx_signal_cutoff(&v29, -45.5); - v27ter_rx_signal_cutoff(&v27ter, -40.0); - - span_log_init(&v17.logging, SPAN_LOG_FLOW, NULL); - span_log_set_protocol(&v17.logging, "V.17"); - span_log_set_level(&v17.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_FLOW); - - span_log_init(&v29.logging, SPAN_LOG_FLOW, NULL); - span_log_set_protocol(&v29.logging, "V.29"); - span_log_set_level(&v29.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_FLOW); - - span_log_init(&v27ter.logging, SPAN_LOG_FLOW, NULL); - span_log_set_protocol(&v27ter.logging, "V.27ter"); - span_log_set_level(&v27ter.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_FLOW); + fsk = fsk_rx_init(NULL, &preset_fsk_specs[FSK_V21CH2], TRUE, v21_put_bit, NULL); + v17 = v17_rx_init(NULL, 14400, v17_put_bit, NULL); + v29 = v29_rx_init(NULL, 9600, v29_put_bit, NULL); + //v29 = v29_rx_init(NULL, 7200, v29_put_bit, NULL); + v27ter = v27ter_rx_init(NULL, 4800, v27ter_put_bit, NULL); + fsk_rx_signal_cutoff(fsk, -45.5); + v17_rx_signal_cutoff(v17, -45.5); + v29_rx_signal_cutoff(v29, -45.5); + v27ter_rx_signal_cutoff(v27ter, -40.0); + +#if 1 + logging = v17_rx_get_logging_state(v17); + span_log_init(logging, SPAN_LOG_FLOW, NULL); + span_log_set_protocol(logging, "V.17"); + span_log_set_level(logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_FLOW); + + logging = v29_rx_get_logging_state(v29); + span_log_init(logging, SPAN_LOG_FLOW, NULL); + span_log_set_protocol(logging, "V.29"); + span_log_set_level(logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_FLOW); + + logging = v27ter_rx_get_logging_state(v27ter); + span_log_init(logging, SPAN_LOG_FLOW, NULL); + span_log_set_protocol(logging, "V.27ter"); + span_log_set_level(logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_FLOW); +#endif if (t4_rx_init(&t4_state, "fax_decode.tif", T4_COMPRESSION_ITU_T4_2D) == NULL) { @@ -582,10 +520,10 @@ len = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, SAMPLES_PER_CHUNK); if (len < SAMPLES_PER_CHUNK) break; - fsk_rx(&fsk, amp, len); - v17_rx(&v17, amp, len); - v29_rx(&v29, amp, len); - v27ter_rx(&v27ter, amp, len); + fsk_rx(fsk, amp, len); + v17_rx(v17, amp, len); + v29_rx(v29, amp, len); + //v27ter_rx(v27ter, amp, len); } t4_rx_end(&t4_state); Modified: freeswitch/trunk/libs/spandsp/tests/fax_tester.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/fax_tester.c (original) +++ freeswitch/trunk/libs/spandsp/tests/fax_tester.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: fax_tester.c,v 1.17 2008/09/12 14:41:55 steveu Exp $ + * $Id: fax_tester.c,v 1.21 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -35,13 +35,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include #include @@ -57,7 +57,12 @@ #include #endif +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" + #include "fax_tester.h" #define HDLC_FRAMING_OK_THRESHOLD 5 Modified: freeswitch/trunk/libs/spandsp/tests/fax_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/fax_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/fax_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: fax_tests.c,v 1.96 2008/09/09 14:05:55 steveu Exp $ + * $Id: fax_tests.c,v 1.100 2009/01/03 14:44:15 steveu Exp $ */ /*! \page fax_tests_page FAX tests @@ -41,6 +41,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -57,7 +61,8 @@ int chan; int16_t amp[SAMPLES_PER_CHUNK]; int len; - fax_state_t fax; + fax_state_t *fax; + awgn_state_t *awgn; int done; int succeeded; char tag[50]; @@ -110,13 +115,16 @@ printf("%d: Phase D: image resolution %d x %d\n", i, t.x_resolution, t.y_resolution); printf("%d: Phase D: bad rows %d\n", i, t.bad_rows); printf("%d: Phase D: longest bad row run %d\n", i, t.longest_bad_row_run); + printf("%d: Phase D: bad ECM frames %d\n", i, t.error_correcting_mode_retries); printf("%d: Phase D: compression type %d\n", i, t.encoding); printf("%d: Phase D: image size %d bytes\n", i, t.image_size); if ((u = t30_get_tx_ident(s))) printf("%d: Phase D: local ident '%s'\n", i, u); if ((u = t30_get_rx_ident(s))) printf("%d: Phase D: remote ident '%s'\n", i, u); +#if defined(WITH_SPANDSP_INTERNALS) printf("%d: Phase D: bits per row - min %d, max %d\n", i, s->t4.min_row_bits, s->t4.max_row_bits); +#endif if (use_receiver_not_ready) t30_set_receiver_not_ready(s, 3); @@ -165,6 +173,7 @@ printf("%d: Phase E: image resolution %d x %d\n", i, t.x_resolution, t.y_resolution); printf("%d: Phase E: bad rows %d\n", i, t.bad_rows); printf("%d: Phase E: longest bad row run %d\n", i, t.longest_bad_row_run); + printf("%d: Phase E: bad ECM frames %d\n", i, t.error_correcting_mode_retries); printf("%d: Phase E: coding method %s\n", i, t4_encoding_to_str(t.encoding)); printf("%d: Phase E: image size %d bytes\n", i, t.image_size); if ((u = t30_get_tx_ident(s))) @@ -234,11 +243,15 @@ int reverse_flow; int use_page_limits; int supported_modems; + int signal_level; + int noise_level; + float signal_scaling; time_t start_time; time_t end_time; char *page_header_info; int opt; t30_state_t *t30; + logging_state_t *logging; log_audio = FALSE; input_tiff_file_name = INPUT_TIFF_FILE_NAME; @@ -252,8 +265,10 @@ use_transmit_on_idle = TRUE; use_receiver_not_ready = FALSE; use_page_limits = FALSE; + signal_level = 0; + noise_level = -99; supported_modems = T30_SUPPORT_V27TER | T30_SUPPORT_V29 | T30_SUPPORT_V17; - while ((opt = getopt(argc, argv, "ehH:i:I:lm:prRtTw:")) != -1) + while ((opt = getopt(argc, argv, "ehH:i:I:lm:n:prRs:tTw:")) != -1) { switch (opt) { @@ -278,6 +293,9 @@ case 'm': supported_modems = atoi(optarg); break; + case 'n': + noise_level = atoi(optarg); + break; case 'p': polled_mode = TRUE; break; @@ -287,6 +305,9 @@ case 'R': use_receiver_not_ready = TRUE; break; + case 's': + signal_level = atoi(optarg); + break; case 't': use_tep = TRUE; break; @@ -332,12 +353,20 @@ i = mc->chan + 1; sprintf(buf, "%d%d%d%d%d%d%d%d", i, i, i, i, i, i, i, i); if (reverse_flow) - fax_init(&mc->fax, (mc->chan & 1) ? TRUE : FALSE); + mc->fax = fax_init(NULL, (mc->chan & 1) ? TRUE : FALSE); else - fax_init(&mc->fax, (mc->chan & 1) ? FALSE : TRUE); - fax_set_transmit_on_idle(&mc->fax, use_transmit_on_idle); - fax_set_tep_mode(&mc->fax, use_tep); - t30 = fax_get_t30_state(&mc->fax); + mc->fax = fax_init(NULL, (mc->chan & 1) ? FALSE : TRUE); + mc->awgn = NULL; + signal_scaling = 1.0f; + if (noise_level > -99) + { + mc->awgn = awgn_init_dbm0(NULL, 1234567, noise_level); + signal_scaling = powf(10.0f, signal_level/20.0f); + printf("Signal scaling %f\n", signal_scaling); + } + fax_set_transmit_on_idle(mc->fax, use_transmit_on_idle); + fax_set_tep_mode(mc->fax, use_tep); + t30 = fax_get_t30_state(mc->fax); t30_set_tx_ident(t30, buf); t30_set_tx_sub_address(t30, "Sub-address"); t30_set_tx_sender_ident(t30, "Sender ID"); @@ -413,12 +442,15 @@ t30_set_real_time_frame_handler(t30, real_time_frame_handler, (void *) (intptr_t) mc->chan); t30_set_document_handler(t30, document_handler, (void *) (intptr_t) mc->chan); sprintf(mc->tag, "FAX-%d", j + 1); - span_log_set_level(&t30->logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW); - span_log_set_tag(&t30->logging, mc->tag); - span_log_set_level(&mc->fax.modems.v29_rx.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW); - span_log_set_tag(&mc->fax.modems.v29_rx.logging, mc->tag); - span_log_set_level(&mc->fax.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW); - span_log_set_tag(&mc->fax.logging, mc->tag); + + logging = t30_get_logging_state(t30); + span_log_set_level(logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW); + span_log_set_tag(logging, mc->tag); + + logging = fax_get_logging_state(mc->fax); + span_log_set_level(logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW); + span_log_set_tag(logging, mc->tag); + memset(mc->amp, 0, sizeof(mc->amp)); mc->total_audio_time = 0; mc->done = FALSE; @@ -439,7 +471,12 @@ } else { - mc->len = fax_tx(&mc->fax, mc->amp, SAMPLES_PER_CHUNK); + mc->len = fax_tx(mc->fax, mc->amp, SAMPLES_PER_CHUNK); + if (mc->awgn) + { + for (k = 0; k < mc->len; k++) + mc->amp[k] = ((int16_t) (mc->amp[k]*signal_scaling)) + awgn(mc->awgn); + } } mc->total_audio_time += SAMPLES_PER_CHUNK; if (!use_transmit_on_idle) @@ -453,9 +490,11 @@ mc->len = SAMPLES_PER_CHUNK; } } - span_log_bump_samples(&mc->fax.t30.logging, mc->len); - span_log_bump_samples(&mc->fax.modems.v29_rx.logging, mc->len); - span_log_bump_samples(&mc->fax.logging, mc->len); + t30 = fax_get_t30_state(mc->fax); + logging = t30_get_logging_state(t30); + span_log_bump_samples(logging, mc->len); + logging = fax_get_logging_state(mc->fax); + span_log_bump_samples(logging, mc->len); if (log_audio) { @@ -464,10 +503,12 @@ } if (machines[j ^ 1].len < SAMPLES_PER_CHUNK) memset(machines[j ^ 1].amp + machines[j ^ 1].len, 0, sizeof(int16_t)*(SAMPLES_PER_CHUNK - machines[j ^ 1].len)); + t30 = fax_get_t30_state(mc->fax); +#if defined(WITH_SPANDSP_INTERNALS) if (use_line_hits) { /* TODO: This applies very crude line hits. improve it */ - if (mc->fax.t30.state == 22) + if (t30->state == 22) { if (++mc->error_delay == 100) { @@ -478,9 +519,10 @@ } } } - if (mc->fax.t30.state == t30_state_to_wreck) + if (t30->state == t30_state_to_wreck) memset(machines[j ^ 1].amp, 0, sizeof(int16_t)*SAMPLES_PER_CHUNK); - if (fax_rx(&mc->fax, machines[j ^ 1].amp, SAMPLES_PER_CHUNK)) +#endif + if (fax_rx(mc->fax, machines[j ^ 1].amp, SAMPLES_PER_CHUNK)) break; if (!mc->done) alldone = FALSE; @@ -500,7 +542,7 @@ for (j = 0; j < FAX_MACHINES; j++) { mc = &machines[j]; - fax_release(&mc->fax); + fax_release(mc->fax); } if (log_audio) { Modified: freeswitch/trunk/libs/spandsp/tests/fsk_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/fsk_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/fsk_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: fsk_tests.c,v 1.50 2008/09/07 12:45:17 steveu Exp $ + * $Id: fsk_tests.c,v 1.53 2008/11/30 10:17:31 steveu Exp $ */ /*! \page fsk_tests_page FSK modem tests @@ -53,6 +53,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -163,10 +167,10 @@ int main(int argc, char *argv[]) { - fsk_tx_state_t caller_tx; - fsk_rx_state_t caller_rx; - fsk_tx_state_t answerer_tx; - fsk_rx_state_t answerer_rx; + fsk_tx_state_t *caller_tx; + fsk_rx_state_t *caller_rx; + fsk_tx_state_t *answerer_tx; + fsk_rx_state_t *answerer_rx; bert_state_t caller_bert; bert_state_t answerer_bert; bert_results_t bert_results; @@ -282,8 +286,8 @@ fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file); exit(2); } - fsk_rx_init(&caller_rx, &preset_fsk_specs[modem_under_test_1], TRUE, put_bit, NULL); - fsk_rx_set_modem_status_handler(&caller_rx, rx_status, (void *) &caller_rx); + caller_rx = fsk_rx_init(NULL, &preset_fsk_specs[modem_under_test_1], TRUE, put_bit, NULL); + fsk_rx_set_modem_status_handler(caller_rx, rx_status, (void *) &caller_rx); test_bps = preset_fsk_specs[modem_under_test_1].baud_rate; for (;;) @@ -296,7 +300,7 @@ break; for (i = 0; i < samples; i++) power_meter_update(&caller_meter, caller_model_amp[i]); - fsk_rx(&caller_rx, caller_model_amp, samples); + fsk_rx(caller_rx, caller_model_amp, samples); } if (afCloseFile(inhandle) != 0) @@ -308,9 +312,9 @@ else { printf("Test cutoff level\n"); - fsk_rx_init(&caller_rx, &preset_fsk_specs[modem_under_test_1], TRUE, cutoff_test_put_bit, NULL); - fsk_rx_signal_cutoff(&caller_rx, -30.0f); - fsk_rx_set_modem_status_handler(&caller_rx, cutoff_test_rx_status, (void *) &caller_rx); + caller_rx = fsk_rx_init(NULL, &preset_fsk_specs[modem_under_test_1], TRUE, cutoff_test_put_bit, NULL); + fsk_rx_signal_cutoff(caller_rx, -30.0f); + fsk_rx_set_modem_status_handler(caller_rx, cutoff_test_rx_status, (void *) &caller_rx); on_at = 0; for (i = -40; i < -25; i++) { @@ -328,7 +332,7 @@ for (j = 0; j < 10; j++) { samples = tone_gen(&tone_tx, caller_model_amp, 160); - fsk_rx(&caller_rx, caller_model_amp, samples); + fsk_rx(caller_rx, caller_model_amp, samples); } if (cutoff_test_carrier) break; @@ -351,7 +355,7 @@ for (j = 0; j < 10; j++) { samples = tone_gen(&tone_tx, caller_model_amp, 160); - fsk_rx(&caller_rx, caller_model_amp, samples); + fsk_rx(caller_rx, caller_model_amp, samples); } if (!cutoff_test_carrier) break; @@ -370,17 +374,17 @@ test_bps = preset_fsk_specs[modem_under_test_1].baud_rate; if (modem_under_test_1 >= 0) { - fsk_tx_init(&caller_tx, &preset_fsk_specs[modem_under_test_1], (get_bit_func_t) bert_get_bit, &caller_bert); - fsk_tx_set_modem_status_handler(&caller_tx, tx_status, (void *) &caller_tx); - fsk_rx_init(&answerer_rx, &preset_fsk_specs[modem_under_test_1], TRUE, (put_bit_func_t) bert_put_bit, &answerer_bert); - fsk_rx_set_modem_status_handler(&answerer_rx, rx_status, (void *) &answerer_rx); + caller_tx = fsk_tx_init(NULL, &preset_fsk_specs[modem_under_test_1], (get_bit_func_t) bert_get_bit, &caller_bert); + fsk_tx_set_modem_status_handler(caller_tx, tx_status, (void *) &caller_tx); + answerer_rx = fsk_rx_init(NULL, &preset_fsk_specs[modem_under_test_1], TRUE, (put_bit_func_t) bert_put_bit, &answerer_bert); + fsk_rx_set_modem_status_handler(answerer_rx, rx_status, (void *) &answerer_rx); } if (modem_under_test_2 >= 0) { - fsk_tx_init(&answerer_tx, &preset_fsk_specs[modem_under_test_2], (get_bit_func_t) bert_get_bit, &answerer_bert); - fsk_tx_set_modem_status_handler(&answerer_tx, tx_status, (void *) &answerer_tx); - fsk_rx_init(&caller_rx, &preset_fsk_specs[modem_under_test_2], TRUE, (put_bit_func_t) bert_put_bit, &caller_bert); - fsk_rx_set_modem_status_handler(&caller_rx, rx_status, (void *) &caller_rx); + answerer_tx = fsk_tx_init(NULL, &preset_fsk_specs[modem_under_test_2], (get_bit_func_t) bert_get_bit, &answerer_bert); + fsk_tx_set_modem_status_handler(answerer_tx, tx_status, (void *) &answerer_tx); + caller_rx = fsk_rx_init(NULL, &preset_fsk_specs[modem_under_test_2], TRUE, (put_bit_func_t) bert_put_bit, &caller_bert); + fsk_rx_set_modem_status_handler(caller_rx, rx_status, (void *) &caller_rx); } test_bps = preset_fsk_specs[modem_under_test_1].baud_rate; @@ -399,10 +403,10 @@ for (;;) { - samples = fsk_tx(&caller_tx, caller_amp, BLOCK_LEN); + samples = fsk_tx(caller_tx, caller_amp, BLOCK_LEN); for (i = 0; i < samples; i++) power_meter_update(&caller_meter, caller_amp[i]); - samples = fsk_tx(&answerer_tx, answerer_amp, BLOCK_LEN); + samples = fsk_tx(answerer_tx, answerer_amp, BLOCK_LEN); for (i = 0; i < samples; i++) power_meter_update(&answerer_meter, answerer_amp[i]); both_ways_line_model(model, @@ -414,13 +418,13 @@ //printf("Powers %10.5fdBm0 %10.5fdBm0\n", power_meter_current_dbm0(&caller_meter), power_meter_current_dbm0(&answerer_meter)); - fsk_rx(&answerer_rx, caller_model_amp, samples); + fsk_rx(answerer_rx, caller_model_amp, samples); for (i = 0; i < samples; i++) out_amp[2*i] = caller_model_amp[i]; for ( ; i < BLOCK_LEN; i++) out_amp[2*i] = 0; - fsk_rx(&caller_rx, answerer_model_amp, samples); + fsk_rx(caller_rx, answerer_model_amp, samples); for (i = 0; i < samples; i++) out_amp[2*i + 1] = answerer_model_amp[i]; for ( ; i < BLOCK_LEN; i++) @@ -485,17 +489,17 @@ } if (modem_under_test_1 >= 0) { - fsk_tx_init(&caller_tx, &preset_fsk_specs[modem_under_test_1], (get_bit_func_t) bert_get_bit, &caller_bert); - fsk_tx_set_modem_status_handler(&caller_tx, tx_status, (void *) &caller_tx); - fsk_rx_init(&answerer_rx, &preset_fsk_specs[modem_under_test_1], TRUE, (put_bit_func_t) bert_put_bit, &answerer_bert); - fsk_rx_set_modem_status_handler(&answerer_rx, rx_status, (void *) &answerer_rx); + caller_tx = fsk_tx_init(NULL, &preset_fsk_specs[modem_under_test_1], (get_bit_func_t) bert_get_bit, &caller_bert); + fsk_tx_set_modem_status_handler(caller_tx, tx_status, (void *) &caller_tx); + answerer_rx = fsk_rx_init(NULL, &preset_fsk_specs[modem_under_test_1], TRUE, (put_bit_func_t) bert_put_bit, &answerer_bert); + fsk_rx_set_modem_status_handler(answerer_rx, rx_status, (void *) &answerer_rx); } if (modem_under_test_2 >= 0) { - fsk_tx_init(&answerer_tx, &preset_fsk_specs[modem_under_test_2], (get_bit_func_t) bert_get_bit, &answerer_bert); - fsk_tx_set_modem_status_handler(&answerer_tx, tx_status, (void *) &answerer_tx); - fsk_rx_init(&caller_rx, &preset_fsk_specs[modem_under_test_2], TRUE, (put_bit_func_t) bert_put_bit, &caller_bert); - fsk_rx_set_modem_status_handler(&caller_rx, rx_status, (void *) &caller_rx); + answerer_tx = fsk_tx_init(NULL, &preset_fsk_specs[modem_under_test_2], (get_bit_func_t) bert_get_bit, &answerer_bert); + fsk_tx_set_modem_status_handler(answerer_tx, tx_status, (void *) &answerer_tx); + caller_rx = fsk_rx_init(NULL, &preset_fsk_specs[modem_under_test_2], TRUE, (put_bit_func_t) bert_put_bit, &caller_bert); + fsk_rx_set_modem_status_handler(caller_rx, rx_status, (void *) &caller_rx); } noise_level++; if ((model = both_ways_line_model_init(line_model_no, (float) noise_level, line_model_no, noise_level, channel_codec, 0)) == NULL) Modified: freeswitch/trunk/libs/spandsp/tests/g1050_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/g1050_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/g1050_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: g1050_tests.c,v 1.16 2008/05/13 13:17:25 steveu Exp $ + * $Id: g1050_tests.c,v 1.17 2008/11/30 10:17:31 steveu Exp $ */ #if defined(HAVE_CONFIG_H) @@ -44,6 +44,10 @@ #define GEN_CONST #endif +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" Modified: freeswitch/trunk/libs/spandsp/tests/g168_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/g168_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/g168_tests.c Tue Jan 27 22:48:03 2009 @@ -24,7 +24,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: g168_tests.c,v 1.18 2008/09/04 14:40:05 steveu Exp $ + * $Id: g168_tests.c,v 1.19 2008/11/30 10:17:31 steveu Exp $ */ #if defined(HAVE_CONFIG_H) @@ -36,6 +36,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp/g168models.h" Modified: freeswitch/trunk/libs/spandsp/tests/g711_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/g711_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/g711_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: g711_tests.c,v 1.14 2008/08/16 15:24:15 steveu Exp $ + * $Id: g711_tests.c,v 1.15 2008/11/30 10:17:31 steveu Exp $ */ /*! \page g711_tests_page A-law and u-law conversion tests @@ -41,6 +41,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" Modified: freeswitch/trunk/libs/spandsp/tests/g722_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/g722_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/g722_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: g722_tests.c,v 1.27 2008/09/19 14:02:05 steveu Exp $ + * $Id: g722_tests.c,v 1.29 2009/01/12 17:20:59 steveu Exp $ */ /*! \file */ @@ -56,6 +56,9 @@ and the resulting audio stored in post_g722.wav. */ +/* Enable the following definition to enable direct probing into the FAX structures */ +//#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include #endif @@ -70,6 +73,10 @@ #include "spandsp.h" +#if 1 //defined(WITH_SPANDSP_INTERNALS) +#include "spandsp/private/g722.h" +#endif + #define G722_SAMPLE_RATE 16000 #define BLOCK_LEN 320 @@ -230,6 +237,7 @@ int outframes; int samples; int mode; + int opt; int itutests; int bit_rate; int eight_k_in; @@ -239,58 +247,43 @@ int16_t outdata[BLOCK_LEN]; uint8_t adpcmdata[BLOCK_LEN]; - i = 1; bit_rate = 64000; eight_k_in = FALSE; eight_k_out = FALSE; itutests = TRUE; - while (argc > i) + while ((opt = getopt(argc, argv, "b:i:o:")) != -1) { - if (strcmp(argv[i], "-48") == 0) - { - bit_rate = 48000; - itutests = FALSE; - i++; - } - else if (strcmp(argv[i], "-56") == 0) + switch (opt) { - bit_rate = 56000; - itutests = FALSE; - i++; - } - else if (strcmp(argv[i], "-64") == 0) - { - bit_rate = 64000; + case 'b': + bit_rate = atoi(optarg); + if (bit_rate != 48000 && bit_rate != 56000 && bit_rate != 64000) + { + fprintf(stderr, "Invalid bit rate selected. Only 48000, 56000 and 64000 are valid.\n"); + exit(2); + } itutests = FALSE; - i++; - } - else if (strcmp(argv[i], "-8k8k") == 0) - { - eight_k_in = TRUE; - eight_k_out = TRUE; - i++; - } - else if (strcmp(argv[i], "-8k16k") == 0) - { - eight_k_in = TRUE; - eight_k_out = FALSE; - i++; - } - else if (strcmp(argv[i], "-16k8k") == 0) - { - eight_k_in = FALSE; - eight_k_out = TRUE; - i++; - } - else if (strcmp(argv[i], "-16k16k") == 0) - { - eight_k_in = FALSE; - eight_k_out = FALSE; - i++; - } - else - { - fprintf(stderr, "Unknown parameter %s specified.\n", argv[i]); + break; + case 'i': + i = atoi(optarg); + if (i != 8000 && i != 16000) + { + fprintf(stderr, "Invalid incoming sample rate. Only 8000 and 16000 are valid.\n"); + exit(2); + } + eight_k_in = (i == 8000); + break; + case 'o': + i = atoi(optarg); + if (i != 8000 && i != 16000) + { + fprintf(stderr, "Invalid incoming sample rate. Only 8000 and 16000 are valid.\n"); + exit(2); + } + eight_k_out = (i == 8000); + break; + default: + //usage(); exit(2); } } Modified: freeswitch/trunk/libs/spandsp/tests/g726_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/g726_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/g726_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: g726_tests.c,v 1.28 2008/09/28 14:36:25 steveu Exp $ + * $Id: g726_tests.c,v 1.31 2009/01/12 17:20:59 steveu Exp $ */ /*! \file */ @@ -60,6 +60,9 @@ decompressed, and the resulting audio stored in post_g726.wav. */ +/* Enable the following definition to enable direct probing into the FAX structures */ +//#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include #endif @@ -72,6 +75,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -1078,6 +1085,7 @@ int len3; int i; int test; + int opt; int bits_per_code; int itutests; int bit_rate; @@ -1097,45 +1105,27 @@ bit_rate = 32000; itutests = TRUE; packing = G726_PACKING_NONE; - while (argc > i) + while ((opt = getopt(argc, argv, "b:lr")) != -1) { - if (strcmp(argv[i], "-16") == 0) - { - bit_rate = 16000; - itutests = FALSE; - i++; - } - else if (strcmp(argv[i], "-24") == 0) - { - bit_rate = 24000; - itutests = FALSE; - i++; - } - else if (strcmp(argv[i], "-32") == 0) - { - bit_rate = 32000; - itutests = FALSE; - i++; - } - else if (strcmp(argv[i], "-40") == 0) + switch (opt) { - bit_rate = 40000; + case 'b': + bit_rate = atoi(optarg); + if (bit_rate != 16000 && bit_rate != 24000 && bit_rate != 32000 && bit_rate != 40000) + { + fprintf(stderr, "Invalid bit rate selected. Only 16000, 24000, 32000 and 40000 are valid.\n"); + exit(2); + } itutests = FALSE; - i++; - } - else if (strcmp(argv[i], "-l") == 0) - { + break; + case 'l': packing = G726_PACKING_LEFT; - i++; - } - else if (strcmp(argv[i], "-r") == 0) - { + break; + case 'r': packing = G726_PACKING_RIGHT; - i++; - } - else - { - fprintf(stderr, "Unknown parameter %s specified.\n", argv[i]); + break; + default: + //usage(); exit(2); } } Modified: freeswitch/trunk/libs/spandsp/tests/gsm0610_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/gsm0610_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/gsm0610_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: gsm0610_tests.c,v 1.19 2008/08/29 09:28:13 steveu Exp $ + * $Id: gsm0610_tests.c,v 1.23 2009/01/12 17:20:59 steveu Exp $ */ /*! \file */ @@ -35,9 +35,6 @@ - A generally audio quality test, consisting of compressing and decompressing a speeech file for audible comparison. -The speech file should be recorded at 16 bits/sample, 8000 samples/second, and named -"pre_gsm0610.wav". - \section gsm0610_tests_page_sec_2 How is it used? To perform the tests in the GSM 06.10 specification you need to obtain the test data files from the specification. These are copyright material, and so cannot be distributed with this test software. @@ -128,6 +125,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -521,31 +522,32 @@ AFfilehandle outhandle; int frames; int outframes; + int bytes; int16_t pre_amp[HIST_LEN]; int16_t post_amp[HIST_LEN]; uint8_t gsm0610_data[HIST_LEN]; gsm0610_state_t *gsm0610_enc_state; gsm0610_state_t *gsm0610_dec_state; + int opt; int etsitests; int packing; - int i; etsitests = TRUE; packing = GSM0610_PACKING_NONE; - for (i = 1; i < argc; i++) + while ((opt = getopt(argc, argv, "lp:")) != -1) { - if (strcmp(argv[i], "-l") == 0) + switch (opt) { + case 'l': etsitests = FALSE; - continue; - } - if (strcmp(argv[i], "-p") == 0) - { - packing = atoi(argv[++i]); - continue; + break; + case 'p': + packing = atoi(optarg); + break; + default: + //usage(); + exit(2); } - fprintf(stderr, "Unknown parameter %s specified.\n", argv[i]); - exit(2); } if (etsitests) @@ -597,8 +599,8 @@ while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, pre_amp, 2*BLOCK_LEN))) { - gsm0610_encode(gsm0610_enc_state, gsm0610_data, pre_amp, (packing == GSM0610_PACKING_WAV49) ? BLOCK_LEN : 2*BLOCK_LEN); - gsm0610_decode(gsm0610_dec_state, post_amp, gsm0610_data, (packing == GSM0610_PACKING_WAV49) ? 33 : 65); + bytes = gsm0610_encode(gsm0610_enc_state, gsm0610_data, pre_amp, frames); + gsm0610_decode(gsm0610_dec_state, post_amp, gsm0610_data, bytes); outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, post_amp, frames); } Modified: freeswitch/trunk/libs/spandsp/tests/hdlc_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/hdlc_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/hdlc_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: hdlc_tests.c,v 1.46 2008/09/07 12:55:13 steveu Exp $ + * $Id: hdlc_tests.c,v 1.48 2008/11/30 05:43:37 steveu Exp $ */ /*! \file */ @@ -43,6 +43,7 @@ #include #include "spandsp.h" +#include "spandsp/private/hdlc.h" int ref_len; uint8_t buf[1000]; @@ -789,6 +790,8 @@ static void decode_handler(void *user_data, const uint8_t *pkt, int len, int ok) { + int i; + if (len < 0) { /* Special conditions */ @@ -798,6 +801,10 @@ if (ok) { printf("Good frame, len = %d\n", len); + printf("HDLC: "); + for (i = 0; i < len; i++) + printf("%02X ", pkt[i]); + printf("\n"); } else { @@ -819,7 +826,7 @@ exit(2); } - hdlc_rx_init(&rx, TRUE, TRUE, 2, decode_handler, NULL); + hdlc_rx_init(&rx, FALSE, TRUE, 2, decode_handler, NULL); while (fgets(buf, 1024, in)) { if (sscanf(buf, "Rx bit %*d - %d", &bit) == 1) Modified: freeswitch/trunk/libs/spandsp/tests/ima_adpcm_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/ima_adpcm_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/ima_adpcm_tests.c Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: ima_adpcm_tests.c,v 1.34 2008/08/29 09:28:13 steveu Exp $ + * $Id: ima_adpcm_tests.c,v 1.35 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -51,6 +51,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" Modified: freeswitch/trunk/libs/spandsp/tests/line_model_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/line_model_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/line_model_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: line_model_tests.c,v 1.24 2008/05/13 13:17:26 steveu Exp $ + * $Id: line_model_tests.c,v 1.26 2009/01/12 17:20:59 steveu Exp $ */ /*! \page line_model_tests_page Telephony line model tests @@ -45,6 +45,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -339,38 +343,35 @@ int line_model_no; int speech_test; int log_audio; - int i; + int opt; + channel_codec = MUNGE_CODEC_NONE; + log_audio = FALSE; line_model_no = 0; + rbs_pattern = 0; speech_test = FALSE; - log_audio = FALSE; - channel_codec = MUNGE_CODEC_NONE; - for (i = 1; i < argc; i++) + while ((opt = getopt(argc, argv, "c:lm:r:s:")) != -1) { - if (strcmp(argv[i], "-c") == 0) - { - channel_codec = atoi(argv[++i]); - continue; - } - if (strcmp(argv[i], "-l") == 0) + switch (opt) { + case 'c': + channel_codec = atoi(optarg); + break; + case 'l': log_audio = TRUE; - continue; - } - if (strcmp(argv[i], "-m") == 0) - { - line_model_no = atoi(argv[++i]); - continue; - } - if (strcmp(argv[i], "-r") == 0) - { - rbs_pattern = atoi(argv[++i]); - continue; - } - if (strcmp(argv[i], "-s") == 0) - { - speech_test = TRUE; - continue; + break; + case 'm': + line_model_no = atoi(optarg); + break; + case 'r': + rbs_pattern = atoi(optarg); + break; + case 's': + speech_test = atoi(optarg); + break; + default: + //usage(); + exit(2); } } complexify_tests(); Modified: freeswitch/trunk/libs/spandsp/tests/logging_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/logging_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/logging_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: logging_tests.c,v 1.14 2008/05/13 13:17:26 steveu Exp $ + * $Id: logging_tests.c,v 1.15 2008/11/30 13:44:35 steveu Exp $ */ /*! \page logging_tests_page Logging tests @@ -42,6 +42,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" static int tests_failed = FALSE; Modified: freeswitch/trunk/libs/spandsp/tests/lpc10_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/lpc10_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/lpc10_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: lpc10_tests.c,v 1.21 2008/08/29 09:28:13 steveu Exp $ + * $Id: lpc10_tests.c,v 1.23 2009/01/12 17:20:59 steveu Exp $ */ /*! \file */ @@ -48,6 +48,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -89,6 +93,7 @@ int compress_file; int decompress_file; int len; + int opt; int enc_len; int dec_len; @@ -96,27 +101,25 @@ decompress = FALSE; log_error = TRUE; in_file_name = IN_FILE_NAME; - for (i = 1; i < argc; i++) + while ((opt = getopt(argc, argv, "cdi:l")) != -1) { - if (strcmp(argv[i], "-c") == 0) + switch (opt) { + case 'c': compress = TRUE; - continue; - } - if (strcmp(argv[i], "-d") == 0) - { + break; + case 'd': decompress = TRUE; - continue; - } - if (strcmp(argv[i], "-i") == 0) - { - in_file_name = argv[++i]; - continue; - } - if (strcmp(argv[i], "-l") == 0) - { + break; + case 'i': + in_file_name = optarg; + break; + case 'l': log_error = FALSE; - continue; + break; + default: + //usage(); + exit(2); } } Modified: freeswitch/trunk/libs/spandsp/tests/make_g168_css.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/make_g168_css.c (original) +++ freeswitch/trunk/libs/spandsp/tests/make_g168_css.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: make_g168_css.c,v 1.15 2008/08/29 09:28:13 steveu Exp $ + * $Id: make_g168_css.c,v 1.16 2008/11/30 12:38:27 steveu Exp $ */ /*! \page makecss_page CSS construction for G.168 testing @@ -53,6 +53,10 @@ #define GEN_CONST #endif +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp/g168models.h" Modified: freeswitch/trunk/libs/spandsp/tests/modem_connect_tones_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/modem_connect_tones_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/modem_connect_tones_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: modem_connect_tones_tests.c,v 1.27 2008/08/29 09:28:13 steveu Exp $ + * $Id: modem_connect_tones_tests.c,v 1.29 2008/11/30 10:17:31 steveu Exp $ */ /*! \page modem_connect_tones_tests_page Modem connect tones tests @@ -30,6 +30,9 @@ These tests... */ +/* Enable the following definition to enable direct probing into the FAX structures */ +//#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include "config.h" #endif @@ -41,6 +44,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" Modified: freeswitch/trunk/libs/spandsp/tests/modem_echo_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/modem_echo_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/modem_echo_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: modem_echo_tests.c,v 1.30 2008/08/29 09:28:13 steveu Exp $ + * $Id: modem_echo_tests.c,v 1.31 2008/11/30 10:17:31 steveu Exp $ */ /*! \page modem_echo_can_tests_page Line echo cancellation for modems tests @@ -92,9 +92,14 @@ #define GEN_CONST #endif +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp/g168models.h" #include "spandsp-sim.h" + #if defined(ENABLE_GUI) #include "echo_monitor.h" #endif Modified: freeswitch/trunk/libs/spandsp/tests/noise_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/noise_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/noise_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: noise_tests.c,v 1.16 2008/08/17 14:21:26 steveu Exp $ + * $Id: noise_tests.c,v 1.17 2008/11/30 10:17:31 steveu Exp $ */ /*! \page noise_tests_page Noise generator tests @@ -38,6 +38,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" Modified: freeswitch/trunk/libs/spandsp/tests/oki_adpcm_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/oki_adpcm_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/oki_adpcm_tests.c Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: oki_adpcm_tests.c,v 1.35 2008/09/04 14:40:05 steveu Exp $ + * $Id: oki_adpcm_tests.c,v 1.36 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -52,6 +52,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" Modified: freeswitch/trunk/libs/spandsp/tests/playout_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/playout_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/playout_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: playout_tests.c,v 1.26 2008/07/28 15:14:30 steveu Exp $ + * $Id: playout_tests.c,v 1.27 2008/11/15 14:27:29 steveu Exp $ */ /*! \page playout_tests_page Playout (jitter buffering) tests @@ -42,6 +42,8 @@ #include "spandsp.h" +#include "spandsp/private/time_scale.h" + #define INPUT_FILE_NAME "playout_in.wav" #define OUTPUT_FILE_NAME "playout_out.wav" Modified: freeswitch/trunk/libs/spandsp/tests/power_meter_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/power_meter_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/power_meter_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: power_meter_tests.c,v 1.21 2008/05/13 13:17:26 steveu Exp $ + * $Id: power_meter_tests.c,v 1.22 2008/11/30 10:17:31 steveu Exp $ */ /*! \page power_meter_tests_page Power meter tests @@ -43,6 +43,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" int main(int argc, char *argv[]) Modified: freeswitch/trunk/libs/spandsp/tests/queue_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/queue_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/queue_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: queue_tests.c,v 1.11 2008/08/10 03:42:38 steveu Exp $ + * $Id: queue_tests.c,v 1.12 2008/11/30 13:08:42 steveu Exp $ */ /* THIS IS A WORK IN PROGRESS. IT IS NOT FINISHED. */ @@ -43,6 +43,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #define BUF_LEN 10000 Modified: freeswitch/trunk/libs/spandsp/tests/r2_mf_rx_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/r2_mf_rx_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/r2_mf_rx_tests.c Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: r2_mf_rx_tests.c,v 1.10 2008/05/13 13:17:26 steveu Exp $ + * $Id: r2_mf_rx_tests.c,v 1.12 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -39,6 +39,9 @@ a fair test of performance in a real PSTN channel. */ +/* Enable the following definition to enable direct probing into the FAX structures */ +//#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include "config.h" #endif @@ -50,6 +53,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" /* R2 tone generation specs. Modified: freeswitch/trunk/libs/spandsp/tests/r2_mf_tx_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/r2_mf_tx_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/r2_mf_tx_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: r2_mf_tx_tests.c,v 1.13 2008/08/16 15:24:16 steveu Exp $ + * $Id: r2_mf_tx_tests.c,v 1.15 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -35,6 +35,9 @@ ???. */ +/* Enable the following definition to enable direct probing into the FAX structures */ +//#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include "config.h" #endif @@ -46,6 +49,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" Modified: freeswitch/trunk/libs/spandsp/tests/regression_tests.sh ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/regression_tests.sh (original) +++ freeswitch/trunk/libs/spandsp/tests/regression_tests.sh Tue Jan 27 22:48:03 2009 @@ -17,7 +17,7 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # -# $Id: regression_tests.sh,v 1.53 2008/09/18 12:09:51 steveu Exp $ +# $Id: regression_tests.sh,v 1.54 2009/01/12 17:20:59 steveu Exp $ # ITUTESTS_TIF=../test-data/itu/fax/itutests.tif @@ -665,28 +665,28 @@ #echo tone_generate_tests completed OK echo tone_generate_tests not enabled -./v17_tests -s -42 14400 >$STDOUT_DEST 2>$STDERR_DEST +./v17_tests -b 14400 -s -42 >$STDOUT_DEST 2>$STDERR_DEST RETVAL=$? if [ $RETVAL != 0 ] then echo v17_tests failed! exit $RETVAL fi -./v17_tests -s -42 12000 >$STDOUT_DEST 2>$STDERR_DEST +./v17_tests -b 12000 -s -42 >$STDOUT_DEST 2>$STDERR_DEST RETVAL=$? if [ $RETVAL != 0 ] then echo v17_tests failed! exit $RETVAL fi -./v17_tests -s -42 9600 >$STDOUT_DEST 2>$STDERR_DEST +./v17_tests -b 9600 -s -42 >$STDOUT_DEST 2>$STDERR_DEST RETVAL=$? if [ $RETVAL != 0 ] then echo v17_tests failed! exit $RETVAL fi -./v17_tests -s -42 7200 >$STDOUT_DEST 2>$STDERR_DEST +./v17_tests -b 7200 -s -42 >$STDOUT_DEST 2>$STDERR_DEST RETVAL=$? if [ $RETVAL != 0 ] then @@ -695,7 +695,14 @@ fi echo v17_tests completed OK -#./v22bis_tests >$STDOUT_DEST 2>$STDERR_DEST +#./v22bis_tests -b 2400 >$STDOUT_DEST 2>$STDERR_DEST +#RETVAL=$? +#if [ $RETVAL != 0 ] +#then +# echo v22bis_tests failed! +# exit $RETVAL +#fi +#./v22bis_tests -b 1200 >$STDOUT_DEST 2>$STDERR_DEST #RETVAL=$? #if [ $RETVAL != 0 ] #then @@ -705,14 +712,14 @@ #echo v22bis_tests completed OK echo v22bis_tests not enabled -./v27ter_tests -s -42 2400 >$STDOUT_DEST 2>$STDERR_DEST +./v27ter_tests -b 4800 -s -42 >$STDOUT_DEST 2>$STDERR_DEST RETVAL=$? if [ $RETVAL != 0 ] then echo v27ter_tests failed! exit $RETVAL fi -./v27ter_tests -s -42 4800 >$STDOUT_DEST 2>$STDERR_DEST +./v27ter_tests -b 2400 -s -42 >$STDOUT_DEST 2>$STDERR_DEST RETVAL=$? if [ $RETVAL != 0 ] then @@ -721,21 +728,21 @@ fi echo v27ter_tests completed OK -./v29_tests -s -42 4800 >$STDOUT_DEST 2>$STDERR_DEST +./v29_tests -b 9600 -s -42 >$STDOUT_DEST 2>$STDERR_DEST RETVAL=$? if [ $RETVAL != 0 ] then echo v29_tests failed! exit $RETVAL fi -./v29_tests -s -42 7200 >$STDOUT_DEST 2>$STDERR_DEST +./v29_tests -b 7200 -s -42 >$STDOUT_DEST 2>$STDERR_DEST RETVAL=$? if [ $RETVAL != 0 ] then echo v29_tests failed! exit $RETVAL fi -./v29_tests -s -42 9600 >$STDOUT_DEST 2>$STDERR_DEST +./v29_tests -b 4800 -s -42 >$STDOUT_DEST 2>$STDERR_DEST RETVAL=$? if [ $RETVAL != 0 ] then Modified: freeswitch/trunk/libs/spandsp/tests/rfc2198_sim_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/rfc2198_sim_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/rfc2198_sim_tests.c Tue Jan 27 22:48:03 2009 @@ -24,7 +24,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: rfc2198_sim_tests.c,v 1.5 2008/05/13 13:17:26 steveu Exp $ + * $Id: rfc2198_sim_tests.c,v 1.6 2008/11/30 10:17:31 steveu Exp $ */ #if defined(HAVE_CONFIG_H) @@ -46,6 +46,10 @@ #define GEN_CONST #endif +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" Modified: freeswitch/trunk/libs/spandsp/tests/schedule_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/schedule_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/schedule_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: schedule_tests.c,v 1.19 2008/05/13 13:17:26 steveu Exp $ + * $Id: schedule_tests.c,v 1.20 2008/11/30 05:43:37 steveu Exp $ */ /*! \page schedule_tests_page Event scheduler tests @@ -41,6 +41,7 @@ #include #include +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES #include "spandsp.h" uint64_t when1; Modified: freeswitch/trunk/libs/spandsp/tests/sig_tone_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/sig_tone_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/sig_tone_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: sig_tone_tests.c,v 1.23 2008/08/16 14:59:50 steveu Exp $ + * $Id: sig_tone_tests.c,v 1.24 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -44,6 +44,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" Modified: freeswitch/trunk/libs/spandsp/tests/super_tone_rx_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/super_tone_rx_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/super_tone_rx_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: super_tone_rx_tests.c,v 1.29 2008/08/30 16:47:35 steveu Exp $ + * $Id: super_tone_rx_tests.c,v 1.30 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -55,6 +55,10 @@ #include #endif +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #define IN_FILE_NAME "super_tone.wav" Modified: freeswitch/trunk/libs/spandsp/tests/super_tone_tx_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/super_tone_tx_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/super_tone_tx_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: super_tone_tx_tests.c,v 1.23 2008/08/16 15:24:16 steveu Exp $ + * $Id: super_tone_tx_tests.c,v 1.24 2008/11/30 10:17:31 steveu Exp $ */ /*! \file */ @@ -56,6 +56,10 @@ #include #endif +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" Modified: freeswitch/trunk/libs/spandsp/tests/t31_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/t31_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/t31_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t31_tests.c,v 1.63 2008/09/13 14:32:53 steveu Exp $ + * $Id: t31_tests.c,v 1.69 2009/01/23 16:07:14 steveu Exp $ */ /*! \file */ @@ -31,6 +31,9 @@ \section t31_tests_page_sec_1 What does it do? */ +/* Enable the following definition to enable direct probing into the FAX structures */ +//#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include "config.h" #endif @@ -47,6 +50,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp/t30_fcf.h" #include "spandsp-sim.h" @@ -193,14 +200,14 @@ int test_seq_ptr = 0; -t31_state_t t31_state; +t31_state_t *t31_state; static int phase_b_handler(t30_state_t *s, void *user_data, int result) { int i; - i = (intptr_t) user_data; - printf("Phase B handler on channel %d - (0x%X) %s\n", i, result, t30_frametype(result)); + i = (int) (intptr_t) user_data; + printf("%c: Phase B handler on channel %c - (0x%X) %s\n", i, i, result, t30_frametype(result)); return T30_ERR_OK; } /*- End of function --------------------------------------------------------*/ @@ -224,10 +231,12 @@ printf("%c: Phase D: coding method %s\n", i, t4_encoding_to_str(t.encoding)); printf("%c: Phase D: image size %d\n", i, t.image_size); if ((u = t30_get_tx_ident(s))) - printf("%d: Phase D: local ident '%s'\n", i, u); + printf("%c: Phase D: local ident '%s'\n", i, u); if ((u = t30_get_rx_ident(s))) - printf("%d: Phase D: remote ident '%s'\n", i, u); + printf("%c: Phase D: remote ident '%s'\n", i, u); +#if defined(WITH_SPANDSP_INTERNALS) printf("%c: Phase D: bits per row - min %d, max %d\n", i, s->t4.min_row_bits, s->t4.max_row_bits); +#endif return T30_ERR_OK; } /*- End of function --------------------------------------------------------*/ @@ -237,7 +246,7 @@ int i; i = (intptr_t) user_data; - printf("Phase E handler on channel %d\n", i); + printf("Phase E handler on channel %c\n", i); //exit(0); } /*- End of function --------------------------------------------------------*/ @@ -252,7 +261,7 @@ break; case AT_MODEM_CONTROL_CALL: printf("\nModem control - Dialing '%s'\n", num); - t31_call_event(&t31_state, AT_CALL_EVENT_CONNECTED); + t31_call_event(t31_state, AT_CALL_EVENT_CONNECTED); break; case AT_MODEM_CONTROL_HANGUP: printf("\nModem control - Hanging up\n"); @@ -354,13 +363,13 @@ } /*- End of function --------------------------------------------------------*/ -static int tx_packet_handler(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count) +static int t38_tx_packet_handler(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count) { - t38_terminal_state_t *t; + t31_state_t *t; int i; /* This routine queues messages between two instances of T.38 processing */ - t = (t38_terminal_state_t *) user_data; + t = (t31_state_t *) user_data; span_log(&s->logging, SPAN_LOG_FLOW, "Send seq %d, len %d, count %d\n", s->tx_seq_no, len, count); for (i = 0; i < count; i++) @@ -372,45 +381,125 @@ } /*- End of function --------------------------------------------------------*/ -static int t38_tests(int use_gui, int test_sending) +static int t31_tx_packet_handler(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count) +{ + //t38_terminal_state_t *t; + int i; + + /* This routine queues messages between two instances of T.38 processing */ + //t = (t38_terminal_state_t *) user_data; + span_log(&s->logging, SPAN_LOG_FLOW, "Send seq %d, len %d, count %d\n", s->tx_seq_no, len, count); + + for (i = 0; i < count; i++) + { + if (g1050_put(path_b_to_a, buf, len, s->tx_seq_no, when) < 0) + printf("Lost packet %d\n", s->tx_seq_no); + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + +static int t38_tests(int use_gui, int test_sending, int model_no, int speed_pattern_no) { - t38_terminal_state_t t38_state; + t38_terminal_state_t *t38_state; int fast_send; int fast_blocks; uint8_t fast_buf[1000]; + int msg_len; + uint8_t msg[1024]; + int t38_version; + int without_pacing; + int use_tep; + int seq_no; + double tx_when; + double rx_when; t30_state_t *t30; + t38_core_state_t *t38_core; + logging_state_t *logging; - if (t31_init(&t31_state, at_tx_handler, NULL, modem_call_control, NULL, NULL, NULL) == NULL) + t38_version = 1; + without_pacing = FALSE; + use_tep = FALSE; + + srand48(0x1234567); + if ((path_a_to_b = g1050_init(model_no, speed_pattern_no, 100, 33)) == NULL) { - fprintf(stderr, " Cannot start the T.31 FAX modem\n"); + fprintf(stderr, "Failed to start IP network path model\n"); exit(2); } - span_log_set_level(&t31_state.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_FLOW); - span_log_set_tag(&t31_state.logging, "T.31"); + if ((path_b_to_a = g1050_init(model_no, speed_pattern_no, 100, 33)) == NULL) + { + fprintf(stderr, "Failed to start IP network path model\n"); + exit(2); + } + if ((t31_state = t31_init(NULL, at_tx_handler, NULL, modem_call_control, NULL, t31_tx_packet_handler, NULL)) == NULL) + { + fprintf(stderr, " Cannot start the T.31 T.38 modem\n"); + exit(2); + } + logging = t31_get_logging_state(t31_state); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.31"); + + t38_core = t31_get_t38_core_state(t31_state); + span_log_set_level(&t38_core->logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(&t38_core->logging, "T.31"); + span_log_set_level(&t31_state->at_state.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(&t31_state->at_state.logging, "T.31"); - if (t38_terminal_init(&t38_state, TRUE, tx_packet_handler, &t31_state) == NULL) + t31_set_mode(t31_state, TRUE); + t38_set_t38_version(t38_core, t38_version); + + if (test_sending) { - fprintf(stderr, "Cannot start the T.38 channel\n"); - exit(2); + if ((t38_state = t38_terminal_init(NULL, FALSE, t38_tx_packet_handler, t31_state)) == NULL) + { + fprintf(stderr, "Cannot start the T.38 channel\n"); + exit(2); + } + t30 = t38_terminal_get_t30_state(t38_state); + t30_set_rx_file(t30, OUTPUT_FILE_NAME, -1); + fax_test_seq = fax_send_test_seq; + countdown = 0; + } + else + { + if ((t38_state = t38_terminal_init(NULL, TRUE, t38_tx_packet_handler, t31_state)) == NULL) + { + fprintf(stderr, "Cannot start the T.38 channel\n"); + exit(2); + } + t30 = t38_terminal_get_t30_state(t38_state); + t30_set_tx_file(t30, INPUT_FILE_NAME, -1, -1); + fax_test_seq = fax_receive_test_seq; + countdown = 250; } - t30 = t38_terminal_get_t30_state(&t38_state); - span_log_set_level(&t38_state.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state.logging, "T.38"); - span_log_set_level(&t38_state.t38_fe.t38.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state.t38_fe.t38.logging, "T.38-A"); - span_log_set_level(&t30->logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t30->logging, "T.38"); + + t30 = t38_terminal_get_t30_state(t38_state); + t38_core = t38_terminal_get_t38_core_state(t38_state); + t38_set_t38_version(t38_core, t38_version); + t38_terminal_set_config(t38_state, without_pacing); + t38_terminal_set_tep_mode(t38_state, use_tep); t30_set_tx_ident(t30, "11111111"); - t30_set_tx_nsf(t30, (const uint8_t *) "\x50\x00\x00\x00Spandsp\x00", 12); - t30_set_tx_file(t30, INPUT_FILE_NAME, -1, -1); - t30_set_phase_b_handler(t30, phase_b_handler, (void *) (intptr_t) 'A'); - t30_set_phase_d_handler(t30, phase_d_handler, (void *) (intptr_t) 'A'); - t30_set_phase_e_handler(t30, phase_e_handler, (void *) (intptr_t) 'A'); - //t30_set_ecm_capability(t30, use_ecm); - //if (use_ecm) - // t30_set_supported_compressions(t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION); + t30_set_supported_modems(t30, T30_SUPPORT_V27TER | T30_SUPPORT_V29 | T30_SUPPORT_V17); + //t30_set_tx_nsf(t30, (const uint8_t *) "\x50\x00\x00\x00Spandsp\x00", 12); + t30_set_phase_b_handler(t30, phase_b_handler, (void *) 'A'); + t30_set_phase_d_handler(t30, phase_d_handler, (void *) 'A'); + t30_set_phase_e_handler(t30, phase_e_handler, (void *) 'A'); + + logging = t38_terminal_get_logging_state(t38_state); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38"); + + t38_core = t38_terminal_get_t38_core_state(t38_state); + span_log_set_level(&t38_core->logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(&t38_core->logging, "T.38"); + + logging = t30_get_logging_state(t30); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38"); fast_send = FALSE; fast_blocks = 0; @@ -421,6 +510,27 @@ #endif while (!done) { + logging = t38_terminal_get_logging_state(t38_state); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t38_core = t38_terminal_get_t38_core_state(t38_state); + logging = t38_core_get_logging_state(t38_core); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t30 = t38_terminal_get_t30_state(t38_state); + logging = t30_get_logging_state(t30); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + + logging = t31_get_logging_state(t31_state); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t38_core = t31_get_t38_core_state(t31_state); + logging = t38_core_get_logging_state(t38_core); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + span_log_bump_samples(&t31_state->at_state.logging, SAMPLES_PER_CHUNK); + + t38_terminal_send_timeout(t38_state, SAMPLES_PER_CHUNK); + t31_t38_send_timeout(t31_state, SAMPLES_PER_CHUNK); + + when += (float) SAMPLES_PER_CHUNK/(float) SAMPLE_RATE; + if (kick) { kick = FALSE; @@ -429,7 +539,7 @@ if (fax_test_seq[test_seq_ptr].command[0]) { printf("%s\n", fax_test_seq[test_seq_ptr].command); - t31_at_rx(&t31_state, fax_test_seq[test_seq_ptr].command, fax_test_seq[test_seq_ptr].len_command); + t31_at_rx(t31_state, fax_test_seq[test_seq_ptr].command, fax_test_seq[test_seq_ptr].len_command); } } else @@ -455,35 +565,47 @@ fast_buf[19] = fast_buf[16] = 1; } - t31_at_rx(&t31_state, (char *) fast_buf, 36); + t31_at_rx(t31_state, (char *) fast_buf, 36); if (--fast_blocks == 0) fast_send = FALSE; } - //t30_len = fax_tx(&fax_state, t30_amp, SAMPLES_PER_CHUNK); - //if (t31_rx(&t31_state, t30_amp, t30_len)) - // break; if (countdown) { if (answered) { countdown = 0; - t31_call_event(&t31_state, AT_CALL_EVENT_ANSWERED); + t31_call_event(t31_state, AT_CALL_EVENT_ANSWERED); } else if (--countdown == 0) { - t31_call_event(&t31_state, AT_CALL_EVENT_ALERTING); + t31_call_event(t31_state, AT_CALL_EVENT_ALERTING); countdown = 250; } } - - //t31_len = t31_tx(&t31_state, t31_amp, SAMPLES_PER_CHUNK); - //if (fax_rx(&fax_state, t31_amp, SAMPLES_PER_CHUNK)) - // break; + while ((msg_len = g1050_get(path_a_to_b, msg, 1024, when, &seq_no, &tx_when, &rx_when)) >= 0) + { +#if defined(ENABLE_GUI) + if (use_gui) + media_monitor_rx(seq_no, tx_when, rx_when); +#endif + t38_core = t31_get_t38_core_state(t31_state); + t38_core_rx_ifp_packet(t38_core, msg, msg_len, seq_no); + } + while ((msg_len = g1050_get(path_b_to_a, msg, 1024, when, &seq_no, &tx_when, &rx_when)) >= 0) + { +#if defined(ENABLE_GUI) + if (use_gui) + media_monitor_rx(seq_no, tx_when, rx_when); +#endif + t38_core = t38_terminal_get_t38_core_state(t38_state); + t38_core_rx_ifp_packet(t38_core, msg, msg_len, seq_no); + } #if defined(ENABLE_GUI) if (use_gui) media_monitor_update_display(); #endif } + t38_terminal_release(t38_state); return 0; } /*- End of function --------------------------------------------------------*/ @@ -492,7 +614,7 @@ { int k; int outframes; - fax_state_t fax_state; + fax_state_t *fax_state; int16_t t30_amp[SAMPLES_PER_CHUNK]; int16_t t31_amp[SAMPLES_PER_CHUNK]; int16_t silence[SAMPLES_PER_CHUNK]; @@ -505,6 +627,7 @@ int fast_blocks; uint8_t fast_buf[1000]; t30_state_t *t30; + logging_state_t *logging; wave_handle = AF_NULL_FILEHANDLE; if (log_audio) @@ -528,26 +651,27 @@ } } - if (t31_init(&t31_state, at_tx_handler, NULL, modem_call_control, NULL, NULL, NULL) == NULL) + if ((t31_state = t31_init(NULL, at_tx_handler, NULL, modem_call_control, NULL, NULL, NULL)) == NULL) { fprintf(stderr, " Cannot start the T.31 FAX modem\n"); exit(2); } - span_log_set_level(&t31_state.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_FLOW); - span_log_set_tag(&t31_state.logging, "T.31"); + logging = t31_get_logging_state(t31_state); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.31"); if (test_sending) { - fax_init(&fax_state, FALSE); - t30 = fax_get_t30_state(&fax_state); + fax_state = fax_init(NULL, FALSE); + t30 = fax_get_t30_state(fax_state); t30_set_rx_file(t30, OUTPUT_FILE_NAME, -1); fax_test_seq = fax_send_test_seq; countdown = 0; } else { - fax_init(&fax_state, TRUE); - t30 = fax_get_t30_state(&fax_state); + fax_state = fax_init(NULL, TRUE); + t30 = fax_get_t30_state(fax_state); t30_set_tx_file(t30, INPUT_FILE_NAME, -1, -1); fax_test_seq = fax_receive_test_seq; countdown = 250; @@ -555,15 +679,18 @@ t30_set_tx_ident(t30, "11111111"); t30_set_supported_modems(t30, T30_SUPPORT_V27TER | T30_SUPPORT_V29 | T30_SUPPORT_V17); - t30_set_phase_b_handler(t30, phase_b_handler, (void *) 0); - t30_set_phase_d_handler(t30, phase_d_handler, (void *) 0); - t30_set_phase_e_handler(t30, phase_e_handler, (void *) 0); + t30_set_phase_b_handler(t30, phase_b_handler, (void *) 'A'); + t30_set_phase_d_handler(t30, phase_d_handler, (void *) 'A'); + t30_set_phase_e_handler(t30, phase_e_handler, (void *) 'A'); memset(t30_amp, 0, sizeof(t30_amp)); - span_log_set_level(&t30->logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_FLOW); - span_log_set_tag(&t30->logging, "FAX"); - span_log_set_level(&fax_state.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_FLOW); - span_log_set_tag(&fax_state.logging, "FAX"); + logging = t30_get_logging_state(t30); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "FAX"); + + logging = fax_get_logging_state(fax_state); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "FAX"); fast_send = FALSE; fast_blocks = 0; @@ -578,7 +705,7 @@ if (fax_test_seq[test_seq_ptr].command[0]) { printf("%s\n", fax_test_seq[test_seq_ptr].command); - t31_at_rx(&t31_state, fax_test_seq[test_seq_ptr].command, fax_test_seq[test_seq_ptr].len_command); + t31_at_rx(t31_state, fax_test_seq[test_seq_ptr].command, fax_test_seq[test_seq_ptr].len_command); } } else @@ -604,11 +731,11 @@ fast_buf[19] = fast_buf[16] = 1; } - t31_at_rx(&t31_state, (char *) fast_buf, 36); + t31_at_rx(t31_state, (char *) fast_buf, 36); if (--fast_blocks == 0) fast_send = FALSE; } - t30_len = fax_tx(&fax_state, t30_amp, SAMPLES_PER_CHUNK); + t30_len = fax_tx(fax_state, t30_amp, SAMPLES_PER_CHUNK); /* The receive side always expects a full block of samples, but the transmit side may not be sending any when it doesn't need to. We may need to pad with some silence. */ @@ -622,23 +749,23 @@ for (k = 0; k < t30_len; k++) out_amp[2*k] = t30_amp[k]; } - if (t31_rx(&t31_state, t30_amp, t30_len)) + if (t31_rx(t31_state, t30_amp, t30_len)) break; if (countdown) { if (answered) { countdown = 0; - t31_call_event(&t31_state, AT_CALL_EVENT_ANSWERED); + t31_call_event(t31_state, AT_CALL_EVENT_ANSWERED); } else if (--countdown == 0) { - t31_call_event(&t31_state, AT_CALL_EVENT_ALERTING); + t31_call_event(t31_state, AT_CALL_EVENT_ALERTING); countdown = 250; } } - t31_len = t31_tx(&t31_state, t31_amp, SAMPLES_PER_CHUNK); + t31_len = t31_tx(t31_state, t31_amp, SAMPLES_PER_CHUNK); if (t31_len < SAMPLES_PER_CHUNK) { memset(t31_amp + t31_len, 0, sizeof(int16_t)*(SAMPLES_PER_CHUNK - t31_len)); @@ -649,7 +776,7 @@ for (k = 0; k < t31_len; k++) out_amp[2*k + 1] = t31_amp[k]; } - if (fax_rx(&fax_state, t31_amp, SAMPLES_PER_CHUNK)) + if (fax_rx(fax_state, t31_amp, SAMPLES_PER_CHUNK)) break; if (log_audio) @@ -727,7 +854,7 @@ } if (t38_mode) - t38_tests(use_gui, test_sending); + t38_tests(use_gui, test_sending, 0, 1); else t30_tests(log_audio, test_sending); if (done) Modified: freeswitch/trunk/libs/spandsp/tests/t38_core_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/t38_core_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/t38_core_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_core_tests.c,v 1.13 2008/05/13 13:17:26 steveu Exp $ + * $Id: t38_core_tests.c,v 1.14 2008/11/30 13:44:35 steveu Exp $ */ /*! \file */ @@ -53,6 +53,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #define MAX_FIELDS 42 Modified: freeswitch/trunk/libs/spandsp/tests/t38_gateway_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/t38_gateway_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/t38_gateway_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_gateway_tests.c,v 1.76 2008/08/16 15:24:16 steveu Exp $ + * $Id: t38_gateway_tests.c,v 1.79 2009/01/07 12:50:53 steveu Exp $ */ /*! \file */ @@ -34,6 +34,9 @@ FAX machine <-> T.38 gateway <-> T.38 gateway <-> FAX machine */ +/* Enable the following definition to enable direct probing into the FAX structures */ +//#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include #endif @@ -60,6 +63,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -77,10 +84,10 @@ #define OUTPUT_FILE_NAME_T30B "t38_gateway_t30b.wav" #define OUTPUT_FILE_NAME_T38B "t38_gateway_t38b.wav" -fax_state_t fax_state_a; -t38_gateway_state_t t38_state_a; -t38_gateway_state_t t38_state_b; -fax_state_t fax_state_b; +fax_state_t *fax_state_a; +t38_gateway_state_t *t38_state_a; +t38_gateway_state_t *t38_state_b; +fax_state_t *fax_state_b; g1050_state_t *path_a_to_b; g1050_state_t *path_b_to_a; @@ -124,7 +131,9 @@ printf("%c: Phase D: local ident '%s'\n", i, u); if ((u = t30_get_rx_ident(s))) printf("%c: Phase D: remote ident '%s'\n", i, u); +#if defined(WITH_SPANDSP_INTERNALS) printf("%c: Phase D: bits per row - min %d, max %d\n", i, s->t4.min_row_bits, s->t4.max_row_bits); +#endif return T30_ERR_OK; } /*- End of function --------------------------------------------------------*/ @@ -269,7 +278,11 @@ int use_gui; int opt; t38_stats_t stats; + fax_state_t *fax; t30_state_t *t30; + t38_gateway_state_t *t38; + t38_core_state_t *t38_core; + logging_state_t *logging; log_audio = FALSE; use_ecm = FALSE; @@ -363,14 +376,15 @@ exit(2); } - if (fax_init(&fax_state_a, TRUE) == NULL) + if ((fax_state_a = fax_init(NULL, TRUE)) == NULL) { fprintf(stderr, "Cannot start FAX\n"); exit(2); } - t30 = fax_get_t30_state(&fax_state_a); - fax_set_transmit_on_idle(&fax_state_a, use_transmit_on_idle); - fax_set_tep_mode(&fax_state_a, use_tep); + fax = fax_state_a; + t30 = fax_get_t30_state(fax); + fax_set_transmit_on_idle(fax, use_transmit_on_idle); + fax_set_tep_mode(fax, use_tep); t30_set_supported_modems(t30, supported_modems); t30_set_tx_ident(t30, "11111111"); t30_set_tx_nsf(t30, (const uint8_t *) "\x50\x00\x00\x00Spandsp\x00", 12); @@ -383,57 +397,75 @@ t30_set_supported_compressions(t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION); t30_set_minimum_scan_line_time(t30, 40); //t30_set_iaf_mode(t30, T30_IAF_MODE_NO_FILL_BITS); - span_log_set_level(&fax_state_a.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&fax_state_a.logging, "FAX-A "); - span_log_set_level(&t30->logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t30->logging, "FAX-A "); + + logging = fax_get_logging_state(fax); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "FAX-A "); + + logging = t30_get_logging_state(t30); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "FAX-A "); + memset(t30_amp_a, 0, sizeof(t30_amp_a)); memset(t38_amp_hist_a, 0, sizeof(t38_amp_hist_a)); memset(t38_amp_hist_b, 0, sizeof(t38_amp_hist_b)); - if (t38_gateway_init(&t38_state_a, tx_packet_handler_a, &t38_state_b) == NULL) + if ((t38_state_a = t38_gateway_init(NULL, tx_packet_handler_a, t38_state_b)) == NULL) { fprintf(stderr, "Cannot start the T.38 channel\n"); exit(2); } - t38_gateway_set_transmit_on_idle(&t38_state_a, use_transmit_on_idle); - t38_gateway_set_supported_modems(&t38_state_a, supported_modems); - //t38_gateway_set_nsx_suppression(&t38_state_a, NULL, 0, NULL, 0); - t38_gateway_set_fill_bit_removal(&t38_state_a, fill_removal); - t38_gateway_set_real_time_frame_handler(&t38_state_a, real_time_frame_handler, NULL); - t38_set_t38_version(&t38_state_a.t38x.t38, t38_version); - t38_gateway_set_ecm_capability(&t38_state_a, use_ecm); - span_log_set_level(&t38_state_a.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_a.logging, "T.38-A"); - span_log_set_level(&t38_state_a.t38x.t38.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_a.t38x.t38.logging, "T.38-A"); + t38 = t38_state_a; + t38_core = t38_gateway_get_t38_core_state(t38); + t38_gateway_set_transmit_on_idle(t38, use_transmit_on_idle); + t38_gateway_set_supported_modems(t38, supported_modems); + //t38_gateway_set_nsx_suppression(t38, NULL, 0, NULL, 0); + t38_gateway_set_fill_bit_removal(t38, fill_removal); + t38_gateway_set_real_time_frame_handler(t38, real_time_frame_handler, NULL); + t38_set_t38_version(t38_core, t38_version); + t38_gateway_set_ecm_capability(t38, use_ecm); + + logging = t38_gateway_get_logging_state(t38); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-A"); + + logging = t38_core_get_logging_state(t38_core); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-A"); memset(t38_amp_a, 0, sizeof(t38_amp_a)); - if (t38_gateway_init(&t38_state_b, tx_packet_handler_b, &t38_state_a) == NULL) + if ((t38_state_b = t38_gateway_init(NULL, tx_packet_handler_b, t38_state_a)) == NULL) { fprintf(stderr, "Cannot start the T.38 channel\n"); exit(2); } - t38_gateway_set_transmit_on_idle(&t38_state_b, use_transmit_on_idle); - t38_gateway_set_supported_modems(&t38_state_b, supported_modems); - //t38_gateway_set_nsx_suppression(&t38_state_b, FALSE); - t38_gateway_set_fill_bit_removal(&t38_state_b, fill_removal); - t38_set_t38_version(&t38_state_b.t38x.t38, t38_version); - t38_gateway_set_ecm_capability(&t38_state_b, use_ecm); - span_log_set_level(&t38_state_b.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_b.logging, "T.38-B"); - span_log_set_level(&t38_state_b.t38x.t38.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_b.t38x.t38.logging, "T.38-B"); + t38 = t38_state_b; + t38_core = t38_gateway_get_t38_core_state(t38); + t38_gateway_set_transmit_on_idle(t38, use_transmit_on_idle); + t38_gateway_set_supported_modems(t38, supported_modems); + //t38_gateway_set_nsx_suppression(t38, FALSE); + t38_gateway_set_fill_bit_removal(t38, fill_removal); + t38_set_t38_version(t38_core, t38_version); + t38_gateway_set_ecm_capability(t38, use_ecm); + + logging = t38_gateway_get_logging_state(t38); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-B"); + + logging = t38_core_get_logging_state(t38_core); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-B"); memset(t38_amp_b, 0, sizeof(t38_amp_b)); - if (fax_init(&fax_state_b, FALSE) == NULL) + if ((fax_state_b = fax_init(NULL, FALSE)) == NULL) { fprintf(stderr, "Cannot start FAX\n"); exit(2); } - t30 = fax_get_t30_state(&fax_state_b); - fax_set_transmit_on_idle(&fax_state_b, use_transmit_on_idle); - fax_set_tep_mode(&fax_state_b, use_tep); + fax = fax_state_b; + t30 = fax_get_t30_state(fax); + fax_set_transmit_on_idle(fax, use_transmit_on_idle); + fax_set_tep_mode(fax, use_tep); t30_set_supported_modems(t30, supported_modems); t30_set_tx_ident(t30, "22222222"); t30_set_tx_nsf(t30, (const uint8_t *) "\x50\x00\x00\x00Spandsp\x00", 12); @@ -445,10 +477,15 @@ if (use_ecm) t30_set_supported_compressions(t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION); t30_set_minimum_scan_line_time(t30, 40); - span_log_set_level(&fax_state_b.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&fax_state_b.logging, "FAX-B "); - span_log_set_level(&t30->logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t30->logging, "FAX-B "); + + logging = fax_get_logging_state(fax); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "FAX-B "); + + logging = t30_get_logging_state(t30); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "FAX-B "); + memset(t30_amp_b, 0, sizeof(t30_amp_b)); #if defined(ENABLE_GUI) @@ -458,19 +495,29 @@ hist_ptr = 0; for (;;) { - t30 = fax_get_t30_state(&fax_state_a); - span_log_bump_samples(&fax_state_a.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t30->logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_a.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_a.t38x.t38.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_b.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_b.t38x.t38.logging, SAMPLES_PER_CHUNK); - t30 = fax_get_t30_state(&fax_state_b); - span_log_bump_samples(&fax_state_b.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t30->logging, SAMPLES_PER_CHUNK); + logging = fax_get_logging_state(fax_state_a); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t30 = fax_get_t30_state(fax_state_a); + logging = t30_get_logging_state(t30); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + logging = t38_gateway_get_logging_state(t38_state_a); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t38_core = t38_gateway_get_t38_core_state(t38_state_a); + logging = t38_core_get_logging_state(t38_core); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + logging = t38_gateway_get_logging_state(t38_state_b); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t38_core = t38_gateway_get_t38_core_state(t38_state_b); + logging = t38_core_get_logging_state(t38_core); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + logging = fax_get_logging_state(fax_state_b); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t30 = fax_get_t30_state(fax_state_b); + logging = t30_get_logging_state(t30); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); memset(out_amp, 0, sizeof(out_amp)); - t30_len_a = fax_tx(&fax_state_a, t30_amp_a, SAMPLES_PER_CHUNK); + t30_len_a = fax_tx(fax_state_a, t30_amp_a, SAMPLES_PER_CHUNK); if (!use_transmit_on_idle) { /* The receive side always expects a full block of samples, but the @@ -493,10 +540,10 @@ t30_amp_a[i] += t38_amp_hist_a[hist_ptr][i] >> 1; memcpy(t38_amp_hist_a[hist_ptr], t38_amp_a, sizeof(int16_t)*SAMPLES_PER_CHUNK); } - if (t38_gateway_rx(&t38_state_a, t30_amp_a, t30_len_a)) + if (t38_gateway_rx(t38_state_a, t30_amp_a, t30_len_a)) break; - t38_len_a = t38_gateway_tx(&t38_state_a, t38_amp_a, SAMPLES_PER_CHUNK); + t38_len_a = t38_gateway_tx(t38_state_a, t38_amp_a, SAMPLES_PER_CHUNK); if (!use_transmit_on_idle) { if (t38_len_a < SAMPLES_PER_CHUNK) @@ -510,10 +557,10 @@ for (i = 0; i < t38_len_a; i++) out_amp[i*4 + 1] = t38_amp_a[i]; } - if (fax_rx(&fax_state_a, t38_amp_a, SAMPLES_PER_CHUNK)) + if (fax_rx(fax_state_a, t38_amp_a, SAMPLES_PER_CHUNK)) break; - t30_len_b = fax_tx(&fax_state_b, t30_amp_b, SAMPLES_PER_CHUNK); + t30_len_b = fax_tx(fax_state_b, t30_amp_b, SAMPLES_PER_CHUNK); if (!use_transmit_on_idle) { /* The receive side always expects a full block of samples, but the @@ -536,10 +583,10 @@ t30_amp_b[i] += t38_amp_hist_b[hist_ptr][i] >> 1; memcpy(t38_amp_hist_b[hist_ptr], t38_amp_b, sizeof(int16_t)*SAMPLES_PER_CHUNK); } - if (t38_gateway_rx(&t38_state_b, t30_amp_b, t30_len_b)) + if (t38_gateway_rx(t38_state_b, t30_amp_b, t30_len_b)) break; - t38_len_b = t38_gateway_tx(&t38_state_b, t38_amp_b, SAMPLES_PER_CHUNK); + t38_len_b = t38_gateway_tx(t38_state_b, t38_amp_b, SAMPLES_PER_CHUNK); if (!use_transmit_on_idle) { if (t38_len_b < SAMPLES_PER_CHUNK) @@ -553,10 +600,10 @@ for (i = 0; i < t38_len_b; i++) out_amp[i*4 + 2] = t38_amp_b[i]; } - if (fax_rx(&fax_state_b, t38_amp_b, SAMPLES_PER_CHUNK)) + if (fax_rx(fax_state_b, t38_amp_b, SAMPLES_PER_CHUNK)) break; - when += 0.02; + when += (float) SAMPLES_PER_CHUNK/(float) SAMPLE_RATE; while ((msg_len = g1050_get(path_a_to_b, msg, 1024, when, &seq_no, &tx_when, &rx_when)) >= 0) { @@ -564,7 +611,8 @@ if (use_gui) media_monitor_rx(seq_no, tx_when, rx_when); #endif - t38_core_rx_ifp_packet(&t38_state_b.t38x.t38, msg, msg_len, seq_no); + t38_core = t38_gateway_get_t38_core_state(t38_state_b); + t38_core_rx_ifp_packet(t38_core, msg, msg_len, seq_no); } while ((msg_len = g1050_get(path_b_to_a, msg, 1024, when, &seq_no, &tx_when, &rx_when)) >= 0) { @@ -572,7 +620,8 @@ if (use_gui) media_monitor_rx(seq_no, tx_when, rx_when); #endif - t38_core_rx_ifp_packet(&t38_state_a.t38x.t38, msg, msg_len, seq_no); + t38_core = t38_gateway_get_t38_core_state(t38_state_a); + t38_core_rx_ifp_packet(t38_core, msg, msg_len, seq_no); } if (log_audio) { @@ -590,18 +639,18 @@ if (++hist_ptr > 3) hist_ptr = 0; } - t38_gateway_get_transfer_statistics(&t38_state_a, &stats); + t38_gateway_get_transfer_statistics(t38_state_a, &stats); printf("A side exchanged %d pages at %dbps, in %s mode\n", stats.pages_transferred, stats.bit_rate, (stats.error_correcting_mode) ? "ECM" : "non-ECM"); - t38_gateway_get_transfer_statistics(&t38_state_a, &stats); + t38_gateway_get_transfer_statistics(t38_state_a, &stats); printf("B side exchanged %d pages at %dbps, in %s mode\n", stats.pages_transferred, stats.bit_rate, (stats.error_correcting_mode) ? "ECM" : "non-ECM"); - fax_release(&fax_state_a); - fax_release(&fax_state_b); + fax_release(fax_state_a); + fax_release(fax_state_b); if (log_audio) { if (afCloseFile(wave_handle) != 0) Modified: freeswitch/trunk/libs/spandsp/tests/t38_gateway_to_terminal_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/t38_gateway_to_terminal_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/t38_gateway_to_terminal_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_gateway_to_terminal_tests.c,v 1.60 2008/08/16 15:24:16 steveu Exp $ + * $Id: t38_gateway_to_terminal_tests.c,v 1.63 2009/01/07 12:50:53 steveu Exp $ */ /*! \file */ @@ -34,6 +34,9 @@ FAX machine -> T.38 gateway -> T.38 termination */ +/* Enable the following definition to enable direct probing into the FAX structures */ +//#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include #endif @@ -60,6 +63,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -73,9 +80,9 @@ #define OUTPUT_FILE_NAME "t38.tif" #define OUTPUT_FILE_NAME_WAVE "t38_gateway_to_terminal.wav" -fax_state_t fax_state_a; -t38_gateway_state_t t38_state_a; -t38_terminal_state_t t38_state_b; +fax_state_t *fax_state_a; +t38_gateway_state_t *t38_state_a; +t38_terminal_state_t *t38_state_b; g1050_state_t *path_a_to_b; g1050_state_t *path_b_to_a; @@ -119,7 +126,9 @@ printf("%c: Phase D: local ident '%s'\n", i, u); if ((u = t30_get_rx_ident(s))) printf("%c: Phase D: remote ident '%s'\n", i, u); +#if defined(WITH_SPANDSP_INTERNALS) printf("%c: Phase D: bits per row - min %d, max %d\n", i, s->t4.min_row_bits, s->t4.max_row_bits); +#endif return T30_ERR_OK; } /*- End of function --------------------------------------------------------*/ @@ -237,6 +246,8 @@ int use_gui; int opt; t30_state_t *t30; + t38_core_state_t *t38_core; + logging_state_t *logging; log_audio = FALSE; t38_version = 1; @@ -325,14 +336,14 @@ exit(2); } - if (fax_init(&fax_state_a, TRUE) == NULL) + if ((fax_state_a = fax_init(NULL, TRUE)) == NULL) { fprintf(stderr, "Cannot start FAX\n"); exit(2); } - t30 = fax_get_t30_state(&fax_state_a); - fax_set_transmit_on_idle(&fax_state_a, use_transmit_on_idle); - fax_set_tep_mode(&fax_state_a, use_tep); + t30 = fax_get_t30_state(fax_state_a); + fax_set_transmit_on_idle(fax_state_a, use_transmit_on_idle); + fax_set_tep_mode(fax_state_a, use_tep); t30_set_supported_modems(t30, supported_modems); t30_set_tx_ident(t30, "11111111"); t30_set_tx_nsf(t30, (const uint8_t *) "\x50\x00\x00\x00Spandsp\x00", 12); @@ -343,39 +354,57 @@ t30_set_ecm_capability(t30, use_ecm); if (use_ecm) t30_set_supported_compressions(t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION); - span_log_set_level(&fax_state_a.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&fax_state_a.logging, "FAX-A "); - span_log_set_level(&t30->logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t30->logging, "FAX-A "); + + logging = fax_get_logging_state(fax_state_a); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "FAX-A "); + + logging = t30_get_logging_state(t30); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "FAX-A "); + memset(t30_amp_a, 0, sizeof(t30_amp_a)); - if (t38_gateway_init(&t38_state_a, tx_packet_handler_a, &t38_state_b) == NULL) + if ((t38_state_a = t38_gateway_init(NULL, tx_packet_handler_a, t38_state_b)) == NULL) { fprintf(stderr, "Cannot start the T.38 channel\n"); exit(2); } - t38_gateway_set_transmit_on_idle(&t38_state_a, use_transmit_on_idle); - t38_set_t38_version(&t38_state_a.t38x.t38, t38_version); - t38_gateway_set_ecm_capability(&t38_state_a, use_ecm); - span_log_set_level(&t38_state_a.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_a.logging, "T.38-A"); - span_log_set_level(&t38_state_a.t38x.t38.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_a.t38x.t38.logging, "T.38-A"); + t38_core = t38_gateway_get_t38_core_state(t38_state_a); + t38_gateway_set_transmit_on_idle(t38_state_a, use_transmit_on_idle); + t38_set_t38_version(t38_core, t38_version); + t38_gateway_set_ecm_capability(t38_state_a, use_ecm); + + logging = t38_gateway_get_logging_state(t38_state_a); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-A"); + + logging = t38_core_get_logging_state(t38_core); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-A"); + memset(t38_amp_a, 0, sizeof(t38_amp_a)); - if (t38_terminal_init(&t38_state_b, FALSE, tx_packet_handler_b, &t38_state_a) == NULL) + if ((t38_state_b = t38_terminal_init(NULL, FALSE, tx_packet_handler_b, t38_state_a)) == NULL) { fprintf(stderr, "Cannot start the T.38 channel\n"); exit(2); } - t30 = t38_terminal_get_t30_state(&t38_state_b); - t38_set_t38_version(&t38_state_b.t38_fe.t38, t38_version); - span_log_set_level(&t38_state_b.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_b.logging, "T.38-B"); - span_log_set_level(&t38_state_b.t38_fe.t38.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_b.t38_fe.t38.logging, "T.38-B"); - span_log_set_level(&t30->logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t30->logging, "T.38-B"); + t30 = t38_terminal_get_t30_state(t38_state_b); + t38_core = t38_terminal_get_t38_core_state(t38_state_b); + t38_set_t38_version(t38_core, t38_version); + + logging = t38_terminal_get_logging_state(t38_state_b); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-B"); + + logging = t38_core_get_logging_state(t38_core); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-B"); + + logging = t30_get_logging_state(t30); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-B"); t30_set_supported_modems(t30, supported_modems); t30_set_tx_ident(t30, "22222222"); @@ -393,18 +422,29 @@ #endif for (;;) { - span_log_bump_samples(&fax_state_a.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&fax_state_a.t30.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_a.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_a.t38x.t38.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_b.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_b.t38_fe.t38.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_b.t30.logging, SAMPLES_PER_CHUNK); + logging = fax_get_logging_state(fax_state_a); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t30 = fax_get_t30_state(fax_state_a); + logging = t30_get_logging_state(t30); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + logging = t38_gateway_get_logging_state(t38_state_a); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t38_core = t38_gateway_get_t38_core_state(t38_state_a); + logging = t38_core_get_logging_state(t38_core); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + logging = t38_terminal_get_logging_state(t38_state_b); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t38_core = t38_terminal_get_t38_core_state(t38_state_b); + logging = t38_core_get_logging_state(t38_core); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t30 = t38_terminal_get_t30_state(t38_state_b); + logging = t30_get_logging_state(t30); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); memset(out_amp, 0, sizeof(out_amp)); - t38_terminal_send_timeout(&t38_state_b, SAMPLES_PER_CHUNK); + t38_terminal_send_timeout(t38_state_b, SAMPLES_PER_CHUNK); - t30_len_a = fax_tx(&fax_state_a, t30_amp_a, SAMPLES_PER_CHUNK); + t30_len_a = fax_tx(fax_state_a, t30_amp_a, SAMPLES_PER_CHUNK); if (!use_transmit_on_idle) { /* The receive side always expects a full block of samples, but the @@ -426,10 +466,10 @@ for (i = 0; i < t30_len_a; i++) t30_amp_a[i] += t38_amp_a[i] >> 1; } - if (t38_gateway_rx(&t38_state_a, t30_amp_a, t30_len_a)) + if (t38_gateway_rx(t38_state_a, t30_amp_a, t30_len_a)) break; - t38_len_a = t38_gateway_tx(&t38_state_a, t38_amp_a, SAMPLES_PER_CHUNK); + t38_len_a = t38_gateway_tx(t38_state_a, t38_amp_a, SAMPLES_PER_CHUNK); if (!use_transmit_on_idle) { if (t38_len_a < SAMPLES_PER_CHUNK) @@ -443,10 +483,10 @@ for (i = 0; i < t38_len_a; i++) out_amp[2*i + 1] = t38_amp_a[i]; } - if (fax_rx(&fax_state_a, t38_amp_a, SAMPLES_PER_CHUNK)) + if (fax_rx(fax_state_a, t38_amp_a, SAMPLES_PER_CHUNK)) break; - when += 0.02; + when += (float) SAMPLES_PER_CHUNK/(float) SAMPLE_RATE; while ((msg_len = g1050_get(path_a_to_b, msg, 1024, when, &seq_no, &tx_when, &rx_when)) >= 0) { @@ -454,7 +494,8 @@ if (use_gui) media_monitor_rx(seq_no, tx_when, rx_when); #endif - t38_core_rx_ifp_packet(&t38_state_b.t38_fe.t38, msg, msg_len, seq_no); + t38_core = t38_terminal_get_t38_core_state(t38_state_b); + t38_core_rx_ifp_packet(t38_core, msg, msg_len, seq_no); } while ((msg_len = g1050_get(path_b_to_a, msg, 1024, when, &seq_no, &tx_when, &rx_when)) >= 0) { @@ -462,7 +503,8 @@ if (use_gui) media_monitor_rx(seq_no, tx_when, rx_when); #endif - t38_core_rx_ifp_packet(&t38_state_a.t38x.t38, msg, msg_len, seq_no); + t38_core = t38_gateway_get_t38_core_state(t38_state_a); + t38_core_rx_ifp_packet(t38_core, msg, msg_len, seq_no); } if (log_audio) { @@ -478,8 +520,8 @@ media_monitor_update_display(); #endif } - fax_release(&fax_state_a); - t38_terminal_release(&t38_state_b); + fax_release(fax_state_a); + t38_terminal_release(t38_state_b); if (log_audio) { if (afCloseFile(wave_handle) != 0) Modified: freeswitch/trunk/libs/spandsp/tests/t38_non_ecm_buffer_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/t38_non_ecm_buffer_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/t38_non_ecm_buffer_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_non_ecm_buffer_tests.c,v 1.2 2008/09/02 13:56:10 steveu Exp $ + * $Id: t38_non_ecm_buffer_tests.c,v 1.4 2008/11/30 13:44:35 steveu Exp $ */ /*! \file */ @@ -55,6 +55,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" int main(int argc, char *argv[]) Modified: freeswitch/trunk/libs/spandsp/tests/t38_terminal_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/t38_terminal_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/t38_terminal_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_terminal_tests.c,v 1.61 2008/08/16 14:59:50 steveu Exp $ + * $Id: t38_terminal_tests.c,v 1.64 2009/01/07 12:50:53 steveu Exp $ */ /*! \file */ @@ -34,6 +34,9 @@ T.38 termination <-> T.38 termination */ +/* Enable the following definition to enable direct probing into the FAX structures */ +//#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include #endif @@ -60,6 +63,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -72,8 +79,8 @@ #define INPUT_FILE_NAME "../test-data/itu/fax/itutests.tif" #define OUTPUT_FILE_NAME "t38.tif" -t38_terminal_state_t t38_state_a; -t38_terminal_state_t t38_state_b; +t38_terminal_state_t *t38_state_a; +t38_terminal_state_t *t38_state_b; g1050_state_t *path_a_to_b; g1050_state_t *path_b_to_a; @@ -117,7 +124,9 @@ printf("%c: Phase D: local ident '%s'\n", i, u); if ((u = t30_get_rx_ident(s))) printf("%c: Phase D: remote ident '%s'\n", i, u); +#if defined(WITH_SPANDSP_INTERNALS) printf("%c: Phase D: bits per row - min %d, max %d\n", i, s->t4.min_row_bits, s->t4.max_row_bits); +#endif return T30_ERR_OK; } /*- End of function --------------------------------------------------------*/ @@ -229,6 +238,8 @@ int supported_modems; int opt; t30_state_t *t30; + t38_core_state_t *t38_core; + logging_state_t *logging; t38_version = 1; without_pacing = FALSE; @@ -302,21 +313,28 @@ exit(2); } - if (t38_terminal_init(&t38_state_a, TRUE, tx_packet_handler_a, &t38_state_b) == NULL) + if ((t38_state_a = t38_terminal_init(NULL, TRUE, tx_packet_handler_a, t38_state_b)) == NULL) { fprintf(stderr, "Cannot start the T.38 channel\n"); exit(2); } - t30 = t38_terminal_get_t30_state(&t38_state_a); - t38_set_t38_version(&t38_state_a.t38_fe.t38, t38_version); - t38_terminal_set_config(&t38_state_a, without_pacing); - t38_terminal_set_tep_mode(&t38_state_a, use_tep); - span_log_set_level(&t38_state_a.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_a.logging, "T.38-A"); - span_log_set_level(&t38_state_a.t38_fe.t38.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_a.t38_fe.t38.logging, "T.38-A"); - span_log_set_level(&t30->logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t30->logging, "T.38-A"); + t30 = t38_terminal_get_t30_state(t38_state_a); + t38_core = t38_terminal_get_t38_core_state(t38_state_a); + t38_set_t38_version(t38_core, t38_version); + t38_terminal_set_config(t38_state_a, without_pacing); + t38_terminal_set_tep_mode(t38_state_a, use_tep); + + logging = t38_terminal_get_logging_state(t38_state_a); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-A"); + + logging = t38_core_get_logging_state(t38_core); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-A"); + + logging = t30_get_logging_state(t30); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-A"); t30_set_supported_modems(t30, supported_modems); t30_set_tx_ident(t30, "11111111"); @@ -329,21 +347,28 @@ if (use_ecm) t30_set_supported_compressions(t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION); - if (t38_terminal_init(&t38_state_b, FALSE, tx_packet_handler_b, &t38_state_a) == NULL) + if ((t38_state_b = t38_terminal_init(NULL, FALSE, tx_packet_handler_b, t38_state_a)) == NULL) { fprintf(stderr, "Cannot start the T.38 channel\n"); exit(2); } - t30 = t38_terminal_get_t30_state(&t38_state_b); - t38_set_t38_version(&t38_state_b.t38_fe.t38, t38_version); - t38_terminal_set_config(&t38_state_b, without_pacing); - t38_terminal_set_tep_mode(&t38_state_b, use_tep); - span_log_set_level(&t38_state_b.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_b.logging, "T.38-B"); - span_log_set_level(&t38_state_b.t38_fe.t38.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_b.t38_fe.t38.logging, "T.38-B"); - span_log_set_level(&t30->logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t30->logging, "T.38-B"); + t30 = t38_terminal_get_t30_state(t38_state_b); + t38_core = t38_terminal_get_t38_core_state(t38_state_b); + t38_set_t38_version(t38_core, t38_version); + t38_terminal_set_config(t38_state_b, without_pacing); + t38_terminal_set_tep_mode(t38_state_b, use_tep); + + logging = t38_terminal_get_logging_state(t38_state_b); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-B"); + + logging = t38_core_get_logging_state(t38_core); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-B"); + + logging = t30_get_logging_state(t30); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-B"); t30_set_supported_modems(t30, supported_modems); t30_set_tx_ident(t30, "22222222"); @@ -362,17 +387,27 @@ #endif for (;;) { - span_log_bump_samples(&t38_state_a.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_a.t38_fe.t38.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_a.t30.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_b.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_b.t38_fe.t38.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_b.t30.logging, SAMPLES_PER_CHUNK); + logging = t38_terminal_get_logging_state(t38_state_a); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t38_core = t38_terminal_get_t38_core_state(t38_state_a); + logging = t38_core_get_logging_state(t38_core); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t30 = t38_terminal_get_t30_state(t38_state_a); + logging = t30_get_logging_state(t30); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + logging = t38_terminal_get_logging_state(t38_state_b); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t38_core = t38_terminal_get_t38_core_state(t38_state_b); + logging = t38_core_get_logging_state(t38_core); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t30 = t38_terminal_get_t30_state(t38_state_b); + logging = t30_get_logging_state(t30); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); - done[0] = t38_terminal_send_timeout(&t38_state_a, SAMPLES_PER_CHUNK); - done[1] = t38_terminal_send_timeout(&t38_state_b, SAMPLES_PER_CHUNK); + done[0] = t38_terminal_send_timeout(t38_state_a, SAMPLES_PER_CHUNK); + done[1] = t38_terminal_send_timeout(t38_state_b, SAMPLES_PER_CHUNK); - when += 0.02; + when += (float) SAMPLES_PER_CHUNK/(float) SAMPLE_RATE; while ((msg_len = g1050_get(path_a_to_b, msg, 1024, when, &seq_no, &tx_when, &rx_when)) >= 0) { @@ -380,7 +415,8 @@ if (use_gui) media_monitor_rx(seq_no, tx_when, rx_when); #endif - t38_core_rx_ifp_packet(&t38_state_b.t38_fe.t38, msg, msg_len, seq_no); + t38_core = t38_terminal_get_t38_core_state(t38_state_b); + t38_core_rx_ifp_packet(t38_core, msg, msg_len, seq_no); } while ((msg_len = g1050_get(path_b_to_a, msg, 1024, when, &seq_no, &tx_when, &rx_when)) >= 0) { @@ -388,7 +424,8 @@ if (use_gui) media_monitor_rx(seq_no, tx_when, rx_when); #endif - t38_core_rx_ifp_packet(&t38_state_a.t38_fe.t38, msg, msg_len, seq_no); + t38_core = t38_terminal_get_t38_core_state(t38_state_a); + t38_core_rx_ifp_packet(t38_core, msg, msg_len, seq_no); } if (done[0] && done[1]) break; @@ -397,8 +434,8 @@ media_monitor_update_display(); #endif } - t38_terminal_release(&t38_state_a); - t38_terminal_release(&t38_state_b); + t38_terminal_release(t38_state_a); + t38_terminal_release(t38_state_b); if (!succeeded[0] || !succeeded[1]) { printf("Tests failed\n"); Modified: freeswitch/trunk/libs/spandsp/tests/t38_terminal_to_gateway_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/t38_terminal_to_gateway_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/t38_terminal_to_gateway_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_terminal_to_gateway_tests.c,v 1.59 2008/08/16 15:24:16 steveu Exp $ + * $Id: t38_terminal_to_gateway_tests.c,v 1.62 2009/01/07 12:50:53 steveu Exp $ */ /*! \file */ @@ -34,6 +34,9 @@ T.38 termination -> T.38 gateway -> FAX machine */ +/* Enable the following definition to enable direct probing into the FAX structures */ +//#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include #endif @@ -60,6 +63,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -73,9 +80,9 @@ #define OUTPUT_FILE_NAME "t38.tif" #define OUTPUT_FILE_NAME_WAVE "t38_terminal_to_gateway.wav" -t38_terminal_state_t t38_state_a; -t38_gateway_state_t t38_state_b; -fax_state_t fax_state_b; +t38_terminal_state_t *t38_state_a; +t38_gateway_state_t *t38_state_b; +fax_state_t *fax_state_b; g1050_state_t *path_a_to_b; g1050_state_t *path_b_to_a; @@ -119,7 +126,9 @@ printf("%c: Phase D: local ident '%s'\n", i, u); if ((u = t30_get_rx_ident(s))) printf("%c: Phase D: remote ident '%s'\n", i, u); +#if defined(WITH_SPANDSP_INTERNALS) printf("%c: Phase D: bits per row - min %d, max %d\n", i, s->t4.min_row_bits, s->t4.max_row_bits); +#endif return T30_ERR_OK; } /*- End of function --------------------------------------------------------*/ @@ -237,6 +246,8 @@ int supported_modems; int opt; t30_state_t *t30; + t38_core_state_t *t38_core; + logging_state_t *logging; log_audio = FALSE; t38_version = 1; @@ -325,19 +336,26 @@ exit(2); } - if (t38_terminal_init(&t38_state_a, TRUE, tx_packet_handler_a, &t38_state_b) == NULL) + if ((t38_state_a = t38_terminal_init(NULL, TRUE, tx_packet_handler_a, &t38_state_b)) == NULL) { fprintf(stderr, "Cannot start the T.38 channel\n"); exit(2); } - t30 = t38_terminal_get_t30_state(&t38_state_a); - t38_set_t38_version(&t38_state_a.t38_fe.t38, t38_version); - span_log_set_level(&t38_state_a.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_a.logging, "T.38-A"); - span_log_set_level(&t38_state_a.t38_fe.t38.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_a.t38_fe.t38.logging, "T.38-A"); - span_log_set_level(&t30->logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t30->logging, "T.38-A"); + t30 = t38_terminal_get_t30_state(t38_state_a); + t38_core = t38_terminal_get_t38_core_state(t38_state_a); + t38_set_t38_version(t38_core, t38_version); + + logging = t38_terminal_get_logging_state(t38_state_a); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-A"); + + logging = t38_core_get_logging_state(t38_core); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-A"); + + logging = t30_get_logging_state(t30); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-A"); t30_set_supported_modems(t30, supported_modems); t30_set_tx_ident(t30, "11111111"); @@ -349,28 +367,34 @@ if (use_ecm) t30_set_supported_compressions(t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION); - if (t38_gateway_init(&t38_state_b, tx_packet_handler_b, &t38_state_a) == NULL) + if ((t38_state_b = t38_gateway_init(NULL, tx_packet_handler_b, &t38_state_a)) == NULL) { fprintf(stderr, "Cannot start the T.38 channel\n"); exit(2); } - t38_gateway_set_transmit_on_idle(&t38_state_b, use_transmit_on_idle); - t38_set_t38_version(&t38_state_b.t38x.t38, t38_version); - t38_gateway_set_ecm_capability(&t38_state_b, use_ecm); - span_log_set_level(&t38_state_b.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_b.logging, "T.38-B"); - span_log_set_level(&t38_state_b.t38x.t38.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t38_state_b.t38x.t38.logging, "T.38-B"); + t38_core = t38_gateway_get_t38_core_state(t38_state_b); + t38_gateway_set_transmit_on_idle(t38_state_b, use_transmit_on_idle); + t38_set_t38_version(t38_core, t38_version); + t38_gateway_set_ecm_capability(t38_state_b, use_ecm); + + logging = t38_gateway_get_logging_state(t38_state_b); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-B"); + + logging = t38_core_get_logging_state(t38_core); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "T.38-B"); + memset(t38_amp_b, 0, sizeof(t38_amp_b)); - if (fax_init(&fax_state_b, FALSE) == NULL) + if ((fax_state_b = fax_init(NULL, FALSE)) == NULL) { fprintf(stderr, "Cannot start FAX\n"); exit(2); } - t30 = fax_get_t30_state(&fax_state_b); - fax_set_transmit_on_idle(&fax_state_b, use_transmit_on_idle); - fax_set_tep_mode(&fax_state_b, use_tep); + t30 = fax_get_t30_state(fax_state_b); + fax_set_transmit_on_idle(fax_state_b, use_transmit_on_idle); + fax_set_tep_mode(fax_state_b, use_tep); t30_set_supported_modems(t30, supported_modems); t30_set_tx_ident(t30, "22222222"); t30_set_tx_nsf(t30, (const uint8_t *) "\x50\x00\x00\x00Spandsp\x00", 12); @@ -381,10 +405,15 @@ t30_set_ecm_capability(t30, use_ecm); if (use_ecm) t30_set_supported_compressions(t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION); - span_log_set_level(&fax_state_b.logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&fax_state_b.logging, "FAX-B "); - span_log_set_level(&t30->logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); - span_log_set_tag(&t30->logging, "FAX-B "); + + logging = fax_get_logging_state(fax_state_b); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "FAX-B "); + + logging = t30_get_logging_state(t30); + span_log_set_level(logging, SPAN_LOG_DEBUG | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME); + span_log_set_tag(logging, "FAX-B "); + memset(t30_amp_b, 0, sizeof(t30_amp_b)); #if defined(ENABLE_GUI) @@ -393,18 +422,29 @@ #endif for (;;) { - span_log_bump_samples(&t38_state_a.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_a.t38_fe.t38.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_a.t30.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_b.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&t38_state_b.t38x.t38.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&fax_state_b.logging, SAMPLES_PER_CHUNK); - span_log_bump_samples(&fax_state_b.t30.logging, SAMPLES_PER_CHUNK); + logging = t38_terminal_get_logging_state(t38_state_a); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t38_core = t38_terminal_get_t38_core_state(t38_state_a); + logging = t38_core_get_logging_state(t38_core); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t30 = t38_terminal_get_t30_state(t38_state_a); + logging = t30_get_logging_state(t30); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + logging = t38_gateway_get_logging_state(t38_state_b); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t38_core = t38_gateway_get_t38_core_state(t38_state_b); + logging = t38_core_get_logging_state(t38_core); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + logging = fax_get_logging_state(fax_state_b); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); + t30 = fax_get_t30_state(fax_state_b); + logging = t30_get_logging_state(t30); + span_log_bump_samples(logging, SAMPLES_PER_CHUNK); memset(out_amp, 0, sizeof(out_amp)); - t38_terminal_send_timeout(&t38_state_a, SAMPLES_PER_CHUNK); + t38_terminal_send_timeout(t38_state_a, SAMPLES_PER_CHUNK); - t30_len_b = fax_tx(&fax_state_b, t30_amp_b, SAMPLES_PER_CHUNK); + t30_len_b = fax_tx(fax_state_b, t30_amp_b, SAMPLES_PER_CHUNK); if (!use_transmit_on_idle) { /* The receive side always expects a full block of samples, but the @@ -426,10 +466,10 @@ for (i = 0; i < t30_len_b; i++) out_amp[2*i + 1] = t30_amp_b[i]; } - if (t38_gateway_rx(&t38_state_b, t30_amp_b, t30_len_b)) + if (t38_gateway_rx(t38_state_b, t30_amp_b, t30_len_b)) break; - t38_len_b = t38_gateway_tx(&t38_state_b, t38_amp_b, SAMPLES_PER_CHUNK); + t38_len_b = t38_gateway_tx(t38_state_b, t38_amp_b, SAMPLES_PER_CHUNK); if (!use_transmit_on_idle) { if (t38_len_b < SAMPLES_PER_CHUNK) @@ -443,10 +483,10 @@ for (i = 0; i < t38_len_b; i++) out_amp[2*i] = t38_amp_b[i]; } - if (fax_rx(&fax_state_b, t38_amp_b, SAMPLES_PER_CHUNK)) + if (fax_rx(fax_state_b, t38_amp_b, SAMPLES_PER_CHUNK)) break; - when += 0.02; + when += (float) SAMPLES_PER_CHUNK/(float) SAMPLE_RATE; while ((msg_len = g1050_get(path_a_to_b, msg, 1024, when, &seq_no, &tx_when, &rx_when)) >= 0) { @@ -454,7 +494,8 @@ if (use_gui) media_monitor_rx(seq_no, tx_when, rx_when); #endif - t38_core_rx_ifp_packet(&t38_state_b.t38x.t38, msg, msg_len, seq_no); + t38_core = t38_gateway_get_t38_core_state(t38_state_b); + t38_core_rx_ifp_packet(t38_core, msg, msg_len, seq_no); } while ((msg_len = g1050_get(path_b_to_a, msg, 1024, when, &seq_no, &tx_when, &rx_when)) >= 0) { @@ -462,7 +503,8 @@ if (use_gui) media_monitor_rx(seq_no, tx_when, rx_when); #endif - t38_core_rx_ifp_packet(&t38_state_a.t38_fe.t38, msg, msg_len, seq_no); + t38_core = t38_terminal_get_t38_core_state(t38_state_a); + t38_core_rx_ifp_packet(t38_core, msg, msg_len, seq_no); } if (log_audio) { @@ -478,8 +520,8 @@ media_monitor_update_display(); #endif } - t38_terminal_release(&t38_state_a); - fax_release(&fax_state_b); + t38_terminal_release(t38_state_a); + fax_release(fax_state_b); if (log_audio) { if (afCloseFile(wave_handle) != 0) Modified: freeswitch/trunk/libs/spandsp/tests/t4_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/t4_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/t4_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t4_tests.c,v 1.60 2008/09/07 12:45:17 steveu Exp $ + * $Id: t4_tests.c,v 1.65 2009/01/05 13:48:32 steveu Exp $ */ /*! \file */ @@ -43,6 +43,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #define IN_FILE_NAME "../test-data/itu/fax/itutests.tif" @@ -215,6 +219,8 @@ int bit_error_rate; int dump_as_xxx; int tests_failed; + unsigned int last_pkt_no; + unsigned int pkt_no; tests_failed = 0; decode_test = FALSE; @@ -295,9 +301,10 @@ page_no = 1; t4_rx_start_page(&receive_state); + last_pkt_no = 0; while (fgets(buf, 1024, stdin)) { - if (sscanf(buf, "HDLC: FCD: 06 %x", (unsigned int *) &bit) == 1) + if (sscanf(buf, "HDLC: FCD: 06 %x", &pkt_no) == 1) { /* Useful for breaking up T.38 ECM logs */ for (i = 0; i < 256; i++) @@ -308,12 +315,26 @@ break; } } - else if (strlen(buf) > 62 && sscanf(buf + 62, "Rx %*d: IFP %*x %*x") == 3) + else if (sscanf(buf, "HDLC: %x", &pkt_no) == 1) + { + /* Useful for breaking up HDLC decodes of ECM logs */ + for (i = 0; i < 256; i++) + { + if (sscanf(&buf[19 + 3*i], "%x", (unsigned int *) &bit) != 1) + break; + if ((end_of_page = t4_rx_put_byte(&receive_state, bit))) + break; + } + } + else if (strlen(buf) > 62 && sscanf(buf + 57, "Rx %d: IFP %x %x", &pkt_no, (unsigned int *) &bit, (unsigned int *) &bit) == 3) { /* Useful for breaking up T.38 non-ECM logs */ + if (pkt_no != last_pkt_no + 1) + printf("Packet %u\n", pkt_no); + last_pkt_no = pkt_no; for (i = 0; i < 256; i++) { - if (sscanf(&buf[62 + 29 + 3*i], "%x", (unsigned int *) &bit) != 1) + if (sscanf(&buf[57 + 29 + 3*i], "%x", (unsigned int *) &bit) != 1) break; bit = bit_reverse8(bit); if ((end_of_page = t4_rx_put_byte(&receive_state, bit))) Modified: freeswitch/trunk/libs/spandsp/tests/time_scale_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/time_scale_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/time_scale_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: time_scale_tests.c,v 1.22 2008/07/28 15:14:30 steveu Exp $ + * $Id: time_scale_tests.c,v 1.23 2008/11/15 14:27:29 steveu Exp $ */ /*! \page time_scale_tests_page Time scaling tests @@ -48,6 +48,8 @@ #include "spandsp.h" +#include "spandsp/private/time_scale.h" + #define BLOCK_LEN 160 #define IN_FILE_NAME "../test-data/local/short_nb_voice.wav" Modified: freeswitch/trunk/libs/spandsp/tests/tone_detect_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/tone_detect_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/tone_detect_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: tone_detect_tests.c,v 1.10 2008/05/13 13:17:26 steveu Exp $ + * $Id: tone_detect_tests.c,v 1.11 2008/11/30 12:38:27 steveu Exp $ */ /*! \page tone_detect_tests_page Tone detection tests @@ -40,6 +40,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #define DEC_SAMPLE_RATE 800 Modified: freeswitch/trunk/libs/spandsp/tests/tone_generate_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/tone_generate_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/tone_generate_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: tone_generate_tests.c,v 1.20 2008/09/11 15:13:42 steveu Exp $ + * $Id: tone_generate_tests.c,v 1.21 2008/11/30 10:17:31 steveu Exp $ */ /*! \page tone_generate_tests_page Tone generation tests @@ -40,6 +40,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" Modified: freeswitch/trunk/libs/spandsp/tests/tsb85_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/tsb85_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/tsb85_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: tsb85_tests.c,v 1.24 2008/09/12 14:41:55 steveu Exp $ + * $Id: tsb85_tests.c,v 1.28 2009/01/28 03:41:27 steveu Exp $ */ /*! \file */ @@ -36,13 +36,13 @@ #include #include #include -#include "floating_fudge.h" #if defined(HAVE_TGMATH_H) #include #endif #if defined(HAVE_MATH_H) #include #endif +#include "floating_fudge.h" #include #include #include @@ -59,8 +59,13 @@ #include #endif +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" + #include "fax_tester.h" #define OUTPUT_TIFF_FILE_NAME "tsb85.tif" @@ -76,7 +81,7 @@ const char *output_tiff_file_name; -fax_state_t fax; +fax_state_t *fax; faxtester_state_t state; uint8_t image[1000000]; @@ -391,10 +396,11 @@ static void fax_prepare(void) { t30_state_t *t30; + logging_state_t *logging; - t30 = fax_get_t30_state(&fax); - fax_set_transmit_on_idle(&fax, TRUE); - fax_set_tep_mode(&fax, TRUE); + t30 = fax_get_t30_state(fax); + fax_set_transmit_on_idle(fax, TRUE); + fax_set_tep_mode(fax, TRUE); #if 0 t30_set_tx_ident(t30, "1234567890"); t30_set_tx_sub_address(t30, "Sub-address"); @@ -439,16 +445,22 @@ t30_set_real_time_frame_handler(t30, t30_real_time_frame_handler, (void *) (intptr_t) 1); t30_set_document_handler(t30, document_handler, (void *) (intptr_t) 1); - span_log_set_level(&t30->logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW); - span_log_set_tag(&t30->logging, "A"); + logging = fax_get_logging_state(fax); + span_log_set_level(logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW); + span_log_set_tag(logging, "A"); + + logging = t30_get_logging_state(t30); + span_log_set_level(logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW); + span_log_set_tag(logging, "A"); + +#if 0 span_log_set_level(&fax.modems.v27ter_rx.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW); span_log_set_tag(&fax.modems.v27ter_rx.logging, "A"); span_log_set_level(&fax.modems.v29_rx.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW); span_log_set_tag(&fax.modems.v29_rx.logging, "A"); span_log_set_level(&fax.modems.v17_rx.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW); span_log_set_tag(&fax.modems.v17_rx.logging, "A"); - span_log_set_level(&fax.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW); - span_log_set_tag(&fax.logging, "A"); +#endif } /*- End of function --------------------------------------------------------*/ @@ -862,7 +874,7 @@ if (strcasecmp((const char *) type, "SET") == 0) { - t30 = fax_get_t30_state(&fax); + t30 = fax_get_t30_state(fax); if (strcasecmp((const char *) tag, "IDENT") == 0) t30_set_tx_ident(t30, (const char *) value); else if (strcasecmp((const char *) tag, "SUB") == 0) @@ -891,10 +903,10 @@ } else if (strcasecmp((const char *) type, "CALL") == 0) { - fax_init(&fax, FALSE); + fax = fax_init(NULL, FALSE); fax_prepare(); next_tx_file[0] = '\0'; - t30 = fax_get_t30_state(&fax); + t30 = fax_get_t30_state(fax); t30_set_rx_file(t30, output_tiff_file_name, -1); /* Avoid libtiff 3.8.2 and earlier bug on complex 2D lines. */ t30_set_rx_encoding(t30, T4_COMPRESSION_ITU_T4_1D); @@ -907,10 +919,10 @@ } else if (strcasecmp((const char *) type, "ANSWER") == 0) { - fax_init(&fax, TRUE); + fax = fax_init(NULL, TRUE); fax_prepare(); next_tx_file[0] = '\0'; - t30 = fax_get_t30_state(&fax); + t30 = fax_get_t30_state(fax); /* Avoid libtiff 3.8.2 and earlier bug on complex 2D lines. */ t30_set_rx_encoding(t30, T4_COMPRESSION_ITU_T4_1D); if (value) @@ -1071,6 +1083,7 @@ int i; int total_audio_time; int log_audio; + logging_state_t *logging; log_audio = TRUE; output_tiff_file_name = OUTPUT_TIFF_FILE_NAME; @@ -1093,7 +1106,7 @@ faxtester_set_front_end_step_complete_handler(&state, faxtester_front_end_step_complete_handler, NULL); faxtester_set_front_end_step_timeout_handler(&state, faxtester_front_end_step_timeout_handler, NULL); - fax_init(&fax, FALSE); + fax = fax_init(NULL, FALSE); fax_prepare(); next_tx_file[0] = '\0'; @@ -1102,7 +1115,7 @@ /*endwhile*/ for (;;) { - len = fax_tx(&fax, amp, SAMPLES_PER_CHUNK); + len = fax_tx(fax, amp, SAMPLES_PER_CHUNK); faxtester_rx(s, amp, len); if (log_audio) { @@ -1113,15 +1126,21 @@ /*endif*/ total_audio_time += SAMPLES_PER_CHUNK; - span_log_bump_samples(&fax.t30.logging, len); + + logging = t30_get_logging_state(fax_get_t30_state(fax)); + span_log_bump_samples(logging, len); +#if 0 span_log_bump_samples(&fax.modems.v27ter_rx.logging, len); span_log_bump_samples(&fax.modems.v29_rx.logging, len); span_log_bump_samples(&fax.modems.v17_rx.logging, len); - span_log_bump_samples(&fax.logging, len); +#endif + logging = fax_get_logging_state(fax); + span_log_bump_samples(logging, len); + span_log_bump_samples(&s->logging, len); len = faxtester_tx(s, amp, 160); - if (fax_rx(&fax, amp, len)) + if (fax_rx(fax, amp, len)) break; /*endif*/ if (log_audio) Modified: freeswitch/trunk/libs/spandsp/tests/v17_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/v17_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/v17_tests.c Tue Jan 27 22:48:03 2009 @@ -23,7 +23,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v17_tests.c,v 1.90 2008/09/07 12:45:17 steveu Exp $ + * $Id: v17_tests.c,v 1.98 2009/01/12 17:20:59 steveu Exp $ */ /*! \page v17_tests_page V.17 modem tests @@ -46,6 +46,9 @@ \section v17_tests_page_sec_2 How is it used? */ +/* Enable the following definition to enable direct probing into the FAX structures */ +#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include "config.h" #endif @@ -61,6 +64,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -96,39 +103,12 @@ { switch (reason) { - case BERT_REPORT_SYNCED: - printf("BERT report synced\n"); - break; - case BERT_REPORT_UNSYNCED: - printf("BERT report unsync'ed\n"); - break; case BERT_REPORT_REGULAR: printf("BERT report regular - %d bits, %d bad bits, %d resyncs\n", results->total_bits, results->bad_bits, results->resyncs); memcpy(&latest_results, results, sizeof(latest_results)); break; - case BERT_REPORT_GT_10_2: - printf("BERT report > 1 in 10^2\n"); - break; - case BERT_REPORT_LT_10_2: - printf("BERT report < 1 in 10^2\n"); - break; - case BERT_REPORT_LT_10_3: - printf("BERT report < 1 in 10^3\n"); - break; - case BERT_REPORT_LT_10_4: - printf("BERT report < 1 in 10^4\n"); - break; - case BERT_REPORT_LT_10_5: - printf("BERT report < 1 in 10^5\n"); - break; - case BERT_REPORT_LT_10_6: - printf("BERT report < 1 in 10^6\n"); - break; - case BERT_REPORT_LT_10_7: - printf("BERT report < 1 in 10^7\n"); - break; default: - printf("BERT report reason %d\n", reason); + printf("BERT report %s\n", bert_event_to_str(reason)); break; } } @@ -243,8 +223,8 @@ int main(int argc, char *argv[]) { - v17_rx_state_t rx; - v17_tx_state_t tx; + v17_rx_state_t *rx; + v17_tx_state_t *tx; bert_results_t bert_results; int16_t gen_amp[BLOCK_LEN]; int16_t amp[BLOCK_LEN]; @@ -262,6 +242,7 @@ int channel_codec; int rbs_pattern; int opt; + logging_state_t *logging; channel_codec = MUNGE_CODEC_NONE; rbs_pattern = 0; @@ -274,11 +255,19 @@ signal_level = -13; bits_per_test = 50000; log_audio = FALSE; - while ((opt = getopt(argc, argv, "b:c:d:glm:n:r:s:t")) != -1) + while ((opt = getopt(argc, argv, "b:B:c:d:glm:n:r:s:t")) != -1) { switch (opt) { case 'b': + test_bps = atoi(optarg); + if (test_bps != 14400 && test_bps != 12000 && test_bps != 9600 && test_bps != 7200) + { + fprintf(stderr, "Invalid bit rate specified\n"); + exit(2); + } + break; + case 'B': bits_per_test = atoi(optarg); break; case 'c': @@ -319,24 +308,6 @@ break; } } - argc -= optind; - argv += optind; - if (argc > 0) - { - if (strcmp(argv[0], "14400") == 0) - test_bps = 14400; - else if (strcmp(argv[0], "12000") == 0) - test_bps = 12000; - else if (strcmp(argv[0], "9600") == 0) - test_bps = 9600; - else if (strcmp(argv[0], "7200") == 0) - test_bps = 7200; - else - { - fprintf(stderr, "Invalid bit rate\n"); - exit(2); - } - } inhandle = NULL; outhandle = NULL; @@ -352,6 +323,7 @@ if (decode_test_file) { /* We will decode the audio from a wave file. */ + tx = NULL; if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE) { fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file); @@ -361,12 +333,17 @@ else { /* We will generate V.17 audio, and add some noise to it. */ - v17_tx_init(&tx, test_bps, tep, v17getbit, NULL); - v17_tx_power(&tx, signal_level); - v17_tx_set_modem_status_handler(&tx, v17_tx_status, (void *) &tx); + tx = v17_tx_init(NULL, test_bps, tep, v17getbit, NULL); + logging = v17_tx_get_logging_state(tx); + span_log_set_level(logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); + span_log_set_tag(logging, "V.17 tx"); + v17_tx_power(tx, signal_level); + v17_tx_set_modem_status_handler(tx, v17_tx_status, (void *) tx); +#if defined(WITH_SPANDSP_INTERNALS) /* Move the carrier off a bit */ - tx.carrier_phase_rate = dds_phase_ratef(1792.0f); - tx.carrier_phase = 0x40000000; + tx->carrier_phase_rate = dds_phase_ratef(1792.0f); + tx->carrier_phase = 0x40000000; +#endif bert_init(&bert, bits_per_test, BERT_PATTERN_ITU_O152_11, test_bps, 20); bert_set_report(&bert, 10000, reporter, NULL); @@ -382,11 +359,12 @@ #endif } - v17_rx_init(&rx, test_bps, v17putbit, &rx); - v17_rx_set_modem_status_handler(&rx, v17_rx_status, (void *) &rx); - v17_rx_set_qam_report_handler(&rx, qam_report, (void *) &rx); - span_log_set_level(&rx.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); - span_log_set_tag(&rx.logging, "V.17 rx"); + rx = v17_rx_init(NULL, test_bps, v17putbit, NULL); + v17_rx_set_modem_status_handler(rx, v17_rx_status, (void *) rx); + v17_rx_set_qam_report_handler(rx, qam_report, (void *) rx); + logging = v17_rx_get_logging_state(rx); + span_log_set_level(logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); + span_log_set_tag(logging, "V.17 rx"); #if defined(ENABLE_GUI) if (use_gui) @@ -418,7 +396,7 @@ } else { - samples = v17_tx(&tx, gen_amp, BLOCK_LEN); + samples = v17_tx(tx, gen_amp, BLOCK_LEN); #if defined(ENABLE_GUI) if (use_gui) qam_monitor_update_audio_level(qam_monitor, gen_amp, samples); @@ -429,7 +407,7 @@ /* Push a little silence through, to ensure all the data bits get out of the buffers */ memset(amp, 0, BLOCK_LEN*sizeof(int16_t)); - v17_rx(&rx, amp, BLOCK_LEN); + v17_rx(rx, amp, BLOCK_LEN); /* Note that we might get a few bad bits as the carrier shuts down. */ bert_result(&bert, &bert_results); @@ -449,12 +427,14 @@ break; } memset(&latest_results, 0, sizeof(latest_results)); +#if defined(WITH_SPANDSP_INTERNALS) signal_level--; /* Bump the receiver AGC gain by 1dB, to compensate for the above */ - rx.agc_scaling_save *= 1.122f; - v17_tx_restart(&tx, test_bps, tep, TRUE); - v17_tx_power(&tx, signal_level); - v17_rx_restart(&rx, test_bps, TRUE); + rx->agc_scaling_save *= 1.122f; +#endif + v17_tx_restart(tx, test_bps, tep, TRUE); + v17_tx_power(tx, signal_level); + v17_rx_restart(rx, test_bps, TRUE); //rx.eq_put_step = rand()%(192*10/3); bert_init(&bert, bits_per_test, BERT_PATTERN_ITU_O152_11, test_bps, 20); bert_set_report(&bert, 10000, reporter, NULL); @@ -469,7 +449,7 @@ { outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, - amp, + gen_amp, samples); if (outframes != samples) { @@ -483,7 +463,7 @@ if (use_gui && !decode_test_file) line_model_monitor_line_spectrum_update(amp, samples); #endif - v17_rx(&rx, amp, samples); + v17_rx(rx, amp, samples); } if (!decode_test_file) { Modified: freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v22bis_tests.c,v 1.52 2008/09/07 12:45:17 steveu Exp $ + * $Id: v22bis_tests.c,v 1.54 2009/01/12 17:20:59 steveu Exp $ */ /*! \page v22bis_tests_page V.22bis modem tests @@ -52,6 +52,7 @@ #include #include +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES #include "spandsp.h" #include "spandsp-sim.h" @@ -232,11 +233,19 @@ signal_level = -13; bits_per_test = 50000; log_audio = FALSE; - while ((opt = getopt(argc, argv, "b:c:glm:n:s:")) != -1) + while ((opt = getopt(argc, argv, "b:B:c:glm:n:s:")) != -1) { switch (opt) { case 'b': + test_bps = atoi(optarg); + if (test_bps != 2400 && test_bps != 1200) + { + fprintf(stderr, "Invalid bit rate specified\n"); + exit(2); + } + break; + case 'B': bits_per_test = atoi(optarg); break; case 'c': @@ -268,20 +277,6 @@ break; } } - argc -= optind; - argv += optind; - if (argc > 0) - { - if (strcmp(argv[0], "2400") == 0) - test_bps = 2400; - else if (strcmp(argv[0], "1200") == 0) - test_bps = 1200; - else - { - fprintf(stderr, "Invalid bit rate\n"); - exit(2); - } - } outhandle = AF_NULL_FILEHANDLE; if (log_audio) { Modified: freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v27ter_tests.c,v 1.93 2008/09/07 06:39:52 steveu Exp $ + * $Id: v27ter_tests.c,v 1.99 2009/01/12 17:20:59 steveu Exp $ */ /*! \page v27ter_tests_page V.27ter modem tests @@ -45,6 +45,9 @@ \section v27ter_tests_page_sec_2 How is it used? */ +/* Enable the following definition to enable direct probing into the FAX structures */ +#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include "config.h" #endif @@ -60,6 +63,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -92,39 +99,12 @@ { switch (reason) { - case BERT_REPORT_SYNCED: - printf("BERT report synced\n"); - break; - case BERT_REPORT_UNSYNCED: - printf("BERT report unsync'ed\n"); - break; case BERT_REPORT_REGULAR: printf("BERT report regular - %d bits, %d bad bits, %d resyncs\n", results->total_bits, results->bad_bits, results->resyncs); memcpy(&latest_results, results, sizeof(latest_results)); break; - case BERT_REPORT_GT_10_2: - printf("BERT report > 1 in 10^2\n"); - break; - case BERT_REPORT_LT_10_2: - printf("BERT report < 1 in 10^2\n"); - break; - case BERT_REPORT_LT_10_3: - printf("BERT report < 1 in 10^3\n"); - break; - case BERT_REPORT_LT_10_4: - printf("BERT report < 1 in 10^4\n"); - break; - case BERT_REPORT_LT_10_5: - printf("BERT report < 1 in 10^5\n"); - break; - case BERT_REPORT_LT_10_6: - printf("BERT report < 1 in 10^6\n"); - break; - case BERT_REPORT_LT_10_7: - printf("BERT report < 1 in 10^7\n"); - break; default: - printf("BERT report reason %d\n", reason); + printf("BERT report %s\n", bert_event_to_str(reason)); break; } } @@ -209,7 +189,9 @@ printf("Equalizer B:\n"); for (i = 0; i < len; i++) printf("%3d (%15.5f, %15.5f) -> %15.5f\n", i, coeffs[i].re, coeffs[i].im, powerf(&coeffs[i])); +#if defined(WITH_SPANDSP_INTERNALS) printf("Gardtest %d %f %d\n", symbol_no, v27ter_rx_symbol_timing_correction(rx), rx->gardner_integrate); +#endif printf("Carcar %d %f\n", symbol_no, v27ter_rx_carrier_frequency(rx)); #if defined(ENABLE_GUI) if (use_gui) @@ -240,8 +222,8 @@ int main(int argc, char *argv[]) { - v27ter_rx_state_t rx; - v27ter_tx_state_t tx; + v27ter_rx_state_t *rx; + v27ter_tx_state_t *tx; bert_results_t bert_results; int16_t gen_amp[BLOCK_LEN]; int16_t amp[BLOCK_LEN]; @@ -260,6 +242,7 @@ int channel_codec; int rbs_pattern; int opt; + logging_state_t *logging; channel_codec = MUNGE_CODEC_NONE; rbs_pattern = 0; @@ -272,11 +255,19 @@ signal_level = -13; bits_per_test = 50000; log_audio = FALSE; - while ((opt = getopt(argc, argv, "b:c:d:glm:n:r:s:t")) != -1) + while ((opt = getopt(argc, argv, "b:B:c:d:glm:n:r:s:t")) != -1) { switch (opt) { case 'b': + test_bps = atoi(optarg); + if (test_bps != 4800 && test_bps != 2400) + { + fprintf(stderr, "Invalid bit rate specified\n"); + exit(2); + } + break; + case 'B': bits_per_test = atoi(optarg); break; case 'c': @@ -317,21 +308,6 @@ break; } } - argc -= optind; - argv += optind; - if (argc > 0) - { - if (strcmp(argv[0], "4800") == 0) - test_bps = 4800; - else if (strcmp(argv[0], "2400") == 0) - test_bps = 2400; - else - { - fprintf(stderr, "Invalid bit rate\n"); - exit(2); - } - } - inhandle = NULL; outhandle = NULL; @@ -347,6 +323,7 @@ if (decode_test_file) { /* We will decode the audio from a wave file. */ + tx = NULL; if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE) { fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file); @@ -356,12 +333,13 @@ else { /* We will generate V.27ter audio, and add some noise to it. */ - v27ter_tx_init(&tx, test_bps, tep, v27tergetbit, NULL); - v27ter_tx_power(&tx, signal_level); - v27ter_tx_set_modem_status_handler(&tx, v27ter_tx_status, (void *) &tx); + tx = v27ter_tx_init(NULL, test_bps, tep, v27tergetbit, NULL); + v27ter_tx_power(tx, signal_level); + v27ter_tx_set_modem_status_handler(tx, v27ter_tx_status, (void *) tx); /* Move the carrier off a bit */ - tx.carrier_phase_rate = dds_phase_ratef(1810.0f); - +#if defined(WITH_SPANDSP_INTERNALS) + tx->carrier_phase_rate = dds_phase_ratef(1810.0f); +#endif bert_init(&bert, bits_per_test, BERT_PATTERN_ITU_O152_11, test_bps, 20); bert_set_report(&bert, 10000, reporter, NULL); @@ -372,11 +350,12 @@ } } - v27ter_rx_init(&rx, test_bps, v27terputbit, NULL); - v27ter_rx_set_modem_status_handler(&rx, v27ter_rx_status, (void *) &rx); - v27ter_rx_set_qam_report_handler(&rx, qam_report, (void *) &rx); - span_log_set_level(&rx.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); - span_log_set_tag(&rx.logging, "V.27ter-rx"); + rx = v27ter_rx_init(NULL, test_bps, v27terputbit, NULL); + v27ter_rx_set_modem_status_handler(rx, v27ter_rx_status, (void *) rx); + v27ter_rx_set_qam_report_handler(rx, qam_report, (void *) rx); + logging = v27ter_rx_get_logging_state(rx); + span_log_set_level(logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); + span_log_set_tag(logging, "V.27ter-rx"); #if defined(ENABLE_GUI) if (use_gui) @@ -408,7 +387,7 @@ } else { - samples = v27ter_tx(&tx, gen_amp, BLOCK_LEN); + samples = v27ter_tx(tx, gen_amp, BLOCK_LEN); #if defined(ENABLE_GUI) if (use_gui) qam_monitor_update_audio_level(qam_monitor, gen_amp, samples); @@ -419,9 +398,9 @@ /* Push a little silence through, to ensure all the data bits get out of the buffers */ memset(amp, 0, BLOCK_LEN*sizeof(int16_t)); - v27ter_rx(&rx, amp, BLOCK_LEN); - v27ter_rx(&rx, amp, BLOCK_LEN); - v27ter_rx(&rx, amp, BLOCK_LEN); + v27ter_rx(rx, amp, BLOCK_LEN); + v27ter_rx(rx, amp, BLOCK_LEN); + v27ter_rx(rx, amp, BLOCK_LEN); /* Note that we might get a few bad bits as the carrier shuts down. */ bert_result(&bert, &bert_results); @@ -442,9 +421,9 @@ } memset(&latest_results, 0, sizeof(latest_results)); signal_level--; - v27ter_tx_restart(&tx, test_bps, tep); - v27ter_tx_power(&tx, signal_level); - v27ter_rx_restart(&rx, test_bps, FALSE); + v27ter_tx_restart(tx, test_bps, tep); + v27ter_tx_power(tx, signal_level); + v27ter_rx_restart(rx, test_bps, FALSE); bert_init(&bert, bits_per_test, BERT_PATTERN_ITU_O152_11, test_bps, 20); bert_set_report(&bert, 10000, reporter, NULL); one_way_line_model_release(line_model); @@ -473,7 +452,7 @@ if (use_gui && !decode_test_file) line_model_monitor_line_spectrum_update(amp, samples); #endif - v27ter_rx(&rx, amp, samples); + v27ter_rx(rx, amp, samples); } if (!decode_test_file) { Modified: freeswitch/trunk/libs/spandsp/tests/v29_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/v29_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/v29_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v29_tests.c,v 1.106 2008/09/07 12:45:17 steveu Exp $ + * $Id: v29_tests.c,v 1.113 2009/01/12 17:20:59 steveu Exp $ */ /*! \page v29_tests_page V.29 modem tests @@ -45,6 +45,9 @@ \section v29_tests_page_sec_2 How is it used? */ +/* Enable the following definition to enable direct probing into the FAX structures */ +#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include "config.h" #endif @@ -60,6 +63,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -91,39 +98,12 @@ { switch (reason) { - case BERT_REPORT_SYNCED: - printf("BERT report synced\n"); - break; - case BERT_REPORT_UNSYNCED: - printf("BERT report unsync'ed\n"); - break; case BERT_REPORT_REGULAR: printf("BERT report regular - %d bits, %d bad bits, %d resyncs\n", results->total_bits, results->bad_bits, results->resyncs); memcpy(&latest_results, results, sizeof(latest_results)); break; - case BERT_REPORT_GT_10_2: - printf("BERT report > 1 in 10^2\n"); - break; - case BERT_REPORT_LT_10_2: - printf("BERT report < 1 in 10^2\n"); - break; - case BERT_REPORT_LT_10_3: - printf("BERT report < 1 in 10^3\n"); - break; - case BERT_REPORT_LT_10_4: - printf("BERT report < 1 in 10^4\n"); - break; - case BERT_REPORT_LT_10_5: - printf("BERT report < 1 in 10^5\n"); - break; - case BERT_REPORT_LT_10_6: - printf("BERT report < 1 in 10^6\n"); - break; - case BERT_REPORT_LT_10_7: - printf("BERT report < 1 in 10^7\n"); - break; default: - printf("BERT report reason %d\n", reason); + printf("BERT report %s\n", bert_event_to_str(reason)); break; } } @@ -265,8 +245,8 @@ int main(int argc, char *argv[]) { - v29_rx_state_t rx; - v29_tx_state_t tx; + v29_rx_state_t *rx; + v29_tx_state_t *tx; bert_results_t bert_results; int16_t gen_amp[BLOCK_LEN]; int16_t amp[BLOCK_LEN]; @@ -285,6 +265,7 @@ int channel_codec; int rbs_pattern; int opt; + logging_state_t *logging; channel_codec = MUNGE_CODEC_NONE; rbs_pattern = 0; @@ -297,11 +278,19 @@ signal_level = -13; bits_per_test = 50000; log_audio = FALSE; - while ((opt = getopt(argc, argv, "b:c:d:glm:n:r:s:t")) != -1) + while ((opt = getopt(argc, argv, "b:B:c:d:glm:n:r:s:t")) != -1) { switch (opt) { case 'b': + test_bps = atoi(optarg); + if (test_bps != 9600 && test_bps != 7200 && test_bps != 4800) + { + fprintf(stderr, "Invalid bit rate specified\n"); + exit(2); + } + break; + case 'B': bits_per_test = atoi(optarg); break; case 'c': @@ -342,22 +331,6 @@ break; } } - argc -= optind; - argv += optind; - if (argc > 0) - { - if (strcmp(argv[0], "9600") == 0) - test_bps = 9600; - else if (strcmp(argv[0], "7200") == 0) - test_bps = 7200; - else if (strcmp(argv[0], "4800") == 0) - test_bps = 4800; - else - { - fprintf(stderr, "Invalid bit rate\n"); - exit(2); - } - } inhandle = NULL; outhandle = NULL; @@ -373,6 +346,7 @@ if (decode_test_file) { /* We will decode the audio from a wave file. */ + tx = NULL; if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE) { fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file); @@ -382,12 +356,14 @@ else { /* We will generate V.29 audio, and add some noise to it. */ - v29_tx_init(&tx, test_bps, tep, v29getbit, NULL); - v29_tx_power(&tx, signal_level); - v29_tx_set_modem_status_handler(&tx, v29_tx_status, (void *) &tx); + tx = v29_tx_init(NULL, test_bps, tep, v29getbit, NULL); + v29_tx_power(tx, signal_level); + v29_tx_set_modem_status_handler(tx, v29_tx_status, (void *) tx); +#if defined(WITH_SPANDSP_INTERNALS) /* Move the carrier off a bit */ - tx.carrier_phase_rate = dds_phase_ratef(1710.0f); - tx.carrier_phase = 0; + tx->carrier_phase_rate = dds_phase_ratef(1710.0f); + tx->carrier_phase = 0; +#endif bert_init(&bert, bits_per_test, BERT_PATTERN_ITU_O152_11, test_bps, 20); bert_set_report(&bert, 10000, reporter, NULL); @@ -399,14 +375,17 @@ } } - v29_rx_init(&rx, test_bps, v29putbit, &rx); - v29_rx_signal_cutoff(&rx, -45.5f); - v29_rx_set_modem_status_handler(&rx, v29_rx_status, (void *) &rx); - v29_rx_set_qam_report_handler(&rx, qam_report, (void *) &rx); + rx = v29_rx_init(NULL, test_bps, v29putbit, NULL); + v29_rx_signal_cutoff(rx, -45.5f); + v29_rx_set_modem_status_handler(rx, v29_rx_status, (void *) rx); + v29_rx_set_qam_report_handler(rx, qam_report, (void *) rx); +#if defined(WITH_SPANDSP_INTERNALS) /* Rotate the starting phase */ - rx.carrier_phase = 0x80000000; - span_log_set_level(&rx.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); - span_log_set_tag(&rx.logging, "V.29-rx"); + rx->carrier_phase = 0x80000000; +#endif + logging = v29_rx_get_logging_state(rx); + span_log_set_level(logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); + span_log_set_tag(logging, "V.29-rx"); #if defined(ENABLE_GUI) if (use_gui) @@ -438,7 +417,7 @@ } else { - samples = v29_tx(&tx, gen_amp, BLOCK_LEN); + samples = v29_tx(tx, gen_amp, BLOCK_LEN); #if defined(ENABLE_GUI) if (use_gui) qam_monitor_update_audio_level(qam_monitor, gen_amp, samples); @@ -447,7 +426,7 @@ { /* Push a little silence through, to ensure all the data bits get out of the buffers */ memset(amp, 0, BLOCK_LEN*sizeof(int16_t)); - v29_rx(&rx, amp, BLOCK_LEN); + v29_rx(rx, amp, BLOCK_LEN); /* Note that we might get a few bad bits as the carrier shuts down. */ bert_result(&bert, &bert_results); @@ -468,10 +447,12 @@ } memset(&latest_results, 0, sizeof(latest_results)); signal_level--; - v29_tx_restart(&tx, test_bps, tep); - v29_tx_power(&tx, signal_level); - v29_rx_restart(&rx, test_bps, FALSE); - rx.eq_put_step = rand()%(48*10/3); + v29_tx_restart(tx, test_bps, tep); + v29_tx_power(tx, signal_level); + v29_rx_restart(rx, test_bps, FALSE); +#if defined(WITH_SPANDSP_INTERNALS) + rx->eq_put_step = rand()%(48*10/3); +#endif bert_init(&bert, bits_per_test, BERT_PATTERN_ITU_O152_11, test_bps, 20); bert_set_report(&bert, 10000, reporter, NULL); one_way_line_model_release(line_model); @@ -499,7 +480,7 @@ if (use_gui && !decode_test_file) line_model_monitor_line_spectrum_update(amp, samples); #endif - v29_rx(&rx, amp, samples); + v29_rx(rx, amp, samples); } if (!decode_test_file) { Modified: freeswitch/trunk/libs/spandsp/tests/v42_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/v42_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/v42_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v42_tests.c,v 1.25 2008/05/13 13:17:26 steveu Exp $ + * $Id: v42_tests.c,v 1.28 2008/11/30 10:17:31 steveu Exp $ */ /* THIS IS A WORK IN PROGRESS. IT IS NOT FINISHED. */ @@ -42,6 +42,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" v42_state_t caller; Modified: freeswitch/trunk/libs/spandsp/tests/v42bis_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/v42bis_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/v42bis_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v42bis_tests.c,v 1.23 2008/05/13 13:17:27 steveu Exp $ + * $Id: v42bis_tests.c,v 1.24 2008/11/15 14:43:08 steveu Exp $ */ /* THIS IS A WORK IN PROGRESS. IT IS NOT FINISHED. */ @@ -50,6 +50,8 @@ #include "spandsp.h" +#include "spandsp/private/v42bis.h" + #define COMPRESSED_FILE_NAME "v42bis_tests.v42bis" #define OUTPUT_FILE_NAME "v42bis_tests.out" Modified: freeswitch/trunk/libs/spandsp/tests/v8_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/v8_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/v8_tests.c Tue Jan 27 22:48:03 2009 @@ -22,13 +22,16 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v8_tests.c,v 1.28 2008/08/29 09:28:13 steveu Exp $ + * $Id: v8_tests.c,v 1.31 2008/11/30 10:17:31 steveu Exp $ */ /*! \page v8_tests_page V.8 tests \section v8_tests_page_sec_1 What does it do? */ +/* Enable the following definition to enable direct probing into the FAX structures */ +//#define WITH_SPANDSP_INTERNALS + #if defined(HAVE_CONFIG_H) #include "config.h" #endif @@ -40,6 +43,10 @@ #include #include +//#if defined(WITH_SPANDSP_INTERNALS) +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +//#endif + #include "spandsp.h" #include "spandsp-sim.h" @@ -84,8 +91,8 @@ int i; int16_t amp[SAMPLES_PER_CHUNK]; int16_t out_amp[2*SAMPLES_PER_CHUNK]; - v8_state_t v8_caller; - v8_state_t v8_answerer; + v8_state_t *v8_caller; + v8_state_t *v8_answerer; int outframes; int samples; int remnant; @@ -95,7 +102,8 @@ AFfilehandle outhandle; int opt; char *decode_test_file; - + logging_state_t *logging; + decode_test_file = NULL; while ((opt = getopt(argc, argv, "d:")) != -1) { @@ -148,31 +156,33 @@ exit(2); } - v8_init(&v8_caller, TRUE, caller_available_modulations, handler, (void *) "caller"); - v8_init(&v8_answerer, FALSE, answerer_available_modulations, handler, (void *) "answerer"); - span_log_set_level(&v8_caller.logging, SPAN_LOG_FLOW | SPAN_LOG_SHOW_TAG); - span_log_set_tag(&v8_caller.logging, "caller"); - span_log_set_level(&v8_answerer.logging, SPAN_LOG_FLOW | SPAN_LOG_SHOW_TAG); - span_log_set_tag(&v8_answerer.logging, "answerer"); + v8_caller = v8_init(NULL, TRUE, caller_available_modulations, handler, (void *) "caller"); + v8_answerer = v8_init(NULL, FALSE, answerer_available_modulations, handler, (void *) "answerer"); + logging = v8_get_logging_state(v8_caller); + span_log_set_level(logging, SPAN_LOG_FLOW | SPAN_LOG_SHOW_TAG); + span_log_set_tag(logging, "caller"); + logging = v8_get_logging_state(v8_answerer); + span_log_set_level(logging, SPAN_LOG_FLOW | SPAN_LOG_SHOW_TAG); + span_log_set_tag(logging, "answerer"); for (i = 0; i < 1000; i++) { - samples = v8_tx(&v8_caller, amp, SAMPLES_PER_CHUNK); + samples = v8_tx(v8_caller, amp, SAMPLES_PER_CHUNK); if (samples < SAMPLES_PER_CHUNK) { memset(amp + samples, 0, sizeof(int16_t)*(SAMPLES_PER_CHUNK - samples)); samples = SAMPLES_PER_CHUNK; } - remnant = v8_rx(&v8_answerer, amp, samples); + remnant = v8_rx(v8_answerer, amp, samples); for (i = 0; i < samples; i++) out_amp[2*i] = amp[i]; - samples = v8_tx(&v8_answerer, amp, SAMPLES_PER_CHUNK); + samples = v8_tx(v8_answerer, amp, SAMPLES_PER_CHUNK); if (samples < SAMPLES_PER_CHUNK) { memset(amp + samples, 0, sizeof(int16_t)*(SAMPLES_PER_CHUNK - samples)); samples = SAMPLES_PER_CHUNK; } - if (v8_rx(&v8_caller, amp, samples) && remnant) + if (v8_rx(v8_caller, amp, samples) && remnant) break; for (i = 0; i < samples; i++) out_amp[2*i + 1] = amp[i]; @@ -193,8 +203,8 @@ exit(2); } - v8_release(&v8_caller); - v8_release(&v8_answerer); + v8_free(v8_caller); + v8_free(v8_answerer); if (negotiations_ok != 2) { @@ -206,9 +216,10 @@ else { printf("Decode file '%s'\n", decode_test_file); - v8_init(&v8_answerer, FALSE, answerer_available_modulations, handler, (void *) "answerer"); - span_log_set_level(&v8_answerer.logging, SPAN_LOG_FLOW | SPAN_LOG_SHOW_TAG); - span_log_set_tag(&v8_answerer.logging, "decoder"); + v8_answerer = v8_init(NULL, FALSE, answerer_available_modulations, handler, (void *) "answerer"); + logging = v8_get_logging_state(v8_answerer); + span_log_set_level(logging, SPAN_LOG_FLOW | SPAN_LOG_SHOW_TAG); + span_log_set_tag(logging, "decoder"); if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE) { fprintf(stderr, " Cannot open speech file '%s'\n", decode_test_file); @@ -218,11 +229,11 @@ while ((samples = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, SAMPLES_PER_CHUNK))) { - remnant = v8_rx(&v8_answerer, amp, samples); + remnant = v8_rx(v8_answerer, amp, samples); } /*endwhile*/ - v8_release(&v8_answerer); + v8_free(v8_answerer); if (afCloseFile(inhandle) != 0) { fprintf(stderr, " Cannot close speech file '%s'\n", decode_test_file); Modified: freeswitch/trunk/libs/spandsp/tests/vector_float_tests.c ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/vector_float_tests.c (original) +++ freeswitch/trunk/libs/spandsp/tests/vector_float_tests.c Tue Jan 27 22:48:03 2009 @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: vector_float_tests.c,v 1.10 2008/09/16 15:21:52 steveu Exp $ + * $Id: vector_float_tests.c,v 1.12 2008/10/09 13:25:19 steveu Exp $ */ #if defined(HAVE_CONFIG_H) @@ -37,6 +37,242 @@ #include "spandsp.h" +static void vec_copyf_dumb(float z[], const float x[], int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i]; +} +/*- End of function --------------------------------------------------------*/ + +static int test_vec_copyf(void) +{ + int i; + float x[100]; + float za[100]; + float zb[100]; + + printf("Testing vec_copyf()\n"); + for (i = 0; i < 99; i++) + { + x[i] = i; + za[i] = -1.0f; + zb[i] = -1.0f; + } + vec_copyf_dumb(za + 3, x + 1, 0); + vec_copyf(zb + 3, x + 1, 0); + for (i = 0; i < 99; i++) + { + if (za[i] != zb[i]) + { + printf("vec_copyf() - %d %f %f\n", i, za[i], zb[i]); + printf("Tests failed\n"); + exit(2); + } + } + vec_copyf_dumb(za + 3, x + 1, 1); + vec_copyf(zb + 3, x + 1, 1); + for (i = 0; i < 99; i++) + { + if (za[i] != zb[i]) + { + printf("vec_copyf() - %d %f %f\n", i, za[i], zb[i]); + printf("Tests failed\n"); + exit(2); + } + } + vec_copyf_dumb(za + 3, x + 1, 29); + vec_copyf(zb + 3, x + 1, 29); + for (i = 0; i < 99; i++) + { + if (za[i] != zb[i]) + { + printf("vec_copyf() - %d %f %f\n", i, za[i], zb[i]); + printf("Tests failed\n"); + exit(2); + } + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + +static void vec_negatef_dumb(float z[], const float x[], int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = -x[i]; +} +/*- End of function --------------------------------------------------------*/ + +static int test_vec_negatef(void) +{ + int i; + float x[100]; + float za[100]; + float zb[100]; + + printf("Testing vec_negatef()\n"); + for (i = 0; i < 99; i++) + { + x[i] = i; + za[i] = -1.0f; + zb[i] = -1.0f; + } + vec_negatef_dumb(za + 3, x + 1, 0); + vec_negatef(zb + 3, x + 1, 0); + for (i = 0; i < 99; i++) + { + if (za[i] != zb[i]) + { + printf("vec_negatef() - %d %f %f\n", i, za[i], zb[i]); + printf("Tests failed\n"); + exit(2); + } + } + vec_negatef_dumb(za + 3, x + 1, 1); + vec_negatef(zb + 3, x + 1, 1); + for (i = 0; i < 99; i++) + { + if (za[i] != zb[i]) + { + printf("vec_megatef() - %d %f %f\n", i, za[i], zb[i]); + printf("Tests failed\n"); + exit(2); + } + } + vec_negatef_dumb(za + 3, x + 1, 29); + vec_negatef(zb + 3, x + 1, 29); + for (i = 0; i < 99; i++) + { + if (za[i] != zb[i]) + { + printf("vec_negatef() - %d %f %f\n", i, za[i], zb[i]); + printf("Tests failed\n"); + exit(2); + } + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + +static void vec_zerof_dumb(float z[], int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = 0.0f; +} +/*- End of function --------------------------------------------------------*/ + +static int test_vec_zerof(void) +{ + int i; + float za[100]; + float zb[100]; + + printf("Testing vec_zerof()\n"); + for (i = 0; i < 99; i++) + { + za[i] = -1.0f; + zb[i] = -1.0f; + } + vec_zerof_dumb(za + 3, 0); + vec_zerof(zb + 3, 0); + for (i = 0; i < 99; i++) + { + if (za[i] != zb[i]) + { + printf("vec_zerof() - %d %f %f\n", i, za[i], zb[i]); + printf("Tests failed\n"); + exit(2); + } + } + vec_zerof_dumb(za + 3, 1); + vec_zerof(zb + 3, 1); + for (i = 0; i < 99; i++) + { + if (za[i] != zb[i]) + { + printf("vec_zerof() - %d %f %f\n", i, za[i], zb[i]); + printf("Tests failed\n"); + exit(2); + } + } + vec_zerof_dumb(za + 3, 29); + vec_zerof(zb + 3, 29); + for (i = 0; i < 99; i++) + { + if (za[i] != zb[i]) + { + printf("vec_zerof() - %d %f %f\n", i, za[i], zb[i]); + printf("Tests failed\n"); + exit(2); + } + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + +static void vec_setf_dumb(float z[], float x, int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x; +} +/*- End of function --------------------------------------------------------*/ + +static int test_vec_setf(void) +{ + int i; + float za[100]; + float zb[100]; + + printf("Testing vec_setf()\n"); + for (i = 0; i < 99; i++) + { + za[i] = -1.0f; + zb[i] = -1.0f; + } + vec_setf_dumb(za + 3, 42.0f, 0); + vec_setf(zb + 3, 42.0f, 0); + for (i = 0; i < 99; i++) + { + if (za[i] != zb[i]) + { + printf("vec_setf() - %d %f %f\n", i, za[i], zb[i]); + printf("Tests failed\n"); + exit(2); + } + } + vec_setf_dumb(za + 3, 42.0f, 1); + vec_setf(zb + 3, 42.0f, 1); + for (i = 0; i < 99; i++) + { + if (za[i] != zb[i]) + { + printf("vec_setf() - %d %f %f\n", i, za[i], zb[i]); + printf("Tests failed\n"); + exit(2); + } + } + vec_setf_dumb(za + 3, 42.0f, 29); + vec_setf(zb + 3, 42.0f, 29); + for (i = 0; i < 99; i++) + { + if (za[i] != zb[i]) + { + printf("vec_setf() - %d %f %f\n", i, za[i], zb[i]); + printf("Tests failed\n"); + exit(2); + } + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + static double vec_dot_prod_dumb(const double x[], const double y[], int n) { int i; @@ -58,6 +294,7 @@ double zsb; double ratio; + printf("Testing vec_dot_prod()\n"); for (i = 0; i < 99; i++) { x[i] = rand(); @@ -100,6 +337,7 @@ float zsb; float ratio; + printf("Testing vec_dot_prodf()\n"); for (i = 0; i < 99; i++) { x[i] = rand(); @@ -121,10 +359,292 @@ } /*- End of function --------------------------------------------------------*/ +static void vec_addf_dumb(float z[], const float x[], const float y[], int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i] + y[i]; +} +/*- End of function --------------------------------------------------------*/ + +static int test_vec_addf(void) +{ + int i; + int j; + float x[100]; + float y[100]; + float zsa[100]; + float zsb[100]; + float ratio; + + printf("Testing vec_addf()\n"); + for (i = 0; i < 99; i++) + { + x[i] = rand(); + y[i] = rand(); + } + for (i = 1; i < 90; i++) + { + /* Force address misalignment, to check this works OK */ + vec_addf(zsa + 1, x + 1, y + 1, i); + vec_addf_dumb(zsb + 1, x + 1, y + 1, i); + for (j = 1; j <= i; j++) + { + ratio = zsa[j]/zsb[j]; + if (ratio < 0.9999f || ratio > 1.0001f) + { + printf("vec_mulf() - %d %e %e\n", j, zsa[j], zsb[j]); + printf("Tests failed\n"); + exit(2); + } + } + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + +static void vec_subf_dumb(float z[], const float x[], const float y[], int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i] - y[i]; +} +/*- End of function --------------------------------------------------------*/ + +static int test_vec_subf(void) +{ + int i; + int j; + float x[100]; + float y[100]; + float zsa[100]; + float zsb[100]; + float ratio; + + printf("Testing vec_subf()\n"); + for (i = 0; i < 99; i++) + { + x[i] = rand(); + y[i] = rand(); + } + for (i = 1; i < 90; i++) + { + /* Force address misalignment, to check this works OK */ + vec_subf(zsa + 1, x + 1, y + 1, i); + vec_subf_dumb(zsb + 1, x + 1, y + 1, i); + for (j = 1; j <= i; j++) + { + ratio = zsa[j]/zsb[j]; + if (ratio < 0.9999f || ratio > 1.0001f) + { + printf("vec_mulf() - %d %e %e\n", j, zsa[j], zsb[j]); + printf("Tests failed\n"); + exit(2); + } + } + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + +static void vec_mulf_dumb(float z[], const float x[], const float y[], int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i]*y[i]; +} +/*- End of function --------------------------------------------------------*/ + +static int test_vec_mulf(void) +{ + int i; + int j; + float x[100]; + float y[100]; + float zsa[100]; + float zsb[100]; + float ratio; + + printf("Testing vec_mulf()\n"); + for (i = 0; i < 99; i++) + { + x[i] = rand(); + y[i] = rand(); + } + for (i = 1; i < 90; i++) + { + /* Force address misalignment, to check this works OK */ + vec_mulf(zsa + 1, x + 1, y + 1, i); + vec_mulf_dumb(zsb + 1, x + 1, y + 1, i); + for (j = 1; j <= i; j++) + { + ratio = zsa[j]/zsb[j]; + if (ratio < 0.9999f || ratio > 1.0001f) + { + printf("vec_mulf() - %d %e %e\n", j, zsa[j], zsb[j]); + printf("Tests failed\n"); + exit(2); + } + } + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + +#define LMS_LEAK_RATE 0.9999f + +static void vec_lmsf_dumb(const float x[], float y[], int n, float error) +{ + int i; + + for (i = 0; i < n; i++) + { + /* Leak a little to tame uncontrolled wandering */ + y[i] = y[i]*LMS_LEAK_RATE + x[i]*error; + } +} +/*- End of function --------------------------------------------------------*/ + +static int test_vec_lmsf(void) +{ + int i; + int j; + float x[100]; + float ya[100]; + float yb[100]; + float ratio; + + printf("Testing vec_lmsf()\n"); + for (i = 0; i < 99; i++) + { + x[i] = rand(); + ya[i] = + yb[i] = rand(); + } + for (i = 1; i < 99; i++) + { + vec_lmsf(x, ya, i, 0.1f); + vec_lmsf_dumb(x, yb, i, 0.1f); + for (j = 0; j < i; j++) + { + ratio = ya[j]/yb[j]; + if (ratio < 0.9999f || ratio > 1.0001f) + { + printf("vec_lmsf() - %d %e %e\n", j, ya[j], yb[j]); + printf("Tests failed\n"); + exit(2); + } + } + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + +static void vec_scaledxy_addf_dumb(float z[], const float x[], float x_scale, const float y[], float y_scale, int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i]*x_scale + y[i]*y_scale; +} +/*- End of function --------------------------------------------------------*/ + +static int test_vec_scaledxy_addf(void) +{ + int i; + int j; + float x[100]; + float y[100]; + float za[100]; + float zb[100]; + float ratio; + + printf("Testing vec_scaledxy_addf()\n"); + for (i = 0; i < 99; i++) + { + x[i] = rand(); + y[i] = rand(); + } + for (i = 1; i < 99; i++) + { + vec_scaledxy_addf(za, x, 2.5f, y, 1.5f, i); + vec_scaledxy_addf_dumb(zb, x, 2.5f, y, 1.5f, i); + for (j = 0; j < i; j++) + { + ratio = za[j]/zb[j]; + if (ratio < 0.9999f || ratio > 1.0001f) + { + printf("vec_scaledxy_addf() - %d %e %e\n", j, za[j], zb[j]); + printf("Tests failed\n"); + exit(2); + } + } + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + +static void vec_scaledy_addf_dumb(float z[], const float x[], const float y[], float y_scale, int n) +{ + int i; + + for (i = 0; i < n; i++) + z[i] = x[i] + y[i]*y_scale; +} +/*- End of function --------------------------------------------------------*/ + +static int test_vec_scaledy_addf(void) +{ + int i; + int j; + float x[100]; + float y[100]; + float za[100]; + float zb[100]; + float ratio; + + printf("Testing vec_scaledy_addf()\n"); + for (i = 0; i < 99; i++) + { + x[i] = rand(); + y[i] = rand(); + } + for (i = 1; i < 99; i++) + { + vec_scaledy_addf(za, x, y, 1.5f, i); + vec_scaledy_addf_dumb(zb, x, y, 1.5f, i); + for (j = 0; j < i; j++) + { + ratio = za[j]/zb[j]; + if (ratio < 0.9999f || ratio > 1.0001f) + { + printf("vec_scaledy_addf() - %d %e %e\n", j, za[j], zb[j]); + printf("Tests failed\n"); + exit(2); + } + } + } + return 0; +} +/*- End of function --------------------------------------------------------*/ + int main(int argc, char *argv[]) { + test_vec_copyf(); + test_vec_negatef(); + test_vec_zerof(); + test_vec_setf(); + test_vec_addf(); + test_vec_subf(); + test_vec_mulf(); + test_vec_scaledxy_addf(); + test_vec_scaledy_addf(); test_vec_dot_prod(); test_vec_dot_prodf(); + test_vec_lmsf(); printf("Tests passed.\n"); return 0; From anthm at freeswitch.org Wed Jan 28 05:43:32 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 07:43:32 -0600 Subject: [Freeswitch-svn] [commit] r11536 - freeswitch/trunk/src/mod/endpoints/mod_loopback Message-ID: Author: anthm Date: Wed Jan 28 07:43:32 2009 New Revision: 11536 Log: MODENDP-180 Modified: freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c Modified: freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c Wed Jan 28 07:43:32 2009 @@ -276,7 +276,7 @@ goto end; } - switch_channel_set_variable(channel, "loopback_leg", switch_test_flag(tech_pvt, TFLAG_OUTBOUND) ? "B" : "A"); + switch_channel_set_variable(channel, "loopback_leg", switch_test_flag(tech_pvt, TFLAG_BLEG) ? "B" : "A"); switch_channel_set_state(channel, CS_ROUTING); end: From andrew at freeswitch.org Wed Jan 28 07:34:34 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 09:34:34 -0600 Subject: [Freeswitch-svn] [commit] r11537 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Wed Jan 28 09:34:34 2009 New Revision: 11537 Log: Export some functions I forgot to Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/freeswitch.erl Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/freeswitch.erl ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/freeswitch.erl (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/freeswitch.erl Wed Jan 28 09:34:34 2009 @@ -17,7 +17,8 @@ -export([send/2, api/3, bgapi/3, event/2, nixevent/2, noevents/1, close/1, get_event_header/2, get_event_body/1, - get_event_name/1, start_fetch_handler/4, + get_event_name/1, getpid/1, sendmsg/3, + sendevent/3, handlecall/2, start_fetch_handler/4, start_log_handler/3, start_event_handler/3]). -define(TIMEOUT, 10000). From mikej at freeswitch.org Wed Jan 28 10:02:34 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 12:02:34 -0600 Subject: [Freeswitch-svn] [commit] r11538 - freeswitch/trunk/src Message-ID: Author: mikej Date: Wed Jan 28 12:02:34 2009 New Revision: 11538 Log: freeswitch: fix user for windows service (FSCORE-277) Modified: freeswitch/trunk/src/switch.c Modified: freeswitch/trunk/src/switch.c ============================================================================== --- freeswitch/trunk/src/switch.c (original) +++ freeswitch/trunk/src/switch.c Wed Jan 28 12:02:34 2009 @@ -352,7 +352,7 @@ GENERIC_READ | GENERIC_EXECUTE | SERVICE_CHANGE_CONFIG, SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, servicePath, NULL, NULL, NULL, - "NT AUTHORITY\\NetworkService", /* Service start name */ + NULL, /* Service start name */ NULL); if (!hService) { fprintf(stderr, "Error creating freeswitch service (%d).\n", GetLastError()); From ctrix at freeswitch.org Wed Jan 28 10:17:30 2009 From: ctrix at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 12:17:30 -0600 Subject: [Freeswitch-svn] [commit] r11539 - freeswitch/branches/ctrix/mod_airpe Message-ID: Author: ctrix Date: Wed Jan 28 12:17:30 2009 New Revision: 11539 Log: Multiarch makefile Modified: freeswitch/branches/ctrix/mod_airpe/Makefile Modified: freeswitch/branches/ctrix/mod_airpe/Makefile ============================================================================== --- freeswitch/branches/ctrix/mod_airpe/Makefile (original) +++ freeswitch/branches/ctrix/mod_airpe/Makefile Wed Jan 28 12:17:30 2009 @@ -6,12 +6,10 @@ LOCAL_OBJS=airpe_if_common.o airpe_api.o airpe_apps.o airpe_if_x11.o airpe_if_osx.o airpe_if_win32.o LOCAL_SOURCES=airpe_if_common.c airpe_api.c airpe_apps.c airpe_if_x11.c airpe_if_osx.c airpe_if_win32.c -#--------------------------------- LINUX -#LOCAL_LDFLAGS=-lX11 - -#--------------------------------- OSX -#LOCAL_LDFLAGS=-framework CoreFoundation -LOCAL_LDFLAGS=-framework Skype -framework CoreFoundation -framework Carbon +LOCAL_INSERT_LDFLAGS=\ + if test $$osarch = "Darwin" ; then echo "-framework Skype -framework CoreFoundation" ; \ + else echo "-lX11" ; \ + fi; include ../../../../build/modmake.rules From ctrix at freeswitch.org Wed Jan 28 10:20:18 2009 From: ctrix at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 12:20:18 -0600 Subject: [Freeswitch-svn] [commit] r11540 - freeswitch/trunk/src/mod/applications/mod_fax Message-ID: Author: ctrix Date: Wed Jan 28 12:20:18 2009 New Revision: 11540 Log: Fix building problem with newer spandsp. Modified: freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c Modified: freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c (original) +++ freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c Wed Jan 28 12:20:18 2009 @@ -33,6 +33,8 @@ */ #include + +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES #include #include From intralanman at freeswitch.org Wed Jan 28 10:27:38 2009 From: intralanman at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 12:27:38 -0600 Subject: [Freeswitch-svn] [commit] r11541 - freeswitch/trunk/src Message-ID: Author: intralanman Date: Wed Jan 28 12:27:38 2009 New Revision: 11541 Log: change log level Modified: freeswitch/trunk/src/switch_event.c Modified: freeswitch/trunk/src/switch_event.c ============================================================================== --- freeswitch/trunk/src/switch_event.c (original) +++ freeswitch/trunk/src/switch_event.c Wed Jan 28 12:27:38 2009 @@ -494,7 +494,7 @@ switch_threadattr_priority_increase(thd_attr); switch_threadattr_detach_set(thd_attr, 1); switch_thread_create(&thread, thd_attr, switch_event_dispatch_thread, EVENT_DISPATCH_QUEUE[index], pool); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Create event dispatch thread %d\n", index); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Create event dispatch thread %d\n", index); } SOFT_MAX_DISPATCH = index; From andrew at freeswitch.org Wed Jan 28 11:26:37 2009 From: andrew at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 13:26:37 -0600 Subject: [Freeswitch-svn] [commit] r11542 - freeswitch/trunk/src/mod/event_handlers/mod_erlang_event Message-ID: Author: andrew Date: Wed Jan 28 13:26:37 2009 New Revision: 11542 Log: Patch from Rob Charlton to use rpc:call instead of spawn and to make the registered process argument to handlecall optional Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/ei_helpers.c Wed Jan 28 13:26:37 2009 @@ -122,6 +122,24 @@ ei_encode_switch_event_headers(ebuf, event); } +/* function to make rpc call to remote node to retrieve a pid - + calls module:function(Ref). The response comes back as + {rex, {Ref, Pid}} + */ +int ei_pid_from_rpc(struct ei_cnode_s *ec, int sockfd, erlang_ref *ref, char *module, char *function) +{ + ei_x_buff buf; + ei_x_new(&buf); + ei_x_encode_list_header(&buf, 1); + ei_init_ref(ec, ref); + ei_x_encode_ref(&buf, ref); + ei_x_encode_empty_list(&buf); + + ei_rpc_to(ec, sockfd, module, function, buf.buff, buf.index); + ei_x_free(&buf); + + return 0; +} /* function to spawn a process on a remote node */ int ei_spawn(struct ei_cnode_s *ec, int sockfd, erlang_ref *ref, char *module, char *function, int argc, char **argv) Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/handle_msg.c Wed Jan 28 13:26:37 2009 @@ -37,6 +37,8 @@ static char *MARKER = "1"; +static switch_status_t handle_ref_tuple(listener_t *listener, erlang_msg *msg, ei_x_buff *buf, ei_x_buff *rbuf); + static void *SWITCH_THREAD_FUNC api_exec(switch_thread_t *thread, void *obj) { switch_bool_t r = SWITCH_TRUE; @@ -519,15 +521,18 @@ return SWITCH_STATUS_SUCCESS; } -/* {handlecall,,} */ -static switch_status_t handle_msg_handlecall(listener_t *listener, int arity, ei_x_buff *buf, ei_x_buff *rbuf) +/* {handlecall,,} + or + {handlecall,} to send messages back to the sender + */ +static switch_status_t handle_msg_handlecall(listener_t *listener, erlang_msg *msg, int arity, ei_x_buff *buf, ei_x_buff *rbuf) { char reg_name[MAXATOMLEN]; char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1]; - if (arity != 3 || - ei_decode_string_or_binary(buf->buff, &buf->index, SWITCH_UUID_FORMATTED_LENGTH, uuid_str) || - ei_decode_atom(buf->buff, &buf->index, reg_name)) { + if (arity < 2 || arity > 3 || + (arity==3 && ei_decode_atom(buf->buff, &buf->index, reg_name)) || + ei_decode_string_or_binary(buf->buff, &buf->index, SWITCH_UUID_FORMATTED_LENGTH, uuid_str)) { ei_x_encode_tuple_header(rbuf, 2); ei_x_encode_atom(rbuf, "error"); ei_x_encode_atom(rbuf, "badarg"); @@ -535,7 +540,8 @@ switch_core_session_t *session; if (!switch_strlen_zero(uuid_str) && (session = switch_core_session_locate(uuid_str))) { /* create a new session list element and attach it to this listener */ - if (attach_call_to_registered_process(listener, reg_name, session)) { + if ((arity==2 && attach_call_to_pid(listener, &msg->from, session)) || + (arity==3 && attach_call_to_registered_process(listener, reg_name, session))) { ei_x_encode_atom(rbuf, "ok"); } else { ei_x_encode_tuple_header(rbuf, 2); @@ -551,6 +557,28 @@ return SWITCH_STATUS_SUCCESS; } +/* catch the response to ei_rpc_to (which comes back as {rex, {Ref, Pid}} + The {Ref,Pid} bit can be handled by handle_ref_tuple + */ +static switch_status_t handle_msg_rpcresponse(listener_t *listener, erlang_msg *msg, int arity, ei_x_buff *buf, ei_x_buff *rbuf) +{ + int type, size, arity2, tmpindex; + + ei_get_type(buf->buff, &buf->index, &type, &size); + switch(type) { + case ERL_SMALL_TUPLE_EXT : + case ERL_LARGE_TUPLE_EXT : + tmpindex = buf->index; + ei_decode_tuple_header(buf->buff, &tmpindex, &arity2); + return handle_ref_tuple(listener,msg,buf,rbuf); + default: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Unknown rpc response\n"); + break; + } + /* no reply */ + return SWITCH_STATUS_FALSE; +} + static switch_status_t handle_msg_tuple(listener_t *listener, erlang_msg *msg, ei_x_buff *buf, ei_x_buff *rbuf) { char tupletag[MAXATOMLEN]; @@ -583,7 +611,9 @@ } else if (!strncmp(tupletag, "bind", MAXATOMLEN)) { ret = handle_msg_bind(listener,msg,buf,rbuf); } else if (!strncmp(tupletag, "handlecall", MAXATOMLEN)) { - ret = handle_msg_handlecall(listener,arity,buf,rbuf); + ret = handle_msg_handlecall(listener,msg,arity,buf,rbuf); + } else if (!strncmp(tupletag, "rex", MAXATOMLEN)) { + ret = handle_msg_rpcresponse(listener,msg,arity,buf,rbuf); } else { ei_x_encode_tuple_header(rbuf, 2); ei_x_encode_atom(rbuf, "error"); @@ -701,7 +731,8 @@ switch_core_hash_insert(listener->spawn_pid_hash, hash, pid); } - return SWITCH_STATUS_SUCCESS; + /* no reply */ + return SWITCH_STATUS_FALSE; } Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Wed Jan 28 13:26:37 2009 @@ -187,8 +187,8 @@ l = lp; lp = lp->next; - /* test all of the sessions attached to this event in case - one of them should receive it as well + /* test all of the sessions attached to this listener in case + one of them should receive the event as well */ send_event_to_attached_sessions(l,event); @@ -684,9 +684,10 @@ ei_x_buff rbuf; ei_x_new_with_version(&rbuf); - switch_mutex_lock(listener->sock_mutex); + /* do we need the mutex when reading? */ + /*switch_mutex_lock(listener->sock_mutex);*/ status = ei_xreceive_msg_tmo(listener->sockfd, &msg, &buf, 100); - switch_mutex_unlock(listener->sock_mutex); + /*switch_mutex_unlock(listener->sock_mutex);*/ switch(status) { case ERL_TICK : @@ -780,7 +781,9 @@ ei_x_encode_atom(&rbuf, "error"); ei_x_encode_atom(&rbuf, "acldeny"); + switch_mutex_lock(listener->sock_mutex); ei_send(listener->sockfd, &msg.from, rbuf.buff, rbuf.index); + switch_mutex_unlock(listener->sock_mutex); #ifdef EI_DEBUG ei_x_print_msg(&rbuf, &msg.from, 1); #endif @@ -1026,6 +1029,33 @@ return session_element; } +session_elem_t* attach_call_to_pid(listener_t* listener, erlang_pid* pid, switch_core_session_t *session) +{ + /* create a session list element */ + session_elem_t* session_element = NULL; + if (!(session_element = switch_core_alloc(switch_core_session_get_pool(session), sizeof(*session_element)))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to allocate session element\n"); + } + else { + if (SWITCH_STATUS_SUCCESS != switch_core_session_read_lock(session)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to get session read lock\n"); + } + else { + session_element->session = session; + session_element->process.type = ERLANG_PID; + memcpy(&session_element->process.pid, pid, sizeof(erlang_pid)); + switch_set_flag(session_element, LFLAG_SESSION_ALIVE); + switch_clear_flag(session_element, LFLAG_OUTBOUND_INIT); + switch_queue_create(&session_element->event_queue, SWITCH_CORE_QUEUE_LEN, switch_core_session_get_pool(session)); + switch_mutex_init(&session_element->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session)); + /* attach the session to the listener */ + add_session_elem_to_listener(listener,session_element); + + ei_link(listener, ei_self(listener->ec), pid); + } + } + return session_element; +} session_elem_t* attach_call_to_spawned_process(listener_t* listener, char *module, char *function, switch_core_session_t *session) { @@ -1039,7 +1069,7 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to get session read lock\n"); } else { - char *argv[1], hash[100]; + char hash[100]; int i = 0; session_element->session = session; erlang_pid *pid; @@ -1061,13 +1091,20 @@ ei_x_encode_atom(&rbuf, "new_pid"); ei_x_encode_ref(&rbuf, &ref); ei_x_encode_pid(&rbuf, ei_self(listener->ec)); + /* should lock with mutex? */ ei_reg_send(listener->ec, listener->sockfd, module, rbuf.buff, rbuf.index); #ifdef EI_DEBUG ei_x_print_reg_msg(&rbuf, module, 1); #endif ei_x_free(&rbuf); } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "rpc call: %s:%s(Ref)\n", module, function); + /* should lock with mutex? */ + ei_pid_from_rpc(listener->ec, listener->sockfd, &ref, module, function); + /* + char *argv[1]; ei_spawn(listener->ec, listener->sockfd, &ref, module, function, 0, argv); + */ } ei_hash_ref(&ref, hash); @@ -1091,7 +1128,8 @@ switch_clear_flag(session_element, LFLAG_OUTBOUND_INIT); switch_clear_flag(session_element, LFLAG_WAITING_FOR_PID); - ei_link(listener, ei_self(listener->ec), pid); + /* this hangs because it can never get hold of the socket mutex */ + ei_link(listener, ei_self(listener->ec), pid); } } return session_element; Modified: freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h Wed Jan 28 13:26:37 2009 @@ -192,6 +192,7 @@ void ei_link(listener_t *listener, erlang_pid *from, erlang_pid *to); void ei_encode_switch_event_headers(ei_x_buff *ebuf, switch_event_t *event); void ei_encode_switch_event_tag(ei_x_buff *ebuf, switch_event_t *event, char *tag); +int ei_pid_from_rpc(struct ei_cnode_s *ec, int sockfd, erlang_ref *ref, char *module, char *function); int ei_spawn(struct ei_cnode_s *ec, int sockfd, erlang_ref *ref, char *module, char *function, int argc, char **argv); void ei_init_ref(struct ei_cnode_s *ec, erlang_ref *ref); void ei_x_print_reg_msg(ei_x_buff *buf, char *dest, int send); @@ -215,6 +216,7 @@ /* mod_erlang_event.c */ session_elem_t* attach_call_to_registered_process(listener_t* listener, char* reg_name, switch_core_session_t *session); +session_elem_t* attach_call_to_pid(listener_t* listener, erlang_pid* pid, switch_core_session_t *session); session_elem_t* attach_call_to_spawned_process(listener_t* listener, char *module, char *function, switch_core_session_t *session); /* For Emacs: From mikej at freeswitch.org Wed Jan 28 11:50:00 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 13:50:00 -0600 Subject: [Freeswitch-svn] [commit] r11543 - freeswitch/trunk/libs/spandsp/src/generated Message-ID: Author: mikej Date: Wed Jan 28 13:50:00 2009 New Revision: 11543 Log: temporarily add generated headers for windows build Added: freeswitch/trunk/libs/spandsp/src/generated/ freeswitch/trunk/libs/spandsp/src/generated/at_interpreter_dictionary.h freeswitch/trunk/libs/spandsp/src/generated/v17rx_fixed_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v17rx_floating_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v17tx_fixed_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v17tx_floating_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v22bis_rx_1200_fixed_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v22bis_rx_1200_floating_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v22bis_rx_2400_fixed_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v22bis_rx_2400_floating_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v22bis_tx_fixed_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v22bis_tx_floating_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v27ter_rx_2400_fixed_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v27ter_rx_2400_floating_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v27ter_rx_4800_fixed_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v27ter_rx_4800_floating_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v27ter_tx_2400_fixed_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v27ter_tx_2400_floating_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v27ter_tx_4800_fixed_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v27ter_tx_4800_floating_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v29rx_fixed_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v29rx_floating_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v29tx_fixed_rrc.h freeswitch/trunk/libs/spandsp/src/generated/v29tx_floating_rrc.h Added: freeswitch/trunk/libs/spandsp/src/generated/at_interpreter_dictionary.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/at_interpreter_dictionary.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,909 @@ +// The trie contains 399 entries + +static const at_cmd_service_t at_commands[] = +{ + at_cmd_dummy, + at_cmd_amp_C, + at_cmd_amp_D, + at_cmd_amp_F, + at_cmd_plus_A8A, + at_cmd_plus_A8C, + at_cmd_plus_A8E, + at_cmd_plus_A8I, + at_cmd_plus_A8J, + at_cmd_plus_A8M, + at_cmd_plus_A8R, + at_cmd_plus_A8T, + at_cmd_plus_ASTO, + at_cmd_plus_CAAP, + at_cmd_plus_CACM, + at_cmd_plus_CACSP, + at_cmd_plus_CAD, + at_cmd_plus_CAEMLPP, + at_cmd_plus_CAHLD, + at_cmd_plus_CAJOIN, + at_cmd_plus_CALA, + at_cmd_plus_CALCC, + at_cmd_plus_CALD, + at_cmd_plus_CALM, + at_cmd_plus_CAMM, + at_cmd_plus_CANCHEV, + at_cmd_plus_CAOC, + at_cmd_plus_CAPD, + at_cmd_plus_CAPTT, + at_cmd_plus_CAREJ, + at_cmd_plus_CAULEV, + at_cmd_plus_CBC, + at_cmd_plus_CBCS, + at_cmd_plus_CBIP, + at_cmd_plus_CBST, + at_cmd_plus_CCFC, + at_cmd_plus_CCLK, + at_cmd_plus_CCS, + at_cmd_plus_CCUG, + at_cmd_plus_CCWA, + at_cmd_plus_CCWE, + at_cmd_plus_CDIP, + at_cmd_plus_CDIS, + at_cmd_plus_CDV, + at_cmd_plus_CEER, + at_cmd_plus_CESP, + at_cmd_plus_CFCS, + at_cmd_plus_CFG, + at_cmd_plus_CFUN, + at_cmd_plus_CGACT, + at_cmd_plus_CGANS, + at_cmd_plus_CGATT, + at_cmd_plus_CGAUTO, + at_cmd_plus_CGCAP, + at_cmd_plus_CGCLASS, + at_cmd_plus_CGCLOSP, + at_cmd_plus_CGCLPAD, + at_cmd_plus_CGCMOD, + at_cmd_plus_CGCS, + at_cmd_plus_CGDATA, + at_cmd_plus_CGDCONT, + at_cmd_plus_CGDSCONT, + at_cmd_plus_CGEQMIN, + at_cmd_plus_CGEQNEG, + at_cmd_plus_CGEQREQ, + at_cmd_plus_CGEREP, + at_cmd_plus_CGMI, + at_cmd_plus_CGMM, + at_cmd_plus_CGMR, + at_cmd_plus_CGOI, + at_cmd_plus_CGPADDR, + at_cmd_plus_CGQMIN, + at_cmd_plus_CGQREQ, + at_cmd_plus_CGREG, + at_cmd_plus_CGSMS, + at_cmd_plus_CGSN, + at_cmd_plus_CGTFT, + at_cmd_plus_CHLD, + at_cmd_plus_CHSA, + at_cmd_plus_CHSC, + at_cmd_plus_CHSD, + at_cmd_plus_CHSN, + at_cmd_plus_CHSR, + at_cmd_plus_CHST, + at_cmd_plus_CHSU, + at_cmd_plus_CHUP, + at_cmd_plus_CHV, + at_cmd_plus_CIMI, + at_cmd_plus_CIND, + at_cmd_plus_CIT, + at_cmd_plus_CKPD, + at_cmd_plus_CLAC, + at_cmd_plus_CLAE, + at_cmd_plus_CLAN, + at_cmd_plus_CLCC, + at_cmd_plus_CLCK, + at_cmd_plus_CLIP, + at_cmd_plus_CLIR, + at_cmd_plus_CLVL, + at_cmd_plus_CMAR, + at_cmd_plus_CMEC, + at_cmd_plus_CMEE, + at_cmd_plus_CMER, + at_cmd_plus_CMGC, + at_cmd_plus_CMGD, + at_cmd_plus_CMGF, + at_cmd_plus_CMGL, + at_cmd_plus_CMGR, + at_cmd_plus_CMGS, + at_cmd_plus_CMGW, + at_cmd_plus_CMIP, + at_cmd_plus_CMM, + at_cmd_plus_CMMS, + at_cmd_plus_CMOD, + at_cmd_plus_CMSS, + at_cmd_plus_CMUT, + at_cmd_plus_CMUX, + at_cmd_plus_CNMA, + at_cmd_plus_CNMI, + at_cmd_plus_CNUM, + at_cmd_plus_COLP, + at_cmd_plus_COPN, + at_cmd_plus_COPS, + at_cmd_plus_COS, + at_cmd_plus_COTDI, + at_cmd_plus_CPAS, + at_cmd_plus_CPBF, + at_cmd_plus_CPBR, + at_cmd_plus_CPBS, + at_cmd_plus_CPBW, + at_cmd_plus_CPIN, + at_cmd_plus_CPLS, + at_cmd_plus_CPMS, + at_cmd_plus_CPOL, + at_cmd_plus_CPPS, + at_cmd_plus_CPROT, + at_cmd_plus_CPUC, + at_cmd_plus_CPWC, + at_cmd_plus_CPWD, + at_cmd_plus_CQD, + at_cmd_plus_CR, + at_cmd_plus_CRC, + at_cmd_plus_CREG, + at_cmd_plus_CRES, + at_cmd_plus_CRLP, + at_cmd_plus_CRM, + at_cmd_plus_CRMC, + at_cmd_plus_CRMP, + at_cmd_plus_CRSL, + at_cmd_plus_CRSM, + at_cmd_plus_CSAS, + at_cmd_plus_CSCA, + at_cmd_plus_CSCB, + at_cmd_plus_CSCC, + at_cmd_plus_CSCS, + at_cmd_plus_CSDF, + at_cmd_plus_CSDH, + at_cmd_plus_CSGT, + at_cmd_plus_CSIL, + at_cmd_plus_CSIM, + at_cmd_plus_CSMP, + at_cmd_plus_CSMS, + at_cmd_plus_CSNS, + at_cmd_plus_CSQ, + at_cmd_plus_CSS, + at_cmd_plus_CSSN, + at_cmd_plus_CSTA, + at_cmd_plus_CSTF, + at_cmd_plus_CSVM, + at_cmd_plus_CTA, + at_cmd_plus_CTF, + at_cmd_plus_CTFR, + at_cmd_plus_CTZR, + at_cmd_plus_CTZU, + at_cmd_plus_CUSD, + at_cmd_plus_CUUS1, + at_cmd_plus_CV120, + at_cmd_plus_CVHU, + at_cmd_plus_CVIB, + at_cmd_plus_CXT, + at_cmd_plus_DR, + at_cmd_plus_DS, + at_cmd_plus_DS44, + at_cmd_plus_EB, + at_cmd_plus_EFCS, + at_cmd_plus_EFRAM, + at_cmd_plus_ER, + at_cmd_plus_ES, + at_cmd_plus_ESR, + at_cmd_plus_ETBM, + at_cmd_plus_EWIND, + at_cmd_plus_FAA, + at_cmd_plus_FAP, + at_cmd_plus_FAR, + at_cmd_plus_FBO, + at_cmd_plus_FBS, + at_cmd_plus_FBU, + at_cmd_plus_FCC, + at_cmd_plus_FCL, + at_cmd_plus_FCLASS, + at_cmd_plus_FCQ, + at_cmd_plus_FCR, + at_cmd_plus_FCS, + at_cmd_plus_FCT, + at_cmd_plus_FDD, + at_cmd_plus_FDR, + at_cmd_plus_FDT, + at_cmd_plus_FEA, + at_cmd_plus_FFC, + at_cmd_plus_FFD, + at_cmd_plus_FHS, + at_cmd_plus_FIE, + at_cmd_plus_FIP, + at_cmd_plus_FIS, + at_cmd_plus_FIT, + at_cmd_plus_FKS, + at_cmd_plus_FLI, + at_cmd_plus_FLO, + at_cmd_plus_FLP, + at_cmd_plus_FMI, + at_cmd_plus_FMM, + at_cmd_plus_FMR, + at_cmd_plus_FMS, + at_cmd_plus_FND, + at_cmd_plus_FNR, + at_cmd_plus_FNS, + at_cmd_plus_FPA, + at_cmd_plus_FPI, + at_cmd_plus_FPP, + at_cmd_plus_FPR, + at_cmd_plus_FPS, + at_cmd_plus_FPW, + at_cmd_plus_FRH, + at_cmd_plus_FRM, + at_cmd_plus_FRQ, + at_cmd_plus_FRS, + at_cmd_plus_FRY, + at_cmd_plus_FSA, + at_cmd_plus_FSP, + at_cmd_plus_FTH, + at_cmd_plus_FTM, + at_cmd_plus_FTS, + at_cmd_plus_GCAP, + at_cmd_plus_GCI, + at_cmd_plus_GMI, + at_cmd_plus_GMM, + at_cmd_plus_GMR, + at_cmd_plus_GOI, + at_cmd_plus_GSN, + at_cmd_plus_IBC, + at_cmd_plus_IBM, + at_cmd_plus_ICF, + at_cmd_plus_ICLOK, + at_cmd_plus_IDSR, + at_cmd_plus_IFC, + at_cmd_plus_ILRR, + at_cmd_plus_ILSD, + at_cmd_plus_IPR, + at_cmd_plus_IRTS, + at_cmd_plus_MA, + at_cmd_plus_MR, + at_cmd_plus_MS, + at_cmd_plus_MSC, + at_cmd_plus_MV18AM, + at_cmd_plus_MV18P, + at_cmd_plus_MV18R, + at_cmd_plus_MV18S, + at_cmd_plus_PCW, + at_cmd_plus_PIG, + at_cmd_plus_PMH, + at_cmd_plus_PMHF, + at_cmd_plus_PMHR, + at_cmd_plus_PMHT, + at_cmd_plus_PQC, + at_cmd_plus_PSS, + at_cmd_plus_SAC, + at_cmd_plus_SAM, + at_cmd_plus_SAR, + at_cmd_plus_SARR, + at_cmd_plus_SAT, + at_cmd_plus_SCRR, + at_cmd_plus_SDC, + at_cmd_plus_SDI, + at_cmd_plus_SDR, + at_cmd_plus_SRSC, + at_cmd_plus_STC, + at_cmd_plus_STH, + at_cmd_plus_SVC, + at_cmd_plus_SVM, + at_cmd_plus_SVR, + at_cmd_plus_SVRR, + at_cmd_plus_SVT, + at_cmd_plus_TADR, + at_cmd_plus_TAL, + at_cmd_plus_TALS, + at_cmd_plus_TDLS, + at_cmd_plus_TE140, + at_cmd_plus_TE141, + at_cmd_plus_TEPAL, + at_cmd_plus_TEPDL, + at_cmd_plus_TERDL, + at_cmd_plus_TLDL, + at_cmd_plus_TMO, + at_cmd_plus_TMODE, + at_cmd_plus_TNUM, + at_cmd_plus_TRDL, + at_cmd_plus_TRDLS, + at_cmd_plus_TRES, + at_cmd_plus_TSELF, + at_cmd_plus_TTER, + at_cmd_plus_VAC, + at_cmd_plus_VACR, + at_cmd_plus_VBT, + at_cmd_plus_VCID, + at_cmd_plus_VCIDR, + at_cmd_plus_VDID, + at_cmd_plus_VDIDR, + at_cmd_plus_VDR, + at_cmd_plus_VDT, + at_cmd_plus_VDX, + at_cmd_plus_VEM, + at_cmd_plus_VGM, + at_cmd_plus_VGR, + at_cmd_plus_VGS, + at_cmd_plus_VGT, + at_cmd_plus_VHC, + at_cmd_plus_VIP, + at_cmd_plus_VIT, + at_cmd_plus_VLS, + at_cmd_plus_VNH, + at_cmd_plus_VPH, + at_cmd_plus_VPP, + at_cmd_plus_VPR, + at_cmd_plus_VRA, + at_cmd_plus_VRID, + at_cmd_plus_VRL, + at_cmd_plus_VRN, + at_cmd_plus_VRX, + at_cmd_plus_VSD, + at_cmd_plus_VSID, + at_cmd_plus_VSM, + at_cmd_plus_VSP, + at_cmd_plus_VTA, + at_cmd_plus_VTD, + at_cmd_plus_VTER, + at_cmd_plus_VTH, + at_cmd_plus_VTR, + at_cmd_plus_VTS, + at_cmd_plus_VTX, + at_cmd_plus_VXT, + at_cmd_plus_W, + at_cmd_plus_WBAG, + at_cmd_plus_WCDA, + at_cmd_plus_WCHG, + at_cmd_plus_WCID, + at_cmd_plus_WCLK, + at_cmd_plus_WCPN, + at_cmd_plus_WCXF, + at_cmd_plus_WDAC, + at_cmd_plus_WDIR, + at_cmd_plus_WECR, + at_cmd_plus_WFON, + at_cmd_plus_WKPD, + at_cmd_plus_WPBA, + at_cmd_plus_WPTH, + at_cmd_plus_WRLK, + at_cmd_plus_WS45, + at_cmd_plus_WS46, + at_cmd_plus_WS50, + at_cmd_plus_WS51, + at_cmd_plus_WS52, + at_cmd_plus_WS53, + at_cmd_plus_WS54, + at_cmd_plus_WS57, + at_cmd_plus_WS58, + at_cmd_plus_WSTL, + at_cmd_dummy, + at_cmd_A, + at_cmd_D, + at_cmd_E, + at_cmd_H, + at_cmd_I, + at_cmd_L, + at_cmd_M, + at_cmd_O, + at_cmd_P, + at_cmd_Q, + at_cmd_S0, + at_cmd_S10, + at_cmd_S3, + at_cmd_S4, + at_cmd_S5, + at_cmd_S6, + at_cmd_S7, + at_cmd_S8, + at_cmd_T, + at_cmd_V, + at_cmd_X, + at_cmd_Z, +}; + +static const uint16_t command_trie[] = +{ + 0x0020, 0x005A, 0x0000, 0x003F, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0042, 0x0000, 0x0000, 0x0000, 0x0000, 0x0052, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0F43, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0F46, 0x0000, 0x0000, 0x0F49, + 0x0F4C, 0x0000, 0x0000, 0x0F4F, 0x0F52, 0x0000, 0x0000, 0x0F55, + 0x0F58, 0x0000, 0x0F5B, 0x0F5E, 0x0F61, 0x0000, 0x0F64, 0x0F8C, + 0x0000, 0x0F8F, 0x0000, 0x0F92, 0x0000, 0x0F95, 0x0001, 0x0000, + 0x0001, 0x0043, 0x0046, 0x0000, 0x0049, 0x004C, 0x0000, 0x004F, + 0x0001, 0x0000, 0x0002, 0x0001, 0x0000, 0x0003, 0x0001, 0x0000, + 0x0004, 0x0041, 0x0057, 0x0000, 0x006C, 0x0000, 0x00C5, 0x07D0, + 0x07E3, 0x0848, 0x09EA, 0x0000, 0x0A38, 0x0000, 0x0000, 0x0000, + 0x0AAF, 0x0000, 0x0000, 0x0B03, 0x0000, 0x0000, 0x0B52, 0x0BF6, + 0x0000, 0x0CDC, 0x0E20, 0x0038, 0x0053, 0x0000, 0x008B, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x00BA, 0x0041, 0x0054, 0x0000, 0x00A2, 0x0000, 0x00A5, + 0x0000, 0x00A8, 0x0000, 0x0000, 0x0000, 0x00AB, 0x00AE, 0x0000, + 0x0000, 0x00B1, 0x0000, 0x0000, 0x0000, 0x0000, 0x00B4, 0x0000, + 0x00B7, 0x0001, 0x0000, 0x0005, 0x0001, 0x0000, 0x0006, 0x0001, + 0x0000, 0x0007, 0x0001, 0x0000, 0x0008, 0x0001, 0x0000, 0x0009, + 0x0001, 0x0000, 0x000A, 0x0001, 0x0000, 0x000B, 0x0001, 0x0000, + 0x000C, 0x0054, 0x0054, 0x0000, 0x00BE, 0x004F, 0x004F, 0x0000, + 0x00C2, 0x0001, 0x0000, 0x000D, 0x0041, 0x0058, 0x0000, 0x00E0, + 0x01BC, 0x01E5, 0x0220, 0x0241, 0x0261, 0x0288, 0x0425, 0x0471, + 0x0000, 0x048D, 0x0498, 0x04EE, 0x0580, 0x05A5, 0x05D5, 0x0657, + 0x065E, 0x06B4, 0x0748, 0x077C, 0x0794, 0x0000, 0x07C9, 0x0041, + 0x0055, 0x0000, 0x00F8, 0x0000, 0x00FF, 0x0113, 0x0116, 0x0000, + 0x0000, 0x0129, 0x0000, 0x0134, 0x0000, 0x0143, 0x0163, 0x016A, + 0x017D, 0x0184, 0x0000, 0x01A2, 0x0000, 0x0000, 0x01AD, 0x0050, + 0x0050, 0x0000, 0x00FC, 0x0001, 0x0000, 0x000E, 0x004D, 0x0053, + 0x0000, 0x0109, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010C, + 0x0001, 0x0000, 0x000F, 0x0050, 0x0050, 0x0000, 0x0110, 0x0001, + 0x0000, 0x0010, 0x0001, 0x0000, 0x0011, 0x004D, 0x004D, 0x0000, + 0x011A, 0x004C, 0x004C, 0x0000, 0x011E, 0x0050, 0x0050, 0x0000, + 0x0122, 0x0050, 0x0050, 0x0000, 0x0126, 0x0001, 0x0000, 0x0012, + 0x004C, 0x004C, 0x0000, 0x012D, 0x0044, 0x0044, 0x0000, 0x0131, + 0x0001, 0x0000, 0x0013, 0x004F, 0x004F, 0x0000, 0x0138, 0x0049, + 0x0049, 0x0000, 0x013C, 0x004E, 0x004E, 0x0000, 0x0140, 0x0001, + 0x0000, 0x0014, 0x0041, 0x004D, 0x0000, 0x0153, 0x0000, 0x0156, + 0x015D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0160, 0x0001, 0x0000, 0x0015, 0x0043, 0x0043, 0x0000, + 0x015A, 0x0001, 0x0000, 0x0016, 0x0001, 0x0000, 0x0017, 0x0001, + 0x0000, 0x0018, 0x004D, 0x004D, 0x0000, 0x0167, 0x0001, 0x0000, + 0x0019, 0x0043, 0x0043, 0x0000, 0x016E, 0x0048, 0x0048, 0x0000, + 0x0172, 0x0045, 0x0045, 0x0000, 0x0176, 0x0056, 0x0056, 0x0000, + 0x017A, 0x0001, 0x0000, 0x001A, 0x0043, 0x0043, 0x0000, 0x0181, + 0x0001, 0x0000, 0x001B, 0x0044, 0x0054, 0x0000, 0x0198, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x019B, 0x0001, + 0x0000, 0x001C, 0x0054, 0x0054, 0x0000, 0x019F, 0x0001, 0x0000, + 0x001D, 0x0045, 0x0045, 0x0000, 0x01A6, 0x004A, 0x004A, 0x0000, + 0x01AA, 0x0001, 0x0000, 0x001E, 0x004C, 0x004C, 0x0000, 0x01B1, + 0x0045, 0x0045, 0x0000, 0x01B5, 0x0056, 0x0056, 0x0000, 0x01B9, + 0x0001, 0x0000, 0x001F, 0x0043, 0x0053, 0x0000, 0x01D0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x01D7, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01DE, 0x0053, + 0x0053, 0x0020, 0x01D4, 0x0001, 0x0000, 0x0021, 0x0050, 0x0050, + 0x0000, 0x01DB, 0x0001, 0x0000, 0x0022, 0x0054, 0x0054, 0x0000, + 0x01E2, 0x0001, 0x0000, 0x0023, 0x0046, 0x0057, 0x0000, 0x01FA, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0201, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0208, 0x0000, 0x020B, 0x0000, + 0x0212, 0x0043, 0x0043, 0x0000, 0x01FE, 0x0001, 0x0000, 0x0024, + 0x004B, 0x004B, 0x0000, 0x0205, 0x0001, 0x0000, 0x0025, 0x0001, + 0x0000, 0x0026, 0x0047, 0x0047, 0x0000, 0x020F, 0x0001, 0x0000, + 0x0027, 0x0041, 0x0045, 0x0000, 0x021A, 0x0000, 0x0000, 0x0000, + 0x021D, 0x0001, 0x0000, 0x0028, 0x0001, 0x0000, 0x0029, 0x0049, + 0x0056, 0x0000, 0x0231, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x023E, + 0x0050, 0x0053, 0x0000, 0x0238, 0x0000, 0x0000, 0x023B, 0x0001, + 0x0000, 0x002A, 0x0001, 0x0000, 0x002B, 0x0001, 0x0000, 0x002C, + 0x0045, 0x0053, 0x0000, 0x0253, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x025A, 0x0052, 0x0052, 0x0000, 0x0257, 0x0001, 0x0000, + 0x002D, 0x0050, 0x0050, 0x0000, 0x025E, 0x0001, 0x0000, 0x002E, + 0x0043, 0x0055, 0x0000, 0x0277, 0x0000, 0x0000, 0x0000, 0x027E, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0281, 0x0053, 0x0053, + 0x0000, 0x027B, 0x0001, 0x0000, 0x002F, 0x0001, 0x0000, 0x0030, + 0x004E, 0x004E, 0x0000, 0x0285, 0x0001, 0x0000, 0x0031, 0x0041, + 0x0054, 0x0000, 0x029F, 0x0000, 0x02D5, 0x0334, 0x0377, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03B1, 0x0000, + 0x03C7, 0x03CE, 0x03E1, 0x0400, 0x040B, 0x041A, 0x0043, 0x0055, + 0x0000, 0x02B5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x02BC, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x02C3, 0x02CA, 0x0054, 0x0054, 0x0000, 0x02B9, + 0x0001, 0x0000, 0x0032, 0x0053, 0x0053, 0x0000, 0x02C0, 0x0001, + 0x0000, 0x0033, 0x0054, 0x0054, 0x0000, 0x02C7, 0x0001, 0x0000, + 0x0034, 0x0054, 0x0054, 0x0000, 0x02CE, 0x004F, 0x004F, 0x0000, + 0x02D2, 0x0001, 0x0000, 0x0035, 0x0041, 0x0053, 0x0000, 0x02EB, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x02F2, 0x0326, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0331, 0x0050, 0x0050, 0x0000, 0x02EF, 0x0001, 0x0000, + 0x0036, 0x0041, 0x0050, 0x0000, 0x0305, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0310, 0x031B, 0x0053, 0x0053, 0x0000, 0x0309, + 0x0053, 0x0053, 0x0000, 0x030D, 0x0001, 0x0000, 0x0037, 0x0053, + 0x0053, 0x0000, 0x0314, 0x0050, 0x0050, 0x0000, 0x0318, 0x0001, + 0x0000, 0x0038, 0x0041, 0x0041, 0x0000, 0x031F, 0x0044, 0x0044, + 0x0000, 0x0323, 0x0001, 0x0000, 0x0039, 0x004F, 0x004F, 0x0000, + 0x032A, 0x0044, 0x0044, 0x0000, 0x032E, 0x0001, 0x0000, 0x003A, + 0x0001, 0x0000, 0x003B, 0x0041, 0x0053, 0x0000, 0x034A, 0x0000, + 0x0355, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0364, 0x0054, 0x0054, 0x0000, 0x034E, 0x0041, 0x0041, 0x0000, + 0x0352, 0x0001, 0x0000, 0x003C, 0x004F, 0x004F, 0x0000, 0x0359, + 0x004E, 0x004E, 0x0000, 0x035D, 0x0054, 0x0054, 0x0000, 0x0361, + 0x0001, 0x0000, 0x003D, 0x0043, 0x0043, 0x0000, 0x0368, 0x004F, + 0x004F, 0x0000, 0x036C, 0x004E, 0x004E, 0x0000, 0x0370, 0x0054, + 0x0054, 0x0000, 0x0374, 0x0001, 0x0000, 0x003E, 0x0051, 0x0052, + 0x0000, 0x037C, 0x03A6, 0x004D, 0x0052, 0x0000, 0x0385, 0x0390, + 0x0000, 0x0000, 0x0000, 0x039B, 0x0049, 0x0049, 0x0000, 0x0389, + 0x004E, 0x004E, 0x0000, 0x038D, 0x0001, 0x0000, 0x003F, 0x0045, + 0x0045, 0x0000, 0x0394, 0x0047, 0x0047, 0x0000, 0x0398, 0x0001, + 0x0000, 0x0040, 0x0045, 0x0045, 0x0000, 0x039F, 0x0051, 0x0051, + 0x0000, 0x03A3, 0x0001, 0x0000, 0x0041, 0x0045, 0x0045, 0x0000, + 0x03AA, 0x0050, 0x0050, 0x0000, 0x03AE, 0x0001, 0x0000, 0x0042, + 0x0049, 0x0052, 0x0000, 0x03BE, 0x0000, 0x0000, 0x0000, 0x03C1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x03C4, 0x0001, 0x0000, 0x0043, + 0x0001, 0x0000, 0x0044, 0x0001, 0x0000, 0x0045, 0x0049, 0x0049, + 0x0000, 0x03CB, 0x0001, 0x0000, 0x0046, 0x0041, 0x0041, 0x0000, + 0x03D2, 0x0044, 0x0044, 0x0000, 0x03D6, 0x0044, 0x0044, 0x0000, + 0x03DA, 0x0052, 0x0052, 0x0000, 0x03DE, 0x0001, 0x0000, 0x0047, + 0x004D, 0x0052, 0x0000, 0x03EA, 0x0000, 0x0000, 0x0000, 0x0000, + 0x03F5, 0x0049, 0x0049, 0x0000, 0x03EE, 0x004E, 0x004E, 0x0000, + 0x03F2, 0x0001, 0x0000, 0x0048, 0x0045, 0x0045, 0x0000, 0x03F9, + 0x0051, 0x0051, 0x0000, 0x03FD, 0x0001, 0x0000, 0x0049, 0x0045, + 0x0045, 0x0000, 0x0404, 0x0047, 0x0047, 0x0000, 0x0408, 0x0001, + 0x0000, 0x004A, 0x004D, 0x004E, 0x0000, 0x0410, 0x0417, 0x0053, + 0x0053, 0x0000, 0x0414, 0x0001, 0x0000, 0x004B, 0x0001, 0x0000, + 0x004C, 0x0046, 0x0046, 0x0000, 0x041E, 0x0054, 0x0054, 0x0000, + 0x0422, 0x0001, 0x0000, 0x004D, 0x004C, 0x0056, 0x0000, 0x0433, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x043A, 0x0000, + 0x0467, 0x046E, 0x0044, 0x0044, 0x0000, 0x0437, 0x0001, 0x0000, + 0x004E, 0x0041, 0x0055, 0x0000, 0x0452, 0x0000, 0x0455, 0x0458, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x045B, 0x0000, 0x0000, 0x0000, 0x045E, 0x0000, 0x0461, + 0x0464, 0x0001, 0x0000, 0x004F, 0x0001, 0x0000, 0x0050, 0x0001, + 0x0000, 0x0051, 0x0001, 0x0000, 0x0052, 0x0001, 0x0000, 0x0053, + 0x0001, 0x0000, 0x0054, 0x0001, 0x0000, 0x0055, 0x0050, 0x0050, + 0x0000, 0x046B, 0x0001, 0x0000, 0x0056, 0x0001, 0x0000, 0x0057, + 0x004D, 0x0054, 0x0000, 0x047C, 0x0483, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x048A, 0x0049, 0x0049, 0x0000, 0x0480, 0x0001, + 0x0000, 0x0058, 0x0044, 0x0044, 0x0000, 0x0487, 0x0001, 0x0000, + 0x0059, 0x0001, 0x0000, 0x005A, 0x0050, 0x0050, 0x0000, 0x0491, + 0x0044, 0x0044, 0x0000, 0x0495, 0x0001, 0x0000, 0x005B, 0x0041, + 0x0056, 0x0000, 0x04B1, 0x0000, 0x04C9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x04DB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04E7, + 0x0043, 0x004E, 0x0000, 0x04C0, 0x0000, 0x04C3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04C6, 0x0001, + 0x0000, 0x005C, 0x0001, 0x0000, 0x005D, 0x0001, 0x0000, 0x005E, + 0x0043, 0x004B, 0x0000, 0x04D5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x04D8, 0x0001, 0x0000, 0x005F, 0x0001, + 0x0000, 0x0060, 0x0050, 0x0052, 0x0000, 0x04E1, 0x0000, 0x04E4, + 0x0001, 0x0000, 0x0061, 0x0001, 0x0000, 0x0062, 0x004C, 0x004C, + 0x0000, 0x04EB, 0x0001, 0x0000, 0x0063, 0x0041, 0x0055, 0x0000, + 0x0506, 0x0000, 0x0000, 0x0000, 0x050D, 0x0000, 0x0529, 0x0000, + 0x0556, 0x0000, 0x0000, 0x0000, 0x055D, 0x0000, 0x0564, 0x0000, + 0x0000, 0x0000, 0x056B, 0x0000, 0x0572, 0x0052, 0x0052, 0x0000, + 0x050A, 0x0001, 0x0000, 0x0064, 0x0043, 0x0052, 0x0000, 0x0520, + 0x0000, 0x0523, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0526, 0x0001, + 0x0000, 0x0065, 0x0001, 0x0000, 0x0066, 0x0001, 0x0000, 0x0067, + 0x0043, 0x0057, 0x0000, 0x0541, 0x0544, 0x0000, 0x0547, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x054A, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x054D, 0x0550, 0x0000, 0x0000, 0x0000, 0x0553, + 0x0001, 0x0000, 0x0068, 0x0001, 0x0000, 0x0069, 0x0001, 0x0000, + 0x006A, 0x0001, 0x0000, 0x006B, 0x0001, 0x0000, 0x006C, 0x0001, + 0x0000, 0x006D, 0x0001, 0x0000, 0x006E, 0x0050, 0x0050, 0x0000, + 0x055A, 0x0001, 0x0000, 0x006F, 0x0053, 0x0053, 0x0070, 0x0561, + 0x0001, 0x0000, 0x0071, 0x0044, 0x0044, 0x0000, 0x0568, 0x0001, + 0x0000, 0x0072, 0x0053, 0x0053, 0x0000, 0x056F, 0x0001, 0x0000, + 0x0073, 0x0054, 0x0058, 0x0000, 0x057A, 0x0000, 0x0000, 0x0000, + 0x057D, 0x0001, 0x0000, 0x0074, 0x0001, 0x0000, 0x0075, 0x004D, + 0x0055, 0x0000, 0x058C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x059E, 0x0041, 0x0049, 0x0000, 0x0598, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x059B, 0x0001, + 0x0000, 0x0076, 0x0001, 0x0000, 0x0077, 0x004D, 0x004D, 0x0000, + 0x05A2, 0x0001, 0x0000, 0x0078, 0x004C, 0x0054, 0x0000, 0x05B1, + 0x0000, 0x0000, 0x0000, 0x05B8, 0x0000, 0x0000, 0x05C7, 0x05CA, + 0x0050, 0x0050, 0x0000, 0x05B5, 0x0001, 0x0000, 0x0079, 0x004E, + 0x0053, 0x0000, 0x05C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x05C4, + 0x0001, 0x0000, 0x007A, 0x0001, 0x0000, 0x007B, 0x0001, 0x0000, + 0x007C, 0x0044, 0x0044, 0x0000, 0x05CE, 0x0049, 0x0049, 0x0000, + 0x05D2, 0x0001, 0x0000, 0x007D, 0x0041, 0x0057, 0x0000, 0x05EF, + 0x05F6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0617, + 0x0000, 0x0000, 0x061E, 0x0625, 0x0000, 0x062C, 0x0633, 0x0000, + 0x063A, 0x0000, 0x0000, 0x0645, 0x0000, 0x064C, 0x0053, 0x0053, + 0x0000, 0x05F3, 0x0001, 0x0000, 0x007E, 0x0046, 0x0057, 0x0000, + 0x060B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x060E, 0x0611, 0x0000, 0x0000, + 0x0000, 0x0614, 0x0001, 0x0000, 0x007F, 0x0001, 0x0000, 0x0080, + 0x0001, 0x0000, 0x0081, 0x0001, 0x0000, 0x0082, 0x004E, 0x004E, + 0x0000, 0x061B, 0x0001, 0x0000, 0x0083, 0x0053, 0x0053, 0x0000, + 0x0622, 0x0001, 0x0000, 0x0084, 0x0053, 0x0053, 0x0000, 0x0629, + 0x0001, 0x0000, 0x0085, 0x004C, 0x004C, 0x0000, 0x0630, 0x0001, + 0x0000, 0x0086, 0x0053, 0x0053, 0x0000, 0x0637, 0x0001, 0x0000, + 0x0087, 0x004F, 0x004F, 0x0000, 0x063E, 0x0054, 0x0054, 0x0000, + 0x0642, 0x0001, 0x0000, 0x0088, 0x0043, 0x0043, 0x0000, 0x0649, + 0x0001, 0x0000, 0x0089, 0x0043, 0x0044, 0x0000, 0x0651, 0x0654, + 0x0001, 0x0000, 0x008A, 0x0001, 0x0000, 0x008B, 0x0044, 0x0044, + 0x0000, 0x065B, 0x0001, 0x0000, 0x008C, 0x0043, 0x0053, 0x008D, + 0x0672, 0x0000, 0x0675, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x068B, 0x0692, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x06A9, 0x0001, 0x0000, 0x008E, 0x0047, 0x0053, 0x0000, 0x0685, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0688, 0x0001, 0x0000, 0x008F, 0x0001, + 0x0000, 0x0090, 0x0050, 0x0050, 0x0000, 0x068F, 0x0001, 0x0000, + 0x0091, 0x0043, 0x0050, 0x0092, 0x06A3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x06A6, 0x0001, 0x0000, 0x0093, 0x0001, 0x0000, 0x0094, + 0x004C, 0x004D, 0x0000, 0x06AE, 0x06B1, 0x0001, 0x0000, 0x0095, + 0x0001, 0x0000, 0x0096, 0x0041, 0x0056, 0x0000, 0x06CD, 0x0000, + 0x06D4, 0x06F6, 0x0000, 0x0000, 0x0702, 0x0000, 0x0709, 0x0000, + 0x0000, 0x0000, 0x0714, 0x0721, 0x0000, 0x0000, 0x0728, 0x0000, + 0x072B, 0x0732, 0x0000, 0x0741, 0x0053, 0x0053, 0x0000, 0x06D1, + 0x0001, 0x0000, 0x0097, 0x0041, 0x0053, 0x0000, 0x06EA, 0x06ED, + 0x06F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x06F3, 0x0001, 0x0000, 0x0098, 0x0001, 0x0000, 0x0099, 0x0001, + 0x0000, 0x009A, 0x0001, 0x0000, 0x009B, 0x0046, 0x0048, 0x0000, + 0x06FC, 0x0000, 0x06FF, 0x0001, 0x0000, 0x009C, 0x0001, 0x0000, + 0x009D, 0x0054, 0x0054, 0x0000, 0x0706, 0x0001, 0x0000, 0x009E, + 0x004C, 0x004D, 0x0000, 0x070E, 0x0711, 0x0001, 0x0000, 0x009F, + 0x0001, 0x0000, 0x00A0, 0x0050, 0x0053, 0x0000, 0x071B, 0x0000, + 0x0000, 0x071E, 0x0001, 0x0000, 0x00A1, 0x0001, 0x0000, 0x00A2, + 0x0053, 0x0053, 0x0000, 0x0725, 0x0001, 0x0000, 0x00A3, 0x0001, + 0x0000, 0x00A4, 0x004E, 0x004E, 0x00A5, 0x072F, 0x0001, 0x0000, + 0x00A6, 0x0041, 0x0046, 0x0000, 0x073B, 0x0000, 0x0000, 0x0000, + 0x0000, 0x073E, 0x0001, 0x0000, 0x00A7, 0x0001, 0x0000, 0x00A8, + 0x004D, 0x004D, 0x0000, 0x0745, 0x0001, 0x0000, 0x00A9, 0x0041, + 0x005A, 0x0000, 0x0765, 0x0000, 0x0000, 0x0000, 0x0000, 0x0768, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x076F, 0x0001, 0x0000, 0x00AA, 0x0052, + 0x0052, 0x00AB, 0x076C, 0x0001, 0x0000, 0x00AC, 0x0052, 0x0055, + 0x0000, 0x0776, 0x0000, 0x0000, 0x0779, 0x0001, 0x0000, 0x00AD, + 0x0001, 0x0000, 0x00AE, 0x0053, 0x0055, 0x0000, 0x0782, 0x0000, + 0x0789, 0x0044, 0x0044, 0x0000, 0x0786, 0x0001, 0x0000, 0x00AF, + 0x0053, 0x0053, 0x0000, 0x078D, 0x0031, 0x0031, 0x0000, 0x0791, + 0x0001, 0x0000, 0x00B0, 0x0031, 0x0049, 0x0000, 0x07B0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07BB, 0x07C2, 0x0032, + 0x0032, 0x0000, 0x07B4, 0x0030, 0x0030, 0x0000, 0x07B8, 0x0001, + 0x0000, 0x00B1, 0x0055, 0x0055, 0x0000, 0x07BF, 0x0001, 0x0000, + 0x00B2, 0x0042, 0x0042, 0x0000, 0x07C6, 0x0001, 0x0000, 0x00B3, + 0x0054, 0x0054, 0x0000, 0x07CD, 0x0001, 0x0000, 0x00B4, 0x0052, + 0x0053, 0x0000, 0x07D5, 0x07D8, 0x0001, 0x0000, 0x00B5, 0x0034, + 0x0034, 0x00B6, 0x07DC, 0x0034, 0x0034, 0x0000, 0x07E0, 0x0001, + 0x0000, 0x00B7, 0x0042, 0x0057, 0x0000, 0x07FC, 0x0000, 0x0000, + 0x0000, 0x07FF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0824, 0x0827, 0x082E, + 0x0000, 0x0000, 0x0839, 0x0001, 0x0000, 0x00B8, 0x0043, 0x0052, + 0x0000, 0x0812, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0819, 0x0053, 0x0053, 0x0000, 0x0816, 0x0001, 0x0000, 0x00B9, + 0x0041, 0x0041, 0x0000, 0x081D, 0x004D, 0x004D, 0x0000, 0x0821, + 0x0001, 0x0000, 0x00BA, 0x0001, 0x0000, 0x00BB, 0x0052, 0x0052, + 0x00BC, 0x082B, 0x0001, 0x0000, 0x00BD, 0x0042, 0x0042, 0x0000, + 0x0832, 0x004D, 0x004D, 0x0000, 0x0836, 0x0001, 0x0000, 0x00BE, + 0x0049, 0x0049, 0x0000, 0x083D, 0x004E, 0x004E, 0x0000, 0x0841, + 0x0044, 0x0044, 0x0000, 0x0845, 0x0001, 0x0000, 0x00BF, 0x0041, + 0x0054, 0x0000, 0x085F, 0x087D, 0x0890, 0x08C3, 0x08E0, 0x08E7, + 0x0000, 0x08F2, 0x08F9, 0x0000, 0x0918, 0x091F, 0x0933, 0x094D, + 0x0000, 0x0969, 0x0000, 0x0995, 0x09B9, 0x09D2, 0x0041, 0x0052, + 0x0000, 0x0874, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0877, 0x0000, 0x087A, 0x0001, 0x0000, 0x00C0, 0x0001, 0x0000, + 0x00C1, 0x0001, 0x0000, 0x00C2, 0x004F, 0x0055, 0x0000, 0x0887, + 0x0000, 0x0000, 0x0000, 0x088A, 0x0000, 0x088D, 0x0001, 0x0000, + 0x00C3, 0x0001, 0x0000, 0x00C4, 0x0001, 0x0000, 0x00C5, 0x0043, + 0x0054, 0x0000, 0x08A5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x08A8, 0x0000, 0x0000, 0x0000, 0x0000, + 0x08B7, 0x08BA, 0x08BD, 0x08C0, 0x0001, 0x0000, 0x00C6, 0x0041, + 0x0041, 0x00C7, 0x08AC, 0x0053, 0x0053, 0x0000, 0x08B0, 0x0053, + 0x0053, 0x0000, 0x08B4, 0x0001, 0x0000, 0x00C8, 0x0001, 0x0000, + 0x00C9, 0x0001, 0x0000, 0x00CA, 0x0001, 0x0000, 0x00CB, 0x0001, + 0x0000, 0x00CC, 0x0044, 0x0054, 0x0000, 0x08D7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x08DA, 0x0000, 0x08DD, 0x0001, 0x0000, + 0x00CD, 0x0001, 0x0000, 0x00CE, 0x0001, 0x0000, 0x00CF, 0x0041, + 0x0041, 0x0000, 0x08E4, 0x0001, 0x0000, 0x00D0, 0x0043, 0x0044, + 0x0000, 0x08EC, 0x08EF, 0x0001, 0x0000, 0x00D1, 0x0001, 0x0000, + 0x00D2, 0x0053, 0x0053, 0x0000, 0x08F6, 0x0001, 0x0000, 0x00D3, + 0x0045, 0x0054, 0x0000, 0x090C, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x090F, 0x0000, + 0x0000, 0x0912, 0x0915, 0x0001, 0x0000, 0x00D4, 0x0001, 0x0000, + 0x00D5, 0x0001, 0x0000, 0x00D6, 0x0001, 0x0000, 0x00D7, 0x0053, + 0x0053, 0x0000, 0x091C, 0x0001, 0x0000, 0x00D8, 0x0049, 0x0050, + 0x0000, 0x092A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x092D, + 0x0930, 0x0001, 0x0000, 0x00D9, 0x0001, 0x0000, 0x00DA, 0x0001, + 0x0000, 0x00DB, 0x0049, 0x0053, 0x0000, 0x0941, 0x0000, 0x0000, + 0x0000, 0x0944, 0x0000, 0x0000, 0x0000, 0x0000, 0x0947, 0x094A, + 0x0001, 0x0000, 0x00DC, 0x0001, 0x0000, 0x00DD, 0x0001, 0x0000, + 0x00DE, 0x0001, 0x0000, 0x00DF, 0x0044, 0x0053, 0x0000, 0x0960, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0963, 0x0966, 0x0001, + 0x0000, 0x00E0, 0x0001, 0x0000, 0x00E1, 0x0001, 0x0000, 0x00E2, + 0x0041, 0x0057, 0x0000, 0x0983, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0986, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0989, 0x0000, 0x098C, 0x098F, 0x0000, 0x0000, + 0x0000, 0x0992, 0x0001, 0x0000, 0x00E3, 0x0001, 0x0000, 0x00E4, + 0x0001, 0x0000, 0x00E5, 0x0001, 0x0000, 0x00E6, 0x0001, 0x0000, + 0x00E7, 0x0001, 0x0000, 0x00E8, 0x0048, 0x0059, 0x0000, 0x09AA, + 0x0000, 0x0000, 0x0000, 0x0000, 0x09AD, 0x0000, 0x0000, 0x0000, + 0x09B0, 0x0000, 0x09B3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x09B6, 0x0001, 0x0000, 0x00E9, 0x0001, 0x0000, 0x00EA, 0x0001, + 0x0000, 0x00EB, 0x0001, 0x0000, 0x00EC, 0x0001, 0x0000, 0x00ED, + 0x0041, 0x0050, 0x0000, 0x09CC, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x09CF, 0x0001, 0x0000, 0x00EE, 0x0001, 0x0000, + 0x00EF, 0x0048, 0x0053, 0x0000, 0x09E1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x09E4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x09E7, + 0x0001, 0x0000, 0x00F0, 0x0001, 0x0000, 0x00F1, 0x0001, 0x0000, + 0x00F2, 0x0043, 0x0053, 0x0000, 0x09FE, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0A14, 0x0000, + 0x0A2A, 0x0000, 0x0000, 0x0000, 0x0A31, 0x0041, 0x0049, 0x0000, + 0x0A0A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0A11, 0x0050, 0x0050, 0x0000, 0x0A0E, 0x0001, 0x0000, 0x00F3, + 0x0001, 0x0000, 0x00F4, 0x0049, 0x0052, 0x0000, 0x0A21, 0x0000, + 0x0000, 0x0000, 0x0A24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0A27, + 0x0001, 0x0000, 0x00F5, 0x0001, 0x0000, 0x00F6, 0x0001, 0x0000, + 0x00F7, 0x0049, 0x0049, 0x0000, 0x0A2E, 0x0001, 0x0000, 0x00F8, + 0x004E, 0x004E, 0x0000, 0x0A35, 0x0001, 0x0000, 0x00F9, 0x0042, + 0x0052, 0x0000, 0x0A4C, 0x0A60, 0x0A78, 0x0000, 0x0A83, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0A8A, 0x0000, 0x0000, 0x0000, + 0x0A9D, 0x0000, 0x0AA4, 0x0043, 0x004D, 0x0000, 0x0A5A, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0A5D, 0x0001, 0x0000, 0x00FA, 0x0001, 0x0000, 0x00FB, 0x0046, + 0x004C, 0x0000, 0x0A6A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0A6D, 0x0001, 0x0000, 0x00FC, 0x004F, 0x004F, 0x0000, 0x0A71, + 0x004B, 0x004B, 0x0000, 0x0A75, 0x0001, 0x0000, 0x00FD, 0x0053, + 0x0053, 0x0000, 0x0A7C, 0x0052, 0x0052, 0x0000, 0x0A80, 0x0001, + 0x0000, 0x00FE, 0x0043, 0x0043, 0x0000, 0x0A87, 0x0001, 0x0000, + 0x00FF, 0x0052, 0x0053, 0x0000, 0x0A8F, 0x0A96, 0x0052, 0x0052, + 0x0000, 0x0A93, 0x0001, 0x0000, 0x0100, 0x0044, 0x0044, 0x0000, + 0x0A9A, 0x0001, 0x0000, 0x0101, 0x0052, 0x0052, 0x0000, 0x0AA1, + 0x0001, 0x0000, 0x0102, 0x0054, 0x0054, 0x0000, 0x0AA8, 0x0053, + 0x0053, 0x0000, 0x0AAC, 0x0001, 0x0000, 0x0103, 0x0041, 0x0056, + 0x0000, 0x0AC8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0ACB, 0x0ACE, 0x0000, 0x0000, 0x0AD5, 0x0001, + 0x0000, 0x0104, 0x0001, 0x0000, 0x0105, 0x0043, 0x0043, 0x0106, + 0x0AD2, 0x0001, 0x0000, 0x0107, 0x0031, 0x0031, 0x0000, 0x0AD9, + 0x0038, 0x0038, 0x0000, 0x0ADD, 0x0041, 0x0053, 0x0000, 0x0AF3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0AFA, 0x0000, + 0x0AFD, 0x0B00, 0x004D, 0x004D, 0x0000, 0x0AF7, 0x0001, 0x0000, + 0x0108, 0x0001, 0x0000, 0x0109, 0x0001, 0x0000, 0x010A, 0x0001, + 0x0000, 0x010B, 0x0043, 0x0053, 0x0000, 0x0B17, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0B1E, 0x0000, 0x0000, 0x0000, 0x0B25, + 0x0000, 0x0000, 0x0000, 0x0B44, 0x0000, 0x0B4B, 0x0057, 0x0057, + 0x0000, 0x0B1B, 0x0001, 0x0000, 0x010C, 0x0047, 0x0047, 0x0000, + 0x0B22, 0x0001, 0x0000, 0x010D, 0x0048, 0x0048, 0x0000, 0x0B29, + 0x0046, 0x0054, 0x010E, 0x0B3B, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0B3E, + 0x0000, 0x0B41, 0x0001, 0x0000, 0x010F, 0x0001, 0x0000, 0x0110, + 0x0001, 0x0000, 0x0111, 0x0043, 0x0043, 0x0000, 0x0B48, 0x0001, + 0x0000, 0x0112, 0x0053, 0x0053, 0x0000, 0x0B4F, 0x0001, 0x0000, + 0x0113, 0x0041, 0x0056, 0x0000, 0x0B6B, 0x0000, 0x0B90, 0x0B9B, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0BB7, 0x0000, 0x0BC2, + 0x0000, 0x0BD1, 0x0043, 0x0054, 0x0000, 0x0B80, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0B83, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0B86, 0x0000, 0x0B8D, 0x0001, + 0x0000, 0x0114, 0x0001, 0x0000, 0x0115, 0x0052, 0x0052, 0x0116, + 0x0B8A, 0x0001, 0x0000, 0x0117, 0x0001, 0x0000, 0x0118, 0x0052, + 0x0052, 0x0000, 0x0B94, 0x0052, 0x0052, 0x0000, 0x0B98, 0x0001, + 0x0000, 0x0119, 0x0043, 0x0052, 0x0000, 0x0BAE, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0BB1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0BB4, 0x0001, 0x0000, 0x011A, + 0x0001, 0x0000, 0x011B, 0x0001, 0x0000, 0x011C, 0x0053, 0x0053, + 0x0000, 0x0BBB, 0x0043, 0x0043, 0x0000, 0x0BBF, 0x0001, 0x0000, + 0x011D, 0x0043, 0x0048, 0x0000, 0x0BCB, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0BCE, 0x0001, 0x0000, 0x011E, 0x0001, 0x0000, 0x011F, + 0x0043, 0x0054, 0x0000, 0x0BE6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0BE9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0BEC, 0x0000, 0x0BF3, 0x0001, 0x0000, 0x0120, + 0x0001, 0x0000, 0x0121, 0x0052, 0x0052, 0x0122, 0x0BF0, 0x0001, + 0x0000, 0x0123, 0x0001, 0x0000, 0x0124, 0x0041, 0x0054, 0x0000, + 0x0C0D, 0x0000, 0x0000, 0x0C27, 0x0C32, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0C86, 0x0C91, 0x0CA0, 0x0000, 0x0000, + 0x0000, 0x0CAB, 0x0CC2, 0x0CD1, 0x0044, 0x004C, 0x0000, 0x0C19, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C20, + 0x0052, 0x0052, 0x0000, 0x0C1D, 0x0001, 0x0000, 0x0125, 0x0053, + 0x0053, 0x0126, 0x0C24, 0x0001, 0x0000, 0x0127, 0x004C, 0x004C, + 0x0000, 0x0C2B, 0x0053, 0x0053, 0x0000, 0x0C2F, 0x0001, 0x0000, + 0x0128, 0x0031, 0x0052, 0x0000, 0x0C57, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0C66, 0x0000, 0x0C7B, 0x0034, 0x0034, + 0x0000, 0x0C5B, 0x0030, 0x0031, 0x0000, 0x0C60, 0x0C63, 0x0001, + 0x0000, 0x0129, 0x0001, 0x0000, 0x012A, 0x0041, 0x0044, 0x0000, + 0x0C6D, 0x0000, 0x0000, 0x0C74, 0x004C, 0x004C, 0x0000, 0x0C71, + 0x0001, 0x0000, 0x012B, 0x004C, 0x004C, 0x0000, 0x0C78, 0x0001, + 0x0000, 0x012C, 0x0044, 0x0044, 0x0000, 0x0C7F, 0x004C, 0x004C, + 0x0000, 0x0C83, 0x0001, 0x0000, 0x012D, 0x0044, 0x0044, 0x0000, + 0x0C8A, 0x004C, 0x004C, 0x0000, 0x0C8E, 0x0001, 0x0000, 0x012E, + 0x004F, 0x004F, 0x0000, 0x0C95, 0x0044, 0x0044, 0x012F, 0x0C99, + 0x0045, 0x0045, 0x0000, 0x0C9D, 0x0001, 0x0000, 0x0130, 0x0055, + 0x0055, 0x0000, 0x0CA4, 0x004D, 0x004D, 0x0000, 0x0CA8, 0x0001, + 0x0000, 0x0131, 0x0044, 0x0045, 0x0000, 0x0CB0, 0x0CBB, 0x004C, + 0x004C, 0x0000, 0x0CB4, 0x0053, 0x0053, 0x0132, 0x0CB8, 0x0001, + 0x0000, 0x0133, 0x0053, 0x0053, 0x0000, 0x0CBF, 0x0001, 0x0000, + 0x0134, 0x0045, 0x0045, 0x0000, 0x0CC6, 0x004C, 0x004C, 0x0000, + 0x0CCA, 0x0046, 0x0046, 0x0000, 0x0CCE, 0x0001, 0x0000, 0x0135, + 0x0045, 0x0045, 0x0000, 0x0CD5, 0x0052, 0x0052, 0x0000, 0x0CD9, + 0x0001, 0x0000, 0x0136, 0x0041, 0x0058, 0x0000, 0x0CF7, 0x0D02, + 0x0D09, 0x0D18, 0x0D3F, 0x0000, 0x0D46, 0x0D5D, 0x0D64, 0x0000, + 0x0000, 0x0D72, 0x0000, 0x0D79, 0x0000, 0x0D80, 0x0000, 0x0D97, + 0x0DC5, 0x0DE5, 0x0000, 0x0000, 0x0000, 0x0E19, 0x0043, 0x0043, + 0x0000, 0x0CFB, 0x0052, 0x0052, 0x0137, 0x0CFF, 0x0001, 0x0000, + 0x0138, 0x0054, 0x0054, 0x0000, 0x0D06, 0x0001, 0x0000, 0x0139, + 0x0049, 0x0049, 0x0000, 0x0D0D, 0x0044, 0x0044, 0x0000, 0x0D11, + 0x0052, 0x0052, 0x013A, 0x0D15, 0x0001, 0x0000, 0x013B, 0x0049, + 0x0058, 0x0000, 0x0D2B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0D36, 0x0000, 0x0D39, 0x0000, 0x0000, + 0x0000, 0x0D3C, 0x0044, 0x0044, 0x0000, 0x0D2F, 0x0052, 0x0052, + 0x013C, 0x0D33, 0x0001, 0x0000, 0x013D, 0x0001, 0x0000, 0x013E, + 0x0001, 0x0000, 0x013F, 0x0001, 0x0000, 0x0140, 0x004D, 0x004D, + 0x0000, 0x0D43, 0x0001, 0x0000, 0x0141, 0x004D, 0x0054, 0x0000, + 0x0D51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0D54, 0x0D57, 0x0D5A, + 0x0001, 0x0000, 0x0142, 0x0001, 0x0000, 0x0143, 0x0001, 0x0000, + 0x0144, 0x0001, 0x0000, 0x0145, 0x0043, 0x0043, 0x0000, 0x0D61, + 0x0001, 0x0000, 0x0146, 0x0050, 0x0054, 0x0000, 0x0D6C, 0x0000, + 0x0000, 0x0000, 0x0D6F, 0x0001, 0x0000, 0x0147, 0x0001, 0x0000, + 0x0148, 0x0053, 0x0053, 0x0000, 0x0D76, 0x0001, 0x0000, 0x0149, + 0x0048, 0x0048, 0x0000, 0x0D7D, 0x0001, 0x0000, 0x014A, 0x0048, + 0x0052, 0x0000, 0x0D8E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0D91, 0x0000, 0x0D94, 0x0001, 0x0000, 0x014B, + 0x0001, 0x0000, 0x014C, 0x0001, 0x0000, 0x014D, 0x0041, 0x0058, + 0x0000, 0x0DB2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0DB5, 0x0000, 0x0000, 0x0DBC, 0x0000, 0x0DBF, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0DC2, 0x0001, 0x0000, 0x014E, 0x0044, 0x0044, 0x0000, 0x0DB9, + 0x0001, 0x0000, 0x014F, 0x0001, 0x0000, 0x0150, 0x0001, 0x0000, + 0x0151, 0x0001, 0x0000, 0x0152, 0x0044, 0x0050, 0x0000, 0x0DD5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0DD8, 0x0000, 0x0000, 0x0000, + 0x0DDF, 0x0000, 0x0000, 0x0DE2, 0x0001, 0x0000, 0x0153, 0x0044, + 0x0044, 0x0000, 0x0DDC, 0x0001, 0x0000, 0x0154, 0x0001, 0x0000, + 0x0155, 0x0001, 0x0000, 0x0156, 0x0041, 0x0058, 0x0000, 0x0E00, + 0x0000, 0x0000, 0x0E03, 0x0E06, 0x0000, 0x0000, 0x0E0D, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0E10, 0x0E13, 0x0000, 0x0000, 0x0000, 0x0000, 0x0E16, 0x0001, + 0x0000, 0x0157, 0x0001, 0x0000, 0x0158, 0x0052, 0x0052, 0x0000, + 0x0E0A, 0x0001, 0x0000, 0x0159, 0x0001, 0x0000, 0x015A, 0x0001, + 0x0000, 0x015B, 0x0001, 0x0000, 0x015C, 0x0001, 0x0000, 0x015D, + 0x0054, 0x0054, 0x0000, 0x0E1D, 0x0001, 0x0000, 0x015E, 0x0042, + 0x0053, 0x015F, 0x0E35, 0x0E40, 0x0E82, 0x0E9C, 0x0EA7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0EB2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0EBD, 0x0000, 0x0EE1, 0x0EEC, 0x0041, 0x0041, 0x0000, 0x0E39, + 0x0047, 0x0047, 0x0000, 0x0E3D, 0x0001, 0x0000, 0x0160, 0x0044, + 0x0058, 0x0000, 0x0E58, 0x0000, 0x0000, 0x0000, 0x0E5F, 0x0E66, + 0x0000, 0x0000, 0x0E6D, 0x0000, 0x0000, 0x0000, 0x0E74, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0E7B, 0x0041, + 0x0041, 0x0000, 0x0E5C, 0x0001, 0x0000, 0x0161, 0x0047, 0x0047, + 0x0000, 0x0E63, 0x0001, 0x0000, 0x0162, 0x0044, 0x0044, 0x0000, + 0x0E6A, 0x0001, 0x0000, 0x0163, 0x004B, 0x004B, 0x0000, 0x0E71, + 0x0001, 0x0000, 0x0164, 0x004E, 0x004E, 0x0000, 0x0E78, 0x0001, + 0x0000, 0x0165, 0x0046, 0x0046, 0x0000, 0x0E7F, 0x0001, 0x0000, + 0x0166, 0x0041, 0x0049, 0x0000, 0x0E8E, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0E95, 0x0043, 0x0043, 0x0000, + 0x0E92, 0x0001, 0x0000, 0x0167, 0x0052, 0x0052, 0x0000, 0x0E99, + 0x0001, 0x0000, 0x0168, 0x0043, 0x0043, 0x0000, 0x0EA0, 0x0052, + 0x0052, 0x0000, 0x0EA4, 0x0001, 0x0000, 0x0169, 0x004F, 0x004F, + 0x0000, 0x0EAB, 0x004E, 0x004E, 0x0000, 0x0EAF, 0x0001, 0x0000, + 0x016A, 0x0050, 0x0050, 0x0000, 0x0EB6, 0x0044, 0x0044, 0x0000, + 0x0EBA, 0x0001, 0x0000, 0x016B, 0x0042, 0x0054, 0x0000, 0x0ED3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0EDA, 0x0041, 0x0041, 0x0000, 0x0ED7, 0x0001, 0x0000, + 0x016C, 0x0048, 0x0048, 0x0000, 0x0EDE, 0x0001, 0x0000, 0x016D, + 0x004C, 0x004C, 0x0000, 0x0EE5, 0x004B, 0x004B, 0x0000, 0x0EE9, + 0x0001, 0x0000, 0x016E, 0x0034, 0x0054, 0x0000, 0x0F10, 0x0F1B, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0F3C, 0x0035, + 0x0036, 0x0000, 0x0F15, 0x0F18, 0x0001, 0x0000, 0x016F, 0x0001, + 0x0000, 0x0170, 0x0030, 0x0038, 0x0000, 0x0F27, 0x0F2A, 0x0F2D, + 0x0F30, 0x0F33, 0x0000, 0x0000, 0x0F36, 0x0F39, 0x0001, 0x0000, + 0x0171, 0x0001, 0x0000, 0x0172, 0x0001, 0x0000, 0x0173, 0x0001, + 0x0000, 0x0174, 0x0001, 0x0000, 0x0175, 0x0001, 0x0000, 0x0176, + 0x0001, 0x0000, 0x0177, 0x004C, 0x004C, 0x0000, 0x0F40, 0x0001, + 0x0000, 0x0178, 0x0001, 0x0000, 0x0179, 0x0001, 0x0000, 0x017A, + 0x0001, 0x0000, 0x017B, 0x0001, 0x0000, 0x017C, 0x0001, 0x0000, + 0x017D, 0x0001, 0x0000, 0x017E, 0x0001, 0x0000, 0x017F, 0x0001, + 0x0000, 0x0180, 0x0001, 0x0000, 0x0181, 0x0001, 0x0000, 0x0182, + 0x0001, 0x0000, 0x0183, 0x0030, 0x0038, 0x0000, 0x0F70, 0x0F73, + 0x0000, 0x0F7A, 0x0F7D, 0x0F80, 0x0F83, 0x0F86, 0x0F89, 0x0001, + 0x0000, 0x0184, 0x0030, 0x0030, 0x0000, 0x0F77, 0x0001, 0x0000, + 0x0185, 0x0001, 0x0000, 0x0186, 0x0001, 0x0000, 0x0187, 0x0001, + 0x0000, 0x0188, 0x0001, 0x0000, 0x0189, 0x0001, 0x0000, 0x018A, + 0x0001, 0x0000, 0x018B, 0x0001, 0x0000, 0x018C, 0x0001, 0x0000, + 0x018D, 0x0001, 0x0000, 0x018E, 0x0001, 0x0000, 0x018F, +}; + +#define COMMAND_TRIE_LEN 3991 Added: freeswitch/trunk/libs/spandsp/src/generated/v17rx_fixed_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v17rx_fixed_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,11144 @@ +#define RX_PULSESHAPER_GAIN 32767.000000f +#define RX_PULSESHAPER_COEFF_SETS 192 +static const int16_t rx_pulseshaper_re[RX_PULSESHAPER_COEFF_SETS][27] = +{ + { + -67, /* Filter 0 */ + 11, + -108, + 0, + -79, + -50, + -127, + -238, + -102, + -1044, + 588, + -1452, + 1024, + 10585, + 1655, + -6227, + -693, + -1049, + -912, + 85, + -361, + 44, + -162, + 0, + -121, + -34, + -33 + }, + { + -67, /* Filter 1 */ + 11, + -109, + 0, + -80, + -50, + -129, + -238, + -106, + -1048, + 585, + -1473, + 1028, + 10597, + 1654, + -6201, + -683, + -1054, + -909, + 82, + -362, + 43, + -162, + 0, + -121, + -33, + -34 + }, + { + -67, /* Filter 2 */ + 11, + -110, + 0, + -82, + -50, + -131, + -238, + -110, + -1051, + 582, + -1495, + 1032, + 10609, + 1652, + -6176, + -673, + -1059, + -905, + 79, + -362, + 43, + -163, + 0, + -122, + -33, + -34 + }, + { + -68, /* Filter 3 */ + 11, + -110, + 0, + -83, + -50, + -133, + -238, + -114, + -1055, + 579, + -1516, + 1036, + 10621, + 1650, + -6150, + -663, + -1065, + -901, + 76, + -362, + 42, + -163, + 0, + -122, + -33, + -35 + }, + { + -68, /* Filter 4 */ + 10, + -111, + 0, + -84, + -49, + -135, + -238, + -118, + -1059, + 576, + -1538, + 1041, + 10633, + 1648, + -6124, + -653, + -1070, + -898, + 72, + -362, + 41, + -164, + 0, + -123, + -33, + -36 + }, + { + -68, /* Filter 5 */ + 10, + -111, + 0, + -85, + -49, + -137, + -237, + -121, + -1063, + 573, + -1559, + 1045, + 10645, + 1646, + -6099, + -643, + -1075, + -894, + 69, + -362, + 40, + -164, + 0, + -124, + -33, + -36 + }, + { + -68, /* Filter 6 */ + 10, + -112, + 0, + -86, + -49, + -139, + -237, + -125, + -1067, + 570, + -1581, + 1049, + 10656, + 1644, + -6073, + -633, + -1080, + -891, + 66, + -363, + 40, + -165, + 0, + -124, + -32, + -37 + }, + { + -68, /* Filter 7 */ + 10, + -113, + 0, + -87, + -49, + -141, + -237, + -129, + -1071, + 567, + -1602, + 1053, + 10668, + 1642, + -6047, + -623, + -1084, + -887, + 63, + -363, + 39, + -165, + 0, + -125, + -32, + -37 + }, + { + -69, /* Filter 8 */ + 10, + -113, + 0, + -88, + -49, + -143, + -237, + -133, + -1075, + 563, + -1624, + 1057, + 10679, + 1640, + -6021, + -613, + -1089, + -884, + 60, + -363, + 38, + -166, + 0, + -125, + -32, + -38 + }, + { + -69, /* Filter 9 */ + 9, + -114, + 0, + -89, + -48, + -145, + -236, + -137, + -1078, + 560, + -1646, + 1062, + 10690, + 1638, + -5995, + -603, + -1094, + -880, + 57, + -363, + 38, + -166, + 0, + -126, + -32, + -38 + }, + { + -69, /* Filter 10 */ + 9, + -115, + 0, + -91, + -48, + -147, + -236, + -141, + -1082, + 557, + -1668, + 1066, + 10701, + 1636, + -5970, + -593, + -1099, + -876, + 54, + -363, + 37, + -167, + 0, + -126, + -31, + -39 + }, + { + -69, /* Filter 11 */ + 9, + -115, + 0, + -92, + -48, + -149, + -236, + -145, + -1086, + 553, + -1690, + 1070, + 10712, + 1633, + -5944, + -583, + -1103, + -872, + 51, + -363, + 36, + -167, + 0, + -127, + -31, + -39 + }, + { + -69, /* Filter 12 */ + 9, + -116, + 0, + -93, + -48, + -151, + -235, + -149, + -1089, + 550, + -1712, + 1074, + 10723, + 1631, + -5918, + -573, + -1108, + -869, + 48, + -363, + 36, + -168, + 0, + -128, + -31, + -40 + }, + { + -70, /* Filter 13 */ + 9, + -116, + 0, + -94, + -48, + -153, + -235, + -153, + -1093, + 546, + -1734, + 1078, + 10733, + 1629, + -5892, + -564, + -1112, + -865, + 45, + -363, + 35, + -168, + 0, + -128, + -31, + -40 + }, + { + -70, /* Filter 14 */ + 8, + -117, + 0, + -95, + -47, + -155, + -235, + -157, + -1097, + 543, + -1756, + 1082, + 10744, + 1627, + -5866, + -554, + -1117, + -861, + 42, + -363, + 34, + -169, + 0, + -129, + -31, + -41 + }, + { + -70, /* Filter 15 */ + 8, + -117, + 0, + -96, + -47, + -157, + -234, + -161, + -1100, + 539, + -1778, + 1086, + 10755, + 1625, + -5840, + -544, + -1121, + -858, + 39, + -363, + 34, + -169, + 0, + -129, + -30, + -41 + }, + { + -70, /* Filter 16 */ + 8, + -118, + 0, + -97, + -47, + -159, + -234, + -165, + -1104, + 536, + -1800, + 1091, + 10765, + 1623, + -5814, + -535, + -1125, + -854, + 36, + -363, + 33, + -170, + 0, + -130, + -30, + -42 + }, + { + -70, /* Filter 17 */ + 8, + -119, + 0, + -98, + -47, + -161, + -233, + -169, + -1107, + 532, + -1822, + 1095, + 10775, + 1620, + -5788, + -525, + -1130, + -850, + 33, + -362, + 32, + -170, + 0, + -130, + -30, + -42 + }, + { + -70, /* Filter 18 */ + 8, + -119, + 0, + -99, + -46, + -163, + -233, + -173, + -1111, + 529, + -1845, + 1099, + 10785, + 1618, + -5762, + -515, + -1134, + -846, + 30, + -362, + 32, + -170, + 0, + -131, + -30, + -43 + }, + { + -70, /* Filter 19 */ + 7, + -120, + 0, + -100, + -46, + -165, + -233, + -177, + -1114, + 525, + -1867, + 1103, + 10795, + 1616, + -5736, + -506, + -1138, + -842, + 27, + -362, + 31, + -171, + 0, + -131, + -30, + -43 + }, + { + -71, /* Filter 20 */ + 7, + -120, + 0, + -101, + -46, + -166, + -232, + -181, + -1118, + 521, + -1889, + 1107, + 10805, + 1614, + -5710, + -496, + -1142, + -838, + 25, + -362, + 30, + -171, + 0, + -132, + -29, + -44 + }, + { + -71, /* Filter 21 */ + 7, + -121, + 0, + -102, + -46, + -168, + -232, + -185, + -1121, + 517, + -1912, + 1111, + 10815, + 1611, + -5684, + -487, + -1146, + -835, + 22, + -362, + 30, + -171, + 0, + -132, + -29, + -44 + }, + { + -71, /* Filter 22 */ + 7, + -121, + 0, + -104, + -45, + -170, + -231, + -189, + -1125, + 514, + -1934, + 1115, + 10824, + 1609, + -5658, + -477, + -1150, + -831, + 19, + -362, + 29, + -172, + 0, + -132, + -29, + -45 + }, + { + -71, /* Filter 23 */ + 6, + -122, + 0, + -105, + -45, + -172, + -231, + -193, + -1128, + 510, + -1957, + 1119, + 10834, + 1607, + -5632, + -468, + -1154, + -827, + 16, + -361, + 28, + -172, + 0, + -133, + -29, + -45 + }, + { + -71, /* Filter 24 */ + 6, + -122, + 0, + -106, + -45, + -174, + -230, + -197, + -1131, + 506, + -1980, + 1123, + 10843, + 1605, + -5606, + -459, + -1157, + -823, + 13, + -361, + 28, + -172, + 0, + -133, + -28, + -46 + }, + { + -71, /* Filter 25 */ + 6, + -123, + 0, + -107, + -44, + -176, + -230, + -201, + -1135, + 502, + -2002, + 1128, + 10852, + 1602, + -5580, + -449, + -1161, + -819, + 10, + -361, + 27, + -173, + 0, + -134, + -28, + -46 + }, + { + -71, /* Filter 26 */ + 6, + -124, + 0, + -108, + -44, + -178, + -229, + -205, + -1138, + 498, + -2025, + 1132, + 10861, + 1600, + -5554, + -440, + -1165, + -815, + 7, + -361, + 26, + -173, + 0, + -134, + -28, + -47 + }, + { + -72, /* Filter 27 */ + 6, + -124, + 0, + -109, + -44, + -180, + -229, + -209, + -1141, + 494, + -2048, + 1136, + 10870, + 1597, + -5528, + -431, + -1168, + -811, + 5, + -360, + 26, + -173, + 0, + -135, + -28, + -47 + }, + { + -72, /* Filter 28 */ + 5, + -125, + 0, + -110, + -44, + -182, + -228, + -213, + -1144, + 490, + -2071, + 1140, + 10879, + 1595, + -5502, + -421, + -1172, + -807, + 2, + -360, + 25, + -173, + 0, + -135, + -27, + -48 + }, + { + -72, /* Filter 29 */ + 5, + -125, + 0, + -111, + -43, + -184, + -227, + -218, + -1148, + 486, + -2094, + 1144, + 10888, + 1593, + -5476, + -412, + -1175, + -803, + 0, + -360, + 24, + -174, + 0, + -135, + -27, + -48 + }, + { + -72, /* Filter 30 */ + 5, + -126, + 0, + -112, + -43, + -186, + -227, + -222, + -1151, + 482, + -2117, + 1148, + 10896, + 1590, + -5450, + -403, + -1179, + -799, + -3, + -359, + 24, + -174, + 0, + -136, + -27, + -49 + }, + { + -72, /* Filter 31 */ + 5, + -126, + 0, + -113, + -43, + -188, + -226, + -226, + -1154, + 478, + -2140, + 1152, + 10905, + 1588, + -5423, + -394, + -1182, + -795, + -5, + -359, + 23, + -174, + 0, + -136, + -27, + -49 + }, + { + -72, /* Filter 32 */ + 4, + -127, + 0, + -114, + -42, + -189, + -225, + -230, + -1157, + 473, + -2163, + 1156, + 10913, + 1585, + -5397, + -385, + -1185, + -791, + -8, + -358, + 22, + -174, + 0, + -137, + -27, + -50 + }, + { + -72, /* Filter 33 */ + 4, + -127, + 0, + -115, + -42, + -191, + -225, + -234, + -1160, + 469, + -2186, + 1160, + 10922, + 1583, + -5371, + -376, + -1188, + -787, + -11, + -358, + 22, + -174, + 0, + -137, + -26, + -50 + }, + { + -72, /* Filter 34 */ + 4, + -128, + 0, + -116, + -42, + -193, + -224, + -238, + -1163, + 465, + -2209, + 1164, + 10930, + 1580, + -5345, + -366, + -1192, + -783, + -14, + -358, + 21, + -175, + 0, + -137, + -26, + -51 + }, + { + -72, /* Filter 35 */ + 4, + -128, + 0, + -117, + -41, + -195, + -223, + -243, + -1166, + 461, + -2232, + 1168, + 10938, + 1578, + -5319, + -357, + -1195, + -779, + -16, + -357, + 20, + -175, + 0, + -138, + -26, + -51 + }, + { + -72, /* Filter 36 */ + 4, + -129, + 0, + -118, + -41, + -197, + -223, + -247, + -1169, + 456, + -2255, + 1172, + 10945, + 1575, + -5293, + -348, + -1198, + -774, + -19, + -357, + 20, + -175, + 0, + -138, + -26, + -51 + }, + { + -73, /* Filter 37 */ + 3, + -129, + 0, + -119, + -41, + -199, + -222, + -251, + -1172, + 452, + -2279, + 1176, + 10953, + 1573, + -5266, + -339, + -1201, + -770, + -22, + -356, + 19, + -175, + 0, + -138, + -25, + -52 + }, + { + -73, /* Filter 38 */ + 3, + -129, + 0, + -120, + -40, + -201, + -221, + -255, + -1175, + 447, + -2302, + 1180, + 10961, + 1570, + -5240, + -331, + -1204, + -766, + -24, + -356, + 18, + -175, + 0, + -139, + -25, + -52 + }, + { + -73, /* Filter 39 */ + 3, + -130, + 0, + -121, + -40, + -203, + -221, + -260, + -1177, + 443, + -2326, + 1184, + 10968, + 1568, + -5214, + -322, + -1206, + -762, + -27, + -355, + 18, + -175, + 0, + -139, + -25, + -53 + }, + { + -73, /* Filter 40 */ + 3, + -130, + 0, + -122, + -40, + -205, + -220, + -264, + -1180, + 439, + -2349, + 1188, + 10976, + 1565, + -5188, + -313, + -1209, + -758, + -29, + -355, + 17, + -175, + 0, + -139, + -25, + -53 + }, + { + -73, /* Filter 41 */ + 2, + -131, + 0, + -123, + -39, + -206, + -219, + -268, + -1183, + 434, + -2373, + 1192, + 10983, + 1562, + -5162, + -304, + -1212, + -754, + -32, + -354, + 16, + -175, + 0, + -140, + -24, + -54 + }, + { + -73, /* Filter 42 */ + 2, + -131, + 0, + -123, + -39, + -208, + -218, + -272, + -1186, + 429, + -2396, + 1196, + 10990, + 1560, + -5136, + -295, + -1215, + -750, + -35, + -353, + 16, + -176, + 0, + -140, + -24, + -54 + }, + { + -73, /* Filter 43 */ + 2, + -132, + 0, + -124, + -39, + -210, + -217, + -277, + -1188, + 425, + -2420, + 1200, + 10997, + 1557, + -5109, + -287, + -1217, + -745, + -37, + -353, + 15, + -176, + 0, + -140, + -24, + -54 + }, + { + -73, /* Filter 44 */ + 2, + -132, + 0, + -125, + -38, + -212, + -217, + -281, + -1191, + 420, + -2443, + 1204, + 11004, + 1555, + -5083, + -278, + -1220, + -741, + -40, + -352, + 14, + -176, + 0, + -141, + -24, + -55 + }, + { + -73, /* Filter 45 */ + 1, + -133, + 0, + -126, + -38, + -214, + -216, + -285, + -1194, + 415, + -2467, + 1208, + 11010, + 1552, + -5057, + -269, + -1222, + -737, + -42, + -352, + 14, + -176, + 0, + -141, + -23, + -55 + }, + { + -73, /* Filter 46 */ + 1, + -133, + 0, + -127, + -38, + -216, + -215, + -289, + -1196, + 411, + -2491, + 1212, + 11017, + 1549, + -5031, + -261, + -1225, + -733, + -45, + -351, + 13, + -176, + 0, + -141, + -23, + -56 + }, + { + -73, /* Filter 47 */ + 1, + -133, + 0, + -128, + -37, + -217, + -214, + -294, + -1199, + 406, + -2515, + 1216, + 11023, + 1546, + -5004, + -252, + -1227, + -729, + -47, + -350, + 13, + -176, + 0, + -142, + -23, + -56 + }, + { + -73, /* Filter 48 */ + 1, + -134, + 0, + -129, + -37, + -219, + -213, + -298, + -1201, + 401, + -2539, + 1220, + 11030, + 1544, + -4978, + -243, + -1229, + -724, + -50, + -349, + 12, + -176, + 0, + -142, + -23, + -56 + }, + { + -73, /* Filter 49 */ + 0, + -134, + 0, + -130, + -37, + -221, + -212, + -302, + -1204, + 396, + -2563, + 1223, + 11036, + 1541, + -4952, + -235, + -1231, + -720, + -52, + -349, + 11, + -176, + 0, + -142, + -22, + -57 + }, + { + -73, /* Filter 50 */ + 0, + -135, + 0, + -131, + -36, + -223, + -211, + -307, + -1206, + 391, + -2586, + 1227, + 11042, + 1538, + -4926, + -226, + -1234, + -716, + -55, + -348, + 11, + -176, + 0, + -142, + -22, + -57 + }, + { + -73, /* Filter 51 */ + 0, + -135, + 0, + -132, + -36, + -225, + -210, + -311, + -1208, + 386, + -2610, + 1231, + 11048, + 1536, + -4900, + -218, + -1236, + -711, + -57, + -347, + 10, + -176, + 0, + -143, + -22, + -57 + }, + { + -73, /* Filter 52 */ + 0, + -135, + 0, + -133, + -35, + -226, + -209, + -315, + -1211, + 381, + -2635, + 1235, + 11054, + 1533, + -4873, + -209, + -1238, + -707, + -60, + -347, + 9, + -176, + 0, + -143, + -22, + -58 + }, + { + -73, /* Filter 53 */ + 0, + -136, + 0, + -133, + -35, + -228, + -208, + -320, + -1213, + 376, + -2659, + 1239, + 11059, + 1530, + -4847, + -201, + -1240, + -703, + -62, + -346, + 9, + -176, + 0, + -143, + -21, + -58 + }, + { + -73, /* Filter 54 */ + 0, + -136, + 0, + -134, + -35, + -230, + -207, + -324, + -1215, + 371, + -2683, + 1243, + 11065, + 1527, + -4821, + -193, + -1242, + -699, + -64, + -345, + 8, + -176, + 0, + -143, + -21, + -59 + }, + { + -73, /* Filter 55 */ + 0, + -136, + 0, + -135, + -34, + -232, + -206, + -329, + -1218, + 366, + -2707, + 1247, + 11070, + 1524, + -4795, + -184, + -1243, + -694, + -67, + -344, + 7, + -176, + 0, + -143, + -21, + -59 + }, + { + -73, /* Filter 56 */ + 0, + -137, + 0, + -136, + -34, + -234, + -205, + -333, + -1220, + 361, + -2731, + 1251, + 11076, + 1521, + -4769, + -176, + -1245, + -690, + -69, + -343, + 7, + -175, + 0, + -144, + -21, + -59 + }, + { + -73, /* Filter 57 */ + -1, + -137, + 0, + -137, + -33, + -235, + -204, + -337, + -1222, + 356, + -2755, + 1254, + 11081, + 1519, + -4742, + -168, + -1247, + -686, + -71, + -342, + 6, + -175, + 0, + -144, + -20, + -60 + }, + { + -73, /* Filter 58 */ + -1, + -138, + 0, + -138, + -33, + -237, + -203, + -342, + -1224, + 351, + -2780, + 1258, + 11086, + 1516, + -4716, + -160, + -1249, + -681, + -74, + -342, + 6, + -175, + 0, + -144, + -20, + -60 + }, + { + -73, /* Filter 59 */ + -1, + -138, + 0, + -138, + -33, + -239, + -202, + -346, + -1226, + 345, + -2804, + 1262, + 11091, + 1513, + -4690, + -152, + -1250, + -677, + -76, + -341, + 5, + -175, + 0, + -144, + -20, + -60 + }, + { + -73, /* Filter 60 */ + -1, + -138, + 0, + -139, + -32, + -241, + -201, + -351, + -1228, + 340, + -2828, + 1266, + 11096, + 1510, + -4664, + -143, + -1252, + -673, + -78, + -340, + 4, + -175, + 0, + -144, + -20, + -61 + }, + { + -73, /* Filter 61 */ + -1, + -139, + 0, + -140, + -32, + -242, + -200, + -355, + -1230, + 335, + -2853, + 1270, + 11100, + 1507, + -4638, + -135, + -1253, + -668, + -81, + -339, + 4, + -175, + 0, + -145, + -19, + -61 + }, + { + -73, /* Filter 62 */ + -2, + -139, + 0, + -141, + -31, + -244, + -199, + -359, + -1232, + 329, + -2877, + 1273, + 11105, + 1504, + -4612, + -127, + -1255, + -664, + -83, + -338, + 3, + -175, + 0, + -145, + -19, + -61 + }, + { + -73, /* Filter 63 */ + -2, + -139, + 0, + -142, + -31, + -246, + -198, + -364, + -1234, + 324, + -2902, + 1277, + 11109, + 1501, + -4585, + -119, + -1256, + -659, + -85, + -337, + 3, + -175, + 0, + -145, + -19, + -62 + }, + { + -73, /* Filter 64 */ + -2, + -139, + 0, + -143, + -31, + -248, + -196, + -368, + -1236, + 319, + -2926, + 1281, + 11113, + 1498, + -4559, + -111, + -1258, + -655, + -87, + -336, + 2, + -174, + 0, + -145, + -19, + -62 + }, + { + -73, /* Filter 65 */ + -2, + -140, + 0, + -143, + -30, + -249, + -195, + -373, + -1238, + 313, + -2951, + 1285, + 11117, + 1495, + -4533, + -103, + -1259, + -651, + -90, + -335, + 1, + -174, + 0, + -145, + -18, + -62 + }, + { + -73, /* Filter 66 */ + -3, + -140, + 0, + -144, + -30, + -251, + -194, + -377, + -1239, + 307, + -2976, + 1288, + 11121, + 1492, + -4507, + -95, + -1260, + -646, + -92, + -334, + 1, + -174, + 0, + -145, + -18, + -63 + }, + { + -73, /* Filter 67 */ + -3, + -140, + 0, + -145, + -29, + -253, + -193, + -382, + -1241, + 302, + -3000, + 1292, + 11125, + 1489, + -4481, + -88, + -1261, + -642, + -94, + -333, + 0, + -174, + 0, + -145, + -18, + -63 + }, + { + -73, /* Filter 68 */ + -3, + -141, + 0, + -146, + -29, + -254, + -192, + -386, + -1243, + 296, + -3025, + 1296, + 11129, + 1486, + -4455, + -80, + -1263, + -637, + -96, + -332, + 0, + -174, + 0, + -146, + -18, + -63 + }, + { + -73, /* Filter 69 */ + -3, + -141, + 0, + -146, + -28, + -256, + -190, + -391, + -1245, + 291, + -3050, + 1300, + 11133, + 1483, + -4429, + -72, + -1264, + -633, + -98, + -331, + 0, + -173, + 0, + -146, + -17, + -63 + }, + { + -73, /* Filter 70 */ + -4, + -141, + 0, + -147, + -28, + -258, + -189, + -395, + -1246, + 285, + -3074, + 1303, + 11136, + 1480, + -4403, + -64, + -1265, + -629, + -101, + -330, + -1, + -173, + 0, + -146, + -17, + -64 + }, + { + -73, /* Filter 71 */ + -4, + -141, + 0, + -148, + -28, + -259, + -188, + -399, + -1248, + 279, + -3099, + 1307, + 11140, + 1477, + -4377, + -56, + -1266, + -624, + -103, + -329, + -1, + -173, + 0, + -146, + -17, + -64 + }, + { + -73, /* Filter 72 */ + -4, + -142, + 0, + -149, + -27, + -261, + -187, + -404, + -1249, + 273, + -3124, + 1311, + 11143, + 1474, + -4351, + -49, + -1267, + -620, + -105, + -328, + -2, + -173, + 0, + -146, + -17, + -64 + }, + { + -73, /* Filter 73 */ + -5, + -142, + 0, + -149, + -27, + -263, + -185, + -408, + -1251, + 268, + -3149, + 1314, + 11146, + 1471, + -4325, + -41, + -1267, + -615, + -107, + -327, + -2, + -172, + 0, + -146, + -16, + -65 + }, + { + -73, /* Filter 74 */ + -5, + -142, + 0, + -150, + -26, + -264, + -184, + -413, + -1252, + 262, + -3174, + 1318, + 11149, + 1468, + -4299, + -34, + -1268, + -611, + -109, + -326, + -3, + -172, + 0, + -146, + -16, + -65 + }, + { + -72, /* Filter 75 */ + -5, + -142, + 0, + -151, + -26, + -266, + -183, + -417, + -1254, + 256, + -3199, + 1322, + 11152, + 1465, + -4273, + -26, + -1269, + -606, + -111, + -325, + -4, + -172, + 0, + -146, + -16, + -65 + }, + { + -72, /* Filter 76 */ + -5, + -143, + 0, + -151, + -25, + -268, + -181, + -422, + -1255, + 250, + -3224, + 1325, + 11154, + 1461, + -4246, + -18, + -1270, + -602, + -113, + -323, + -4, + -172, + 0, + -146, + -16, + -65 + }, + { + -72, /* Filter 77 */ + -6, + -143, + 0, + -152, + -25, + -269, + -180, + -426, + -1256, + 244, + -3249, + 1329, + 11157, + 1458, + -4221, + -11, + -1270, + -597, + -115, + -322, + -5, + -171, + 0, + -146, + -15, + -66 + }, + { + -72, /* Filter 78 */ + -6, + -143, + 0, + -153, + -24, + -271, + -178, + -431, + -1258, + 238, + -3274, + 1333, + 11159, + 1455, + -4195, + -3, + -1271, + -593, + -117, + -321, + -5, + -171, + 0, + -146, + -15, + -66 + }, + { + -72, /* Filter 79 */ + -6, + -143, + 0, + -153, + -24, + -272, + -177, + -435, + -1259, + 232, + -3299, + 1336, + 11162, + 1452, + -4169, + 3, + -1271, + -588, + -119, + -320, + -6, + -171, + 0, + -146, + -15, + -66 + }, + { + -72, /* Filter 80 */ + -6, + -144, + 0, + -154, + -23, + -274, + -176, + -440, + -1260, + 226, + -3324, + 1340, + 11164, + 1449, + -4143, + 10, + -1272, + -584, + -121, + -319, + -7, + -170, + 0, + -146, + -15, + -66 + }, + { + -72, /* Filter 81 */ + -7, + -144, + 0, + -155, + -23, + -276, + -174, + -444, + -1261, + 220, + -3349, + 1343, + 11166, + 1446, + -4117, + 18, + -1272, + -579, + -123, + -317, + -7, + -170, + 0, + -146, + -14, + -67 + }, + { + -72, /* Filter 82 */ + -7, + -144, + 0, + -155, + -22, + -277, + -173, + -449, + -1262, + 214, + -3375, + 1347, + 11168, + 1442, + -4091, + 25, + -1273, + -575, + -125, + -316, + -8, + -170, + 0, + -146, + -14, + -67 + }, + { + -72, /* Filter 83 */ + -7, + -144, + 0, + -156, + -22, + -279, + -171, + -453, + -1263, + 207, + -3400, + 1351, + 11169, + 1439, + -4065, + 32, + -1273, + -571, + -127, + -315, + -8, + -169, + 0, + -146, + -14, + -67 + }, + { + -72, /* Filter 84 */ + -7, + -144, + 0, + -157, + -21, + -280, + -170, + -458, + -1264, + 201, + -3425, + 1354, + 11171, + 1436, + -4039, + 39, + -1273, + -566, + -129, + -314, + -9, + -169, + 0, + -146, + -14, + -67 + }, + { + -71, /* Filter 85 */ + -8, + -144, + 0, + -157, + -21, + -282, + -168, + -462, + -1265, + 195, + -3450, + 1358, + 11173, + 1433, + -4013, + 47, + -1273, + -562, + -131, + -313, + -9, + -168, + 0, + -146, + -13, + -68 + }, + { + -71, /* Filter 86 */ + -8, + -145, + 0, + -158, + -20, + -283, + -167, + -467, + -1266, + 188, + -3476, + 1361, + 11174, + 1429, + -3987, + 54, + -1273, + -557, + -133, + -311, + -10, + -168, + 0, + -146, + -13, + -68 + }, + { + -71, /* Filter 87 */ + -8, + -145, + 0, + -158, + -20, + -285, + -165, + -471, + -1267, + 182, + -3501, + 1365, + 11175, + 1426, + -3962, + 61, + -1274, + -553, + -134, + -310, + -10, + -168, + 0, + -146, + -13, + -68 + }, + { + -71, /* Filter 88 */ + -8, + -145, + 0, + -159, + -19, + -286, + -164, + -476, + -1268, + 176, + -3526, + 1368, + 11176, + 1423, + -3936, + 68, + -1274, + -548, + -136, + -309, + -11, + -167, + 0, + -146, + -12, + -68 + }, + { + -71, /* Filter 89 */ + -9, + -145, + 0, + -160, + -19, + -288, + -162, + -480, + -1268, + 169, + -3552, + 1372, + 11177, + 1419, + -3910, + 75, + -1274, + -544, + -138, + -307, + -12, + -167, + 0, + -146, + -12, + -68 + }, + { + -71, /* Filter 90 */ + -9, + -145, + 0, + -160, + -18, + -289, + -160, + -485, + -1269, + 163, + -3577, + 1375, + 11178, + 1416, + -3884, + 82, + -1274, + -539, + -140, + -306, + -12, + -166, + 0, + -146, + -12, + -69 + }, + { + -71, /* Filter 91 */ + -9, + -145, + 0, + -161, + -18, + -291, + -159, + -489, + -1270, + 156, + -3603, + 1379, + 11179, + 1413, + -3859, + 89, + -1273, + -535, + -142, + -305, + -13, + -166, + 0, + -146, + -12, + -69 + }, + { + -70, /* Filter 92 */ + -9, + -145, + 0, + -161, + -17, + -292, + -157, + -494, + -1270, + 150, + -3628, + 1382, + 11180, + 1409, + -3833, + 96, + -1273, + -530, + -144, + -303, + -13, + -165, + 0, + -146, + -11, + -69 + }, + { + -70, /* Filter 93 */ + -10, + -146, + 0, + -162, + -17, + -294, + -156, + -498, + -1271, + 143, + -3654, + 1386, + 11180, + 1406, + -3807, + 103, + -1273, + -525, + -145, + -302, + -14, + -165, + 0, + -146, + -11, + -69 + }, + { + -70, /* Filter 94 */ + -10, + -146, + 0, + -162, + -16, + -295, + -154, + -503, + -1271, + 136, + -3679, + 1389, + 11180, + 1403, + -3782, + 110, + -1273, + -521, + -147, + -301, + -14, + -164, + 0, + -146, + -11, + -69 + }, + { + -70, /* Filter 95 */ + -10, + -146, + 0, + -163, + -16, + -296, + -152, + -507, + -1272, + 130, + -3705, + 1392, + 11181, + 1399, + -3756, + 116, + -1273, + -516, + -149, + -299, + -15, + -164, + 0, + -146, + -11, + -70 + }, + { + -70, /* Filter 96 */ + -10, + -146, + 0, + -163, + -15, + -298, + -151, + -512, + -1272, + 123, + -3730, + 1396, + 11181, + 1396, + -3730, + 123, + -1272, + -512, + -151, + -298, + -15, + -163, + 0, + -146, + -10, + -70 + }, + { + -70, /* Filter 97 */ + -11, + -146, + 0, + -164, + -15, + -299, + -149, + -516, + -1273, + 116, + -3756, + 1399, + 11181, + 1392, + -3705, + 130, + -1272, + -507, + -152, + -296, + -16, + -163, + 0, + -146, + -10, + -70 + }, + { + -69, /* Filter 98 */ + -11, + -146, + 0, + -164, + -14, + -301, + -147, + -521, + -1273, + 110, + -3782, + 1403, + 11180, + 1389, + -3679, + 136, + -1271, + -503, + -154, + -295, + -16, + -162, + 0, + -146, + -10, + -70 + }, + { + -69, /* Filter 99 */ + -11, + -146, + 0, + -165, + -14, + -302, + -145, + -525, + -1273, + 103, + -3807, + 1406, + 11180, + 1386, + -3654, + 143, + -1271, + -498, + -156, + -294, + -17, + -162, + 0, + -146, + -10, + -70 + }, + { + -69, /* Filter 100 */ + -11, + -146, + 0, + -165, + -13, + -303, + -144, + -530, + -1273, + 96, + -3833, + 1409, + 11180, + 1382, + -3628, + 150, + -1270, + -494, + -157, + -292, + -17, + -161, + 0, + -145, + -9, + -70 + }, + { + -69, /* Filter 101 */ + -12, + -146, + 0, + -166, + -13, + -305, + -142, + -535, + -1273, + 89, + -3859, + 1413, + 11179, + 1379, + -3603, + 156, + -1270, + -489, + -159, + -291, + -18, + -161, + 0, + -145, + -9, + -71 + }, + { + -69, /* Filter 102 */ + -12, + -146, + 0, + -166, + -12, + -306, + -140, + -539, + -1274, + 82, + -3884, + 1416, + 11178, + 1375, + -3577, + 163, + -1269, + -485, + -160, + -289, + -18, + -160, + 0, + -145, + -9, + -71 + }, + { + -68, /* Filter 103 */ + -12, + -146, + 0, + -167, + -12, + -307, + -138, + -544, + -1274, + 75, + -3910, + 1419, + 11177, + 1372, + -3552, + 169, + -1268, + -480, + -162, + -288, + -19, + -160, + 0, + -145, + -9, + -71 + }, + { + -68, /* Filter 104 */ + -12, + -146, + 0, + -167, + -11, + -309, + -136, + -548, + -1274, + 68, + -3936, + 1423, + 11176, + 1368, + -3526, + 176, + -1268, + -476, + -164, + -286, + -19, + -159, + 0, + -145, + -8, + -71 + }, + { + -68, /* Filter 105 */ + -13, + -146, + 0, + -168, + -10, + -310, + -134, + -553, + -1274, + 61, + -3962, + 1426, + 11175, + 1365, + -3501, + 182, + -1267, + -471, + -165, + -285, + -20, + -158, + 0, + -145, + -8, + -71 + }, + { + -68, /* Filter 106 */ + -13, + -146, + 0, + -168, + -10, + -311, + -133, + -557, + -1273, + 54, + -3987, + 1429, + 11174, + 1361, + -3476, + 188, + -1266, + -467, + -167, + -283, + -20, + -158, + 0, + -145, + -8, + -71 + }, + { + -68, /* Filter 107 */ + -13, + -146, + 0, + -168, + -9, + -313, + -131, + -562, + -1273, + 47, + -4013, + 1433, + 11173, + 1358, + -3450, + 195, + -1265, + -462, + -168, + -282, + -21, + -157, + 0, + -144, + -8, + -71 + }, + { + -67, /* Filter 108 */ + -14, + -146, + 0, + -169, + -9, + -314, + -129, + -566, + -1273, + 39, + -4039, + 1436, + 11171, + 1354, + -3425, + 201, + -1264, + -458, + -170, + -280, + -21, + -157, + 0, + -144, + -7, + -72 + }, + { + -67, /* Filter 109 */ + -14, + -146, + 0, + -169, + -8, + -315, + -127, + -571, + -1273, + 32, + -4065, + 1439, + 11169, + 1351, + -3400, + 207, + -1263, + -453, + -171, + -279, + -22, + -156, + 0, + -144, + -7, + -72 + }, + { + -67, /* Filter 110 */ + -14, + -146, + 0, + -170, + -8, + -316, + -125, + -575, + -1273, + 25, + -4091, + 1442, + 11168, + 1347, + -3375, + 214, + -1262, + -449, + -173, + -277, + -22, + -155, + 0, + -144, + -7, + -72 + }, + { + -67, /* Filter 111 */ + -14, + -146, + 0, + -170, + -7, + -317, + -123, + -579, + -1272, + 18, + -4117, + 1446, + 11166, + 1343, + -3349, + 220, + -1261, + -444, + -174, + -276, + -23, + -155, + 0, + -144, + -7, + -72 + }, + { + -66, /* Filter 112 */ + -15, + -146, + 0, + -170, + -7, + -319, + -121, + -584, + -1272, + 10, + -4143, + 1449, + 11164, + 1340, + -3324, + 226, + -1260, + -440, + -176, + -274, + -23, + -154, + 0, + -144, + -6, + -72 + }, + { + -66, /* Filter 113 */ + -15, + -146, + 0, + -171, + -6, + -320, + -119, + -588, + -1271, + 3, + -4169, + 1452, + 11162, + 1336, + -3299, + 232, + -1259, + -435, + -177, + -272, + -24, + -153, + 0, + -143, + -6, + -72 + }, + { + -66, /* Filter 114 */ + -15, + -146, + 0, + -171, + -5, + -321, + -117, + -593, + -1271, + -3, + -4195, + 1455, + 11159, + 1333, + -3274, + 238, + -1258, + -431, + -178, + -271, + -24, + -153, + 0, + -143, + -6, + -72 + }, + { + -66, /* Filter 115 */ + -15, + -146, + 0, + -171, + -5, + -322, + -115, + -597, + -1270, + -11, + -4221, + 1458, + 11157, + 1329, + -3249, + 244, + -1256, + -426, + -180, + -269, + -25, + -152, + 0, + -143, + -6, + -72 + }, + { + -65, /* Filter 116 */ + -16, + -146, + 0, + -172, + -4, + -323, + -113, + -602, + -1270, + -18, + -4246, + 1461, + 11154, + 1325, + -3224, + 250, + -1255, + -422, + -181, + -268, + -25, + -151, + 0, + -143, + -5, + -72 + }, + { + -65, /* Filter 117 */ + -16, + -146, + 0, + -172, + -4, + -325, + -111, + -606, + -1269, + -26, + -4273, + 1465, + 11152, + 1322, + -3199, + 256, + -1254, + -417, + -183, + -266, + -26, + -151, + 0, + -142, + -5, + -72 + }, + { + -65, /* Filter 118 */ + -16, + -146, + 0, + -172, + -3, + -326, + -109, + -611, + -1268, + -34, + -4299, + 1468, + 11149, + 1318, + -3174, + 262, + -1252, + -413, + -184, + -264, + -26, + -150, + 0, + -142, + -5, + -73 + }, + { + -65, /* Filter 119 */ + -16, + -146, + 0, + -172, + -2, + -327, + -107, + -615, + -1267, + -41, + -4325, + 1471, + 11146, + 1314, + -3149, + 268, + -1251, + -408, + -185, + -263, + -27, + -149, + 0, + -142, + -5, + -73 + }, + { + -64, /* Filter 120 */ + -17, + -146, + 0, + -173, + -2, + -328, + -105, + -620, + -1267, + -49, + -4351, + 1474, + 11143, + 1311, + -3124, + 273, + -1249, + -404, + -187, + -261, + -27, + -149, + 0, + -142, + -4, + -73 + }, + { + -64, /* Filter 121 */ + -17, + -146, + 0, + -173, + -1, + -329, + -103, + -624, + -1266, + -56, + -4377, + 1477, + 11140, + 1307, + -3099, + 279, + -1248, + -399, + -188, + -259, + -28, + -148, + 0, + -141, + -4, + -73 + }, + { + -64, /* Filter 122 */ + -17, + -146, + 0, + -173, + -1, + -330, + -101, + -629, + -1265, + -64, + -4403, + 1480, + 11136, + 1303, + -3074, + 285, + -1246, + -395, + -189, + -258, + -28, + -147, + 0, + -141, + -4, + -73 + }, + { + -63, /* Filter 123 */ + -17, + -146, + 0, + -173, + 0, + -331, + -98, + -633, + -1264, + -72, + -4429, + 1483, + 11133, + 1300, + -3050, + 291, + -1245, + -391, + -190, + -256, + -28, + -146, + 0, + -141, + -3, + -73 + }, + { + -63, /* Filter 124 */ + -18, + -146, + 0, + -174, + 0, + -332, + -96, + -637, + -1263, + -80, + -4455, + 1486, + 11129, + 1296, + -3025, + 296, + -1243, + -386, + -192, + -254, + -29, + -146, + 0, + -141, + -3, + -73 + }, + { + -63, /* Filter 125 */ + -18, + -145, + 0, + -174, + 0, + -333, + -94, + -642, + -1261, + -88, + -4481, + 1489, + 11125, + 1292, + -3000, + 302, + -1241, + -382, + -193, + -253, + -29, + -145, + 0, + -140, + -3, + -73 + }, + { + -63, /* Filter 126 */ + -18, + -145, + 0, + -174, + 1, + -334, + -92, + -646, + -1260, + -95, + -4507, + 1492, + 11121, + 1288, + -2976, + 307, + -1239, + -377, + -194, + -251, + -30, + -144, + 0, + -140, + -3, + -73 + }, + { + -62, /* Filter 127 */ + -18, + -145, + 0, + -174, + 1, + -335, + -90, + -651, + -1259, + -103, + -4533, + 1495, + 11117, + 1285, + -2951, + 313, + -1238, + -373, + -195, + -249, + -30, + -143, + 0, + -140, + -2, + -73 + }, + { + -62, /* Filter 128 */ + -19, + -145, + 0, + -174, + 2, + -336, + -87, + -655, + -1258, + -111, + -4559, + 1498, + 11113, + 1281, + -2926, + 319, + -1236, + -368, + -196, + -248, + -31, + -143, + 0, + -139, + -2, + -73 + }, + { + -62, /* Filter 129 */ + -19, + -145, + 0, + -175, + 3, + -337, + -85, + -659, + -1256, + -119, + -4585, + 1501, + 11109, + 1277, + -2902, + 324, + -1234, + -364, + -198, + -246, + -31, + -142, + 0, + -139, + -2, + -73 + }, + { + -61, /* Filter 130 */ + -19, + -145, + 0, + -175, + 3, + -338, + -83, + -664, + -1255, + -127, + -4612, + 1504, + 11105, + 1273, + -2877, + 329, + -1232, + -359, + -199, + -244, + -31, + -141, + 0, + -139, + -2, + -73 + }, + { + -61, /* Filter 131 */ + -19, + -145, + 0, + -175, + 4, + -339, + -81, + -668, + -1253, + -135, + -4638, + 1507, + 11100, + 1270, + -2853, + 335, + -1230, + -355, + -200, + -242, + -32, + -140, + 0, + -139, + -1, + -73 + }, + { + -61, /* Filter 132 */ + -20, + -144, + 0, + -175, + 4, + -340, + -78, + -673, + -1252, + -143, + -4664, + 1510, + 11096, + 1266, + -2828, + 340, + -1228, + -351, + -201, + -241, + -32, + -139, + 0, + -138, + -1, + -73 + }, + { + -60, /* Filter 133 */ + -20, + -144, + 0, + -175, + 5, + -341, + -76, + -677, + -1250, + -152, + -4690, + 1513, + 11091, + 1262, + -2804, + 345, + -1226, + -346, + -202, + -239, + -33, + -138, + 0, + -138, + -1, + -73 + }, + { + -60, /* Filter 134 */ + -20, + -144, + 0, + -175, + 6, + -342, + -74, + -681, + -1249, + -160, + -4716, + 1516, + 11086, + 1258, + -2780, + 351, + -1224, + -342, + -203, + -237, + -33, + -138, + 0, + -138, + -1, + -73 + }, + { + -60, /* Filter 135 */ + -20, + -144, + 0, + -175, + 6, + -342, + -71, + -686, + -1247, + -168, + -4742, + 1519, + 11081, + 1254, + -2755, + 356, + -1222, + -337, + -204, + -235, + -33, + -137, + 0, + -137, + -1, + -73 + }, + { + -59, /* Filter 136 */ + -21, + -144, + 0, + -175, + 7, + -343, + -69, + -690, + -1245, + -176, + -4769, + 1521, + 11076, + 1251, + -2731, + 361, + -1220, + -333, + -205, + -234, + -34, + -136, + 0, + -137, + 0, + -73 + }, + { + -59, /* Filter 137 */ + -21, + -143, + 0, + -176, + 7, + -344, + -67, + -694, + -1243, + -184, + -4795, + 1524, + 11070, + 1247, + -2707, + 366, + -1218, + -329, + -206, + -232, + -34, + -135, + 0, + -136, + 0, + -73 + }, + { + -59, /* Filter 138 */ + -21, + -143, + 0, + -176, + 8, + -345, + -64, + -699, + -1242, + -193, + -4821, + 1527, + 11065, + 1243, + -2683, + 371, + -1215, + -324, + -207, + -230, + -35, + -134, + 0, + -136, + 0, + -73 + }, + { + -58, /* Filter 139 */ + -21, + -143, + 0, + -176, + 9, + -346, + -62, + -703, + -1240, + -201, + -4847, + 1530, + 11059, + 1239, + -2659, + 376, + -1213, + -320, + -208, + -228, + -35, + -133, + 0, + -136, + 0, + -73 + }, + { + -58, /* Filter 140 */ + -22, + -143, + 0, + -176, + 9, + -347, + -60, + -707, + -1238, + -209, + -4873, + 1533, + 11054, + 1235, + -2635, + 381, + -1211, + -315, + -209, + -226, + -35, + -133, + 0, + -135, + 0, + -73 + }, + { + -57, /* Filter 141 */ + -22, + -143, + 0, + -176, + 10, + -347, + -57, + -711, + -1236, + -218, + -4900, + 1536, + 11048, + 1231, + -2610, + 386, + -1208, + -311, + -210, + -225, + -36, + -132, + 0, + -135, + 0, + -73 + }, + { + -57, /* Filter 142 */ + -22, + -142, + 0, + -176, + 11, + -348, + -55, + -716, + -1234, + -226, + -4926, + 1538, + 11042, + 1227, + -2586, + 391, + -1206, + -307, + -211, + -223, + -36, + -131, + 0, + -135, + 0, + -73 + }, + { + -57, /* Filter 143 */ + -22, + -142, + 0, + -176, + 11, + -349, + -52, + -720, + -1231, + -235, + -4952, + 1541, + 11036, + 1223, + -2563, + 396, + -1204, + -302, + -212, + -221, + -37, + -130, + 0, + -134, + 0, + -73 + }, + { + -56, /* Filter 144 */ + -23, + -142, + 0, + -176, + 12, + -349, + -50, + -724, + -1229, + -243, + -4978, + 1544, + 11030, + 1220, + -2539, + 401, + -1201, + -298, + -213, + -219, + -37, + -129, + 0, + -134, + 1, + -73 + }, + { + -56, /* Filter 145 */ + -23, + -142, + 0, + -176, + 13, + -350, + -47, + -729, + -1227, + -252, + -5004, + 1546, + 11023, + 1216, + -2515, + 406, + -1199, + -294, + -214, + -217, + -37, + -128, + 0, + -133, + 1, + -73 + }, + { + -56, /* Filter 146 */ + -23, + -141, + 0, + -176, + 13, + -351, + -45, + -733, + -1225, + -261, + -5031, + 1549, + 11017, + 1212, + -2491, + 411, + -1196, + -289, + -215, + -216, + -38, + -127, + 0, + -133, + 1, + -73 + }, + { + -55, /* Filter 147 */ + -23, + -141, + 0, + -176, + 14, + -352, + -42, + -737, + -1222, + -269, + -5057, + 1552, + 11010, + 1208, + -2467, + 415, + -1194, + -285, + -216, + -214, + -38, + -126, + 0, + -133, + 1, + -73 + }, + { + -55, /* Filter 148 */ + -24, + -141, + 0, + -176, + 14, + -352, + -40, + -741, + -1220, + -278, + -5083, + 1555, + 11004, + 1204, + -2443, + 420, + -1191, + -281, + -217, + -212, + -38, + -125, + 0, + -132, + 2, + -73 + }, + { + -54, /* Filter 149 */ + -24, + -140, + 0, + -176, + 15, + -353, + -37, + -745, + -1217, + -287, + -5109, + 1557, + 10997, + 1200, + -2420, + 425, + -1188, + -277, + -217, + -210, + -39, + -124, + 0, + -132, + 2, + -73 + }, + { + -54, /* Filter 150 */ + -24, + -140, + 0, + -176, + 16, + -353, + -35, + -750, + -1215, + -295, + -5136, + 1560, + 10990, + 1196, + -2396, + 429, + -1186, + -272, + -218, + -208, + -39, + -123, + 0, + -131, + 2, + -73 + }, + { + -54, /* Filter 151 */ + -24, + -140, + 0, + -175, + 16, + -354, + -32, + -754, + -1212, + -304, + -5162, + 1562, + 10983, + 1192, + -2373, + 434, + -1183, + -268, + -219, + -206, + -39, + -123, + 0, + -131, + 2, + -73 + }, + { + -53, /* Filter 152 */ + -25, + -139, + 0, + -175, + 17, + -355, + -29, + -758, + -1209, + -313, + -5188, + 1565, + 10976, + 1188, + -2349, + 439, + -1180, + -264, + -220, + -205, + -40, + -122, + 0, + -130, + 3, + -73 + }, + { + -53, /* Filter 153 */ + -25, + -139, + 0, + -175, + 18, + -355, + -27, + -762, + -1206, + -322, + -5214, + 1568, + 10968, + 1184, + -2326, + 443, + -1177, + -260, + -221, + -203, + -40, + -121, + 0, + -130, + 3, + -73 + }, + { + -52, /* Filter 154 */ + -25, + -139, + 0, + -175, + 18, + -356, + -24, + -766, + -1204, + -331, + -5240, + 1570, + 10961, + 1180, + -2302, + 447, + -1175, + -255, + -221, + -201, + -40, + -120, + 0, + -129, + 3, + -73 + }, + { + -52, /* Filter 155 */ + -25, + -138, + 0, + -175, + 19, + -356, + -22, + -770, + -1201, + -339, + -5266, + 1573, + 10953, + 1176, + -2279, + 452, + -1172, + -251, + -222, + -199, + -41, + -119, + 0, + -129, + 3, + -73 + }, + { + -51, /* Filter 156 */ + -26, + -138, + 0, + -175, + 20, + -357, + -19, + -774, + -1198, + -348, + -5293, + 1575, + 10945, + 1172, + -2255, + 456, + -1169, + -247, + -223, + -197, + -41, + -118, + 0, + -129, + 4, + -72 + }, + { + -51, /* Filter 157 */ + -26, + -138, + 0, + -175, + 20, + -357, + -16, + -779, + -1195, + -357, + -5319, + 1578, + 10938, + 1168, + -2232, + 461, + -1166, + -243, + -223, + -195, + -41, + -117, + 0, + -128, + 4, + -72 + }, + { + -51, /* Filter 158 */ + -26, + -137, + 0, + -175, + 21, + -358, + -14, + -783, + -1192, + -366, + -5345, + 1580, + 10930, + 1164, + -2209, + 465, + -1163, + -238, + -224, + -193, + -42, + -116, + 0, + -128, + 4, + -72 + }, + { + -50, /* Filter 159 */ + -26, + -137, + 0, + -174, + 22, + -358, + -11, + -787, + -1188, + -376, + -5371, + 1583, + 10922, + 1160, + -2186, + 469, + -1160, + -234, + -225, + -191, + -42, + -115, + 0, + -127, + 4, + -72 + }, + { + -50, /* Filter 160 */ + -27, + -137, + 0, + -174, + 22, + -358, + -8, + -791, + -1185, + -385, + -5397, + 1585, + 10913, + 1156, + -2163, + 473, + -1157, + -230, + -225, + -189, + -42, + -114, + 0, + -127, + 4, + -72 + }, + { + -49, /* Filter 161 */ + -27, + -136, + 0, + -174, + 23, + -359, + -5, + -795, + -1182, + -394, + -5423, + 1588, + 10905, + 1152, + -2140, + 478, + -1154, + -226, + -226, + -188, + -43, + -113, + 0, + -126, + 5, + -72 + }, + { + -49, /* Filter 162 */ + -27, + -136, + 0, + -174, + 24, + -359, + -3, + -799, + -1179, + -403, + -5450, + 1590, + 10896, + 1148, + -2117, + 482, + -1151, + -222, + -227, + -186, + -43, + -112, + 0, + -126, + 5, + -72 + }, + { + -48, /* Filter 163 */ + -27, + -135, + 0, + -174, + 24, + -360, + 0, + -803, + -1175, + -412, + -5476, + 1593, + 10888, + 1144, + -2094, + 486, + -1148, + -218, + -227, + -184, + -43, + -111, + 0, + -125, + 5, + -72 + }, + { + -48, /* Filter 164 */ + -27, + -135, + 0, + -173, + 25, + -360, + 2, + -807, + -1172, + -421, + -5502, + 1595, + 10879, + 1140, + -2071, + 490, + -1144, + -213, + -228, + -182, + -44, + -110, + 0, + -125, + 5, + -72 + }, + { + -47, /* Filter 165 */ + -28, + -135, + 0, + -173, + 26, + -360, + 5, + -811, + -1168, + -431, + -5528, + 1597, + 10870, + 1136, + -2048, + 494, + -1141, + -209, + -229, + -180, + -44, + -109, + 0, + -124, + 6, + -72 + }, + { + -47, /* Filter 166 */ + -28, + -134, + 0, + -173, + 26, + -361, + 7, + -815, + -1165, + -440, + -5554, + 1600, + 10861, + 1132, + -2025, + 498, + -1138, + -205, + -229, + -178, + -44, + -108, + 0, + -124, + 6, + -71 + }, + { + -46, /* Filter 167 */ + -28, + -134, + 0, + -173, + 27, + -361, + 10, + -819, + -1161, + -449, + -5580, + 1602, + 10852, + 1128, + -2002, + 502, + -1135, + -201, + -230, + -176, + -44, + -107, + 0, + -123, + 6, + -71 + }, + { + -46, /* Filter 168 */ + -28, + -133, + 0, + -172, + 28, + -361, + 13, + -823, + -1157, + -459, + -5606, + 1605, + 10843, + 1123, + -1980, + 506, + -1131, + -197, + -230, + -174, + -45, + -106, + 0, + -122, + 6, + -71 + }, + { + -45, /* Filter 169 */ + -29, + -133, + 0, + -172, + 28, + -361, + 16, + -827, + -1154, + -468, + -5632, + 1607, + 10834, + 1119, + -1957, + 510, + -1128, + -193, + -231, + -172, + -45, + -105, + 0, + -122, + 6, + -71 + }, + { + -45, /* Filter 170 */ + -29, + -132, + 0, + -172, + 29, + -362, + 19, + -831, + -1150, + -477, + -5658, + 1609, + 10824, + 1115, + -1934, + 514, + -1125, + -189, + -231, + -170, + -45, + -104, + 0, + -121, + 7, + -71 + }, + { + -44, /* Filter 171 */ + -29, + -132, + 0, + -171, + 30, + -362, + 22, + -835, + -1146, + -487, + -5684, + 1611, + 10815, + 1111, + -1912, + 517, + -1121, + -185, + -232, + -168, + -46, + -102, + 0, + -121, + 7, + -71 + }, + { + -44, /* Filter 172 */ + -29, + -132, + 0, + -171, + 30, + -362, + 25, + -838, + -1142, + -496, + -5710, + 1614, + 10805, + 1107, + -1889, + 521, + -1118, + -181, + -232, + -166, + -46, + -101, + 0, + -120, + 7, + -71 + }, + { + -43, /* Filter 173 */ + -30, + -131, + 0, + -171, + 31, + -362, + 27, + -842, + -1138, + -506, + -5736, + 1616, + 10795, + 1103, + -1867, + 525, + -1114, + -177, + -233, + -165, + -46, + -100, + 0, + -120, + 7, + -70 + }, + { + -43, /* Filter 174 */ + -30, + -131, + 0, + -170, + 32, + -362, + 30, + -846, + -1134, + -515, + -5762, + 1618, + 10785, + 1099, + -1845, + 529, + -1111, + -173, + -233, + -163, + -46, + -99, + 0, + -119, + 8, + -70 + }, + { + -42, /* Filter 175 */ + -30, + -130, + 0, + -170, + 32, + -362, + 33, + -850, + -1130, + -525, + -5788, + 1620, + 10775, + 1095, + -1822, + 532, + -1107, + -169, + -233, + -161, + -47, + -98, + 0, + -119, + 8, + -70 + }, + { + -42, /* Filter 176 */ + -30, + -130, + 0, + -170, + 33, + -363, + 36, + -854, + -1125, + -535, + -5814, + 1623, + 10765, + 1091, + -1800, + 536, + -1104, + -165, + -234, + -159, + -47, + -97, + 0, + -118, + 8, + -70 + }, + { + -41, /* Filter 177 */ + -30, + -129, + 0, + -169, + 34, + -363, + 39, + -858, + -1121, + -544, + -5840, + 1625, + 10755, + 1086, + -1778, + 539, + -1100, + -161, + -234, + -157, + -47, + -96, + 0, + -117, + 8, + -70 + }, + { + -41, /* Filter 178 */ + -31, + -129, + 0, + -169, + 34, + -363, + 42, + -861, + -1117, + -554, + -5866, + 1627, + 10744, + 1082, + -1756, + 543, + -1097, + -157, + -235, + -155, + -47, + -95, + 0, + -117, + 8, + -70 + }, + { + -40, /* Filter 179 */ + -31, + -128, + 0, + -168, + 35, + -363, + 45, + -865, + -1112, + -564, + -5892, + 1629, + 10733, + 1078, + -1734, + 546, + -1093, + -153, + -235, + -153, + -48, + -94, + 0, + -116, + 9, + -70 + }, + { + -40, /* Filter 180 */ + -31, + -128, + 0, + -168, + 36, + -363, + 48, + -869, + -1108, + -573, + -5918, + 1631, + 10723, + 1074, + -1712, + 550, + -1089, + -149, + -235, + -151, + -48, + -93, + 0, + -116, + 9, + -69 + }, + { + -39, /* Filter 181 */ + -31, + -127, + 0, + -167, + 36, + -363, + 51, + -872, + -1103, + -583, + -5944, + 1633, + 10712, + 1070, + -1690, + 553, + -1086, + -145, + -236, + -149, + -48, + -92, + 0, + -115, + 9, + -69 + }, + { + -39, /* Filter 182 */ + -31, + -126, + 0, + -167, + 37, + -363, + 54, + -876, + -1099, + -593, + -5970, + 1636, + 10701, + 1066, + -1668, + 557, + -1082, + -141, + -236, + -147, + -48, + -91, + 0, + -115, + 9, + -69 + }, + { + -38, /* Filter 183 */ + -32, + -126, + 0, + -166, + 38, + -363, + 57, + -880, + -1094, + -603, + -5995, + 1638, + 10690, + 1062, + -1646, + 560, + -1078, + -137, + -236, + -145, + -48, + -89, + 0, + -114, + 9, + -69 + }, + { + -38, /* Filter 184 */ + -32, + -125, + 0, + -166, + 38, + -363, + 60, + -884, + -1089, + -613, + -6021, + 1640, + 10679, + 1057, + -1624, + 563, + -1075, + -133, + -237, + -143, + -49, + -88, + 0, + -113, + 10, + -69 + }, + { + -37, /* Filter 185 */ + -32, + -125, + 0, + -165, + 39, + -363, + 63, + -887, + -1084, + -623, + -6047, + 1642, + 10668, + 1053, + -1602, + 567, + -1071, + -129, + -237, + -141, + -49, + -87, + 0, + -113, + 10, + -68 + }, + { + -37, /* Filter 186 */ + -32, + -124, + 0, + -165, + 40, + -363, + 66, + -891, + -1080, + -633, + -6073, + 1644, + 10656, + 1049, + -1581, + 570, + -1067, + -125, + -237, + -139, + -49, + -86, + 0, + -112, + 10, + -68 + }, + { + -36, /* Filter 187 */ + -33, + -124, + 0, + -164, + 40, + -362, + 69, + -894, + -1075, + -643, + -6099, + 1646, + 10645, + 1045, + -1559, + 573, + -1063, + -121, + -237, + -137, + -49, + -85, + 0, + -111, + 10, + -68 + }, + { + -36, /* Filter 188 */ + -33, + -123, + 0, + -164, + 41, + -362, + 72, + -898, + -1070, + -653, + -6124, + 1648, + 10633, + 1041, + -1538, + 576, + -1059, + -118, + -238, + -135, + -49, + -84, + 0, + -111, + 10, + -68 + }, + { + -35, /* Filter 189 */ + -33, + -122, + 0, + -163, + 42, + -362, + 76, + -901, + -1065, + -663, + -6150, + 1650, + 10621, + 1036, + -1516, + 579, + -1055, + -114, + -238, + -133, + -50, + -83, + 0, + -110, + 11, + -68 + }, + { + -34, /* Filter 190 */ + -33, + -122, + 0, + -163, + 43, + -362, + 79, + -905, + -1059, + -673, + -6176, + 1652, + 10609, + 1032, + -1495, + 582, + -1051, + -110, + -238, + -131, + -50, + -82, + 0, + -110, + 11, + -67 + }, + { + -34, /* Filter 191 */ + -33, + -121, + 0, + -162, + 43, + -362, + 82, + -909, + -1054, + -683, + -6201, + 1654, + 10597, + 1028, + -1473, + 585, + -1048, + -106, + -238, + -129, + -50, + -80, + 0, + -109, + 11, + -67 + } +}; +static const int16_t rx_pulseshaper_im[RX_PULSESHAPER_COEFF_SETS][27] = +{ + { + -34, /* Filter 0 */ + -36, + -17, + -122, + 12, + -156, + 65, + -328, + 102, + -758, + -1155, + -472, + -6467, + 0, + 10455, + 2023, + -1360, + 762, + -912, + -117, + -184, + -136, + -25, + -80, + 19, + -104, + 17 + }, + { + -34, /* Filter 1 */ + -35, + -17, + -122, + 12, + -155, + 66, + -328, + 106, + -761, + -1149, + -478, + -6493, + 0, + 10443, + 2015, + -1341, + 766, + -909, + -113, + -184, + -134, + -25, + -79, + 19, + -104, + 17 + }, + { + -34, /* Filter 2 */ + -34, + -17, + -121, + 13, + -154, + 67, + -328, + 110, + -764, + -1143, + -485, + -6520, + 0, + 10431, + 2006, + -1321, + 770, + -905, + -108, + -184, + -132, + -25, + -78, + 19, + -103, + 17 + }, + { + -34, /* Filter 3 */ + -34, + -17, + -120, + 13, + -154, + 68, + -327, + 114, + -767, + -1137, + -492, + -6546, + 0, + 10418, + 1998, + -1301, + 773, + -901, + -104, + -184, + -130, + -25, + -77, + 19, + -102, + 18 + }, + { + -34, /* Filter 4 */ + -33, + -17, + -120, + 13, + -153, + 69, + -327, + 118, + -769, + -1131, + -499, + -6573, + 0, + 10406, + 1990, + -1281, + 777, + -898, + -100, + -184, + -128, + -26, + -76, + 19, + -102, + 18 + }, + { + -34, /* Filter 5 */ + -33, + -17, + -119, + 13, + -153, + 70, + -327, + 121, + -772, + -1125, + -506, + -6599, + 0, + 10393, + 1981, + -1262, + 781, + -894, + -96, + -184, + -126, + -26, + -75, + 19, + -101, + 18 + }, + { + -35, /* Filter 6 */ + -32, + -17, + -118, + 13, + -152, + 71, + -326, + 125, + -775, + -1119, + -513, + -6626, + 0, + 10381, + 1973, + -1242, + 784, + -891, + -91, + -184, + -124, + -26, + -73, + 19, + -100, + 18 + }, + { + -35, /* Filter 7 */ + -31, + -17, + -118, + 13, + -151, + 72, + -326, + 129, + -778, + -1113, + -520, + -6652, + 0, + 10368, + 1964, + -1223, + 788, + -887, + -87, + -185, + -121, + -26, + -72, + 19, + -100, + 19 + }, + { + -35, /* Filter 8 */ + -31, + -18, + -117, + 14, + -151, + 73, + -326, + 133, + -781, + -1106, + -527, + -6679, + 0, + 10355, + 1956, + -1203, + 791, + -884, + -83, + -185, + -119, + -26, + -71, + 19, + -99, + 19 + }, + { + -35, /* Filter 9 */ + -30, + -18, + -116, + 14, + -150, + 74, + -325, + 137, + -783, + -1100, + -534, + -6705, + 0, + 10342, + 1948, + -1184, + 795, + -880, + -79, + -185, + -117, + -26, + -70, + 20, + -99, + 19 + }, + { + -35, /* Filter 10 */ + -29, + -18, + -116, + 14, + -149, + 75, + -325, + 141, + -786, + -1093, + -542, + -6731, + 0, + 10329, + 1939, + -1164, + 798, + -876, + -75, + -185, + -115, + -26, + -69, + 20, + -98, + 20 + }, + { + -35, /* Filter 11 */ + -29, + -18, + -115, + 14, + -149, + 76, + -324, + 145, + -789, + -1086, + -549, + -6758, + 0, + 10316, + 1931, + -1145, + 801, + -872, + -71, + -185, + -113, + -26, + -67, + 20, + -97, + 20 + }, + { + -35, /* Filter 12 */ + -28, + -18, + -114, + 14, + -148, + 77, + -324, + 149, + -791, + -1080, + -556, + -6784, + 0, + 10302, + 1923, + -1126, + 805, + -869, + -66, + -185, + -111, + -26, + -66, + 20, + -97, + 20 + }, + { + -35, /* Filter 13 */ + -28, + -18, + -113, + 14, + -147, + 78, + -324, + 153, + -794, + -1073, + -563, + -6810, + 0, + 10289, + 1914, + -1107, + 808, + -865, + -62, + -185, + -109, + -26, + -65, + 20, + -96, + 20 + }, + { + -35, /* Filter 14 */ + -27, + -18, + -113, + 15, + -147, + 79, + -323, + 157, + -797, + -1066, + -570, + -6836, + 0, + 10275, + 1906, + -1088, + 811, + -861, + -58, + -185, + -107, + -26, + -64, + 20, + -95, + 21 + }, + { + -35, /* Filter 15 */ + -26, + -18, + -112, + 15, + -146, + 80, + -323, + 161, + -799, + -1059, + -577, + -6862, + 0, + 10262, + 1897, + -1069, + 814, + -858, + -54, + -185, + -105, + -26, + -63, + 20, + -95, + 21 + }, + { + -35, /* Filter 16 */ + -26, + -18, + -111, + 15, + -145, + 81, + -322, + 165, + -802, + -1052, + -585, + -6889, + 0, + 10248, + 1889, + -1050, + 818, + -854, + -50, + -184, + -103, + -26, + -62, + 20, + -94, + 21 + }, + { + -36, /* Filter 17 */ + -25, + -18, + -111, + 15, + -144, + 82, + -321, + 169, + -804, + -1045, + -592, + -6915, + 0, + 10234, + 1880, + -1031, + 821, + -850, + -46, + -184, + -101, + -26, + -60, + 20, + -93, + 21 + }, + { + -36, /* Filter 18 */ + -24, + -18, + -110, + 15, + -143, + 83, + -321, + 173, + -807, + -1038, + -599, + -6941, + 0, + 10220, + 1872, + -1012, + 824, + -846, + -42, + -184, + -99, + -27, + -59, + 20, + -93, + 22 + }, + { + -36, /* Filter 19 */ + -24, + -19, + -109, + 15, + -143, + 84, + -320, + 177, + -810, + -1031, + -606, + -6967, + 0, + 10206, + 1864, + -993, + 827, + -842, + -38, + -184, + -96, + -27, + -58, + 20, + -92, + 22 + }, + { + -36, /* Filter 20 */ + -23, + -19, + -108, + 16, + -142, + 85, + -320, + 181, + -812, + -1023, + -614, + -6993, + 0, + 10192, + 1855, + -975, + 830, + -838, + -34, + -184, + -94, + -27, + -57, + 20, + -91, + 22 + }, + { + -36, /* Filter 21 */ + -22, + -19, + -108, + 16, + -141, + 86, + -319, + 185, + -815, + -1016, + -621, + -7019, + 0, + 10177, + 1847, + -956, + 832, + -835, + -30, + -184, + -92, + -27, + -55, + 20, + -90, + 22 + }, + { + -36, /* Filter 22 */ + -22, + -19, + -107, + 16, + -140, + 87, + -318, + 189, + -817, + -1009, + -628, + -7044, + 0, + 10163, + 1838, + -937, + 835, + -831, + -26, + -184, + -90, + -27, + -54, + 21, + -90, + 23 + }, + { + -36, /* Filter 23 */ + -21, + -19, + -106, + 16, + -139, + 88, + -318, + 193, + -819, + -1001, + -635, + -7070, + 0, + 10148, + 1830, + -919, + 838, + -827, + -22, + -184, + -88, + -27, + -53, + 21, + -89, + 23 + }, + { + -36, /* Filter 24 */ + -20, + -19, + -105, + 16, + -139, + 88, + -317, + 197, + -822, + -993, + -643, + -7096, + 0, + 10133, + 1821, + -900, + 841, + -823, + -18, + -184, + -86, + -27, + -52, + 21, + -88, + 23 + }, + { + -36, /* Filter 25 */ + -20, + -19, + -104, + 16, + -138, + 89, + -316, + 201, + -824, + -986, + -650, + -7122, + 0, + 10119, + 1813, + -882, + 843, + -819, + -14, + -184, + -84, + -27, + -51, + 21, + -88, + 23 + }, + { + -36, /* Filter 26 */ + -19, + -19, + -104, + 17, + -137, + 90, + -315, + 205, + -827, + -978, + -658, + -7148, + 0, + 10104, + 1804, + -864, + 846, + -815, + -10, + -183, + -82, + -27, + -49, + 21, + -87, + 24 + }, + { + -36, /* Filter 27 */ + -18, + -19, + -103, + 17, + -136, + 91, + -315, + 209, + -829, + -970, + -665, + -7173, + 0, + 10089, + 1796, + -846, + 849, + -811, + -7, + -183, + -80, + -27, + -48, + 21, + -86, + 24 + }, + { + -36, /* Filter 28 */ + -17, + -19, + -102, + 17, + -135, + 92, + -314, + 213, + -831, + -962, + -672, + -7199, + 0, + 10074, + 1787, + -827, + 851, + -807, + -3, + -183, + -78, + -27, + -47, + 21, + -86, + 24 + }, + { + -36, /* Filter 29 */ + -17, + -19, + -101, + 17, + -134, + 93, + -313, + 218, + -834, + -954, + -680, + -7225, + 0, + 10059, + 1779, + -809, + 854, + -803, + 0, + -183, + -76, + -27, + -46, + 21, + -85, + 24 + }, + { + -36, /* Filter 30 */ + -16, + -19, + -100, + 17, + -133, + 94, + -312, + 222, + -836, + -946, + -687, + -7250, + 0, + 10043, + 1770, + -791, + 856, + -799, + 4, + -183, + -74, + -27, + -45, + 21, + -84, + 25 + }, + { + -36, /* Filter 31 */ + -15, + -20, + -100, + 17, + -132, + 95, + -311, + 226, + -838, + -938, + -695, + -7276, + 0, + 10028, + 1762, + -773, + 859, + -795, + 8, + -183, + -72, + -27, + -43, + 21, + -83, + 25 + }, + { + -36, /* Filter 32 */ + -15, + -20, + -99, + 18, + -131, + 96, + -311, + 230, + -840, + -930, + -702, + -7301, + 0, + 10012, + 1753, + -755, + 861, + -791, + 11, + -182, + -70, + -27, + -42, + 21, + -83, + 25 + }, + { + -37, /* Filter 33 */ + -14, + -20, + -98, + 18, + -130, + 97, + -310, + 234, + -843, + -921, + -710, + -7327, + 0, + 9997, + 1745, + -737, + 863, + -787, + 15, + -182, + -68, + -27, + -41, + 21, + -82, + 25 + }, + { + -37, /* Filter 34 */ + -13, + -20, + -97, + 18, + -129, + 98, + -309, + 238, + -845, + -913, + -717, + -7352, + 0, + 9981, + 1736, + -720, + 866, + -783, + 19, + -182, + -66, + -27, + -40, + 21, + -81, + 25 + }, + { + -37, /* Filter 35 */ + -13, + -20, + -96, + 18, + -128, + 99, + -308, + 243, + -847, + -905, + -725, + -7377, + 0, + 9965, + 1728, + -702, + 868, + -779, + 22, + -182, + -64, + -27, + -38, + 21, + -80, + 26 + }, + { + -37, /* Filter 36 */ + -12, + -20, + -95, + 18, + -127, + 100, + -307, + 247, + -849, + -896, + -732, + -7403, + 0, + 9949, + 1719, + -684, + 870, + -774, + 26, + -181, + -62, + -27, + -37, + 21, + -80, + 26 + }, + { + -37, /* Filter 37 */ + -11, + -20, + -94, + 18, + -126, + 101, + -306, + 251, + -851, + -887, + -740, + -7428, + 0, + 9933, + 1711, + -667, + 872, + -770, + 30, + -181, + -60, + -27, + -36, + 22, + -79, + 26 + }, + { + -37, /* Filter 38 */ + -10, + -20, + -94, + 19, + -125, + 102, + -305, + 255, + -853, + -879, + -748, + -7453, + 0, + 9917, + 1702, + -649, + 874, + -766, + 33, + -181, + -58, + -27, + -35, + 22, + -78, + 26 + }, + { + -37, /* Filter 39 */ + -10, + -20, + -93, + 19, + -124, + 103, + -304, + 260, + -855, + -870, + -755, + -7478, + 0, + 9901, + 1694, + -632, + 876, + -762, + 37, + -181, + -56, + -27, + -34, + 22, + -78, + 27 + }, + { + -37, /* Filter 40 */ + -9, + -20, + -92, + 19, + -123, + 104, + -303, + 264, + -857, + -861, + -763, + -7503, + 0, + 9884, + 1685, + -614, + 878, + -758, + 41, + -180, + -54, + -27, + -32, + 22, + -77, + 27 + }, + { + -37, /* Filter 41 */ + -8, + -20, + -91, + 19, + -122, + 105, + -302, + 268, + -859, + -852, + -771, + -7528, + 0, + 9868, + 1677, + -597, + 880, + -754, + 44, + -180, + -52, + -27, + -31, + 22, + -76, + 27 + }, + { + -37, /* Filter 42 */ + -8, + -20, + -90, + 19, + -121, + 106, + -301, + 272, + -861, + -843, + -778, + -7553, + 0, + 9851, + 1668, + -580, + 882, + -750, + 48, + -180, + -50, + -27, + -30, + 22, + -75, + 27 + }, + { + -37, /* Filter 43 */ + -7, + -20, + -89, + 19, + -120, + 107, + -299, + 277, + -863, + -834, + -786, + -7578, + 0, + 9835, + 1660, + -563, + 884, + -745, + 51, + -180, + -48, + -27, + -29, + 22, + -75, + 27 + }, + { + -37, /* Filter 44 */ + -6, + -21, + -88, + 19, + -119, + 108, + -298, + 281, + -865, + -825, + -794, + -7603, + 0, + 9818, + 1651, + -546, + 886, + -741, + 55, + -179, + -46, + -27, + -27, + 22, + -74, + 28 + }, + { + -37, /* Filter 45 */ + -5, + -21, + -87, + 20, + -118, + 109, + -297, + 285, + -867, + -816, + -801, + -7628, + 0, + 9801, + 1643, + -529, + 888, + -737, + 58, + -179, + -44, + -27, + -26, + 22, + -73, + 28 + }, + { + -37, /* Filter 46 */ + -5, + -21, + -86, + 20, + -117, + 110, + -296, + 289, + -869, + -806, + -809, + -7653, + 0, + 9784, + 1634, + -512, + 890, + -733, + 62, + -179, + -42, + -27, + -25, + 22, + -72, + 28 + }, + { + -37, /* Filter 47 */ + -4, + -21, + -85, + 20, + -116, + 111, + -295, + 294, + -871, + -797, + -817, + -7678, + 0, + 9767, + 1626, + -495, + 891, + -729, + 65, + -178, + -40, + -27, + -24, + 22, + -72, + 28 + }, + { + -37, /* Filter 48 */ + -3, + -21, + -85, + 20, + -115, + 111, + -293, + 298, + -873, + -788, + -825, + -7702, + 0, + 9750, + 1617, + -478, + 893, + -724, + 69, + -178, + -38, + -27, + -22, + 22, + -71, + 28 + }, + { + -37, /* Filter 49 */ + -2, + -21, + -84, + 20, + -114, + 112, + -292, + 302, + -874, + -778, + -832, + -7727, + 0, + 9732, + 1609, + -461, + 895, + -720, + 72, + -177, + -36, + -27, + -21, + 22, + -70, + 29 + }, + { + -37, /* Filter 50 */ + -2, + -21, + -83, + 20, + -112, + 113, + -291, + 307, + -876, + -768, + -840, + -7752, + 0, + 9715, + 1600, + -445, + 896, + -716, + 75, + -177, + -34, + -27, + -20, + 22, + -69, + 29 + }, + { + -37, /* Filter 51 */ + -1, + -21, + -82, + 20, + -111, + 114, + -290, + 311, + -878, + -759, + -848, + -7776, + 0, + 9698, + 1592, + -428, + 898, + -711, + 79, + -177, + -32, + -27, + -19, + 22, + -69, + 29 + }, + { + -37, /* Filter 52 */ + 0, + -21, + -81, + 21, + -110, + 115, + -288, + 315, + -880, + -749, + -856, + -7801, + 0, + 9680, + 1583, + -412, + 899, + -707, + 82, + -176, + -30, + -27, + -18, + 22, + -68, + 29 + }, + { + -37, /* Filter 53 */ + 0, + -21, + -80, + 21, + -109, + 116, + -287, + 320, + -881, + -739, + -863, + -7825, + 0, + 9662, + 1575, + -395, + 901, + -703, + 85, + -176, + -28, + -27, + -16, + 22, + -67, + 29 + }, + { + -37, /* Filter 54 */ + 0, + -21, + -79, + 21, + -108, + 117, + -286, + 324, + -883, + -729, + -871, + -7850, + 0, + 9644, + 1566, + -379, + 902, + -699, + 89, + -176, + -26, + -27, + -15, + 22, + -66, + 30 + }, + { + -37, /* Filter 55 */ + 1, + -21, + -78, + 21, + -107, + 118, + -284, + 329, + -885, + -719, + -879, + -7874, + 0, + 9627, + 1558, + -362, + 903, + -694, + 92, + -175, + -24, + -27, + -14, + 22, + -65, + 30 + }, + { + -37, /* Filter 56 */ + 2, + -21, + -77, + 21, + -105, + 119, + -283, + 333, + -886, + -709, + -887, + -7898, + 0, + 9609, + 1549, + -346, + 905, + -690, + 95, + -175, + -22, + -27, + -13, + 22, + -65, + 30 + }, + { + -37, /* Filter 57 */ + 3, + -21, + -76, + 21, + -104, + 120, + -281, + 337, + -888, + -699, + -895, + -7922, + 0, + 9591, + 1541, + -330, + 906, + -686, + 99, + -174, + -20, + -27, + -11, + 22, + -64, + 30 + }, + { + -37, /* Filter 58 */ + 3, + -21, + -75, + 21, + -103, + 121, + -280, + 342, + -889, + -689, + -903, + -7946, + 0, + 9572, + 1532, + -314, + 907, + -681, + 102, + -174, + -18, + -27, + -10, + 22, + -63, + 30 + }, + { + -37, /* Filter 59 */ + 4, + -21, + -74, + 22, + -102, + 121, + -278, + 346, + -891, + -678, + -911, + -7971, + 0, + 9554, + 1524, + -298, + 908, + -677, + 105, + -173, + -16, + -27, + -9, + 22, + -62, + 30 + }, + { + -37, /* Filter 60 */ + 5, + -21, + -73, + 22, + -100, + 122, + -277, + 351, + -892, + -668, + -919, + -7995, + 0, + 9536, + 1515, + -282, + 909, + -673, + 108, + -173, + -15, + -27, + -8, + 22, + -62, + 31 + }, + { + -37, /* Filter 61 */ + 6, + -22, + -72, + 22, + -99, + 123, + -275, + 355, + -894, + -658, + -927, + -8019, + 0, + 9517, + 1507, + -266, + 911, + -668, + 111, + -172, + -13, + -27, + -7, + 22, + -61, + 31 + }, + { + -37, /* Filter 62 */ + 6, + -22, + -71, + 22, + -98, + 124, + -274, + 359, + -895, + -647, + -935, + -8042, + 0, + 9499, + 1498, + -250, + 912, + -664, + 114, + -172, + -11, + -27, + -5, + 23, + -60, + 31 + }, + { + -37, /* Filter 63 */ + 7, + -22, + -70, + 22, + -96, + 125, + -272, + 364, + -896, + -636, + -943, + -8066, + 0, + 9480, + 1490, + -234, + 913, + -659, + 117, + -171, + -9, + -27, + -4, + 23, + -59, + 31 + }, + { + -37, /* Filter 64 */ + 8, + -22, + -69, + 22, + -95, + 126, + -271, + 368, + -898, + -626, + -950, + -8090, + 0, + 9462, + 1481, + -219, + 914, + -655, + 121, + -171, + -7, + -27, + -3, + 23, + -58, + 31 + }, + { + -37, /* Filter 65 */ + 9, + -22, + -68, + 22, + -94, + 127, + -269, + 373, + -899, + -615, + -958, + -8114, + 0, + 9443, + 1473, + -203, + 915, + -651, + 124, + -170, + -5, + -27, + -2, + 23, + -58, + 31 + }, + { + -37, /* Filter 66 */ + 9, + -22, + -67, + 22, + -93, + 128, + -267, + 377, + -900, + -604, + -966, + -8138, + 0, + 9424, + 1464, + -188, + 915, + -646, + 127, + -170, + -3, + -27, + 0, + 23, + -57, + 32 + }, + { + -37, /* Filter 67 */ + 10, + -22, + -66, + 23, + -91, + 129, + -266, + 382, + -902, + -593, + -975, + -8161, + 0, + 9405, + 1456, + -172, + 916, + -642, + 130, + -169, + -1, + -27, + 0, + 23, + -56, + 32 + }, + { + -37, /* Filter 68 */ + 11, + -22, + -65, + 23, + -90, + 129, + -264, + 386, + -903, + -582, + -983, + -8185, + 0, + 9386, + 1447, + -157, + 917, + -637, + 133, + -169, + 0, + -27, + 1, + 23, + -55, + 32 + }, + { + -37, /* Filter 69 */ + 12, + -22, + -64, + 23, + -89, + 130, + -262, + 391, + -904, + -571, + -991, + -8208, + 0, + 9367, + 1439, + -142, + 918, + -633, + 136, + -168, + 1, + -27, + 2, + 23, + -55, + 32 + }, + { + -37, /* Filter 70 */ + 13, + -22, + -63, + 23, + -87, + 131, + -261, + 395, + -905, + -560, + -999, + -8232, + 0, + 9347, + 1430, + -126, + 919, + -629, + 139, + -168, + 3, + -27, + 3, + 23, + -54, + 32 + }, + { + -37, /* Filter 71 */ + 13, + -22, + -62, + 23, + -86, + 132, + -259, + 399, + -906, + -548, + -1007, + -8255, + 0, + 9328, + 1422, + -111, + 919, + -624, + 142, + -167, + 5, + -27, + 5, + 23, + -53, + 32 + }, + { + -37, /* Filter 72 */ + 14, + -22, + -61, + 23, + -84, + 133, + -257, + 404, + -908, + -537, + -1015, + -8278, + 0, + 9308, + 1413, + -96, + 920, + -620, + 144, + -167, + 7, + -27, + 6, + 23, + -52, + 32 + }, + { + -37, /* Filter 73 */ + 15, + -22, + -60, + 23, + -83, + 134, + -255, + 408, + -909, + -526, + -1023, + -8301, + 0, + 9289, + 1405, + -81, + 921, + -615, + 147, + -166, + 9, + -27, + 7, + 23, + -51, + 33 + }, + { + -37, /* Filter 74 */ + 16, + -22, + -59, + 23, + -82, + 134, + -253, + 413, + -910, + -514, + -1031, + -8324, + 0, + 9269, + 1396, + -66, + 921, + -611, + 150, + -166, + 10, + -27, + 8, + 23, + -51, + 33 + }, + { + -37, /* Filter 75 */ + 16, + -22, + -57, + 23, + -80, + 135, + -252, + 417, + -911, + -503, + -1039, + -8348, + 0, + 9250, + 1388, + -51, + 922, + -606, + 153, + -165, + 12, + -27, + 9, + 23, + -50, + 33 + }, + { + -37, /* Filter 76 */ + 17, + -22, + -56, + 24, + -79, + 136, + -250, + 422, + -912, + -491, + -1047, + -8371, + 0, + 9230, + 1379, + -37, + 922, + -602, + 156, + -165, + 14, + -27, + 11, + 23, + -49, + 33 + }, + { + -37, /* Filter 77 */ + 18, + -22, + -55, + 24, + -77, + 137, + -248, + 426, + -913, + -479, + -1055, + -8394, + 0, + 9210, + 1371, + -22, + 923, + -597, + 159, + -164, + 16, + -27, + 12, + 23, + -48, + 33 + }, + { + -37, /* Filter 78 */ + 19, + -22, + -54, + 24, + -76, + 138, + -246, + 431, + -914, + -468, + -1063, + -8416, + 0, + 9190, + 1363, + -7, + 923, + -593, + 161, + -163, + 18, + -27, + 13, + 23, + -47, + 33 + }, + { + -36, /* Filter 79 */ + 20, + -22, + -53, + 24, + -74, + 139, + -244, + 435, + -914, + -456, + -1072, + -8439, + 0, + 9170, + 1354, + 6, + 924, + -588, + 164, + -163, + 19, + -27, + 14, + 23, + -47, + 33 + }, + { + -36, /* Filter 80 */ + 20, + -22, + -52, + 24, + -73, + 139, + -242, + 440, + -915, + -444, + -1080, + -8462, + 0, + 9150, + 1346, + 21, + 924, + -584, + 167, + -162, + 21, + -27, + 15, + 23, + -46, + 34 + }, + { + -36, /* Filter 81 */ + 21, + -22, + -51, + 24, + -71, + 140, + -240, + 444, + -916, + -432, + -1088, + -8485, + 0, + 9129, + 1337, + 35, + 924, + -579, + 170, + -162, + 23, + -26, + 17, + 23, + -45, + 34 + }, + { + -36, /* Filter 82 */ + 22, + -22, + -50, + 24, + -70, + 141, + -238, + 449, + -917, + -420, + -1096, + -8507, + 0, + 9109, + 1329, + 49, + 924, + -575, + 172, + -161, + 25, + -26, + 18, + 23, + -44, + 34 + }, + { + -36, /* Filter 83 */ + 23, + -22, + -49, + 24, + -68, + 142, + -236, + 453, + -918, + -407, + -1104, + -8530, + 0, + 9089, + 1320, + 64, + 925, + -571, + 175, + -160, + 26, + -26, + 19, + 23, + -43, + 34 + }, + { + -36, /* Filter 84 */ + 24, + -22, + -48, + 24, + -67, + 143, + -234, + 458, + -918, + -395, + -1113, + -8552, + 0, + 9068, + 1312, + 78, + 925, + -566, + 178, + -160, + 28, + -26, + 20, + 23, + -43, + 34 + }, + { + -36, /* Filter 85 */ + 24, + -22, + -47, + 24, + -65, + 143, + -232, + 462, + -919, + -383, + -1121, + -8575, + 0, + 9048, + 1304, + 92, + 925, + -562, + 180, + -159, + 30, + -26, + 21, + 23, + -42, + 34 + }, + { + -36, /* Filter 86 */ + 25, + -22, + -45, + 25, + -64, + 144, + -230, + 467, + -920, + -370, + -1129, + -8597, + 0, + 9027, + 1295, + 106, + 925, + -557, + 183, + -158, + 31, + -26, + 23, + 23, + -41, + 34 + }, + { + -36, /* Filter 87 */ + 26, + -23, + -44, + 25, + -62, + 145, + -228, + 471, + -920, + -358, + -1137, + -8619, + 0, + 9006, + 1287, + 120, + 925, + -553, + 185, + -158, + 33, + -26, + 24, + 23, + -40, + 34 + }, + { + -36, /* Filter 88 */ + 27, + -23, + -43, + 25, + -61, + 146, + -225, + 476, + -921, + -345, + -1145, + -8641, + 0, + 8985, + 1278, + 134, + 925, + -548, + 188, + -157, + 35, + -26, + 25, + 23, + -39, + 35 + }, + { + -36, /* Filter 89 */ + 28, + -23, + -42, + 25, + -59, + 146, + -223, + 480, + -921, + -333, + -1154, + -8663, + 0, + 8964, + 1270, + 148, + 925, + -544, + 190, + -156, + 37, + -26, + 26, + 23, + -39, + 35 + }, + { + -36, /* Filter 90 */ + 28, + -23, + -41, + 25, + -58, + 147, + -221, + 485, + -922, + -320, + -1162, + -8685, + 0, + 8943, + 1262, + 161, + 925, + -539, + 193, + -156, + 38, + -26, + 27, + 23, + -38, + 35 + }, + { + -36, /* Filter 91 */ + 29, + -23, + -40, + 25, + -56, + 148, + -219, + 489, + -922, + -307, + -1170, + -8707, + 0, + 8922, + 1253, + 175, + 925, + -535, + 195, + -155, + 40, + -26, + 28, + 23, + -37, + 35 + }, + { + -36, /* Filter 92 */ + 30, + -23, + -39, + 25, + -55, + 149, + -217, + 494, + -923, + -294, + -1178, + -8729, + 0, + 8901, + 1245, + 189, + 925, + -530, + 198, + -154, + 42, + -26, + 30, + 23, + -36, + 35 + }, + { + -36, /* Filter 93 */ + 31, + -23, + -38, + 25, + -53, + 149, + -214, + 498, + -923, + -281, + -1187, + -8751, + 0, + 8880, + 1237, + 202, + 925, + -525, + 200, + -154, + 43, + -26, + 31, + 23, + -35, + 35 + }, + { + -35, /* Filter 94 */ + 31, + -23, + -36, + 25, + -51, + 150, + -212, + 503, + -924, + -268, + -1195, + -8773, + 0, + 8859, + 1228, + 215, + 925, + -521, + 203, + -153, + 45, + -26, + 32, + 23, + -35, + 35 + }, + { + -35, /* Filter 95 */ + 32, + -23, + -35, + 25, + -50, + 151, + -210, + 507, + -924, + -255, + -1203, + -8794, + 0, + 8837, + 1220, + 229, + 924, + -516, + 205, + -152, + 47, + -26, + 33, + 23, + -34, + 35 + }, + { + -35, /* Filter 96 */ + 33, + -23, + -34, + 25, + -48, + 151, + -207, + 512, + -924, + -242, + -1212, + -8816, + 0, + 8816, + 1212, + 242, + 924, + -512, + 207, + -151, + 48, + -25, + 34, + 23, + -33, + 35 + }, + { + -35, /* Filter 97 */ + 34, + -23, + -33, + 26, + -47, + 152, + -205, + 516, + -924, + -229, + -1220, + -8837, + 0, + 8794, + 1203, + 255, + 924, + -507, + 210, + -151, + 50, + -25, + 35, + 23, + -32, + 35 + }, + { + -35, /* Filter 98 */ + 35, + -23, + -32, + 26, + -45, + 153, + -203, + 521, + -925, + -215, + -1228, + -8859, + 0, + 8773, + 1195, + 268, + 924, + -503, + 212, + -150, + 51, + -25, + 36, + 23, + -31, + 35 + }, + { + -35, /* Filter 99 */ + 35, + -23, + -31, + 26, + -43, + 154, + -200, + 525, + -925, + -202, + -1237, + -8880, + 0, + 8751, + 1187, + 281, + 923, + -498, + 214, + -149, + 53, + -25, + 38, + 23, + -31, + 36 + }, + { + -35, /* Filter 100 */ + 36, + -23, + -30, + 26, + -42, + 154, + -198, + 530, + -925, + -189, + -1245, + -8901, + 0, + 8729, + 1178, + 294, + 923, + -494, + 217, + -149, + 55, + -25, + 39, + 23, + -30, + 36 + }, + { + -35, /* Filter 101 */ + 37, + -23, + -28, + 26, + -40, + 155, + -195, + 535, + -925, + -175, + -1253, + -8922, + 0, + 8707, + 1170, + 307, + 922, + -489, + 219, + -148, + 56, + -25, + 40, + 23, + -29, + 36 + }, + { + -35, /* Filter 102 */ + 38, + -23, + -27, + 26, + -38, + 156, + -193, + 539, + -925, + -161, + -1262, + -8943, + 0, + 8685, + 1162, + 320, + 922, + -485, + 221, + -147, + 58, + -25, + 41, + 23, + -28, + 36 + }, + { + -35, /* Filter 103 */ + 39, + -23, + -26, + 26, + -37, + 156, + -190, + 544, + -925, + -148, + -1270, + -8964, + 0, + 8663, + 1154, + 333, + 921, + -480, + 223, + -146, + 59, + -25, + 42, + 23, + -28, + 36 + }, + { + -35, /* Filter 104 */ + 39, + -23, + -25, + 26, + -35, + 157, + -188, + 548, + -925, + -134, + -1278, + -8985, + 0, + 8641, + 1145, + 345, + 921, + -476, + 225, + -146, + 61, + -25, + 43, + 23, + -27, + 36 + }, + { + -34, /* Filter 105 */ + 40, + -23, + -24, + 26, + -33, + 158, + -185, + 553, + -925, + -120, + -1287, + -9006, + 0, + 8619, + 1137, + 358, + 920, + -471, + 228, + -145, + 62, + -25, + 44, + 23, + -26, + 36 + }, + { + -34, /* Filter 106 */ + 41, + -23, + -23, + 26, + -31, + 158, + -183, + 557, + -925, + -106, + -1295, + -9027, + 0, + 8597, + 1129, + 370, + 920, + -467, + 230, + -144, + 64, + -25, + 45, + 22, + -25, + 36 + }, + { + -34, /* Filter 107 */ + 42, + -23, + -21, + 26, + -30, + 159, + -180, + 562, + -925, + -92, + -1304, + -9048, + 0, + 8575, + 1121, + 383, + 919, + -462, + 232, + -143, + 65, + -24, + 47, + 22, + -24, + 36 + }, + { + -34, /* Filter 108 */ + 43, + -23, + -20, + 26, + -28, + 160, + -178, + 566, + -925, + -78, + -1312, + -9068, + 0, + 8552, + 1113, + 395, + 918, + -458, + 234, + -143, + 67, + -24, + 48, + 22, + -24, + 36 + }, + { + -34, /* Filter 109 */ + 43, + -23, + -19, + 26, + -26, + 160, + -175, + 571, + -925, + -64, + -1320, + -9089, + 0, + 8530, + 1104, + 407, + 918, + -453, + 236, + -142, + 68, + -24, + 49, + 22, + -23, + 36 + }, + { + -34, /* Filter 110 */ + 44, + -23, + -18, + 26, + -25, + 161, + -172, + 575, + -924, + -49, + -1329, + -9109, + 0, + 8507, + 1096, + 420, + 917, + -449, + 238, + -141, + 70, + -24, + 50, + 22, + -22, + 36 + }, + { + -34, /* Filter 111 */ + 45, + -23, + -17, + 26, + -23, + 162, + -170, + 579, + -924, + -35, + -1337, + -9129, + 0, + 8485, + 1088, + 432, + 916, + -444, + 240, + -140, + 71, + -24, + 51, + 22, + -21, + 36 + }, + { + -34, /* Filter 112 */ + 46, + -23, + -15, + 27, + -21, + 162, + -167, + 584, + -924, + -21, + -1346, + -9150, + 0, + 8462, + 1080, + 444, + 915, + -440, + 242, + -139, + 73, + -24, + 52, + 22, + -20, + 36 + }, + { + -33, /* Filter 113 */ + 47, + -23, + -14, + 27, + -19, + 163, + -164, + 588, + -924, + -6, + -1354, + -9170, + 0, + 8439, + 1072, + 456, + 914, + -435, + 244, + -139, + 74, + -24, + 53, + 22, + -20, + 36 + }, + { + -33, /* Filter 114 */ + 47, + -23, + -13, + 27, + -18, + 163, + -161, + 593, + -923, + 7, + -1363, + -9190, + 0, + 8416, + 1063, + 468, + 914, + -431, + 246, + -138, + 76, + -24, + 54, + 22, + -19, + 37 + }, + { + -33, /* Filter 115 */ + 48, + -23, + -12, + 27, + -16, + 164, + -159, + 597, + -923, + 22, + -1371, + -9210, + 0, + 8394, + 1055, + 479, + 913, + -426, + 248, + -137, + 77, + -24, + 55, + 22, + -18, + 37 + }, + { + -33, /* Filter 116 */ + 49, + -23, + -11, + 27, + -14, + 165, + -156, + 602, + -922, + 37, + -1379, + -9230, + 0, + 8371, + 1047, + 491, + 912, + -422, + 250, + -136, + 79, + -24, + 56, + 22, + -17, + 37 + }, + { + -33, /* Filter 117 */ + 50, + -23, + -9, + 27, + -12, + 165, + -153, + 606, + -922, + 51, + -1388, + -9250, + 0, + 8348, + 1039, + 503, + 911, + -417, + 252, + -135, + 80, + -23, + 57, + 22, + -16, + 37 + }, + { + -33, /* Filter 118 */ + 51, + -23, + -8, + 27, + -10, + 166, + -150, + 611, + -921, + 66, + -1396, + -9269, + 0, + 8324, + 1031, + 514, + 910, + -413, + 253, + -134, + 82, + -23, + 59, + 22, + -16, + 37 + }, + { + -33, /* Filter 119 */ + 51, + -23, + -7, + 27, + -9, + 166, + -147, + 615, + -921, + 81, + -1405, + -9289, + 0, + 8301, + 1023, + 526, + 909, + -408, + 255, + -134, + 83, + -23, + 60, + 22, + -15, + 37 + }, + { + -32, /* Filter 120 */ + 52, + -23, + -6, + 27, + -7, + 167, + -144, + 620, + -920, + 96, + -1413, + -9308, + 0, + 8278, + 1015, + 537, + 908, + -404, + 257, + -133, + 84, + -23, + 61, + 22, + -14, + 37 + }, + { + -32, /* Filter 121 */ + 53, + -23, + -5, + 27, + -5, + 167, + -142, + 624, + -919, + 111, + -1422, + -9328, + 0, + 8255, + 1007, + 548, + 906, + -399, + 259, + -132, + 86, + -23, + 62, + 22, + -13, + 37 + }, + { + -32, /* Filter 122 */ + 54, + -23, + -3, + 27, + -3, + 168, + -139, + 629, + -919, + 126, + -1430, + -9347, + 0, + 8232, + 999, + 560, + 905, + -395, + 261, + -131, + 87, + -23, + 63, + 22, + -13, + 37 + }, + { + -32, /* Filter 123 */ + 55, + -23, + -2, + 27, + -1, + 168, + -136, + 633, + -918, + 142, + -1439, + -9367, + 0, + 8208, + 991, + 571, + 904, + -391, + 262, + -130, + 89, + -23, + 64, + 22, + -12, + 37 + }, + { + -32, /* Filter 124 */ + 55, + -23, + -1, + 27, + 0, + 169, + -133, + 637, + -917, + 157, + -1447, + -9386, + 0, + 8185, + 983, + 582, + 903, + -386, + 264, + -129, + 90, + -23, + 65, + 22, + -11, + 37 + }, + { + -32, /* Filter 125 */ + 56, + -23, + 0, + 27, + 1, + 169, + -130, + 642, + -916, + 172, + -1456, + -9405, + 0, + 8161, + 975, + 593, + 902, + -382, + 266, + -129, + 91, + -23, + 66, + 22, + -10, + 37 + }, + { + -32, /* Filter 126 */ + 57, + -23, + 0, + 27, + 3, + 170, + -127, + 646, + -915, + 188, + -1464, + -9424, + 0, + 8138, + 966, + 604, + 900, + -377, + 267, + -128, + 93, + -22, + 67, + 22, + -9, + 37 + }, + { + -31, /* Filter 127 */ + 58, + -23, + 2, + 27, + 5, + 170, + -124, + 651, + -915, + 203, + -1473, + -9443, + 0, + 8114, + 958, + 615, + 899, + -373, + 269, + -127, + 94, + -22, + 68, + 22, + -9, + 37 + }, + { + -31, /* Filter 128 */ + 58, + -23, + 3, + 27, + 7, + 171, + -121, + 655, + -914, + 219, + -1481, + -9462, + 0, + 8090, + 950, + 626, + 898, + -368, + 271, + -126, + 95, + -22, + 69, + 22, + -8, + 37 + }, + { + -31, /* Filter 129 */ + 59, + -23, + 4, + 27, + 9, + 171, + -117, + 659, + -913, + 234, + -1490, + -9480, + 0, + 8066, + 943, + 636, + 896, + -364, + 272, + -125, + 96, + -22, + 70, + 22, + -7, + 37 + }, + { + -31, /* Filter 130 */ + 60, + -23, + 5, + 27, + 11, + 172, + -114, + 664, + -912, + 250, + -1498, + -9499, + 0, + 8042, + 935, + 647, + 895, + -359, + 274, + -124, + 98, + -22, + 71, + 22, + -6, + 37 + }, + { + -31, /* Filter 131 */ + 61, + -22, + 7, + 27, + 13, + 172, + -111, + 668, + -911, + 266, + -1507, + -9517, + 0, + 8019, + 927, + 658, + 894, + -355, + 275, + -123, + 99, + -22, + 72, + 22, + -6, + 37 + }, + { + -31, /* Filter 132 */ + 62, + -22, + 8, + 27, + 15, + 173, + -108, + 673, + -909, + 282, + -1515, + -9536, + 0, + 7995, + 919, + 668, + 892, + -351, + 277, + -122, + 100, + -22, + 73, + 21, + -5, + 37 + }, + { + -30, /* Filter 133 */ + 62, + -22, + 9, + 27, + 16, + 173, + -105, + 677, + -908, + 298, + -1524, + -9554, + 0, + 7971, + 911, + 678, + 891, + -346, + 278, + -121, + 102, + -22, + 74, + 21, + -4, + 37 + }, + { + -30, /* Filter 134 */ + 63, + -22, + 10, + 27, + 18, + 174, + -102, + 681, + -907, + 314, + -1532, + -9572, + 0, + 7946, + 903, + 689, + 889, + -342, + 280, + -121, + 103, + -21, + 75, + 21, + -3, + 37 + }, + { + -30, /* Filter 135 */ + 64, + -22, + 11, + 27, + 20, + 174, + -99, + 686, + -906, + 330, + -1541, + -9591, + 0, + 7922, + 895, + 699, + 888, + -337, + 281, + -120, + 104, + -21, + 76, + 21, + -3, + 37 + }, + { + -30, /* Filter 136 */ + 65, + -22, + 13, + 27, + 22, + 175, + -95, + 690, + -905, + 346, + -1549, + -9609, + 0, + 7898, + 887, + 709, + 886, + -333, + 283, + -119, + 105, + -21, + 77, + 21, + -2, + 37 + }, + { + -30, /* Filter 137 */ + 65, + -22, + 14, + 27, + 24, + 175, + -92, + 694, + -903, + 362, + -1558, + -9627, + 0, + 7874, + 879, + 719, + 885, + -329, + 284, + -118, + 107, + -21, + 78, + 21, + -1, + 37 + }, + { + -30, /* Filter 138 */ + 66, + -22, + 15, + 27, + 26, + 176, + -89, + 699, + -902, + 379, + -1566, + -9644, + 0, + 7850, + 871, + 729, + 883, + -324, + 286, + -117, + 108, + -21, + 79, + 21, + 0, + 37 + }, + { + -29, /* Filter 139 */ + 67, + -22, + 16, + 27, + 28, + 176, + -85, + 703, + -901, + 395, + -1575, + -9662, + 0, + 7825, + 863, + 739, + 881, + -320, + 287, + -116, + 109, + -21, + 80, + 21, + 0, + 37 + }, + { + -29, /* Filter 140 */ + 68, + -22, + 18, + 27, + 30, + 176, + -82, + 707, + -899, + 412, + -1583, + -9680, + 0, + 7801, + 856, + 749, + 880, + -315, + 288, + -115, + 110, + -21, + 81, + 21, + 0, + 37 + }, + { + -29, /* Filter 141 */ + 69, + -22, + 19, + 27, + 32, + 177, + -79, + 711, + -898, + 428, + -1592, + -9698, + 0, + 7776, + 848, + 759, + 878, + -311, + 290, + -114, + 111, + -20, + 82, + 21, + 1, + 37 + }, + { + -29, /* Filter 142 */ + 69, + -22, + 20, + 27, + 34, + 177, + -75, + 716, + -896, + 445, + -1600, + -9715, + 0, + 7752, + 840, + 768, + 876, + -307, + 291, + -113, + 112, + -20, + 83, + 21, + 2, + 37 + }, + { + -29, /* Filter 143 */ + 70, + -22, + 21, + 27, + 36, + 177, + -72, + 720, + -895, + 461, + -1609, + -9732, + 0, + 7727, + 832, + 778, + 874, + -302, + 292, + -112, + 114, + -20, + 84, + 21, + 2, + 37 + }, + { + -28, /* Filter 144 */ + 71, + -22, + 22, + 27, + 38, + 178, + -69, + 724, + -893, + 478, + -1617, + -9750, + 0, + 7702, + 825, + 788, + 873, + -298, + 293, + -111, + 115, + -20, + 85, + 21, + 3, + 37 + }, + { + -28, /* Filter 145 */ + 72, + -22, + 24, + 27, + 40, + 178, + -65, + 729, + -891, + 495, + -1626, + -9767, + 0, + 7678, + 817, + 797, + 871, + -294, + 295, + -111, + 116, + -20, + 85, + 21, + 4, + 37 + }, + { + -28, /* Filter 146 */ + 72, + -22, + 25, + 27, + 42, + 179, + -62, + 733, + -890, + 512, + -1634, + -9784, + 0, + 7653, + 809, + 806, + 869, + -289, + 296, + -110, + 117, + -20, + 86, + 21, + 5, + 37 + }, + { + -28, /* Filter 147 */ + 73, + -22, + 26, + 27, + 44, + 179, + -58, + 737, + -888, + 529, + -1643, + -9801, + 0, + 7628, + 801, + 816, + 867, + -285, + 297, + -109, + 118, + -20, + 87, + 21, + 5, + 37 + }, + { + -28, /* Filter 148 */ + 74, + -22, + 27, + 27, + 46, + 179, + -55, + 741, + -886, + 546, + -1651, + -9818, + 0, + 7603, + 794, + 825, + 865, + -281, + 298, + -108, + 119, + -19, + 88, + 21, + 6, + 37 + }, + { + -27, /* Filter 149 */ + 75, + -22, + 29, + 27, + 48, + 180, + -51, + 745, + -884, + 563, + -1660, + -9835, + 0, + 7578, + 786, + 834, + 863, + -277, + 299, + -107, + 120, + -19, + 89, + 20, + 7, + 37 + }, + { + -27, /* Filter 150 */ + 75, + -22, + 30, + 27, + 50, + 180, + -48, + 750, + -882, + 580, + -1668, + -9851, + 0, + 7553, + 778, + 843, + 861, + -272, + 301, + -106, + 121, + -19, + 90, + 20, + 8, + 37 + }, + { + -27, /* Filter 151 */ + 76, + -22, + 31, + 27, + 52, + 180, + -44, + 754, + -880, + 597, + -1677, + -9868, + 0, + 7528, + 771, + 852, + 859, + -268, + 302, + -105, + 122, + -19, + 91, + 20, + 8, + 37 + }, + { + -27, /* Filter 152 */ + 77, + -22, + 32, + 27, + 54, + 180, + -41, + 758, + -878, + 614, + -1685, + -9884, + 0, + 7503, + 763, + 861, + 857, + -264, + 303, + -104, + 123, + -19, + 92, + 20, + 9, + 37 + }, + { + -27, /* Filter 153 */ + 78, + -22, + 34, + 27, + 56, + 181, + -37, + 762, + -876, + 632, + -1694, + -9901, + 0, + 7478, + 755, + 870, + 855, + -260, + 304, + -103, + 124, + -19, + 93, + 20, + 10, + 37 + }, + { + -26, /* Filter 154 */ + 78, + -22, + 35, + 27, + 58, + 181, + -33, + 766, + -874, + 649, + -1702, + -9917, + 0, + 7453, + 748, + 879, + 853, + -255, + 305, + -102, + 125, + -19, + 94, + 20, + 10, + 37 + }, + { + -26, /* Filter 155 */ + 79, + -22, + 36, + 27, + 60, + 181, + -30, + 770, + -872, + 667, + -1711, + -9933, + 0, + 7428, + 740, + 887, + 851, + -251, + 306, + -101, + 126, + -18, + 94, + 20, + 11, + 37 + }, + { + -26, /* Filter 156 */ + 80, + -21, + 37, + 27, + 62, + 181, + -26, + 774, + -870, + 684, + -1719, + -9949, + 0, + 7403, + 732, + 896, + 849, + -247, + 307, + -100, + 127, + -18, + 95, + 20, + 12, + 37 + }, + { + -26, /* Filter 157 */ + 80, + -21, + 38, + 27, + 64, + 182, + -22, + 779, + -868, + 702, + -1728, + -9965, + 0, + 7377, + 725, + 905, + 847, + -243, + 308, + -99, + 128, + -18, + 96, + 20, + 13, + 37 + }, + { + -25, /* Filter 158 */ + 81, + -21, + 40, + 27, + 66, + 182, + -19, + 783, + -866, + 720, + -1736, + -9981, + 0, + 7352, + 717, + 913, + 845, + -238, + 309, + -98, + 129, + -18, + 97, + 20, + 13, + 37 + }, + { + -25, /* Filter 159 */ + 82, + -21, + 41, + 27, + 68, + 182, + -15, + 787, + -863, + 737, + -1745, + -9997, + 0, + 7327, + 710, + 921, + 843, + -234, + 310, + -97, + 130, + -18, + 98, + 20, + 14, + 37 + }, + { + -25, /* Filter 160 */ + 83, + -21, + 42, + 27, + 70, + 182, + -11, + 791, + -861, + 755, + -1753, + -10012, + 0, + 7301, + 702, + 930, + 840, + -230, + 311, + -96, + 131, + -18, + 99, + 20, + 15, + 36 + }, + { + -25, /* Filter 161 */ + 83, + -21, + 43, + 27, + 72, + 183, + -8, + 795, + -859, + 773, + -1762, + -10028, + 0, + 7276, + 695, + 938, + 838, + -226, + 311, + -95, + 132, + -17, + 100, + 20, + 15, + 36 + }, + { + -25, /* Filter 162 */ + 84, + -21, + 45, + 27, + 74, + 183, + -4, + 799, + -856, + 791, + -1770, + -10043, + 0, + 7250, + 687, + 946, + 836, + -222, + 312, + -94, + 133, + -17, + 100, + 19, + 16, + 36 + }, + { + -24, /* Filter 163 */ + 85, + -21, + 46, + 27, + 76, + 183, + 0, + 803, + -854, + 809, + -1779, + -10059, + 0, + 7225, + 680, + 954, + 834, + -218, + 313, + -93, + 134, + -17, + 101, + 19, + 17, + 36 + }, + { + -24, /* Filter 164 */ + 86, + -21, + 47, + 27, + 78, + 183, + 3, + 807, + -851, + 827, + -1787, + -10074, + 0, + 7199, + 672, + 962, + 831, + -213, + 314, + -92, + 135, + -17, + 102, + 19, + 17, + 36 + }, + { + -24, /* Filter 165 */ + 86, + -21, + 48, + 27, + 80, + 183, + 7, + 811, + -849, + 846, + -1796, + -10089, + 0, + 7173, + 665, + 970, + 829, + -209, + 315, + -91, + 136, + -17, + 103, + 19, + 18, + 36 + }, + { + -24, /* Filter 166 */ + 87, + -21, + 49, + 27, + 82, + 183, + 10, + 815, + -846, + 864, + -1804, + -10104, + 0, + 7148, + 658, + 978, + 827, + -205, + 315, + -90, + 137, + -17, + 104, + 19, + 19, + 36 + }, + { + -23, /* Filter 167 */ + 88, + -21, + 51, + 27, + 84, + 184, + 14, + 819, + -843, + 882, + -1813, + -10119, + 0, + 7122, + 650, + 986, + 824, + -201, + 316, + -89, + 138, + -16, + 104, + 19, + 20, + 36 + }, + { + -23, /* Filter 168 */ + 88, + -21, + 52, + 27, + 86, + 184, + 18, + 823, + -841, + 900, + -1821, + -10133, + 0, + 7096, + 643, + 993, + 822, + -197, + 317, + -88, + 139, + -16, + 105, + 19, + 20, + 36 + }, + { + -23, /* Filter 169 */ + 89, + -21, + 53, + 27, + 88, + 184, + 22, + 827, + -838, + 919, + -1830, + -10148, + 0, + 7070, + 635, + 1001, + 819, + -193, + 318, + -88, + 139, + -16, + 106, + 19, + 21, + 36 + }, + { + -23, /* Filter 170 */ + 90, + -21, + 54, + 27, + 90, + 184, + 26, + 831, + -835, + 937, + -1838, + -10163, + 0, + 7044, + 628, + 1009, + 817, + -189, + 318, + -87, + 140, + -16, + 107, + 19, + 22, + 36 + }, + { + -22, /* Filter 171 */ + 90, + -20, + 55, + 27, + 92, + 184, + 30, + 835, + -832, + 956, + -1847, + -10177, + 0, + 7019, + 621, + 1016, + 815, + -185, + 319, + -86, + 141, + -16, + 108, + 19, + 22, + 36 + }, + { + -22, /* Filter 172 */ + 91, + -20, + 57, + 27, + 94, + 184, + 34, + 838, + -830, + 975, + -1855, + -10192, + 0, + 6993, + 614, + 1023, + 812, + -181, + 320, + -85, + 142, + -16, + 108, + 19, + 23, + 36 + }, + { + -22, /* Filter 173 */ + 92, + -20, + 58, + 27, + 96, + 184, + 38, + 842, + -827, + 993, + -1864, + -10206, + 0, + 6967, + 606, + 1031, + 810, + -177, + 320, + -84, + 143, + -15, + 109, + 19, + 24, + 36 + }, + { + -22, /* Filter 174 */ + 93, + -20, + 59, + 27, + 99, + 184, + 42, + 846, + -824, + 1012, + -1872, + -10220, + 0, + 6941, + 599, + 1038, + 807, + -173, + 321, + -83, + 143, + -15, + 110, + 18, + 24, + 36 + }, + { + -21, /* Filter 175 */ + 93, + -20, + 60, + 26, + 101, + 184, + 46, + 850, + -821, + 1031, + -1880, + -10234, + 0, + 6915, + 592, + 1045, + 804, + -169, + 321, + -82, + 144, + -15, + 111, + 18, + 25, + 36 + }, + { + -21, /* Filter 176 */ + 94, + -20, + 62, + 26, + 103, + 184, + 50, + 854, + -818, + 1050, + -1889, + -10248, + 0, + 6889, + 585, + 1052, + 802, + -165, + 322, + -81, + 145, + -15, + 111, + 18, + 26, + 35 + }, + { + -21, /* Filter 177 */ + 95, + -20, + 63, + 26, + 105, + 185, + 54, + 858, + -814, + 1069, + -1897, + -10262, + 0, + 6862, + 577, + 1059, + 799, + -161, + 323, + -80, + 146, + -15, + 112, + 18, + 26, + 35 + }, + { + -21, /* Filter 178 */ + 95, + -20, + 64, + 26, + 107, + 185, + 58, + 861, + -811, + 1088, + -1906, + -10275, + 0, + 6836, + 570, + 1066, + 797, + -157, + 323, + -79, + 147, + -15, + 113, + 18, + 27, + 35 + }, + { + -20, /* Filter 179 */ + 96, + -20, + 65, + 26, + 109, + 185, + 62, + 865, + -808, + 1107, + -1914, + -10289, + 0, + 6810, + 563, + 1073, + 794, + -153, + 324, + -78, + 147, + -14, + 113, + 18, + 28, + 35 + }, + { + -20, /* Filter 180 */ + 97, + -20, + 66, + 26, + 111, + 185, + 66, + 869, + -805, + 1126, + -1923, + -10302, + 0, + 6784, + 556, + 1080, + 791, + -149, + 324, + -77, + 148, + -14, + 114, + 18, + 28, + 35 + }, + { + -20, /* Filter 181 */ + 97, + -20, + 67, + 26, + 113, + 185, + 71, + 872, + -801, + 1145, + -1931, + -10316, + 0, + 6758, + 549, + 1086, + 789, + -145, + 324, + -76, + 149, + -14, + 115, + 18, + 29, + 35 + }, + { + -20, /* Filter 182 */ + 98, + -20, + 69, + 26, + 115, + 185, + 75, + 876, + -798, + 1164, + -1939, + -10329, + 0, + 6731, + 542, + 1093, + 786, + -141, + 325, + -75, + 149, + -14, + 116, + 18, + 29, + 35 + }, + { + -19, /* Filter 183 */ + 99, + -20, + 70, + 26, + 117, + 185, + 79, + 880, + -795, + 1184, + -1948, + -10342, + 0, + 6705, + 534, + 1100, + 783, + -137, + 325, + -74, + 150, + -14, + 116, + 18, + 30, + 35 + }, + { + -19, /* Filter 184 */ + 99, + -19, + 71, + 26, + 119, + 185, + 83, + 884, + -791, + 1203, + -1956, + -10355, + 0, + 6679, + 527, + 1106, + 781, + -133, + 326, + -73, + 151, + -14, + 117, + 18, + 31, + 35 + }, + { + -19, /* Filter 185 */ + 100, + -19, + 72, + 26, + 121, + 185, + 87, + 887, + -788, + 1223, + -1964, + -10368, + 0, + 6652, + 520, + 1113, + 778, + -129, + 326, + -72, + 151, + -13, + 118, + 17, + 31, + 35 + }, + { + -18, /* Filter 186 */ + 100, + -19, + 73, + 26, + 124, + 184, + 91, + 891, + -784, + 1242, + -1973, + -10381, + 0, + 6626, + 513, + 1119, + 775, + -125, + 326, + -71, + 152, + -13, + 118, + 17, + 32, + 35 + }, + { + -18, /* Filter 187 */ + 101, + -19, + 75, + 26, + 126, + 184, + 96, + 894, + -781, + 1262, + -1981, + -10393, + 0, + 6599, + 506, + 1125, + 772, + -121, + 327, + -70, + 153, + -13, + 119, + 17, + 33, + 34 + }, + { + -18, /* Filter 188 */ + 102, + -19, + 76, + 26, + 128, + 184, + 100, + 898, + -777, + 1281, + -1990, + -10406, + 0, + 6573, + 499, + 1131, + 769, + -118, + 327, + -69, + 153, + -13, + 120, + 17, + 33, + 34 + }, + { + -18, /* Filter 189 */ + 102, + -19, + 77, + 25, + 130, + 184, + 104, + 901, + -773, + 1301, + -1998, + -10418, + 0, + 6546, + 492, + 1137, + 767, + -114, + 327, + -68, + 154, + -13, + 120, + 17, + 34, + 34 + }, + { + -17, /* Filter 190 */ + 103, + -19, + 78, + 25, + 132, + 184, + 108, + 905, + -770, + 1321, + -2006, + -10431, + 0, + 6520, + 485, + 1143, + 764, + -110, + 328, + -67, + 154, + -13, + 121, + 17, + 34, + 34 + }, + { + -17, /* Filter 191 */ + 104, + -19, + 79, + 25, + 134, + 184, + 113, + 909, + -766, + 1341, + -2015, + -10443, + 0, + 6493, + 478, + 1149, + 761, + -106, + 328, + -66, + 155, + -12, + 122, + 17, + 35, + 34 + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v17rx_floating_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v17rx_floating_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,11144 @@ +#define RX_PULSESHAPER_GAIN 1.000000f +#define RX_PULSESHAPER_COEFF_SETS 192 +static const float rx_pulseshaper_re[RX_PULSESHAPER_COEFF_SETS][27] = +{ + { + -0.0020619018f, /* Filter 0 */ + 0.0003585523f, + -0.0033205507f, + 0.0000000000f, + -0.0024369440f, + -0.0015483286f, + -0.0039043549f, + -0.0072869120f, + -0.0031365185f, + -0.0318625939f, + 0.0179723867f, + -0.0443341732f, + 0.0312604822f, + 0.3230605354f, + 0.0505378020f, + -0.1900507362f, + -0.0211630887f, + -0.0320270276f, + -0.0278489283f, + 0.0026072431f, + -0.0110460175f, + 0.0013541001f, + -0.0049488090f, + -0.0000000000f, + -0.0036972890f, + -0.0010388971f, + -0.0010338346f + }, + { + -0.0020683708f, /* Filter 1 */ + 0.0003525575f, + -0.0033401247f, + 0.0000000000f, + -0.0024716928f, + -0.0015426375f, + -0.0039641299f, + -0.0072818054f, + -0.0032521646f, + -0.0319837501f, + 0.0178808444f, + -0.0449835104f, + 0.0313889711f, + 0.3234303845f, + 0.0504793852f, + -0.1892688035f, + -0.0208540454f, + -0.0321881057f, + -0.0277423727f, + 0.0025114767f, + -0.0110530868f, + 0.0013333687f, + -0.0049666219f, + -0.0000000000f, + -0.0037159717f, + -0.0010327352f, + -0.0010510198f + }, + { + -0.0020747359f, /* Filter 2 */ + 0.0003465273f, + -0.0033595723f, + 0.0000000000f, + -0.0025063405f, + -0.0015368271f, + -0.0040238979f, + -0.0072762570f, + -0.0033682442f, + -0.0321041418f, + 0.0177881547f, + -0.0456347697f, + 0.0315173303f, + 0.3237966198f, + 0.0504204080f, + -0.1884861003f, + -0.0205459255f, + -0.0323471495f, + -0.0276351622f, + 0.0024160790f, + -0.0110594921f, + 0.0013126376f, + -0.0049840526f, + -0.0000000000f, + -0.0037344368f, + -0.0010265333f, + -0.0010681046f + }, + { + -0.0020809967f, /* Filter 3 */ + 0.0003404626f, + -0.0033788979f, + 0.0000000000f, + -0.0025408856f, + -0.0015308989f, + -0.0040836583f, + -0.0072702646f, + -0.0034847552f, + -0.0322237637f, + 0.0176943134f, + -0.0462879352f, + 0.0316455549f, + 0.3241592762f, + 0.0503608735f, + -0.1877026542f, + -0.0202387338f, + -0.0325041534f, + -0.0275273031f, + 0.0023210497f, + -0.0110652351f, + 0.0012919081f, + -0.0050011043f, + -0.0000000000f, + -0.0037526894f, + -0.0010202946f, + -0.0010850831f + }, + { + -0.0020871540f, /* Filter 4 */ + 0.0003343643f, + -0.0033980896f, + 0.0000000000f, + -0.0025753233f, + -0.0015248506f, + -0.0041434070f, + -0.0072638274f, + -0.0036016954f, + -0.0323425986f, + 0.0175993179f, + -0.0469429903f, + 0.0317736429f, + 0.3245182896f, + 0.0503007794f, + -0.1869184792f, + -0.0199324784f, + -0.0326591229f, + -0.0274188054f, + 0.0022263916f, + -0.0110703162f, + 0.0012711815f, + -0.0050177778f, + -0.0000000000f, + -0.0037707253f, + -0.0010140199f, + -0.0011019602f + }, + { + -0.0020932061f, /* Filter 5 */ + 0.0003282310f, + -0.0034171601f, + 0.0000000000f, + -0.0026096525f, + -0.0015186844f, + -0.0042031392f, + -0.0072569405f, + -0.0037190588f, + -0.0324606458f, + 0.0175031682f, + -0.0475999433f, + 0.0319015944f, + 0.3248737054f, + 0.0502401324f, + -0.1861335945f, + -0.0196271574f, + -0.0328120641f, + -0.0273096732f, + 0.0021321098f, + -0.0110747363f, + 0.0012504589f, + -0.0050340733f, + -0.0000000000f, + -0.0037885462f, + -0.0010077057f, + -0.0011187340f + }, + { + -0.0020991518f, /* Filter 6 */ + 0.0003220639f, + -0.0034360946f, + 0.0000000000f, + -0.0026438710f, + -0.0015124002f, + -0.0042628518f, + -0.0072496072f, + -0.0038368434f, + -0.0325778977f, + 0.0174058626f, + -0.0482587741f, + 0.0320294011f, + 0.3252254876f, + 0.0501789307f, + -0.1853480191f, + -0.0193227779f, + -0.0329629727f, + -0.0271999184f, + 0.0020382052f, + -0.0110785003f, + 0.0012297420f, + -0.0050499875f, + -0.0000000000f, + -0.0038061482f, + -0.0010013566f, + -0.0011354014f + }, + { + -0.0021049923f, /* Filter 7 */ + 0.0003158634f, + -0.0034549006f, + 0.0000000000f, + -0.0026779756f, + -0.0015059960f, + -0.0043225420f, + -0.0072418204f, + -0.0039550473f, + -0.0326943386f, + 0.0173073982f, + -0.0489194702f, + 0.0321570632f, + 0.3255736244f, + 0.0501171763f, + -0.1845617592f, + -0.0190193487f, + -0.0331118630f, + -0.0270895417f, + 0.0019446819f, + -0.0110816114f, + 0.0012090309f, + -0.0050655213f, + -0.0000000000f, + -0.0038235324f, + -0.0009949709f, + -0.0011519648f + }, + { + -0.0021107264f, /* Filter 8 */ + 0.0003096295f, + -0.0034735715f, + 0.0000000000f, + -0.0027119655f, + -0.0014994741f, + -0.0043822054f, + -0.0072335836f, + -0.0040736649f, + -0.0328099690f, + 0.0172077747f, + -0.0495820369f, + 0.0322845815f, + 0.3259181294f, + 0.0500548715f, + -0.1837748387f, + -0.0187168672f, + -0.0332587359f, + -0.0269785595f, + 0.0018515428f, + -0.0110840763f, + 0.0011883268f, + -0.0050806797f, + -0.0000000000f, + -0.0038407034f, + -0.0009885487f, + -0.0011684229f + }, + { + -0.0021163512f, /* Filter 9 */ + 0.0003033628f, + -0.0034921137f, + 0.0000000000f, + -0.0027458380f, + -0.0014928333f, + -0.0044418429f, + -0.0072248932f, + -0.0041926924f, + -0.0329247776f, + 0.0171069856f, + -0.0502464419f, + 0.0324119487f, + 0.3262589677f, + 0.0499920157f, + -0.1829872716f, + -0.0184153382f, + -0.0334035882f, + -0.0268669691f, + 0.0017587860f, + -0.0110858859f, + 0.0011676322f, + -0.0050954597f, + -0.0000000000f, + -0.0038576503f, + -0.0009820912f, + -0.0011847721f + }, + { + -0.0021218707f, /* Filter 10 */ + 0.0002970631f, + -0.0035105169f, + 0.0000000000f, + -0.0027795897f, + -0.0014860735f, + -0.0045014440f, + -0.0072157478f, + -0.0043121270f, + -0.0330387505f, + 0.0170050359f, + -0.0509126991f, + 0.0325391632f, + 0.3265961402f, + 0.0499286139f, + -0.1821990707f, + -0.0181147701f, + -0.0335464345f, + -0.0267547838f, + 0.0016664209f, + -0.0110870524f, + 0.0011469467f, + -0.0051098607f, + -0.0000000000f, + -0.0038743798f, + -0.0009756000f, + -0.0012010169f + }, + { + -0.0021272804f, /* Filter 11 */ + 0.0002907313f, + -0.0035287880f, + 0.0000000000f, + -0.0028132202f, + -0.0014791959f, + -0.0045610084f, + -0.0072061462f, + -0.0044319669f, + -0.0331518885f, + 0.0169019206f, + -0.0515807741f, + 0.0326662218f, + 0.3269296554f, + 0.0498646641f, + -0.1814102747f, + -0.0178151678f, + -0.0336872691f, + -0.0266420053f, + 0.0015744429f, + -0.0110875784f, + 0.0011262723f, + -0.0051238819f, + -0.0000000000f, + -0.0038908892f, + -0.0009690729f, + -0.0012171503f + }, + { + -0.0021325818f, /* Filter 12 */ + 0.0002843666f, + -0.0035469196f, + 0.0000000000f, + -0.0028467280f, + -0.0014721991f, + -0.0046205348f, + -0.0071960854f, + -0.0045522045f, + -0.0332641784f, + 0.0167976380f, + -0.0522506751f, + 0.0327931228f, + 0.3272594964f, + 0.0498001678f, + -0.1806208765f, + -0.0175165287f, + -0.0338261024f, + -0.0265286487f, + 0.0014828623f, + -0.0110874640f, + 0.0011056098f, + -0.0051375257f, + -0.0000000000f, + -0.0039071795f, + -0.0009625120f, + -0.0012331777f + }, + { + -0.0021377717f, /* Filter 13 */ + 0.0002779697f, + -0.0035649100f, + 0.0000000000f, + -0.0028801083f, + -0.0014650844f, + -0.0046800169f, + -0.0071855666f, + -0.0046728389f, + -0.0333756137f, + 0.0166921866f, + -0.0529223907f, + 0.0329198616f, + 0.3275856455f, + 0.0497351290f, + -0.1798308921f, + -0.0172188616f, + -0.0339629379f, + -0.0264147135f, + 0.0013916737f, + -0.0110867107f, + 0.0010849601f, + -0.0051507929f, + -0.0000000000f, + -0.0039232480f, + -0.0009559179f, + -0.0012490941f + }, + { + -0.0021428519f, /* Filter 14 */ + 0.0002715416f, + -0.0035827641f, + 0.0000000000f, + -0.0029133560f, + -0.0014578511f, + -0.0047394533f, + -0.0071745880f, + -0.0047938623f, + -0.0334861824f, + 0.0165855627f, + -0.0535958993f, + 0.0330464377f, + 0.3279080881f, + 0.0496695465f, + -0.1790403429f, + -0.0169221683f, + -0.0340977770f, + -0.0263002096f, + 0.0013008835f, + -0.0110853211f, + 0.0010643250f, + -0.0051636809f, + -0.0000000000f, + -0.0039390981f, + -0.0009492899f, + -0.0012649024f + }, + { + -0.0021478235f, /* Filter 15 */ + 0.0002650826f, + -0.0036004777f, + 0.0000000000f, + -0.0029464795f, + -0.0014504998f, + -0.0047988370f, + -0.0071631454f, + -0.0049152798f, + -0.0335958803f, + 0.0164777696f, + -0.0542712019f, + 0.0331728498f, + 0.3282268613f, + 0.0496034263f, + -0.1782492532f, + -0.0166264567f, + -0.0342306216f, + -0.0261851487f, + 0.0012104960f, + -0.0110832996f, + 0.0010437052f, + -0.0051761955f, + -0.0000000000f, + -0.0039547236f, + -0.0009426290f, + -0.0012806020f + }, + { + -0.0021526811f, /* Filter 16 */ + 0.0002585916f, + -0.0036180491f, + 0.0000000000f, + -0.0029794678f, + -0.0014430304f, + -0.0048581698f, + -0.0071512408f, + -0.0050370769f, + -0.0337047030f, + 0.0163688011f, + -0.0549482856f, + 0.0332990916f, + 0.3285419113f, + 0.0495367633f, + -0.1774576372f, + -0.0163317246f, + -0.0343614823f, + -0.0260695287f, + 0.0011205114f, + -0.0110806487f, + 0.0010231017f, + -0.0051883299f, + -0.0000000000f, + -0.0039701300f, + -0.0009359356f, + -0.0012961871f + }, + { + -0.0021574284f, /* Filter 17 */ + 0.0002520699f, + -0.0036354734f, + 0.0000000000f, + -0.0030123189f, + -0.0014354426f, + -0.0049174434f, + -0.0071388691f, + -0.0051592580f, + -0.0338126301f, + 0.0162586580f, + -0.0556271369f, + 0.0334251612f, + 0.3288532338f, + 0.0494695653f, + -0.1766655070f, + -0.0160379814f, + -0.0344903631f, + -0.0259533663f, + 0.0010309301f, + -0.0110773713f, + 0.0010025158f, + -0.0052000922f, + -0.0000000000f, + -0.0039853119f, + -0.0009292099f, + -0.0013116612f + }, + { + -0.0021620629f, /* Filter 18 */ + 0.0002455178f, + -0.0036527558f, + 0.0000000000f, + -0.0030450357f, + -0.0014277367f, + -0.0049766550f, + -0.0071260337f, + -0.0052818148f, + -0.0339196635f, + 0.0161473402f, + -0.0563077467f, + 0.0335510562f, + 0.3291608469f, + 0.0494018279f, + -0.1758728665f, + -0.0157452306f, + -0.0346172596f, + -0.0258366582f, + 0.0009417582f, + -0.0110734677f, + 0.0009819489f, + -0.0052114720f, + -0.0000000000f, + -0.0040002741f, + -0.0009224524f, + -0.0013270241f + }, + { + -0.0021665839f, /* Filter 19 */ + 0.0002389352f, + -0.0036698948f, + 0.0000000000f, + -0.0030776105f, + -0.0014199134f, + -0.0050358040f, + -0.0071127326f, + -0.0054047443f, + -0.0340257897f, + 0.0160348403f, + -0.0569901065f, + 0.0336767754f, + 0.3294647168f, + 0.0493335604f, + -0.1750797642f, + -0.0154534710f, + -0.0347421838f, + -0.0257194246f, + 0.0008529956f, + -0.0110689444f, + 0.0009614017f, + -0.0052224822f, + -0.0000000000f, + -0.0040150098f, + -0.0009156640f, + -0.0013422743f + }, + { + -0.0021709935f, /* Filter 20 */ + 0.0002323231f, + -0.0036868820f, + 0.0000000000f, + -0.0031100445f, + -0.0014119724f, + -0.0050948817f, + -0.0070989590f, + -0.0055280441f, + -0.0341310065f, + 0.0159211695f, + -0.0576741947f, + 0.0338023139f, + 0.3297648658f, + 0.0492647580f, + -0.1742862004f, + -0.0151627154f, + -0.0348651405f, + -0.0256016596f, + 0.0007646444f, + -0.0110638054f, + 0.0009408753f, + -0.0052331148f, + -0.0000000000f, + -0.0040295204f, + -0.0009088446f, + -0.0013574107f + }, + { + -0.0021752882f, /* Filter 21 */ + 0.0002256805f, + -0.0037037255f, + 0.0000000000f, + -0.0031423371f, + -0.0014039134f, + -0.0051538904f, + -0.0070847143f, + -0.0056517100f, + -0.0342353018f, + 0.0158063103f, + -0.0583600246f, + 0.0339276705f, + 0.3300612587f, + 0.0491954263f, + -0.1734921841f, + -0.0148729578f, + -0.0349861306f, + -0.0254833823f, + 0.0006767090f, + -0.0110580501f, + 0.0009203707f, + -0.0052433761f, + -0.0000000000f, + -0.0040438090f, + -0.0009019959f, + -0.0013724328f + }, + { + -0.0021794696f, /* Filter 22 */ + 0.0002190094f, + -0.0037204152f, + 0.0000000000f, + -0.0031744818f, + -0.0013957372f, + -0.0052128211f, + -0.0070700018f, + -0.0057757379f, + -0.0343386669f, + 0.0156902759f, + -0.0590475577f, + 0.0340528424f, + 0.3303539045f, + 0.0491255647f, + -0.1726977302f, + -0.0145842116f, + -0.0351051571f, + -0.0253645869f, + 0.0005891905f, + -0.0110516828f, + 0.0008998894f, + -0.0052532571f, + -0.0000000000f, + -0.0040578765f, + -0.0008951164f, + -0.0013873415f + }, + { + -0.0021835332f, /* Filter 23 */ + 0.0002123080f, + -0.0037369580f, + 0.0000000000f, + -0.0032064778f, + -0.0013874429f, + -0.0052716754f, + -0.0070548131f, + -0.0059001204f, + -0.0344410900f, + 0.0155730524f, + -0.0597367984f, + 0.0341778230f, + 0.3306427857f, + 0.0490551686f, + -0.1719028769f, + -0.0142964714f, + -0.0352222256f, + -0.0252452876f, + 0.0005020904f, + -0.0110447047f, + 0.0008794327f, + -0.0052627649f, + -0.0000000000f, + -0.0040717178f, + -0.0008882074f, + -0.0014021320f + }, + { + -0.0021874838f, /* Filter 24 */ + 0.0002055786f, + -0.0037533457f, + 0.0000000000f, + -0.0032383252f, + -0.0013790323f, + -0.0053304459f, + -0.0070391540f, + -0.0060248575f, + -0.0345425735f, + 0.0154546458f, + -0.0604277411f, + 0.0343026178f, + 0.3309279035f, + 0.0489842529f, + -0.1711076163f, + -0.0140097447f, + -0.0353373491f, + -0.0251254954f, + 0.0004154116f, + -0.0110371168f, + 0.0008590005f, + -0.0052719037f, + -0.0000000000f, + -0.0040853303f, + -0.0008812689f, + -0.0014168097f + }, + { + -0.0021913182f, /* Filter 25 */ + 0.0001988203f, + -0.0037695819f, + 0.0000000000f, + -0.0032700204f, + -0.0013705037f, + -0.0053891314f, + -0.0070230192f, + -0.0061499438f, + -0.0346430960f, + 0.0153350520f, + -0.0611203609f, + 0.0344272156f, + 0.3312092597f, + 0.0489128097f, + -0.1703119776f, + -0.0137240371f, + -0.0354505202f, + -0.0250052112f, + 0.0003291546f, + -0.0110289268f, + 0.0008385950f, + -0.0052806669f, + -0.0000000000f, + -0.0040987206f, + -0.0008743021f, + -0.0014313705f + }, + { + -0.0021950358f, /* Filter 26 */ + 0.0001920348f, + -0.0037856664f, + 0.0000000000f, + -0.0033015580f, + -0.0013618591f, + -0.0054477253f, + -0.0070064077f, + -0.0062753772f, + -0.0347426640f, + 0.0152142751f, + -0.0618146580f, + 0.0345516193f, + 0.3314868370f, + 0.0488408446f, + -0.1695159803f, + -0.0134393508f, + -0.0355617515f, + -0.0248844430f, + 0.0002433249f, + -0.0110201366f, + 0.0008182166f, + -0.0052890581f, + -0.0000000000f, + -0.0041118878f, + -0.0008673053f, + -0.0014458149f + }, + { + -0.0021986382f, /* Filter 27 */ + 0.0001852208f, + -0.0038015912f, + 0.0000000000f, + -0.0033329427f, + -0.0013530973f, + -0.0055062248f, + -0.0069893153f, + -0.0064011503f, + -0.0348412605f, + 0.0150923097f, + -0.0625106192f, + 0.0346758233f, + 0.3317606309f, + 0.0487683599f, + -0.1687196397f, + -0.0131556897f, + -0.0356710455f, + -0.0247632008f, + 0.0001579238f, + -0.0110107504f, + 0.0007978665f, + -0.0052970776f, + -0.0000000000f, + -0.0041248212f, + -0.0008602826f, + -0.0014601426f + }, + { + -0.0022021205f, /* Filter 28 */ + 0.0001783784f, + -0.0038173642f, + 0.0000000000f, + -0.0033641641f, + -0.0013442186f, + -0.0055646300f, + -0.0069717498f, + -0.0065272595f, + -0.0349388718f, + 0.0149691501f, + -0.0632082284f, + 0.0347998259f, + 0.3320306306f, + 0.0486953528f, + -0.1679229530f, + -0.0128730542f, + -0.0357784018f, + -0.0246414871f, + 0.0000729497f, + -0.0110007658f, + 0.0007775460f, + -0.0053047256f, + -0.0000000000f, + -0.0041375369f, + -0.0008532325f, + -0.0014743520f + }, + { + -0.0022054869f, /* Filter 29 */ + 0.0001715097f, + -0.0038329794f, + 0.0000000000f, + -0.0033952242f, + -0.0013352233f, + -0.0056229327f, + -0.0069537018f, + -0.0066537014f, + -0.0350355011f, + 0.0148448026f, + -0.0639074789f, + 0.0349236250f, + 0.3322968292f, + 0.0486218279f, + -0.1671259528f, + -0.0125914531f, + -0.0358838323f, + -0.0245193118f, + -0.0000115916f, + -0.0109901946f, + 0.0007572560f, + -0.0053120041f, + -0.0000000000f, + -0.0041500234f, + -0.0008461542f, + -0.0014884430f + }, + { + -0.0022087339f, /* Filter 30 */ + 0.0001646126f, + -0.0038484382f, + 0.0000000000f, + -0.0034261244f, + -0.0013261120f, + -0.0056811318f, + -0.0069351713f, + -0.0067804730f, + -0.0351311327f, + 0.0147192622f, + -0.0646083561f, + 0.0350472173f, + 0.3325592196f, + 0.0485477870f, + -0.1663286640f, + -0.0123108854f, + -0.0359873394f, + -0.0243966809f, + -0.0000956984f, + -0.0109790280f, + 0.0007369976f, + -0.0053189108f, + -0.0000000000f, + -0.0041622804f, + -0.0008390498f, + -0.0015024151f + }, + { + -0.0022118625f, /* Filter 31 */ + 0.0001576893f, + -0.0038637337f, + 0.0000000000f, + -0.0034568576f, + -0.0013168842f, + -0.0057392236f, + -0.0069161628f, + -0.0069075694f, + -0.0352257635f, + 0.0145925305f, + -0.0653108539f, + 0.0351705998f, + 0.3328177905f, + 0.0484732318f, + -0.1655310827f, + -0.0120313580f, + -0.0360889259f, + -0.0242736037f, + -0.0001793695f, + -0.0109672808f, + 0.0007167720f, + -0.0053254484f, + -0.0000000000f, + -0.0041743131f, + -0.0008319195f, + -0.0015162684f + }, + { + -0.0022148733f, /* Filter 32 */ + 0.0001507411f, + -0.0038788694f, + 0.0000000000f, + -0.0034874241f, + -0.0013075407f, + -0.0057972012f, + -0.0068966684f, + -0.0070349865f, + -0.0353193822f, + 0.0144646069f, + -0.0660149525f, + 0.0352937702f, + 0.3330725580f, + 0.0483981644f, + -0.1647332531f, + -0.0117528734f, + -0.0361885991f, + -0.0241500844f, + -0.0002626055f, + -0.0109549473f, + 0.0006965800f, + -0.0053316185f, + -0.0000000000f, + -0.0041861158f, + -0.0008247632f, + -0.0015300010f + }, + { + -0.0022177623f, /* Filter 33 */ + 0.0001437652f, + -0.0038938406f, + 0.0000000000f, + -0.0035178221f, + -0.0012980817f, + -0.0058550643f, + -0.0068766888f, + -0.0071627177f, + -0.0354119781f, + 0.0143354881f, + -0.0667206479f, + 0.0354167248f, + 0.3333235086f, + 0.0483225860f, + -0.1639351598f, + -0.0114754349f, + -0.0362863596f, + -0.0240261303f, + -0.0003454002f, + -0.0109420370f, + 0.0006764229f, + -0.0053374169f, + -0.0000000000f, + -0.0041976948f, + -0.0008175826f, + -0.0015436150f + }, + { + -0.0022205325f, /* Filter 34 */ + 0.0001367646f, + -0.0039086496f, + 0.0000000000f, + -0.0035480443f, + -0.0012885070f, + -0.0059128092f, + -0.0068562238f, + -0.0072907606f, + -0.0355035484f, + 0.0142051710f, + -0.0674279328f, + 0.0355394639f, + 0.3335706260f, + 0.0482464973f, + -0.1631368376f, + -0.0111990442f, + -0.0363822251f, + -0.0239017519f, + -0.0004277512f, + -0.0109285481f, + 0.0006563010f, + -0.0053428512f, + -0.0000000000f, + -0.0042090432f, + -0.0008103756f, + -0.0015571057f + }, + { + -0.0022231823f, /* Filter 35 */ + 0.0001297372f, + -0.0039232962f, + 0.0000000000f, + -0.0035780951f, + -0.0012788172f, + -0.0059704311f, + -0.0068352744f, + -0.0074191106f, + -0.0355940851f, + 0.0140736575f, + -0.0681367848f, + 0.0356619806f, + 0.3338139023f, + 0.0481699031f, + -0.1623383067f, + -0.0109237052f, + -0.0364761835f, + -0.0237769522f, + -0.0005096614f, + -0.0109144832f, + 0.0006362162f, + -0.0053479162f, + -0.0000000000f, + -0.0042201659f, + -0.0008031447f, + -0.0015704775f + }, + { + -0.0022257106f, /* Filter 36 */ + 0.0001226858f, + -0.0039377785f, + 0.0000000000f, + -0.0036079683f, + -0.0012690123f, + -0.0060279260f, + -0.0068138363f, + -0.0075477654f, + -0.0356835773f, + 0.0139409476f, + -0.0688471974f, + 0.0357842761f, + 0.3340533515f, + 0.0480928020f, + -0.1615395679f, + -0.0106494241f, + -0.0365682525f, + -0.0236517400f, + -0.0005911249f, + -0.0108998530f, + 0.0006161688f, + -0.0053526174f, + -0.0000000000f, + -0.0042310587f, + -0.0007958903f, + -0.0015837296f + }, + { + -0.0022281185f, /* Filter 37 */ + 0.0001156098f, + -0.0039520956f, + 0.0000000000f, + -0.0036376653f, + -0.0012590926f, + -0.0060852914f, + -0.0067919097f, + -0.0076767172f, + -0.0357720145f, + 0.0138070366f, + -0.0695591611f, + 0.0359063480f, + 0.3342889675f, + 0.0480151982f, + -0.1607406510f, + -0.0103761991f, + -0.0366584350f, + -0.0235261215f, + -0.0006721419f, + -0.0108846506f, + 0.0005961600f, + -0.0053569537f, + -0.0000000000f, + -0.0042417193f, + -0.0007886122f, + -0.0015968572f + }, + { + -0.0022304022f, /* Filter 38 */ + 0.0001085087f, + -0.0039662425f, + 0.0000000000f, + -0.0036671818f, + -0.0012490578f, + -0.0061425226f, + -0.0067694939f, + -0.0078059632f, + -0.0358593925f, + 0.0136719292f, + -0.0702726572f, + 0.0360281864f, + 0.3345206886f, + 0.0479370898f, + -0.1599415609f, + -0.0101040387f, + -0.0367467241f, + -0.0234001010f, + -0.0007527098f, + -0.0108688882f, + 0.0005761918f, + -0.0053609232f, + -0.0000000000f, + -0.0042521612f, + -0.0007813108f, + -0.0016098620f + }, + { + -0.0022325659f, /* Filter 39 */ + 0.0001013836f, + -0.0039802216f, + 0.0000000000f, + -0.0036965139f, + -0.0012389084f, + -0.0061996157f, + -0.0067465878f, + -0.0079354970f, + -0.0359456982f, + 0.0135356225f, + -0.0709876777f, + 0.0361497965f, + 0.3347485628f, + 0.0478584820f, + -0.1591423172f, + -0.0098329431f, + -0.0368331385f, + -0.0232736903f, + -0.0008328273f, + -0.0108525630f, + 0.0005562642f, + -0.0053645285f, + -0.0000000000f, + -0.0042623665f, + -0.0007739869f, + -0.0016227434f + }, + { + -0.0022346067f, /* Filter 40 */ + 0.0000942350f, + -0.0039940319f, + 0.0000000000f, + -0.0037256640f, + -0.0012286457f, + -0.0062565682f, + -0.0067231917f, + -0.0080653181f, + -0.0360309323f, + 0.0133981115f, + -0.0717042118f, + 0.0362711726f, + 0.3349726054f, + 0.0477793762f, + -0.1583429520f, + -0.0095629171f, + -0.0369176808f, + -0.0231468974f, + -0.0009124926f, + -0.0108356778f, + 0.0005363782f, + -0.0053677718f, + -0.0000000000f, + -0.0042723457f, + -0.0007666411f, + -0.0016355037f + }, + { + -0.0022365232f, /* Filter 41 */ + 0.0000870628f, + -0.0040076731f, + 0.0000000000f, + -0.0037546254f, + -0.0012182683f, + -0.0063133765f, + -0.0066993029f, + -0.0081954182f, + -0.0361150801f, + 0.0132593976f, + -0.0724222525f, + 0.0363923116f, + 0.3351927556f, + 0.0476997708f, + -0.1575434521f, + -0.0092939607f, + -0.0370003574f, + -0.0230197214f, + -0.0009917019f, + -0.0108182392f, + 0.0005165348f, + -0.0053706532f, + -0.0000000000f, + -0.0042820985f, + -0.0007592726f, + -0.0016481390f + }, + { + -0.0022383190f, /* Filter 42 */ + 0.0000798669f, + -0.0040211370f, + 0.0000000000f, + -0.0037834012f, + -0.0012077784f, + -0.0063700344f, + -0.0066749202f, + -0.0083257964f, + -0.0361981388f, + 0.0131194860f, + -0.0731417811f, + 0.0365132145f, + 0.3354090492f, + 0.0476196755f, + -0.1567438739f, + -0.0090260797f, + -0.0370811655f, + -0.0228921794f, + -0.0010704568f, + -0.0108002480f, + 0.0004967352f, + -0.0053731737f, + -0.0000000000f, + -0.0042916190f, + -0.0007518828f, + -0.0016606527f + }, + { + -0.0022399887f, /* Filter 43 */ + 0.0000726493f, + -0.0040344299f, + 0.0000000000f, + -0.0038119815f, + -0.0011971748f, + -0.0064265378f, + -0.0066500430f, + -0.0084564442f, + -0.0362800956f, + 0.0129783713f, + -0.0738627827f, + 0.0366338730f, + 0.3356214637f, + 0.0475390854f, + -0.1559442033f, + -0.0087592798f, + -0.0371601215f, + -0.0227642672f, + -0.0011487520f, + -0.0107817128f, + 0.0004769806f, + -0.0053753300f, + -0.0000000000f, + -0.0043009099f, + -0.0007444717f, + -0.0016730382f + }, + { + -0.0022415348f, /* Filter 44 */ + 0.0000654088f, + -0.0040475567f, + 0.0000000000f, + -0.0038403710f, + -0.0011864571f, + -0.0064828908f, + -0.0066246707f, + -0.0085873575f, + -0.0363609391f, + 0.0128360470f, + -0.0745852583f, + 0.0367542882f, + 0.3358299840f, + 0.0474580032f, + -0.1551444498f, + -0.0084935567f, + -0.0372372219f, + -0.0226359994f, + -0.0012265888f, + -0.0107626298f, + 0.0004572711f, + -0.0053771277f, + -0.0000000000f, + -0.0043099736f, + -0.0007370403f, + -0.0016852985f + }, + { + -0.0022429558f, /* Filter 45 */ + 0.0000581457f, + -0.0040605034f, + 0.0000000000f, + -0.0038685641f, + -0.0011756279f, + -0.0065390777f, + -0.0065988038f, + -0.0087185352f, + -0.0364406716f, + 0.0126925250f, + -0.0753091817f, + 0.0368744548f, + 0.3360346197f, + 0.0473764318f, + -0.1543446506f, + -0.0082289214f, + -0.0373124730f, + -0.0225073789f, + -0.0013039662f, + -0.0107430073f, + 0.0004376090f, + -0.0053785675f, + -0.0000000000f, + -0.0043188118f, + -0.0007295900f, + -0.0016974336f + }, + { + -0.0022442531f, /* Filter 46 */ + 0.0000508607f, + -0.0040732755f, + 0.0000000000f, + -0.0038965612f, + -0.0011646849f, + -0.0065951068f, + -0.0065724401f, + -0.0088499695f, + -0.0365192713f, + 0.0125477901f, + -0.0760345493f, + 0.0369943758f, + 0.3362353715f, + 0.0472943732f, + -0.1535448176f, + -0.0079653685f, + -0.0373858889f, + -0.0223784170f, + -0.0013808793f, + -0.0107228440f, + 0.0004179944f, + -0.0053796470f, + -0.0000000000f, + -0.0043274173f, + -0.0007221187f, + -0.0017094449f + }, + { + -0.0022454243f, /* Filter 47 */ + 0.0000435551f, + -0.0040858657f, + 0.0000000000f, + -0.0039243606f, + -0.0011536312f, + -0.0066509631f, + -0.0065455769f, + -0.0089816572f, + -0.0365967449f, + 0.0124018566f, + -0.0767613480f, + 0.0371140423f, + 0.3364322263f, + 0.0472118307f, + -0.1527449650f, + -0.0077029082f, + -0.0374574722f, + -0.0222491169f, + -0.0014573283f, + -0.0107021433f, + 0.0003984276f, + -0.0053803718f, + -0.0000000000f, + -0.0043357913f, + -0.0007146270f, + -0.0017213310f + }, + { + -0.0022464703f, /* Filter 48 */ + 0.0000362282f, + -0.0040982843f, + 0.0000000000f, + -0.0039519572f, + -0.0011424645f, + -0.0067066524f, + -0.0065182191f, + -0.0091135918f, + -0.0366730754f, + 0.0122547132f, + -0.0774895642f, + 0.0372334541f, + 0.3366251695f, + 0.0471288033f, + -0.1519450992f, + -0.0074415407f, + -0.0375272169f, + -0.0221194870f, + -0.0015333122f, + -0.0106809137f, + 0.0003789110f, + -0.0053807401f, + -0.0000000000f, + -0.0043439389f, + -0.0007071195f, + -0.0017330882f + }, + { + -0.0022473903f, /* Filter 49 */ + 0.0000288809f, + -0.0041105253f, + 0.0000000000f, + -0.0039793495f, + -0.0011311858f, + -0.0067621637f, + -0.0064903592f, + -0.0092457714f, + -0.0367482531f, + 0.0121063640f, + -0.0782191848f, + 0.0373526110f, + 0.3368142103f, + 0.0470452963f, + -0.1511452494f, + -0.0071812658f, + -0.0375951417f, + -0.0219895354f, + -0.0016088279f, + -0.0106591532f, + 0.0003594448f, + -0.0053807534f, + -0.0000000000f, + -0.0043518542f, + -0.0006995909f, + -0.0017447212f + }, + { + -0.0022481826f, /* Filter 50 */ + 0.0000215124f, + -0.0041225812f, + 0.0000000000f, + -0.0040065374f, + -0.0011197964f, + -0.0068174982f, + -0.0064619996f, + -0.0093781859f, + -0.0368222770f, + 0.0119568064f, + -0.0789501938f, + 0.0374715012f, + 0.3369993395f, + 0.0469613070f, + -0.1503454306f, + -0.0069220926f, + -0.0376612461f, + -0.0218592629f, + -0.0016838770f, + -0.0106368706f, + 0.0003400298f, + -0.0053804087f, + -0.0000000000f, + -0.0043595438f, + -0.0006920455f, + -0.0017562251f + }, + { + -0.0022488502f, /* Filter 51 */ + 0.0000141245f, + -0.0041344617f, + 0.0000000000f, + -0.0040335180f, + -0.0011082965f, + -0.0068726491f, + -0.0064331423f, + -0.0095108389f, + -0.0368951402f, + 0.0118060423f, + -0.0796825853f, + 0.0375901346f, + 0.3371805647f, + 0.0468768425f, + -0.1495456540f, + -0.0066640196f, + -0.0377255408f, + -0.0217286837f, + -0.0017584537f, + -0.0106140636f, + 0.0003206673f, + -0.0053797155f, + -0.0000000000f, + -0.0043670009f, + -0.0006844835f, + -0.0017676012f + }, + { + -0.0022493906f, /* Filter 52 */ + 0.0000067158f, + -0.0041461563f, + 0.0000000000f, + -0.0040602898f, + -0.0010966851f, + -0.0069276141f, + -0.0064037822f, + -0.0096437180f, + -0.0369668239f, + 0.0116540714f, + -0.0804163482f, + 0.0377085026f, + 0.3373578615f, + 0.0467919009f, + -0.1487459309f, + -0.0064070501f, + -0.0377880257f, + -0.0215977999f, + -0.0018325584f, + -0.0105907396f, + 0.0003013579f, + -0.0053786652f, + -0.0000000000f, + -0.0043742317f, + -0.0006769032f, + -0.0017788493f + }, + { + -0.0022498023f, /* Filter 53 */ + -0.0000007105f, + -0.0041576695f, + 0.0000000000f, + -0.0040868488f, + -0.0010849638f, + -0.0069823897f, + -0.0063739197f, + -0.0097768207f, + -0.0370373273f, + 0.0115008908f, + -0.0811514623f, + 0.0378266004f, + 0.3375312165f, + 0.0467064846f, + -0.1479462926f, + -0.0061511870f, + -0.0378487057f, + -0.0214666211f, + -0.0019061921f, + -0.0105669024f, + 0.0002821033f, + -0.0053772639f, + -0.0000000000f, + -0.0043812313f, + -0.0006693064f, + -0.0017899694f + }, + { + -0.0022500878f, /* Filter 54 */ + -0.0000081573f, + -0.0041690028f, + 0.0000000000f, + -0.0041131960f, + -0.0010731328f, + -0.0070369692f, + -0.0063435547f, + -0.0099101441f, + -0.0371066415f, + 0.0113465049f, + -0.0818879174f, + 0.0379444273f, + 0.3377006790f, + 0.0466205992f, + -0.1471467472f, + -0.0058964369f, + -0.0379075894f, + -0.0213351496f, + -0.0019793489f, + -0.0105425517f, + 0.0002629036f, + -0.0053755151f, + -0.0000000000f, + -0.0043880048f, + -0.0006616940f, + -0.0018009641f + }, + { + -0.0022502440f, /* Filter 55 */ + -0.0000156216f, + -0.0041801479f, + 0.0000000000f, + -0.0041393246f, + -0.0010611914f, + -0.0070913538f, + -0.0063126885f, + -0.0100436811f, + -0.0371747573f, + 0.0111909061f, + -0.0826257082f, + 0.0380619805f, + 0.3378661729f, + 0.0465342410f, + -0.1463473013f, + -0.0056427969f, + -0.0379646890f, + -0.0212033969f, + -0.0020520317f, + -0.0105176937f, + 0.0002437596f, + -0.0053734107f, + -0.0000000000f, + -0.0043945464f, + -0.0006540651f, + -0.0018118257f + }, + { + -0.0022502727f, /* Filter 56 */ + -0.0000231042f, + -0.0041911082f, + 0.0000000000f, + -0.0041652385f, + -0.0010491418f, + -0.0071455361f, + -0.0062813164f, + -0.0101774269f, + -0.0372416715f, + 0.0110340968f, + -0.0833648092f, + 0.0381792592f, + 0.3380277742f, + 0.0464474173f, + -0.1455479905f, + -0.0053902680f, + -0.0380200008f, + -0.0210713702f, + -0.0021242368f, + -0.0104923262f, + 0.0002246725f, + -0.0053709647f, + -0.0000000000f, + -0.0044008610f, + -0.0006464218f, + -0.0018225596f + }, + { + -0.0022501716f, /* Filter 57 */ + -0.0000306060f, + -0.0042018827f, + 0.0000000000f, + -0.0041909284f, + -0.0010369820f, + -0.0071995141f, + -0.0062494398f, + -0.0103113770f, + -0.0373073694f, + 0.0108760800f, + -0.0841052204f, + 0.0382962586f, + 0.3381854075f, + 0.0463601257f, + -0.1447488052f, + -0.0051388586f, + -0.0380735357f, + -0.0209390691f, + -0.0021959615f, + -0.0104664619f, + 0.0002056433f, + -0.0053681691f, + -0.0000000000f, + -0.0044069406f, + -0.0006387617f, + -0.0018331638f + }, + { + -0.0022499438f, /* Filter 58 */ + -0.0000381241f, + -0.0042124676f, + 0.0000000000f, + -0.0042164035f, + -0.0010247148f, + -0.0072532811f, + -0.0062170590f, + -0.0104455273f, + -0.0373718527f, + 0.0107168551f, + -0.0848469266f, + 0.0384129780f, + 0.3383391016f, + 0.0462723730f, + -0.1439497886f, + -0.0048885718f, + -0.0381252938f, + -0.0208065105f, + -0.0022672080f, + -0.0104400974f, + 0.0001866731f, + -0.0053650246f, + -0.0000000000f, + -0.0044127979f, + -0.0006310899f, + -0.0018436386f + }, + { + -0.0022495854f, /* Filter 59 */ + -0.0000456602f, + -0.0042228650f, + 0.0000000000f, + -0.0042416532f, + -0.0010123388f, + -0.0073068366f, + -0.0061841719f, + -0.0105798714f, + -0.0374351001f, + 0.0105564182f, + -0.0855898985f, + 0.0385294149f, + 0.3384888443f, + 0.0461841561f, + -0.1431509477f, + -0.0046394033f, + -0.0381752904f, + -0.0206736926f, + -0.0023379747f, + -0.0104132366f, + 0.0001677624f, + -0.0053615377f, + -0.0000000000f, + -0.0044184245f, + -0.0006234019f, + -0.0018539861f + }, + { + -0.0022490980f, /* Filter 60 */ + -0.0000532127f, + -0.0042330752f, + 0.0000000000f, + -0.0042666731f, + -0.0009998548f, + -0.0073601752f, + -0.0061507798f, + -0.0107144051f, + -0.0374971151f, + 0.0103947715f, + -0.0863341457f, + 0.0386455624f, + 0.3386346272f, + 0.0460954822f, + -0.1423522805f, + -0.0043913598f, + -0.0382235216f, + -0.0205406256f, + -0.0024082571f, + -0.0103858860f, + 0.0001489124f, + -0.0053577070f, + -0.0000000000f, + -0.0044238206f, + -0.0006157019f, + -0.0018642004f + }, + { + -0.0022484808f, /* Filter 61 */ + -0.0000607804f, + -0.0042430934f, + 0.0000000000f, + -0.0042914705f, + -0.0009872642f, + -0.0074132930f, + -0.0061168795f, + -0.0108491236f, + -0.0375578842f, + 0.0102319154f, + -0.0870796498f, + 0.0387614234f, + 0.3387764777f, + 0.0460063488f, + -0.1415538244f, + -0.0041444459f, + -0.0382700034f, + -0.0204073193f, + -0.0024780545f, + -0.0103580480f, + 0.0001301236f, + -0.0053535336f, + -0.0000000000f, + -0.0044289903f, + -0.0006079877f, + -0.0018742850f + }, + { + -0.0022477336f, /* Filter 62 */ + -0.0000683662f, + -0.0042529265f, + 0.0000000000f, + -0.0043160343f, + -0.0009745664f, + -0.0074661872f, + -0.0060824726f, + -0.0109840200f, + -0.0376174025f, + 0.0100678484f, + -0.0878263866f, + 0.0388769943f, + 0.3389143782f, + 0.0459167605f, + -0.1407555807f, + -0.0038986588f, + -0.0383147369f, + -0.0202737736f, + -0.0025473698f, + -0.0103297257f, + 0.0001113966f, + -0.0053490169f, + -0.0000000000f, + -0.0044339292f, + -0.0006002610f, + -0.0018842402f + }, + { + -0.0022468561f, /* Filter 63 */ + -0.0000759667f, + -0.0042625620f, + 0.0000000000f, + -0.0043403667f, + -0.0009617615f, + -0.0075188538f, + -0.0060475588f, + -0.0111190914f, + -0.0376756581f, + 0.0099025724f, + -0.0885743593f, + 0.0389922690f, + 0.3390482929f, + 0.0458267191f, + -0.1399575771f, + -0.0036540038f, + -0.0383577269f, + -0.0201399968f, + -0.0026161974f, + -0.0103009234f, + 0.0000927328f, + -0.0053441572f, + -0.0000000000f, + -0.0044386430f, + -0.0005925210f, + -0.0018940611f + }, + { + -0.0022458480f, /* Filter 64 */ + -0.0000835820f, + -0.0042720048f, + 0.0000000000f, + -0.0043644688f, + -0.0009488505f, + -0.0075712885f, + -0.0060121356f, + -0.0112543303f, + -0.0377326433f, + 0.0097360827f, + -0.0893235341f, + 0.0391072478f, + 0.3391782445f, + 0.0457362256f, + -0.1391598293f, + -0.0034104848f, + -0.0383989776f, + -0.0200059998f, + -0.0026845378f, + -0.0102716430f, + 0.0000741335f, + -0.0053389628f, + -0.0000000000f, + -0.0044431266f, + -0.0005847711f, + -0.0019037530f + }, + { + -0.0022447108f, /* Filter 65 */ + -0.0000912136f, + -0.0042812542f, + 0.0000000000f, + -0.0043883332f, + -0.0009358341f, + -0.0076234876f, + -0.0059762043f, + -0.0113897330f, + -0.0377883557f, + 0.0095683866f, + -0.0900739211f, + 0.0392219302f, + 0.3393042459f, + 0.0456452799f, + -0.1383623364f, + -0.0031681003f, + -0.0384385005f, + -0.0198717871f, + -0.0027523906f, + -0.0102418869f, + 0.0000555987f, + -0.0053334257f, + -0.0000000000f, + -0.0044473797f, + -0.0005770089f, + -0.0019133143f + }, + { + -0.0022434404f, /* Filter 66 */ + -0.0000988591f, + -0.0042903141f, + 0.0000000000f, + -0.0044119618f, + -0.0009227124f, + -0.0076754477f, + -0.0059397663f, + -0.0115252954f, + -0.0378427866f, + 0.0093994769f, + -0.0908254902f, + 0.0393363079f, + 0.3394262701f, + 0.0455538916f, + -0.1375651403f, + -0.0029268546f, + -0.0384763002f, + -0.0197373608f, + -0.0028197549f, + -0.0102116616f, + 0.0000371295f, + -0.0053275531f, + -0.0000000000f, + -0.0044514082f, + -0.0005692359f, + -0.0019227418f + }, + { + -0.0022420391f, /* Filter 67 */ + -0.0001065191f, + -0.0042991742f, + 0.0000000000f, + -0.0044353502f, + -0.0009094853f, + -0.0077271635f, + -0.0059028162f, + -0.0116610092f, + -0.0378959245f, + 0.0092293595f, + -0.0915782328f, + 0.0394503819f, + 0.3395443142f, + 0.0454620561f, + -0.1367682311f, + -0.0026867496f, + -0.0385123800f, + -0.0196027359f, + -0.0028866289f, + -0.0101809712f, + 0.0000187268f, + -0.0053213449f, + 0.0000000000f, + -0.0044552115f, + -0.0005614523f, + -0.0019320384f + }, + { + -0.0022405060f, /* Filter 68 */ + -0.0001141917f, + -0.0043078420f, + 0.0000000000f, + -0.0044584965f, + -0.0008961544f, + -0.0077786333f, + -0.0058653573f, + -0.0117968713f, + -0.0379477617f, + 0.0090580301f, + -0.0923321333f, + 0.0395641481f, + 0.3396583880f, + 0.0453697749f, + -0.1359716398f, + -0.0024477914f, + -0.0385467483f, + -0.0194679109f, + -0.0029530116f, + -0.0101498145f, + 0.0000003917f, + -0.0053148036f, + 0.0000000000f, + -0.0044587869f, + -0.0005536582f, + -0.0019412022f + }, + { + -0.0022388438f, /* Filter 69 */ + -0.0001218783f, + -0.0043163061f, + 0.0000000000f, + -0.0044814011f, + -0.0008827194f, + -0.0078298528f, + -0.0058273888f, + -0.0119328775f, + -0.0379982948f, + 0.0088854919f, + -0.0930871872f, + 0.0396776072f, + 0.3397684880f, + 0.0452770566f, + -0.1351753758f, + -0.0022099760f, + -0.0385794176f, + -0.0193328981f, + -0.0030189005f, + -0.0101182016f, + -0.0000178756f, + -0.0053079282f, + 0.0000000000f, + -0.0044621312f, + -0.0005458542f, + -0.0019502349f + }, + { + -0.0022370475f, /* Filter 70 */ + -0.0001295793f, + -0.0043245792f, + 0.0000000000f, + -0.0045040620f, + -0.0008691803f, + -0.0078808157f, + -0.0057889082f, + -0.0120690194f, + -0.0380475075f, + 0.0087117470f, + -0.0938433728f, + 0.0397907528f, + 0.3398745972f, + 0.0451838979f, + -0.1343794616f, + -0.0019733077f, + -0.0386103854f, + -0.0191976997f, + -0.0030842956f, + -0.0100861291f, + -0.0000360739f, + -0.0053007186f, + 0.0000000000f, + -0.0044652477f, + -0.0005380409f, + -0.0019591345f + }, + { + -0.0022351193f, /* Filter 71 */ + -0.0001372916f, + -0.0043326526f, + 0.0000000000f, + -0.0045264729f, + -0.0008555388f, + -0.0079315220f, + -0.0057499191f, + -0.0122052947f, + -0.0380954013f, + 0.0085367892f, + -0.0946006731f, + 0.0399035852f, + 0.3399767352f, + 0.0450903019f, + -0.1335839077f, + -0.0017377909f, + -0.0386396562f, + -0.0190623224f, + -0.0031491979f, + -0.0100536090f, + -0.0000542017f, + -0.0052931768f, + 0.0000000000f, + -0.0044681412f, + -0.0005302207f, + -0.0019679000f + }, + { + -0.0022330599f, /* Filter 72 */ + -0.0001450151f, + -0.0043405200f, + 0.0000000000f, + -0.0045486380f, + -0.0008417947f, + -0.0079819653f, + -0.0057104183f, + -0.0123416968f, + -0.0381419710f, + 0.0083606221f, + -0.0953590886f, + 0.0400161008f, + 0.3400748842f, + 0.0449962735f, + -0.1327887358f, + -0.0015034225f, + -0.0386672447f, + -0.0189267792f, + -0.0032136048f, + -0.0100206356f, + -0.0000722598f, + -0.0052853097f, + 0.0000000000f, + -0.0044708094f, + -0.0005223897f, + -0.0019765358f + }, + { + -0.0022308664f, /* Filter 73 */ + -0.0001527526f, + -0.0043481937f, + 0.0000000000f, + -0.0045705499f, + -0.0008279475f, + -0.0080321422f, + -0.0056704053f, + -0.0124782163f, + -0.0381871931f, + 0.0081832497f, + -0.0961186050f, + 0.0401282958f, + 0.3401690422f, + 0.0449018114f, + -0.1319939386f, + -0.0012702110f, + -0.0386931575f, + -0.0187910667f, + -0.0032775125f, + -0.0099872186f, + -0.0000902463f, + -0.0052771110f, + 0.0000000000f, + -0.0044732506f, + -0.0005145514f, + -0.0019850362f + }, + { + -0.0022285419f, /* Filter 74 */ + -0.0001605011f, + -0.0043556701f, + 0.0000000000f, + -0.0045922082f, + -0.0008139998f, + -0.0080820516f, + -0.0056298825f, + -0.0126148560f, + -0.0382310777f, + 0.0080046651f, + -0.0968791926f, + 0.0402401713f, + 0.3402592203f, + 0.0448069181f, + -0.1311995619f, + -0.0010381516f, + -0.0387173946f, + -0.0186551985f, + -0.0033409256f, + -0.0099533576f, + -0.0001081607f, + -0.0052685865f, + 0.0000000000f, + -0.0044754634f, + -0.0005067065f, + -0.0019934027f + }, + { + -0.0022260831f, /* Filter 75 */ + -0.0001682594f, + -0.0043629383f, + 0.0000000000f, + -0.0046136165f, + -0.0007999506f, + -0.0081316854f, + -0.0055888462f, + -0.0127516043f, + -0.0382736074f, + 0.0078248748f, + -0.0976408374f, + 0.0403517197f, + 0.3403453966f, + 0.0447115990f, + -0.1304056099f, + -0.0008072533f, + -0.0387399618f, + -0.0185191789f, + -0.0034038419f, + -0.0099190609f, + -0.0001260014f, + -0.0052597363f, + 0.0000000000f, + -0.0044774545f, + -0.0004988537f, + -0.0020016361f + }, + { + -0.0022234937f, /* Filter 76 */ + -0.0001760298f, + -0.0043700036f, + 0.0000000000f, + -0.0046347647f, + -0.0007858009f, + -0.0081810412f, + -0.0055472976f, + -0.0128884592f, + -0.0383147780f, + 0.0076438761f, + -0.0984035433f, + 0.0404629427f, + 0.3404275809f, + 0.0446158526f, + -0.1296120935f, + -0.0005775139f, + -0.0387608713f, + -0.0183830151f, + -0.0034662576f, + -0.0098843276f, + -0.0001437692f, + -0.0052505618f, + 0.0000000000f, + -0.0044792187f, + -0.0004909940f, + -0.0020097374f + }, + { + -0.0022207691f, /* Filter 77 */ + -0.0001838111f, + -0.0043768719f, + 0.0000000000f, + -0.0046556572f, + -0.0007715502f, + -0.0082301158f, + -0.0055052393f, + -0.0130254114f, + -0.0383545750f, + 0.0074616682f, + -0.0991672869f, + 0.0405738379f, + 0.3405057686f, + 0.0445196833f, + -0.1288190325f, + -0.0003489325f, + -0.0387801244f, + -0.0182467125f, + -0.0035281741f, + -0.0098491643f, + -0.0001614619f, + -0.0052410650f, + 0.0000000000f, + -0.0044807549f, + -0.0004831286f, + -0.0020177053f + }, + { + -0.0022179116f, /* Filter 78 */ + -0.0001916007f, + -0.0043835331f, + 0.0000000000f, + -0.0046762880f, + -0.0007572001f, + -0.0082789073f, + -0.0054626681f, + -0.0131624584f, + -0.0383929951f, + 0.0072782560f, + -0.0999320580f, + 0.0406843964f, + 0.3405799320f, + 0.0444230929f, + -0.1280264277f, + -0.0001215183f, + -0.0387977338f, + -0.0181102764f, + -0.0035895900f, + -0.0098135759f, + -0.0001790793f, + -0.0052312458f, + 0.0000000000f, + -0.0044820704f, + -0.0004752586f, + -0.0020255376f + }, + { + -0.0022149197f, /* Filter 79 */ + -0.0001994007f, + -0.0043899851f, + 0.0000000000f, + -0.0046966573f, + -0.0007427516f, + -0.0083274089f, + -0.0054195838f, + -0.0132995926f, + -0.0384300398f, + 0.0070936379f, + -0.1006978434f, + 0.0407946244f, + 0.3406501456f, + 0.0443260808f, + -0.1272343255f, + 0.0001047341f, + -0.0388137063f, + -0.0179737156f, + -0.0036505044f, + -0.0097775620f, + -0.0001966211f, + -0.0052211059f, + 0.0000000000f, + -0.0044831588f, + -0.0004673804f, + -0.0020332365f + }, + { + -0.0022117956f, /* Filter 80 */ + -0.0002072092f, + -0.0043962359f, + 0.0000000000f, + -0.0047167638f, + -0.0007282033f, + -0.0083756155f, + -0.0053759855f, + -0.0134368115f, + -0.0384656852f, + 0.0069078131f, + -0.1014646226f, + 0.0409045147f, + 0.3407163139f, + 0.0442286557f, + -0.1264427052f, + 0.0003298196f, + -0.0388280428f, + -0.0178370350f, + -0.0037109171f, + -0.0097411254f, + -0.0002140858f, + -0.0052106492f, + 0.0000000000f, + -0.0044840278f, + -0.0004594994f, + -0.0020408022f + }, + { + -0.0022085377f, /* Filter 81 */ + -0.0002150272f, + -0.0044022844f, + 0.0000000000f, + -0.0047366037f, + -0.0007135575f, + -0.0084235294f, + -0.0053318786f, + -0.0135741072f, + -0.0384999357f, + 0.0067207811f, + -0.1022323897f, + 0.0410140671f, + 0.3407785039f, + 0.0441308133f, + -0.1256516079f, + 0.0005537359f, + -0.0388407526f, + -0.0177002397f, + -0.0037708270f, + -0.0097042763f, + -0.0002314730f, + -0.0051998731f, + 0.0000000000f, + -0.0044846698f, + -0.0004516136f, + -0.0020482334f + }, + { + -0.0022051449f, /* Filter 82 */ + -0.0002228535f, + -0.0044081214f, + 0.0000000000f, + -0.0047561744f, + -0.0006988141f, + -0.0084711411f, + -0.0052872555f, + -0.0137114739f, + -0.0385327768f, + 0.0065325459f, + -0.1030011138f, + 0.0411232740f, + 0.3408366709f, + 0.0440325565f, + -0.1248610407f, + 0.0007764820f, + -0.0388518426f, + -0.0175633376f, + -0.0038302342f, + -0.0096670126f, + -0.0002487817f, + -0.0051887820f, + 0.0000000000f, + -0.0044850891f, + -0.0004437229f, + -0.0020555298f + }, + { + -0.0022016193f, /* Filter 83 */ + -0.0002306877f, + -0.0044137537f, + 0.0000000000f, + -0.0047754808f, + -0.0006839732f, + -0.0085184500f, + -0.0052421235f, + -0.0138489067f, + -0.0385642057f, + 0.0063431077f, + -0.1037708134f, + 0.0412321395f, + 0.3408908349f, + 0.0439338918f, + -0.1240710155f, + 0.0009980569f, + -0.0388613197f, + -0.0174263349f, + -0.0038891349f, + -0.0096293377f, + -0.0002660115f, + -0.0051773757f, + 0.0000000000f, + -0.0044852873f, + -0.0004358302f, + -0.0020626926f + }, + { + -0.0021979595f, /* Filter 84 */ + -0.0002385288f, + -0.0044191758f, + 0.0000000000f, + -0.0047945159f, + -0.0006690369f, + -0.0085654504f, + -0.0051964730f, + -0.0139864014f, + -0.0385942197f, + 0.0061524667f, + -0.1045414336f, + 0.0413406572f, + 0.3409410012f, + 0.0438348202f, + -0.1232815667f, + 0.0012184551f, + -0.0388691881f, + -0.0172892379f, + -0.0039475340f, + -0.0095912629f, + -0.0002831613f, + -0.0051656581f, + 0.0000000000f, + -0.0044852615f, + -0.0004279330f, + -0.0020697195f + }, + { + -0.0021941651f, /* Filter 85 */ + -0.0002463783f, + -0.0044243893f, + 0.0000000000f, + -0.0048132753f, + -0.0006540040f, + -0.0086121372f, + -0.0051503158f, + -0.0141239484f, + -0.0386228004f, + 0.0059606207f, + -0.1053130012f, + 0.0414488287f, + 0.3409871689f, + 0.0437353400f, + -0.1224926731f, + 0.0014376844f, + -0.0388754585f, + -0.0171520528f, + -0.0040054273f, + -0.0095527829f, + -0.0003002310f, + -0.0051536287f, + 0.0000000000f, + -0.0044850110f, + -0.0004200319f, + -0.0020766136f + }, + { + -0.0021902362f, /* Filter 86 */ + -0.0002542329f, + -0.0044293918f, + 0.0000000000f, + -0.0048317621f, + -0.0006388765f, + -0.0086585095f, + -0.0051036418f, + -0.0142615460f, + -0.0386499515f, + 0.0057675762f, + -0.1060854619f, + 0.0415566435f, + 0.3410293205f, + 0.0436354594f, + -0.1217043906f, + 0.0016557316f, + -0.0388801344f, + -0.0170147852f, + -0.0040628131f, + -0.0095139053f, + -0.0003172191f, + -0.0051412871f, + 0.0000000000f, + -0.0044845442f, + -0.0004121306f, + -0.0020833727f + }, + { + -0.0021861730f, /* Filter 87 */ + -0.0002620953f, + -0.0044341837f, + 0.0000000000f, + -0.0048499731f, + -0.0006236529f, + -0.0087045644f, + -0.0050564574f, + -0.0143991860f, + -0.0386756494f, + 0.0055733286f, + -0.1068588215f, + 0.0416641070f, + 0.3410674260f, + 0.0435351743f, + -0.1209166937f, + 0.0018726021f, + -0.0388832225f, + -0.0168774407f, + -0.0041196955f, + -0.0094746364f, + -0.0003341249f, + -0.0051286356f, + 0.0000000000f, + -0.0044838549f, + -0.0004042266f, + -0.0020899954f + }, + { + -0.0021819745f, /* Filter 88 */ + -0.0002699630f, + -0.0044387682f, + 0.0000000000f, + -0.0048679066f, + -0.0006083359f, + -0.0087502942f, + -0.0050087598f, + -0.0145368636f, + -0.0386999026f, + 0.0053778807f, + -0.1076330846f, + 0.0417712137f, + 0.3411015594f, + 0.0434344921f, + -0.1201296241f, + 0.0020882956f, + -0.0388847392f, + -0.0167400259f, + -0.0041760679f, + -0.0094349725f, + -0.0003509489f, + -0.0051156820f, + 0.0000000000f, + -0.0044829413f, + -0.0003963211f, + -0.0020964853f + }, + { + -0.0021776429f, /* Filter 89 */ + -0.0002778370f, + -0.0044431403f, + 0.0000000000f, + -0.0048855597f, + -0.0005929253f, + -0.0087956998f, + -0.0049605510f, + -0.0146745726f, + -0.0387226943f, + 0.0051812346f, + -0.1084082070f, + 0.0418779607f, + 0.3411316675f, + 0.0433334131f, + -0.1193431900f, + 0.0023028049f, + -0.0388846787f, + -0.0166025495f, + -0.0042319331f, + -0.0093949236f, + -0.0003676890f, + -0.0051024190f, + 0.0000000000f, + -0.0044818123f, + -0.0003884134f, + -0.0021028389f + }, + { + -0.0021731767f, /* Filter 90 */ + -0.0002857146f, + -0.0044472978f, + 0.0000000000f, + -0.0049029332f, + -0.0005774216f, + -0.0088407725f, + -0.0049118282f, + -0.0148123088f, + -0.0387440238f, + 0.0049833907f, + -0.1091841828f, + 0.0419843498f, + 0.3411577599f, + 0.0432319421f, + -0.1185574135f, + 0.0025161342f, + -0.0388830537f, + -0.0164650142f, + -0.0042872929f, + -0.0093544891f, + -0.0003843450f, + -0.0050888546f, + 0.0000000000f, + -0.0044804608f, + -0.0003805073f, + -0.0021090603f + }, + { + -0.0021685765f, /* Filter 91 */ + -0.0002935986f, + -0.0044512471f, + 0.0000000000f, + -0.0049200227f, + -0.0005618260f, + -0.0088855104f, + -0.0048625945f, + -0.0149500663f, + -0.0387638855f, + 0.0047843480f, + -0.1099610010f, + 0.0420903738f, + 0.3411798695f, + 0.0431300782f, + -0.1177723028f, + 0.0027282797f, + -0.0388798706f, + -0.0163274298f, + -0.0043421423f, + -0.0093136782f, + -0.0004009170f, + -0.0050749873f, + 0.0000000000f, + -0.0044788886f, + -0.0003725981f, + -0.0021151462f + }, + { + -0.0021638398f, /* Filter 92 */ + -0.0003014859f, + -0.0044549783f, + 0.0000000000f, + -0.0049368271f, + -0.0005461373f, + -0.0089299112f, + -0.0048128491f, + -0.0150878344f, + -0.0387822560f, + 0.0045841073f, + -0.1107386540f, + 0.0421960299f, + 0.3411979167f, + 0.0430278192f, + -0.1169878611f, + 0.0029392400f, + -0.0388751356f, + -0.0161897978f, + -0.0043964844f, + -0.0092724890f, + -0.0004174029f, + -0.0050608171f, + 0.0000000000f, + -0.0044771017f, + -0.0003646917f, + -0.0021210958f + }, + { + -0.0021589676f, /* Filter 93 */ + -0.0003093775f, + -0.0044584978f, + 0.0000000000f, + -0.0049533429f, + -0.0005303585f, + -0.0089739699f, + -0.0047625912f, + -0.0152256120f, + -0.0387991482f, + 0.0043826721f, + -0.1115171103f, + 0.0423013184f, + 0.3412119690f, + 0.0429251774f, + -0.1162041184f, + 0.0031490135f, + -0.0388688526f, + -0.0160521270f, + -0.0044503172f, + -0.0092309301f, + -0.0004338029f, + -0.0050463500f, + 0.0000000000f, + -0.0044750950f, + -0.0003567845f, + -0.0021269106f + }, + { + -0.0021539626f, /* Filter 94 */ + -0.0003172722f, + -0.0044618075f, + 0.0000000000f, + -0.0049695747f, + -0.0005144884f, + -0.0090176834f, + -0.0047118230f, + -0.0153633929f, + -0.0388145423f, + 0.0041800420f, + -0.1122963701f, + 0.0424062358f, + 0.3412220061f, + 0.0428221507f, + -0.1154210879f, + 0.0033575994f, + -0.0388610405f, + -0.0159144236f, + -0.0045036391f, + -0.0091890036f, + -0.0004501161f, + -0.0050315825f, + 0.0000000000f, + -0.0044728687f, + -0.0003488777f, + -0.0021325913f + }, + { + -0.0021488207f, /* Filter 95 */ + -0.0003251694f, + -0.0044648953f, + 0.0000000000f, + -0.0049855152f, + -0.0004985286f, + -0.0090610460f, + -0.0046605431f, + -0.0155011700f, + -0.0388284352f, + 0.0039762170f, + -0.1130764159f, + 0.0425107787f, + 0.3412280286f, + 0.0427187389f, + -0.1146387803f, + 0.0035649970f, + -0.0388516915f, + -0.0157766902f, + -0.0045564491f, + -0.0091467091f, + -0.0004663419f, + -0.0050165206f, + 0.0000000000f, + -0.0044704284f, + -0.0003409731f, + -0.0021381359f + }, + { + -0.0021435458f, /* Filter 96 */ + -0.0003330708f, + -0.0044677702f, + 0.0000000000f, + -0.0050011665f, + -0.0004824799f, + -0.0091040561f, + -0.0046087521f, + -0.0156389384f, + -0.0388408234f, + 0.0037712026f, + -0.1138572223f, + 0.0426149488f, + 0.3412300532f, + 0.0426149488f, + -0.1138572223f, + 0.0037712026f, + -0.0388408234f, + -0.0156389384f, + -0.0046087521f, + -0.0091040561f, + -0.0004824799f, + -0.0050011665f, + 0.0000000000f, + -0.0044677702f, + -0.0003330708f, + -0.0021435458f + }, + { + -0.0021381359f, /* Filter 97 */ + -0.0003409731f, + -0.0044704284f, + 0.0000000000f, + -0.0050165206f, + -0.0004663419f, + -0.0091467091f, + -0.0045564491f, + -0.0157766902f, + -0.0388516915f, + 0.0035649970f, + -0.1146387803f, + 0.0427187389f, + 0.3412280286f, + 0.0425107787f, + -0.1130764159f, + 0.0039762170f, + -0.0388284352f, + -0.0155011700f, + -0.0046605431f, + -0.0090610460f, + -0.0004985286f, + -0.0049855152f, + 0.0000000000f, + -0.0044648953f, + -0.0003251694f, + -0.0021488207f + }, + { + -0.0021325913f, /* Filter 98 */ + -0.0003488777f, + -0.0044728687f, + 0.0000000000f, + -0.0050315825f, + -0.0004501161f, + -0.0091890036f, + -0.0045036391f, + -0.0159144236f, + -0.0388610405f, + 0.0033575994f, + -0.1154210879f, + 0.0428221507f, + 0.3412220061f, + 0.0424062358f, + -0.1122963701f, + 0.0041800420f, + -0.0388145423f, + -0.0153633929f, + -0.0047118230f, + -0.0090176834f, + -0.0005144884f, + -0.0049695747f, + 0.0000000000f, + -0.0044618075f, + -0.0003172722f, + -0.0021539626f + }, + { + -0.0021269106f, /* Filter 99 */ + -0.0003567845f, + -0.0044750951f, + 0.0000000000f, + -0.0050463500f, + -0.0004338029f, + -0.0092309301f, + -0.0044503172f, + -0.0160521270f, + -0.0388688526f, + 0.0031490135f, + -0.1162041184f, + 0.0429251774f, + 0.3412119690f, + 0.0423013183f, + -0.1115171103f, + 0.0043826721f, + -0.0387991482f, + -0.0152256120f, + -0.0047625912f, + -0.0089739698f, + -0.0005303585f, + -0.0049533429f, + 0.0000000000f, + -0.0044584978f, + -0.0003093775f, + -0.0021589676f + }, + { + -0.0021210958f, /* Filter 100 */ + -0.0003646917f, + -0.0044771017f, + 0.0000000000f, + -0.0050608171f, + -0.0004174029f, + -0.0092724890f, + -0.0043964844f, + -0.0161897978f, + -0.0388751356f, + 0.0029392400f, + -0.1169878611f, + 0.0430278192f, + 0.3411979167f, + 0.0421960299f, + -0.1107386540f, + 0.0045841073f, + -0.0387822560f, + -0.0150878344f, + -0.0048128491f, + -0.0089299112f, + -0.0005461373f, + -0.0049368271f, + 0.0000000000f, + -0.0044549783f, + -0.0003014859f, + -0.0021638398f + }, + { + -0.0021151462f, /* Filter 101 */ + -0.0003725981f, + -0.0044788886f, + 0.0000000000f, + -0.0050749873f, + -0.0004009170f, + -0.0093136782f, + -0.0043421423f, + -0.0163274298f, + -0.0388798706f, + 0.0027282797f, + -0.1177723029f, + 0.0431300782f, + 0.3411798695f, + 0.0420903738f, + -0.1099610010f, + 0.0047843480f, + -0.0387638855f, + -0.0149500663f, + -0.0048625945f, + -0.0088855104f, + -0.0005618260f, + -0.0049200227f, + 0.0000000000f, + -0.0044512471f, + -0.0002935986f, + -0.0021685765f + }, + { + -0.0021090603f, /* Filter 102 */ + -0.0003805073f, + -0.0044804608f, + 0.0000000000f, + -0.0050888546f, + -0.0003843450f, + -0.0093544891f, + -0.0042872929f, + -0.0164650142f, + -0.0388830537f, + 0.0025161341f, + -0.1185574135f, + 0.0432319421f, + 0.3411577599f, + 0.0419843498f, + -0.1091841828f, + 0.0049833908f, + -0.0387440238f, + -0.0148123088f, + -0.0049118282f, + -0.0088407725f, + -0.0005774216f, + -0.0049029332f, + 0.0000000000f, + -0.0044472978f, + -0.0002857146f, + -0.0021731767f + }, + { + -0.0021028389f, /* Filter 103 */ + -0.0003884134f, + -0.0044818123f, + 0.0000000000f, + -0.0051024190f, + -0.0003676890f, + -0.0093949236f, + -0.0042319331f, + -0.0166025495f, + -0.0388846787f, + 0.0023028049f, + -0.1193431900f, + 0.0433334131f, + 0.3411316675f, + 0.0418779606f, + -0.1084082070f, + 0.0051812347f, + -0.0387226943f, + -0.0146745726f, + -0.0049605510f, + -0.0087956998f, + -0.0005929253f, + -0.0048855597f, + 0.0000000000f, + -0.0044431403f, + -0.0002778370f, + -0.0021776429f + }, + { + -0.0020964853f, /* Filter 104 */ + -0.0003963211f, + -0.0044829413f, + 0.0000000000f, + -0.0051156820f, + -0.0003509489f, + -0.0094349725f, + -0.0041760679f, + -0.0167400259f, + -0.0388847392f, + 0.0020882956f, + -0.1201296241f, + 0.0434344921f, + 0.3411015594f, + 0.0417712137f, + -0.1076330846f, + 0.0053778807f, + -0.0386999026f, + -0.0145368636f, + -0.0050087598f, + -0.0087502942f, + -0.0006083359f, + -0.0048679066f, + 0.0000000000f, + -0.0044387682f, + -0.0002699630f, + -0.0021819745f + }, + { + -0.0020899954f, /* Filter 105 */ + -0.0004042266f, + -0.0044838549f, + 0.0000000000f, + -0.0051286356f, + -0.0003341249f, + -0.0094746364f, + -0.0041196955f, + -0.0168774407f, + -0.0388832225f, + 0.0018726021f, + -0.1209166937f, + 0.0435351743f, + 0.3410674260f, + 0.0416641070f, + -0.1068588215f, + 0.0055733286f, + -0.0386756494f, + -0.0143991860f, + -0.0050564574f, + -0.0087045644f, + -0.0006236529f, + -0.0048499731f, + 0.0000000000f, + -0.0044341837f, + -0.0002620953f, + -0.0021861730f + }, + { + -0.0020833727f, /* Filter 106 */ + -0.0004121306f, + -0.0044845442f, + 0.0000000000f, + -0.0051412871f, + -0.0003172191f, + -0.0095139053f, + -0.0040628131f, + -0.0170147852f, + -0.0388801344f, + 0.0016557316f, + -0.1217043907f, + 0.0436354594f, + 0.3410293205f, + 0.0415566435f, + -0.1060854619f, + 0.0057675762f, + -0.0386499515f, + -0.0142615460f, + -0.0051036418f, + -0.0086585095f, + -0.0006388765f, + -0.0048317621f, + 0.0000000000f, + -0.0044293918f, + -0.0002542329f, + -0.0021902362f + }, + { + -0.0020766136f, /* Filter 107 */ + -0.0004200319f, + -0.0044850110f, + 0.0000000000f, + -0.0051536287f, + -0.0003002310f, + -0.0095527829f, + -0.0040054273f, + -0.0171520528f, + -0.0388754585f, + 0.0014376844f, + -0.1224926731f, + 0.0437353400f, + 0.3409871689f, + 0.0414488287f, + -0.1053130012f, + 0.0059606207f, + -0.0386228004f, + -0.0141239484f, + -0.0051503158f, + -0.0086121372f, + -0.0006540040f, + -0.0048132753f, + 0.0000000000f, + -0.0044243893f, + -0.0002463783f, + -0.0021941651f + }, + { + -0.0020697195f, /* Filter 108 */ + -0.0004279330f, + -0.0044852615f, + 0.0000000000f, + -0.0051656581f, + -0.0002831613f, + -0.0095912629f, + -0.0039475340f, + -0.0172892379f, + -0.0388691881f, + 0.0012184551f, + -0.1232815668f, + 0.0438348202f, + 0.3409410012f, + 0.0413406572f, + -0.1045414336f, + 0.0061524667f, + -0.0385942197f, + -0.0139864014f, + -0.0051964730f, + -0.0085654504f, + -0.0006690369f, + -0.0047945159f, + 0.0000000000f, + -0.0044191758f, + -0.0002385288f, + -0.0021979595f + }, + { + -0.0020626926f, /* Filter 109 */ + -0.0004358302f, + -0.0044852873f, + 0.0000000000f, + -0.0051773757f, + -0.0002660115f, + -0.0096293377f, + -0.0038891349f, + -0.0174263349f, + -0.0388613197f, + 0.0009980569f, + -0.1240710155f, + 0.0439338918f, + 0.3408908349f, + 0.0412321395f, + -0.1037708134f, + 0.0063431077f, + -0.0385642057f, + -0.0138489067f, + -0.0052421235f, + -0.0085184500f, + -0.0006839732f, + -0.0047754808f, + 0.0000000000f, + -0.0044137537f, + -0.0002306877f, + -0.0022016193f + }, + { + -0.0020555298f, /* Filter 110 */ + -0.0004437229f, + -0.0044850891f, + 0.0000000000f, + -0.0051887820f, + -0.0002487817f, + -0.0096670126f, + -0.0038302342f, + -0.0175633376f, + -0.0388518426f, + 0.0007764820f, + -0.1248610407f, + 0.0440325565f, + 0.3408366709f, + 0.0411232740f, + -0.1030011138f, + 0.0065325459f, + -0.0385327768f, + -0.0137114739f, + -0.0052872555f, + -0.0084711411f, + -0.0006988141f, + -0.0047561744f, + 0.0000000000f, + -0.0044081214f, + -0.0002228535f, + -0.0022051449f + }, + { + -0.0020482334f, /* Filter 111 */ + -0.0004516136f, + -0.0044846698f, + 0.0000000000f, + -0.0051998731f, + -0.0002314730f, + -0.0097042763f, + -0.0037708270f, + -0.0177002397f, + -0.0388407526f, + 0.0005537359f, + -0.1256516079f, + 0.0441308133f, + 0.3407785039f, + 0.0410140671f, + -0.1022323897f, + 0.0067207811f, + -0.0384999358f, + -0.0135741072f, + -0.0053318786f, + -0.0084235294f, + -0.0007135575f, + -0.0047366037f, + 0.0000000000f, + -0.0044022844f, + -0.0002150272f, + -0.0022085377f + }, + { + -0.0020408022f, /* Filter 112 */ + -0.0004594994f, + -0.0044840278f, + 0.0000000000f, + -0.0052106492f, + -0.0002140858f, + -0.0097411254f, + -0.0037109171f, + -0.0178370350f, + -0.0388280428f, + 0.0003298196f, + -0.1264427052f, + 0.0442286557f, + 0.3407163139f, + 0.0409045147f, + -0.1014646226f, + 0.0069078131f, + -0.0384656852f, + -0.0134368115f, + -0.0053759855f, + -0.0083756155f, + -0.0007282033f, + -0.0047167638f, + 0.0000000000f, + -0.0043962359f, + -0.0002072092f, + -0.0022117956f + }, + { + -0.0020332365f, /* Filter 113 */ + -0.0004673804f, + -0.0044831593f, + 0.0000000000f, + -0.0052211059f, + -0.0001966211f, + -0.0097775620f, + -0.0036505044f, + -0.0179737156f, + -0.0388137063f, + 0.0001047341f, + -0.1272343255f, + 0.0443260808f, + 0.3406501456f, + 0.0407946244f, + -0.1006978434f, + 0.0070936379f, + -0.0384300398f, + -0.0132995926f, + -0.0054195838f, + -0.0083274089f, + -0.0007427516f, + -0.0046966573f, + 0.0000000000f, + -0.0043899851f, + -0.0001994007f, + -0.0022149197f + }, + { + -0.0020255376f, /* Filter 114 */ + -0.0004752586f, + -0.0044820704f, + 0.0000000000f, + -0.0052312458f, + -0.0001790793f, + -0.0098135759f, + -0.0035895900f, + -0.0181102764f, + -0.0387977338f, + -0.0001215183f, + -0.1280264277f, + 0.0444230929f, + 0.3405799320f, + 0.0406843964f, + -0.0999320580f, + 0.0072782560f, + -0.0383929951f, + -0.0131624584f, + -0.0054626681f, + -0.0082789073f, + -0.0007572001f, + -0.0046762880f, + 0.0000000000f, + -0.0043835331f, + -0.0001916007f, + -0.0022179116f + }, + { + -0.0020177053f, /* Filter 115 */ + -0.0004831286f, + -0.0044807549f, + 0.0000000000f, + -0.0052410650f, + -0.0001614619f, + -0.0098491643f, + -0.0035281741f, + -0.0182467125f, + -0.0387801244f, + -0.0003489325f, + -0.1288190325f, + 0.0445196833f, + 0.3405057686f, + 0.0405738379f, + -0.0991672869f, + 0.0074616683f, + -0.0383545750f, + -0.0130254114f, + -0.0055052393f, + -0.0082301158f, + -0.0007715502f, + -0.0046556572f, + 0.0000000000f, + -0.0043768718f, + -0.0001838111f, + -0.0022207691f + }, + { + -0.0020097374f, /* Filter 116 */ + -0.0004909940f, + -0.0044792187f, + 0.0000000000f, + -0.0052505618f, + -0.0001437692f, + -0.0098843276f, + -0.0034662576f, + -0.0183830151f, + -0.0387608713f, + -0.0005775139f, + -0.1296120935f, + 0.0446158526f, + 0.3404275809f, + 0.0404629427f, + -0.0984035433f, + 0.0076438762f, + -0.0383147780f, + -0.0128884592f, + -0.0055472976f, + -0.0081810412f, + -0.0007858009f, + -0.0046347647f, + 0.0000000000f, + -0.0043700036f, + -0.0001760298f, + -0.0022234937f + }, + { + -0.0020016361f, /* Filter 117 */ + -0.0004988537f, + -0.0044774545f, + 0.0000000000f, + -0.0052597363f, + -0.0001260014f, + -0.0099190609f, + -0.0034038419f, + -0.0185191789f, + -0.0387399618f, + -0.0008072533f, + -0.1304056099f, + 0.0447115990f, + 0.3403453966f, + 0.0403517197f, + -0.0976408374f, + 0.0078248748f, + -0.0382736074f, + -0.0127516043f, + -0.0055888462f, + -0.0081316854f, + -0.0007999506f, + -0.0046136165f, + 0.0000000000f, + -0.0043629383f, + -0.0001682594f, + -0.0022260831f + }, + { + -0.0019934027f, /* Filter 118 */ + -0.0005067065f, + -0.0044754634f, + 0.0000000000f, + -0.0052685865f, + -0.0001081607f, + -0.0099533576f, + -0.0033409256f, + -0.0186551985f, + -0.0387173945f, + -0.0010381516f, + -0.1311995619f, + 0.0448069181f, + 0.3402592203f, + 0.0402401713f, + -0.0968791926f, + 0.0080046651f, + -0.0382310777f, + -0.0126148560f, + -0.0056298825f, + -0.0080820516f, + -0.0008139998f, + -0.0045922082f, + 0.0000000000f, + -0.0043556701f, + -0.0001605011f, + -0.0022285419f + }, + { + -0.0019850362f, /* Filter 119 */ + -0.0005145514f, + -0.0044732506f, + 0.0000000000f, + -0.0052771110f, + -0.0000902463f, + -0.0099872186f, + -0.0032775125f, + -0.0187910667f, + -0.0386931575f, + -0.0012702110f, + -0.1319939386f, + 0.0449018114f, + 0.3401690422f, + 0.0401282958f, + -0.0961186050f, + 0.0081832497f, + -0.0381871931f, + -0.0124782163f, + -0.0056704053f, + -0.0080321422f, + -0.0008279475f, + -0.0045705499f, + 0.0000000000f, + -0.0043481937f, + -0.0001527526f, + -0.0022308664f + }, + { + -0.0019765358f, /* Filter 120 */ + -0.0005223897f, + -0.0044708094f, + 0.0000000000f, + -0.0052853097f, + -0.0000722598f, + -0.0100206356f, + -0.0032136048f, + -0.0189267792f, + -0.0386672447f, + -0.0015034225f, + -0.1327887358f, + 0.0449962735f, + 0.3400748842f, + 0.0400161008f, + -0.0953590886f, + 0.0083606221f, + -0.0381419711f, + -0.0123416969f, + -0.0057104183f, + -0.0079819653f, + -0.0008417947f, + -0.0045486380f, + 0.0000000000f, + -0.0043405200f, + -0.0001450151f, + -0.0022330599f + }, + { + -0.0019679000f, /* Filter 121 */ + -0.0005302207f, + -0.0044681412f, + 0.0000000000f, + -0.0052931768f, + -0.0000542017f, + -0.0100536090f, + -0.0031491979f, + -0.0190623224f, + -0.0386396562f, + -0.0017377909f, + -0.1335839077f, + 0.0450903019f, + 0.3399767352f, + 0.0399035852f, + -0.0946006731f, + 0.0085367892f, + -0.0380954013f, + -0.0122052947f, + -0.0057499191f, + -0.0079315220f, + -0.0008555388f, + -0.0045264729f, + 0.0000000000f, + -0.0043326526f, + -0.0001372916f, + -0.0022351193f + }, + { + -0.0019591345f, /* Filter 122 */ + -0.0005380409f, + -0.0044652477f, + 0.0000000000f, + -0.0053007186f, + -0.0000360739f, + -0.0100861291f, + -0.0030842956f, + -0.0191976997f, + -0.0386103853f, + -0.0019733077f, + -0.1343794616f, + 0.0451838979f, + 0.3398745971f, + 0.0397907528f, + -0.0938433728f, + 0.0087117470f, + -0.0380475075f, + -0.0120690194f, + -0.0057889082f, + -0.0078808157f, + -0.0008691803f, + -0.0045040620f, + 0.0000000000f, + -0.0043245792f, + -0.0001295793f, + -0.0022370475f + }, + { + -0.0019502349f, /* Filter 123 */ + -0.0005458542f, + -0.0044621312f, + 0.0000000000f, + -0.0053079282f, + -0.0000178756f, + -0.0101182016f, + -0.0030189005f, + -0.0193328981f, + -0.0385794176f, + -0.0022099760f, + -0.1351753758f, + 0.0452770566f, + 0.3397684879f, + 0.0396776072f, + -0.0930871855f, + 0.0088854919f, + -0.0379982948f, + -0.0119328775f, + -0.0058273888f, + -0.0078298528f, + -0.0008827194f, + -0.0044814011f, + 0.0000000000f, + -0.0043163061f, + -0.0001218783f, + -0.0022388438f + }, + { + -0.0019412022f, /* Filter 124 */ + -0.0005536582f, + -0.0044587869f, + 0.0000000000f, + -0.0053148036f, + 0.0000003917f, + -0.0101498145f, + -0.0029530116f, + -0.0194679109f, + -0.0385467483f, + -0.0024477914f, + -0.1359716398f, + 0.0453697749f, + 0.3396583880f, + 0.0395641480f, + -0.0923321333f, + 0.0090580301f, + -0.0379477617f, + -0.0117968713f, + -0.0058653573f, + -0.0077786333f, + -0.0008961544f, + -0.0044584965f, + 0.0000000000f, + -0.0043078420f, + -0.0001141917f, + -0.0022405060f + }, + { + -0.0019320383f, /* Filter 125 */ + -0.0005614523f, + -0.0044552115f, + 0.0000000000f, + -0.0053213449f, + 0.0000187268f, + -0.0101809712f, + -0.0028866289f, + -0.0196027359f, + -0.0385123811f, + -0.0026867496f, + -0.1367682312f, + 0.0454620561f, + 0.3395443142f, + 0.0394503819f, + -0.0915782327f, + 0.0092293595f, + -0.0378959245f, + -0.0116610092f, + -0.0059028162f, + -0.0077271635f, + -0.0009094853f, + -0.0044353502f, + 0.0000000000f, + -0.0042991742f, + -0.0001065179f, + -0.0022420391f + }, + { + -0.0019227418f, /* Filter 126 */ + -0.0005692359f, + -0.0044514082f, + -0.0000000000f, + -0.0053275531f, + 0.0000371295f, + -0.0102116616f, + -0.0028197549f, + -0.0197373608f, + -0.0384763002f, + -0.0029268546f, + -0.1375651403f, + 0.0455538916f, + 0.3394262701f, + 0.0393363079f, + -0.0908254902f, + 0.0093994769f, + -0.0378427866f, + -0.0115252954f, + -0.0059397663f, + -0.0076754477f, + -0.0009227124f, + -0.0044119618f, + 0.0000000000f, + -0.0042903141f, + -0.0000988591f, + -0.0022434404f + }, + { + -0.0019133143f, /* Filter 127 */ + -0.0005770089f, + -0.0044473797f, + -0.0000000000f, + -0.0053334257f, + 0.0000555987f, + -0.0102418869f, + -0.0027523906f, + -0.0198717871f, + -0.0384385005f, + -0.0031681003f, + -0.1383623364f, + 0.0456452799f, + 0.3393042459f, + 0.0392219302f, + -0.0900739211f, + 0.0095683866f, + -0.0377883557f, + -0.0113897330f, + -0.0059762043f, + -0.0076234874f, + -0.0009358341f, + -0.0043883332f, + 0.0000000000f, + -0.0042812542f, + -0.0000912136f, + -0.0022447108f + }, + { + -0.0019037530f, /* Filter 128 */ + -0.0005847711f, + -0.0044431266f, + -0.0000000000f, + -0.0053389628f, + 0.0000741335f, + -0.0102716430f, + -0.0026845378f, + -0.0200059998f, + -0.0383989776f, + -0.0034104848f, + -0.1391598293f, + 0.0457362256f, + 0.3391782445f, + 0.0391072478f, + -0.0893235341f, + 0.0097360827f, + -0.0377326433f, + -0.0112543303f, + -0.0060121356f, + -0.0075712885f, + -0.0009488505f, + -0.0043644688f, + 0.0000000000f, + -0.0042720048f, + -0.0000835820f, + -0.0022458480f + }, + { + -0.0018940611f, /* Filter 129 */ + -0.0005925210f, + -0.0044386430f, + -0.0000000000f, + -0.0053441572f, + 0.0000927328f, + -0.0103009234f, + -0.0026161974f, + -0.0201399968f, + -0.0383577269f, + -0.0036540038f, + -0.1399575771f, + 0.0458267191f, + 0.3390482929f, + 0.0389922690f, + -0.0885743593f, + 0.0099025724f, + -0.0376756581f, + -0.0111190914f, + -0.0060475588f, + -0.0075188538f, + -0.0009617615f, + -0.0043403667f, + 0.0000000000f, + -0.0042625620f, + -0.0000759667f, + -0.0022468561f + }, + { + -0.0018842402f, /* Filter 130 */ + -0.0006002610f, + -0.0044339292f, + -0.0000000000f, + -0.0053490169f, + 0.0001113966f, + -0.0103297257f, + -0.0025473698f, + -0.0202737736f, + -0.0383147369f, + -0.0038986588f, + -0.1407555807f, + 0.0459167605f, + 0.3389143782f, + 0.0388769943f, + -0.0878263866f, + 0.0100678484f, + -0.0376174025f, + -0.0109840200f, + -0.0060824726f, + -0.0074661872f, + -0.0009745664f, + -0.0043160343f, + 0.0000000000f, + -0.0042529265f, + -0.0000683662f, + -0.0022477336f + }, + { + -0.0018742850f, /* Filter 131 */ + -0.0006079877f, + -0.0044289903f, + -0.0000000000f, + -0.0053535336f, + 0.0001301236f, + -0.0103580469f, + -0.0024780545f, + -0.0204073193f, + -0.0382700034f, + -0.0041444459f, + -0.1415538244f, + 0.0460063488f, + 0.3387764777f, + 0.0387614234f, + -0.0870796498f, + 0.0102319154f, + -0.0375578842f, + -0.0108491236f, + -0.0061168795f, + -0.0074132930f, + -0.0009872642f, + -0.0042914690f, + 0.0000000000f, + -0.0042430934f, + -0.0000607804f, + -0.0022484808f + }, + { + -0.0018642004f, /* Filter 132 */ + -0.0006157019f, + -0.0044238206f, + -0.0000000000f, + -0.0053577070f, + 0.0001489124f, + -0.0103858860f, + -0.0024082571f, + -0.0205406256f, + -0.0382235216f, + -0.0043913598f, + -0.1423522805f, + 0.0460954822f, + 0.3386346272f, + 0.0386455624f, + -0.0863341457f, + 0.0103947715f, + -0.0374971151f, + -0.0107144051f, + -0.0061507798f, + -0.0073601752f, + -0.0009998548f, + -0.0042666731f, + 0.0000000000f, + -0.0042330752f, + -0.0000532127f, + -0.0022490980f + }, + { + -0.0018539858f, /* Filter 133 */ + -0.0006234019f, + -0.0044184245f, + -0.0000000000f, + -0.0053615377f, + 0.0001677624f, + -0.0104132366f, + -0.0023379747f, + -0.0206736926f, + -0.0381752904f, + -0.0046394033f, + -0.1431509477f, + 0.0461841561f, + 0.3384888443f, + 0.0385294149f, + -0.0855898984f, + 0.0105564182f, + -0.0374351001f, + -0.0105798714f, + -0.0061841719f, + -0.0073068366f, + -0.0010123388f, + -0.0042416532f, + 0.0000000000f, + -0.0042228650f, + -0.0000456602f, + -0.0022495854f + }, + { + -0.0018436386f, /* Filter 134 */ + -0.0006310899f, + -0.0044127982f, + -0.0000000000f, + -0.0053650246f, + 0.0001866731f, + -0.0104400974f, + -0.0022672080f, + -0.0208065105f, + -0.0381252938f, + -0.0048885719f, + -0.1439497887f, + 0.0462723730f, + 0.3383391016f, + 0.0384129780f, + -0.0848469266f, + 0.0107168551f, + -0.0373718527f, + -0.0104455273f, + -0.0062170590f, + -0.0072532811f, + -0.0010247148f, + -0.0042164035f, + 0.0000000000f, + -0.0042124676f, + -0.0000381241f, + -0.0022499438f + }, + { + -0.0018331638f, /* Filter 135 */ + -0.0006387617f, + -0.0044069406f, + -0.0000000000f, + -0.0053681691f, + 0.0002056433f, + -0.0104664619f, + -0.0021959615f, + -0.0209390691f, + -0.0380735357f, + -0.0051388586f, + -0.1447488052f, + 0.0463601257f, + 0.3381854075f, + 0.0382962586f, + -0.0841052204f, + 0.0108760800f, + -0.0373073694f, + -0.0103113770f, + -0.0062494398f, + -0.0071995141f, + -0.0010369820f, + -0.0041909284f, + 0.0000000000f, + -0.0042018827f, + -0.0000306060f, + -0.0022501716f + }, + { + -0.0018225596f, /* Filter 136 */ + -0.0006464218f, + -0.0044008610f, + -0.0000000000f, + -0.0053709647f, + 0.0002246725f, + -0.0104923262f, + -0.0021242368f, + -0.0210713702f, + -0.0380200008f, + -0.0053902680f, + -0.1455479905f, + 0.0464474173f, + 0.3380277742f, + 0.0381792592f, + -0.0833648092f, + 0.0110340968f, + -0.0372416715f, + -0.0101774269f, + -0.0062813164f, + -0.0071455361f, + -0.0010491418f, + -0.0041652385f, + 0.0000000000f, + -0.0041911082f, + -0.0000231042f, + -0.0022502727f + }, + { + -0.0018118257f, /* Filter 137 */ + -0.0006540651f, + -0.0043945464f, + -0.0000000000f, + -0.0053734107f, + 0.0002437596f, + -0.0105176937f, + -0.0020520317f, + -0.0212033969f, + -0.0379646890f, + -0.0056427969f, + -0.1463473013f, + 0.0465342410f, + 0.3378661729f, + 0.0380619805f, + -0.0826257082f, + 0.0111909061f, + -0.0371747573f, + -0.0100436811f, + -0.0063126885f, + -0.0070913538f, + -0.0010611914f, + -0.0041393246f, + 0.0000000000f, + -0.0041801479f, + -0.0000156216f, + -0.0022502440f + }, + { + -0.0018009641f, /* Filter 138 */ + -0.0006616940f, + -0.0043880048f, + -0.0000000000f, + -0.0053755151f, + 0.0002629036f, + -0.0105425517f, + -0.0019793489f, + -0.0213351496f, + -0.0379075894f, + -0.0058964369f, + -0.1471467472f, + 0.0466205992f, + 0.3377006790f, + 0.0379444273f, + -0.0818879174f, + 0.0113465049f, + -0.0371066415f, + -0.0099101441f, + -0.0063435547f, + -0.0070369692f, + -0.0010731328f, + -0.0041131960f, + 0.0000000000f, + -0.0041690028f, + -0.0000081573f, + -0.0022500878f + }, + { + -0.0017899694f, /* Filter 139 */ + -0.0006693064f, + -0.0043812313f, + -0.0000000000f, + -0.0053772639f, + 0.0002821033f, + -0.0105669024f, + -0.0019061921f, + -0.0214666211f, + -0.0378487057f, + -0.0061511870f, + -0.1479462926f, + 0.0467064846f, + 0.3375312165f, + 0.0378266004f, + -0.0811514623f, + 0.0115008908f, + -0.0370373273f, + -0.0097768207f, + -0.0063739197f, + -0.0069823897f, + -0.0010849638f, + -0.0040868488f, + 0.0000000000f, + -0.0041576695f, + -0.0000007105f, + -0.0022498023f + }, + { + -0.0017788493f, /* Filter 140 */ + -0.0006769032f, + -0.0043742317f, + -0.0000000000f, + -0.0053786652f, + 0.0003013579f, + -0.0105907396f, + -0.0018325584f, + -0.0215977999f, + -0.0377880256f, + -0.0064070501f, + -0.1487459309f, + 0.0467919009f, + 0.3373578615f, + 0.0377085026f, + -0.0804163482f, + 0.0116540714f, + -0.0369668239f, + -0.0096437180f, + -0.0064037822f, + -0.0069276141f, + -0.0010966851f, + -0.0040602898f, + 0.0000000000f, + -0.0041461563f, + 0.0000067158f, + -0.0022493906f + }, + { + -0.0017676012f, /* Filter 141 */ + -0.0006844835f, + -0.0043670009f, + -0.0000000000f, + -0.0053797155f, + 0.0003206673f, + -0.0106140636f, + -0.0017584537f, + -0.0217286837f, + -0.0377255408f, + -0.0066640196f, + -0.1495456541f, + 0.0468768425f, + 0.3371805647f, + 0.0375901346f, + -0.0796825853f, + 0.0118060423f, + -0.0368951402f, + -0.0095108389f, + -0.0064331423f, + -0.0068726491f, + -0.0011082965f, + -0.0040335180f, + 0.0000000000f, + -0.0041344617f, + 0.0000141245f, + -0.0022488502f + }, + { + -0.0017562251f, /* Filter 142 */ + -0.0006920455f, + -0.0043595438f, + -0.0000000000f, + -0.0053804086f, + 0.0003400298f, + -0.0106368706f, + -0.0016838770f, + -0.0218592629f, + -0.0376612461f, + -0.0069220926f, + -0.1503454306f, + 0.0469613070f, + 0.3369993395f, + 0.0374715012f, + -0.0789501938f, + 0.0119568064f, + -0.0368222770f, + -0.0093781859f, + -0.0064619996f, + -0.0068174982f, + -0.0011197964f, + -0.0040065374f, + 0.0000000000f, + -0.0041225812f, + 0.0000215125f, + -0.0022481826f + }, + { + -0.0017447212f, /* Filter 143 */ + -0.0006995909f, + -0.0043518542f, + -0.0000000000f, + -0.0053807534f, + 0.0003594448f, + -0.0106591532f, + -0.0016088279f, + -0.0219895354f, + -0.0375951417f, + -0.0071812658f, + -0.1511452494f, + 0.0470452963f, + 0.3368142102f, + 0.0373526110f, + -0.0782191848f, + 0.0121063640f, + -0.0367482532f, + -0.0092457714f, + -0.0064903592f, + -0.0067621637f, + -0.0011311858f, + -0.0039793495f, + 0.0000000000f, + -0.0041105253f, + 0.0000288809f, + -0.0022473903f + }, + { + -0.0017330882f, /* Filter 144 */ + -0.0007071195f, + -0.0043439389f, + -0.0000000000f, + -0.0053807400f, + 0.0003789110f, + -0.0106809137f, + -0.0015333122f, + -0.0221194870f, + -0.0375272169f, + -0.0074415407f, + -0.1519450992f, + 0.0471288033f, + 0.3366251695f, + 0.0372334541f, + -0.0774895642f, + 0.0122547132f, + -0.0366730754f, + -0.0091135918f, + -0.0065182191f, + -0.0067066524f, + -0.0011424645f, + -0.0039519572f, + 0.0000000000f, + -0.0040982843f, + 0.0000362282f, + -0.0022464703f + }, + { + -0.0017213310f, /* Filter 145 */ + -0.0007146270f, + -0.0043357913f, + -0.0000000000f, + -0.0053803718f, + 0.0003984276f, + -0.0107021433f, + -0.0014573283f, + -0.0222491169f, + -0.0374574722f, + -0.0077029083f, + -0.1527449650f, + 0.0472118307f, + 0.3364322263f, + 0.0371140423f, + -0.0767613480f, + 0.0124018566f, + -0.0365967449f, + -0.0089816572f, + -0.0065455769f, + -0.0066509631f, + -0.0011536312f, + -0.0039243606f, + 0.0000000000f, + -0.0040858657f, + 0.0000435551f, + -0.0022454243f + }, + { + -0.0017094449f, /* Filter 146 */ + -0.0007221187f, + -0.0043274173f, + -0.0000000000f, + -0.0053796470f, + 0.0004179944f, + -0.0107228440f, + -0.0013808793f, + -0.0223784170f, + -0.0373858889f, + -0.0079653685f, + -0.1535448176f, + 0.0472943732f, + 0.3362353715f, + 0.0369943758f, + -0.0760345493f, + 0.0125477901f, + -0.0365192713f, + -0.0088499695f, + -0.0065724401f, + -0.0065951068f, + -0.0011646849f, + -0.0038965612f, + 0.0000000000f, + -0.0040732755f, + 0.0000508607f, + -0.0022442531f + }, + { + -0.0016974336f, /* Filter 147 */ + -0.0007295900f, + -0.0043188118f, + -0.0000000000f, + -0.0053785675f, + 0.0004376090f, + -0.0107430073f, + -0.0013039662f, + -0.0225073789f, + -0.0373124730f, + -0.0082289214f, + -0.1543446506f, + 0.0473764318f, + 0.3360346197f, + 0.0368744548f, + -0.0753091817f, + 0.0126925250f, + -0.0364406716f, + -0.0087185354f, + -0.0065988038f, + -0.0065390777f, + -0.0011756279f, + -0.0038685641f, + 0.0000000000f, + -0.0040605034f, + 0.0000581457f, + -0.0022429558f + }, + { + -0.0016852985f, /* Filter 148 */ + -0.0007370403f, + -0.0043099736f, + -0.0000000000f, + -0.0053771277f, + 0.0004572711f, + -0.0107626298f, + -0.0012265888f, + -0.0226359994f, + -0.0372372219f, + -0.0084935567f, + -0.1551444498f, + 0.0474580032f, + 0.3358299840f, + 0.0367542882f, + -0.0745852583f, + 0.0128360470f, + -0.0363609391f, + -0.0085873575f, + -0.0066246707f, + -0.0064828908f, + -0.0011864571f, + -0.0038403710f, + 0.0000000000f, + -0.0040475567f, + 0.0000654088f, + -0.0022415348f + }, + { + -0.0016730382f, /* Filter 149 */ + -0.0007444717f, + -0.0043009099f, + -0.0000000000f, + -0.0053753300f, + 0.0004769806f, + -0.0107817128f, + -0.0011487520f, + -0.0227642672f, + -0.0371601215f, + -0.0087592798f, + -0.1559442033f, + 0.0475390854f, + 0.3356214637f, + 0.0366338730f, + -0.0738627827f, + 0.0129783713f, + -0.0362800956f, + -0.0084564442f, + -0.0066500430f, + -0.0064265378f, + -0.0011971748f, + -0.0038119815f, + 0.0000000000f, + -0.0040344299f, + 0.0000726493f, + -0.0022399887f + }, + { + -0.0016606527f, /* Filter 150 */ + -0.0007518828f, + -0.0042916190f, + -0.0000000000f, + -0.0053731737f, + 0.0004967352f, + -0.0108002480f, + -0.0010704568f, + -0.0228921794f, + -0.0370811655f, + -0.0090260797f, + -0.1567438739f, + 0.0476196755f, + 0.3354090492f, + 0.0365132145f, + -0.0731417811f, + 0.0131194860f, + -0.0361981382f, + -0.0083257964f, + -0.0066749202f, + -0.0063700344f, + -0.0012077784f, + -0.0037834012f, + 0.0000000000f, + -0.0040211370f, + 0.0000798669f, + -0.0022383190f + }, + { + -0.0016481390f, /* Filter 151 */ + -0.0007592726f, + -0.0042820985f, + -0.0000000000f, + -0.0053706532f, + 0.0005165348f, + -0.0108182392f, + -0.0009917019f, + -0.0230197214f, + -0.0370003574f, + -0.0092939607f, + -0.1575434521f, + 0.0476997708f, + 0.3351927556f, + 0.0363923116f, + -0.0724222525f, + 0.0132593976f, + -0.0361150801f, + -0.0081954182f, + -0.0066993029f, + -0.0063133765f, + -0.0012182683f, + -0.0037546254f, + 0.0000000000f, + -0.0040076731f, + 0.0000870628f, + -0.0022365232f + }, + { + -0.0016355037f, /* Filter 152 */ + -0.0007666411f, + -0.0042723457f, + -0.0000000000f, + -0.0053677718f, + 0.0005363782f, + -0.0108356778f, + -0.0009124926f, + -0.0231468974f, + -0.0369176808f, + -0.0095629171f, + -0.1583429520f, + 0.0477793762f, + 0.3349726054f, + 0.0362711726f, + -0.0717042118f, + 0.0133981115f, + -0.0360309323f, + -0.0080653181f, + -0.0067231917f, + -0.0062565682f, + -0.0012286457f, + -0.0037256640f, + 0.0000000000f, + -0.0039940319f, + 0.0000942350f, + -0.0022346067f + }, + { + -0.0016227434f, /* Filter 153 */ + -0.0007739869f, + -0.0042623665f, + -0.0000000000f, + -0.0053645285f, + 0.0005562642f, + -0.0108525630f, + -0.0008328273f, + -0.0232736903f, + -0.0368331385f, + -0.0098329431f, + -0.1591423172f, + 0.0478584820f, + 0.3347485628f, + 0.0361497965f, + -0.0709876776f, + 0.0135356225f, + -0.0359456982f, + -0.0079354970f, + -0.0067465878f, + -0.0061996157f, + -0.0012389084f, + -0.0036965139f, + 0.0000000000f, + -0.0039802216f, + 0.0001013836f, + -0.0022325659f + }, + { + -0.0016098620f, /* Filter 154 */ + -0.0007813108f, + -0.0042521612f, + -0.0000000000f, + -0.0053609232f, + 0.0005761918f, + -0.0108688882f, + -0.0007527098f, + -0.0234001010f, + -0.0367467241f, + -0.0101040387f, + -0.1599415609f, + 0.0479370898f, + 0.3345206886f, + 0.0360281864f, + -0.0702726572f, + 0.0136719292f, + -0.0358593925f, + -0.0078059632f, + -0.0067694939f, + -0.0061425226f, + -0.0012490578f, + -0.0036671818f, + 0.0000000000f, + -0.0039662425f, + 0.0001085087f, + -0.0022304022f + }, + { + -0.0015968572f, /* Filter 155 */ + -0.0007886122f, + -0.0042417193f, + -0.0000000000f, + -0.0053569537f, + 0.0005961600f, + -0.0108846506f, + -0.0006721419f, + -0.0235261215f, + -0.0366584350f, + -0.0103761991f, + -0.1607406511f, + 0.0480151982f, + 0.3342889675f, + 0.0359063480f, + -0.0695591611f, + 0.0138070366f, + -0.0357720145f, + -0.0076767172f, + -0.0067919097f, + -0.0060852914f, + -0.0012590926f, + -0.0036376653f, + 0.0000000000f, + -0.0039520956f, + 0.0001156098f, + -0.0022281185f + }, + { + -0.0015837296f, /* Filter 156 */ + -0.0007958903f, + -0.0042310587f, + -0.0000000000f, + -0.0053526174f, + 0.0006161688f, + -0.0108998530f, + -0.0005911249f, + -0.0236517400f, + -0.0365682525f, + -0.0106494241f, + -0.1615395679f, + 0.0480928020f, + 0.3340533515f, + 0.0357842761f, + -0.0688471974f, + 0.0139409476f, + -0.0356835773f, + -0.0075477654f, + -0.0068138363f, + -0.0060279260f, + -0.0012690123f, + -0.0036079683f, + 0.0000000000f, + -0.0039377785f, + 0.0001226858f, + -0.0022257106f + }, + { + -0.0015704775f, /* Filter 157 */ + -0.0008031447f, + -0.0042201659f, + -0.0000000000f, + -0.0053479162f, + 0.0006362162f, + -0.0109144832f, + -0.0005096614f, + -0.0237769522f, + -0.0364761835f, + -0.0109237052f, + -0.1623383067f, + 0.0481699031f, + 0.3338139023f, + 0.0356619806f, + -0.0681367848f, + 0.0140736575f, + -0.0355940851f, + -0.0074191106f, + -0.0068352744f, + -0.0059704311f, + -0.0012788172f, + -0.0035780951f, + 0.0000000000f, + -0.0039232962f, + 0.0001297372f, + -0.0022231823f + }, + { + -0.0015571057f, /* Filter 158 */ + -0.0008103756f, + -0.0042090432f, + -0.0000000000f, + -0.0053428512f, + 0.0006563010f, + -0.0109285481f, + -0.0004277512f, + -0.0239017519f, + -0.0363822251f, + -0.0111990442f, + -0.1631368376f, + 0.0482464973f, + 0.3335706260f, + 0.0355394639f, + -0.0674279327f, + 0.0142051710f, + -0.0355035484f, + -0.0072907606f, + -0.0068562238f, + -0.0059128092f, + -0.0012885070f, + -0.0035480443f, + 0.0000000000f, + -0.0039086496f, + 0.0001367646f, + -0.0022205325f + }, + { + -0.0015436150f, /* Filter 159 */ + -0.0008175826f, + -0.0041976949f, + -0.0000000000f, + -0.0053374169f, + 0.0006764229f, + -0.0109420370f, + -0.0003454002f, + -0.0240261303f, + -0.0362863596f, + -0.0114754349f, + -0.1639351598f, + 0.0483225860f, + 0.3333235086f, + 0.0354167248f, + -0.0667206479f, + 0.0143354881f, + -0.0354119781f, + -0.0071627177f, + -0.0068766888f, + -0.0058550643f, + -0.0012980817f, + -0.0035178221f, + 0.0000000000f, + -0.0038938406f, + 0.0001437652f, + -0.0022177623f + }, + { + -0.0015300010f, /* Filter 160 */ + -0.0008247632f, + -0.0041861158f, + -0.0000000000f, + -0.0053316185f, + 0.0006965800f, + -0.0109549473f, + -0.0002626055f, + -0.0241500844f, + -0.0361885991f, + -0.0117528734f, + -0.1647332531f, + 0.0483981644f, + 0.3330725580f, + 0.0352937702f, + -0.0660149525f, + 0.0144646069f, + -0.0353193822f, + -0.0070349865f, + -0.0068966684f, + -0.0057972012f, + -0.0013075407f, + -0.0034874241f, + 0.0000000000f, + -0.0038788694f, + 0.0001507411f, + -0.0022148733f + }, + { + -0.0015162684f, /* Filter 161 */ + -0.0008319195f, + -0.0041743131f, + -0.0000000000f, + -0.0053254484f, + 0.0007167720f, + -0.0109672808f, + -0.0001793695f, + -0.0242736037f, + -0.0360889259f, + -0.0120313580f, + -0.1655310827f, + 0.0484732318f, + 0.3328177905f, + 0.0351705998f, + -0.0653108539f, + 0.0145925305f, + -0.0352257635f, + -0.0069075694f, + -0.0069161628f, + -0.0057392236f, + -0.0013168843f, + -0.0034568576f, + 0.0000000000f, + -0.0038637337f, + 0.0001576893f, + -0.0022118625f + }, + { + -0.0015024151f, /* Filter 162 */ + -0.0008390498f, + -0.0041622804f, + -0.0000000000f, + -0.0053189108f, + 0.0007369976f, + -0.0109790280f, + -0.0000956984f, + -0.0243966809f, + -0.0359873394f, + -0.0123108854f, + -0.1663286640f, + 0.0485477870f, + 0.3325592195f, + 0.0350472173f, + -0.0646083561f, + 0.0147192622f, + -0.0351311327f, + -0.0067804730f, + -0.0069351713f, + -0.0056811318f, + -0.0013261120f, + -0.0034261244f, + 0.0000000000f, + -0.0038484382f, + 0.0001646126f, + -0.0022087339f + }, + { + -0.0014884430f, /* Filter 163 */ + -0.0008461542f, + -0.0041500234f, + -0.0000000000f, + -0.0053120041f, + 0.0007572560f, + -0.0109901946f, + -0.0000115916f, + -0.0245193118f, + -0.0358838323f, + -0.0125914531f, + -0.1671259528f, + 0.0486218279f, + 0.3322968292f, + 0.0349236250f, + -0.0639074789f, + 0.0148448026f, + -0.0350355011f, + -0.0066537014f, + -0.0069537018f, + -0.0056229327f, + -0.0013352233f, + -0.0033952242f, + 0.0000000000f, + -0.0038329794f, + 0.0001715097f, + -0.0022054869f + }, + { + -0.0014743520f, /* Filter 164 */ + -0.0008532325f, + -0.0041375369f, + -0.0000000000f, + -0.0053047256f, + 0.0007775460f, + -0.0110007658f, + 0.0000729497f, + -0.0246414870f, + -0.0357784018f, + -0.0128730543f, + -0.1679229530f, + 0.0486953528f, + 0.3320306306f, + 0.0347998259f, + -0.0632082284f, + 0.0149691501f, + -0.0349388718f, + -0.0065272595f, + -0.0069717498f, + -0.0055646300f, + -0.0013442186f, + -0.0033641641f, + 0.0000000000f, + -0.0038173642f, + 0.0001783784f, + -0.0022021205f + }, + { + -0.0014601426f, /* Filter 165 */ + -0.0008602826f, + -0.0041248212f, + -0.0000000000f, + -0.0052970776f, + 0.0007978665f, + -0.0110107504f, + 0.0001579238f, + -0.0247632008f, + -0.0356710455f, + -0.0131556897f, + -0.1687196397f, + 0.0487683599f, + 0.3317606309f, + 0.0346758233f, + -0.0625106192f, + 0.0150923097f, + -0.0348412605f, + -0.0064011503f, + -0.0069893153f, + -0.0055062248f, + -0.0013530973f, + -0.0033329427f, + 0.0000000000f, + -0.0038015912f, + 0.0001852208f, + -0.0021986382f + }, + { + -0.0014458149f, /* Filter 166 */ + -0.0008673053f, + -0.0041118878f, + -0.0000000000f, + -0.0052890581f, + 0.0008182166f, + -0.0110201366f, + 0.0002433249f, + -0.0248844430f, + -0.0355617515f, + -0.0134393508f, + -0.1695159803f, + 0.0488408446f, + 0.3314868370f, + 0.0345516193f, + -0.0618146579f, + 0.0152142751f, + -0.0347426640f, + -0.0062753772f, + -0.0070064077f, + -0.0054477253f, + -0.0013618591f, + -0.0033015580f, + 0.0000000000f, + -0.0037856664f, + 0.0001920348f, + -0.0021950358f + }, + { + -0.0014313705f, /* Filter 167 */ + -0.0008743021f, + -0.0040987206f, + -0.0000000000f, + -0.0052806669f, + 0.0008385950f, + -0.0110289268f, + 0.0003291546f, + -0.0250052112f, + -0.0354505202f, + -0.0137240371f, + -0.1703119776f, + 0.0489128097f, + 0.3312092597f, + 0.0344272156f, + -0.0611203609f, + 0.0153350520f, + -0.0346430960f, + -0.0061499438f, + -0.0070230192f, + -0.0053891314f, + -0.0013705037f, + -0.0032700204f, + 0.0000000000f, + -0.0037695819f, + 0.0001988203f, + -0.0021913182f + }, + { + -0.0014168097f, /* Filter 168 */ + -0.0008812689f, + -0.0040853303f, + -0.0000000000f, + -0.0052719037f, + 0.0008590005f, + -0.0110371168f, + 0.0004154116f, + -0.0251254954f, + -0.0353373491f, + -0.0140097447f, + -0.1711076164f, + 0.0489842529f, + 0.3309279035f, + 0.0343026178f, + -0.0604277411f, + 0.0154546459f, + -0.0345425735f, + -0.0060248575f, + -0.0070391540f, + -0.0053304459f, + -0.0013790323f, + -0.0032383252f, + 0.0000000000f, + -0.0037533457f, + 0.0002055786f, + -0.0021874838f + }, + { + -0.0014021320f, /* Filter 169 */ + -0.0008882074f, + -0.0040717178f, + -0.0000000000f, + -0.0052627649f, + 0.0008794327f, + -0.0110447047f, + 0.0005020904f, + -0.0252452876f, + -0.0352222256f, + -0.0142964714f, + -0.1719028769f, + 0.0490551686f, + 0.3306427857f, + 0.0341778230f, + -0.0597367984f, + 0.0155730524f, + -0.0344410900f, + -0.0059001204f, + -0.0070548131f, + -0.0052716754f, + -0.0013874429f, + -0.0032064778f, + 0.0000000000f, + -0.0037369580f, + 0.0002123080f, + -0.0021835332f + }, + { + -0.0013873415f, /* Filter 170 */ + -0.0008951164f, + -0.0040578765f, + -0.0000000000f, + -0.0052532571f, + 0.0008998894f, + -0.0110516828f, + 0.0005891905f, + -0.0253645869f, + -0.0351051571f, + -0.0145842116f, + -0.1726977302f, + 0.0491255647f, + 0.3303539045f, + 0.0340528424f, + -0.0590475577f, + 0.0156902759f, + -0.0343386669f, + -0.0057757379f, + -0.0070700018f, + -0.0052128211f, + -0.0013957372f, + -0.0031744818f, + 0.0000000000f, + -0.0037204152f, + 0.0002190094f, + -0.0021794696f + }, + { + -0.0013724328f, /* Filter 171 */ + -0.0009019959f, + -0.0040438090f, + -0.0000000000f, + -0.0052433760f, + 0.0009203707f, + -0.0110580501f, + 0.0006767090f, + -0.0254833823f, + -0.0349861306f, + -0.0148729578f, + -0.1734921841f, + 0.0491954263f, + 0.3300612587f, + 0.0339276705f, + -0.0583600246f, + 0.0158063103f, + -0.0342353018f, + -0.0056517100f, + -0.0070847143f, + -0.0051538904f, + -0.0014039134f, + -0.0031423371f, + 0.0000000000f, + -0.0037037255f, + 0.0002256805f, + -0.0021752882f + }, + { + -0.0013574107f, /* Filter 172 */ + -0.0009088446f, + -0.0040295204f, + -0.0000000000f, + -0.0052331148f, + 0.0009408753f, + -0.0110638054f, + 0.0007646444f, + -0.0256016596f, + -0.0348651405f, + -0.0151627154f, + -0.1742862005f, + 0.0492647580f, + 0.3297648658f, + 0.0338023139f, + -0.0576741947f, + 0.0159211695f, + -0.0341310065f, + -0.0055280441f, + -0.0070989590f, + -0.0050948817f, + -0.0014119724f, + -0.0031100445f, + 0.0000000000f, + -0.0036868820f, + 0.0002323231f, + -0.0021709935f + }, + { + -0.0013422743f, /* Filter 173 */ + -0.0009156640f, + -0.0040150098f, + -0.0000000000f, + -0.0052224822f, + 0.0009614017f, + -0.0110689444f, + 0.0008529956f, + -0.0257194246f, + -0.0347421838f, + -0.0154534710f, + -0.1750797643f, + 0.0493335604f, + 0.3294647168f, + 0.0336767754f, + -0.0569901065f, + 0.0160348403f, + -0.0340257897f, + -0.0054047446f, + -0.0071127326f, + -0.0050358040f, + -0.0014199134f, + -0.0030776105f, + 0.0000000000f, + -0.0036698948f, + 0.0002389352f, + -0.0021665839f + }, + { + -0.0013270241f, /* Filter 174 */ + -0.0009224524f, + -0.0040002741f, + -0.0000000000f, + -0.0052114720f, + 0.0009819489f, + -0.0110734677f, + 0.0009417582f, + -0.0258366582f, + -0.0346172596f, + -0.0157452306f, + -0.1758728665f, + 0.0494018279f, + 0.3291608469f, + 0.0335510562f, + -0.0563077467f, + 0.0161473402f, + -0.0339196635f, + -0.0052818148f, + -0.0071260337f, + -0.0049766550f, + -0.0014277367f, + -0.0030450357f, + 0.0000000000f, + -0.0036527558f, + 0.0002455178f, + -0.0021620629f + }, + { + -0.0013116612f, /* Filter 175 */ + -0.0009292099f, + -0.0039853119f, + -0.0000000000f, + -0.0052000922f, + 0.0010025158f, + -0.0110773713f, + 0.0010309301f, + -0.0259533663f, + -0.0344903630f, + -0.0160379814f, + -0.1766655070f, + 0.0494695653f, + 0.3288532338f, + 0.0334251612f, + -0.0556271369f, + 0.0162586580f, + -0.0338126301f, + -0.0051592580f, + -0.0071388691f, + -0.0049174434f, + -0.0014354426f, + -0.0030123189f, + 0.0000000000f, + -0.0036354734f, + 0.0002520699f, + -0.0021574284f + }, + { + -0.0012961871f, /* Filter 176 */ + -0.0009359356f, + -0.0039701300f, + -0.0000000000f, + -0.0051883299f, + 0.0010231017f, + -0.0110806487f, + 0.0011205114f, + -0.0260695287f, + -0.0343614823f, + -0.0163317246f, + -0.1774576372f, + 0.0495367633f, + 0.3285419113f, + 0.0332990916f, + -0.0549482856f, + 0.0163688011f, + -0.0337047030f, + -0.0050370769f, + -0.0071512408f, + -0.0048581698f, + -0.0014430304f, + -0.0029794678f, + 0.0000000000f, + -0.0036180491f, + 0.0002585916f, + -0.0021526811f + }, + { + -0.0012806020f, /* Filter 177 */ + -0.0009426290f, + -0.0039547236f, + -0.0000000000f, + -0.0051761955f, + 0.0010437052f, + -0.0110832996f, + 0.0012104960f, + -0.0261851487f, + -0.0342306216f, + -0.0166264567f, + -0.1782492532f, + 0.0496034263f, + 0.3282268613f, + 0.0331728498f, + -0.0542712019f, + 0.0164777696f, + -0.0335958803f, + -0.0049152798f, + -0.0071631454f, + -0.0047988370f, + -0.0014504998f, + -0.0029464795f, + 0.0000000000f, + -0.0036004777f, + 0.0002650826f, + -0.0021478235f + }, + { + -0.0012649024f, /* Filter 178 */ + -0.0009492899f, + -0.0039390981f, + -0.0000000000f, + -0.0051636809f, + 0.0010643250f, + -0.0110853211f, + 0.0013008835f, + -0.0263002096f, + -0.0340977770f, + -0.0169221683f, + -0.1790403429f, + 0.0496695465f, + 0.3279080881f, + 0.0330464377f, + -0.0535958992f, + 0.0165855627f, + -0.0334861824f, + -0.0047938623f, + -0.0071745880f, + -0.0047394533f, + -0.0014578511f, + -0.0029133560f, + 0.0000000000f, + -0.0035827641f, + 0.0002715416f, + -0.0021428519f + }, + { + -0.0012490941f, /* Filter 179 */ + -0.0009559179f, + -0.0039232480f, + -0.0000000000f, + -0.0051507929f, + 0.0010849601f, + -0.0110867107f, + 0.0013916737f, + -0.0264147135f, + -0.0339629379f, + -0.0172188616f, + -0.1798308921f, + 0.0497351290f, + 0.3275856455f, + 0.0329198616f, + -0.0529223907f, + 0.0166921866f, + -0.0333756137f, + -0.0046728389f, + -0.0071855666f, + -0.0046800169f, + -0.0014650844f, + -0.0028801083f, + 0.0000000000f, + -0.0035649100f, + 0.0002779697f, + -0.0021377717f + }, + { + -0.0012331777f, /* Filter 180 */ + -0.0009625120f, + -0.0039071795f, + -0.0000000000f, + -0.0051375257f, + 0.0011056098f, + -0.0110874640f, + 0.0014828623f, + -0.0265286487f, + -0.0338261024f, + -0.0175165288f, + -0.1806208765f, + 0.0498001678f, + 0.3272594964f, + 0.0327931228f, + -0.0522506751f, + 0.0167976380f, + -0.0332641784f, + -0.0045522045f, + -0.0071960854f, + -0.0046205348f, + -0.0014721991f, + -0.0028467280f, + 0.0000000000f, + -0.0035469196f, + 0.0002843666f, + -0.0021325818f + }, + { + -0.0012171503f, /* Filter 181 */ + -0.0009690729f, + -0.0038908892f, + -0.0000000000f, + -0.0051238819f, + 0.0011262723f, + -0.0110875784f, + 0.0015744429f, + -0.0266420053f, + -0.0336872691f, + -0.0178151678f, + -0.1814102747f, + 0.0498646641f, + 0.3269296554f, + 0.0326662218f, + -0.0515807741f, + 0.0169019206f, + -0.0331518885f, + -0.0044319669f, + -0.0072061462f, + -0.0045610084f, + -0.0014791959f, + -0.0028132202f, + 0.0000000000f, + -0.0035287880f, + 0.0002907313f, + -0.0021272804f + }, + { + -0.0012010169f, /* Filter 182 */ + -0.0009756000f, + -0.0038743798f, + -0.0000000000f, + -0.0051098607f, + 0.0011469467f, + -0.0110870524f, + 0.0016664209f, + -0.0267547838f, + -0.0335464345f, + -0.0181147701f, + -0.1821990707f, + 0.0499286139f, + 0.3265961402f, + 0.0325391632f, + -0.0509126991f, + 0.0170050359f, + -0.0330387505f, + -0.0043121270f, + -0.0072157478f, + -0.0045014440f, + -0.0014860735f, + -0.0027795897f, + 0.0000000000f, + -0.0035105169f, + 0.0002970631f, + -0.0021218707f + }, + { + -0.0011847721f, /* Filter 183 */ + -0.0009820912f, + -0.0038576503f, + -0.0000000000f, + -0.0050954597f, + 0.0011676322f, + -0.0110858859f, + 0.0017587860f, + -0.0268669691f, + -0.0334035882f, + -0.0184153382f, + -0.1829872717f, + 0.0499920157f, + 0.3262589677f, + 0.0324119487f, + -0.0502464419f, + 0.0171069856f, + -0.0329247776f, + -0.0041926924f, + -0.0072248932f, + -0.0044418429f, + -0.0014928333f, + -0.0027458380f, + 0.0000000000f, + -0.0034921137f, + 0.0003033628f, + -0.0021163512f + }, + { + -0.0011684229f, /* Filter 184 */ + -0.0009885487f, + -0.0038407034f, + -0.0000000000f, + -0.0050806797f, + 0.0011883268f, + -0.0110840763f, + 0.0018515428f, + -0.0269785595f, + -0.0332587359f, + -0.0187168673f, + -0.1837748388f, + 0.0500548715f, + 0.3259181294f, + 0.0322845815f, + -0.0495820369f, + 0.0172077747f, + -0.0328099690f, + -0.0040736649f, + -0.0072335836f, + -0.0043822054f, + -0.0014994741f, + -0.0027119655f, + 0.0000000000f, + -0.0034735715f, + 0.0003096295f, + -0.0021107264f + }, + { + -0.0011519648f, /* Filter 185 */ + -0.0009949709f, + -0.0038235324f, + -0.0000000000f, + -0.0050655213f, + 0.0012090309f, + -0.0110816114f, + 0.0019446819f, + -0.0270895417f, + -0.0331118630f, + -0.0190193487f, + -0.1845617592f, + 0.0501171763f, + 0.3255736244f, + 0.0321570632f, + -0.0489194701f, + 0.0173073982f, + -0.0326943386f, + -0.0039550473f, + -0.0072418204f, + -0.0043225420f, + -0.0015059960f, + -0.0026779756f, + 0.0000000000f, + -0.0034549005f, + 0.0003158634f, + -0.0021049923f + }, + { + -0.0011354014f, /* Filter 186 */ + -0.0010013566f, + -0.0038061486f, + -0.0000000000f, + -0.0050499875f, + 0.0012297420f, + -0.0110785003f, + 0.0020382052f, + -0.0271999184f, + -0.0329629727f, + -0.0193227779f, + -0.1853480191f, + 0.0501789307f, + 0.3252254876f, + 0.0320294011f, + -0.0482587741f, + 0.0174058626f, + -0.0325778977f, + -0.0038368434f, + -0.0072496072f, + -0.0042628518f, + -0.0015124002f, + -0.0026438710f, + 0.0000000000f, + -0.0034360946f, + 0.0003220639f, + -0.0020991518f + }, + { + -0.0011187340f, /* Filter 187 */ + -0.0010077057f, + -0.0037885462f, + -0.0000000000f, + -0.0050340712f, + 0.0012504589f, + -0.0110747363f, + 0.0021321098f, + -0.0273096732f, + -0.0328120641f, + -0.0196271574f, + -0.1861335945f, + 0.0502401324f, + 0.3248737054f, + 0.0319015944f, + -0.0475999433f, + 0.0175031683f, + -0.0324606458f, + -0.0037190588f, + -0.0072569405f, + -0.0042031392f, + -0.0015186844f, + -0.0026096525f, + 0.0000000000f, + -0.0034171601f, + 0.0003282310f, + -0.0020932061f + }, + { + -0.0011019602f, /* Filter 188 */ + -0.0010140199f, + -0.0037707253f, + -0.0000000000f, + -0.0050177778f, + 0.0012711815f, + -0.0110703162f, + 0.0022263916f, + -0.0274188054f, + -0.0326591229f, + -0.0199324784f, + -0.1869184792f, + 0.0503007794f, + 0.3245182896f, + 0.0317736429f, + -0.0469429903f, + 0.0175993179f, + -0.0323425986f, + -0.0036016954f, + -0.0072638274f, + -0.0041434070f, + -0.0015248506f, + -0.0025753233f, + 0.0000000000f, + -0.0033980896f, + 0.0003343644f, + -0.0020871540f + }, + { + -0.0010850831f, /* Filter 189 */ + -0.0010202946f, + -0.0037526894f, + -0.0000000000f, + -0.0050011043f, + 0.0012919081f, + -0.0110652351f, + 0.0023210497f, + -0.0275273031f, + -0.0325041534f, + -0.0202387338f, + -0.1877026542f, + 0.0503608735f, + 0.3241592762f, + 0.0316455557f, + -0.0462879351f, + 0.0176943134f, + -0.0322237637f, + -0.0034847552f, + -0.0072702646f, + -0.0040836583f, + -0.0015308989f, + -0.0025408856f, + 0.0000000000f, + -0.0033788979f, + 0.0003404626f, + -0.0020809967f + }, + { + -0.0010681046f, /* Filter 190 */ + -0.0010265333f, + -0.0037344368f, + -0.0000000000f, + -0.0049840526f, + 0.0013126376f, + -0.0110594921f, + 0.0024160790f, + -0.0276351622f, + -0.0323471495f, + -0.0205459255f, + -0.1884861004f, + 0.0504204080f, + 0.3237966197f, + 0.0315173303f, + -0.0456347697f, + 0.0177881547f, + -0.0321041418f, + -0.0033682442f, + -0.0072762570f, + -0.0040238979f, + -0.0015368271f, + -0.0025063405f, + 0.0000000000f, + -0.0033595723f, + 0.0003465273f, + -0.0020747359f + }, + { + -0.0010510198f, /* Filter 191 */ + -0.0010327352f, + -0.0037159717f, + -0.0000000000f, + -0.0049666219f, + 0.0013333687f, + -0.0110530868f, + 0.0025114767f, + -0.0277423727f, + -0.0321881057f, + -0.0208540454f, + -0.1892688035f, + 0.0504793852f, + 0.3234303845f, + 0.0313889711f, + -0.0449835104f, + 0.0178808444f, + -0.0319837501f, + -0.0032521646f, + -0.0072818054f, + -0.0039641299f, + -0.0015426375f, + -0.0024716928f, + 0.0000000000f, + -0.0033401247f, + 0.0003525575f, + -0.0020683708f + } +}; +static const float rx_pulseshaper_im[RX_PULSESHAPER_COEFF_SETS][27] = +{ + { + -0.0010505915f, /* Filter 0 */ + -0.0011035106f, + -0.0005259236f, + -0.0037433761f, + 0.0003859740f, + -0.0047652653f, + 0.0019893682f, + -0.0100295740f, + 0.0031365185f, + -0.0231495296f, + -0.0352727949f, + -0.0144050461f, + -0.1973709165f, + 0.0000000000f, + 0.3190831241f, + 0.0617512275f, + -0.0415349002f, + 0.0232689976f, + -0.0278489283f, + -0.0035885623f, + -0.0056282270f, + -0.0041674916f, + -0.0007838143f, + -0.0024673208f, + 0.0005855930f, + -0.0031973966f, + 0.0005267651f + }, + { + -0.0010538876f, /* Filter 1 */ + -0.0010850603f, + -0.0005290238f, + -0.0037242426f, + 0.0003914777f, + -0.0047477499f, + 0.0020198251f, + -0.0100225453f, + 0.0032521646f, + -0.0232375547f, + -0.0350931330f, + -0.0146160285f, + -0.1981821640f, + 0.0000000000f, + 0.3187142949f, + 0.0614971622f, + -0.0409283686f, + 0.0233860277f, + -0.0277423727f, + -0.0034567511f, + -0.0056318290f, + -0.0041036870f, + -0.0007866356f, + -0.0024320363f, + 0.0005885521f, + -0.0031784322f, + 0.0005355213f + }, + { + -0.0010571307f, /* Filter 2 */ + -0.0010665015f, + -0.0005321040f, + -0.0037048962f, + 0.0003969653f, + -0.0047298674f, + 0.0020502784f, + -0.0100149086f, + 0.0033682442f, + -0.0233250244f, + -0.0349112193f, + -0.0148276355f, + -0.1989925922f, + 0.0000000000f, + 0.3183419274f, + 0.0612428465f, + -0.0403236493f, + 0.0235015798f, + -0.0276351621f, + -0.0033254474f, + -0.0056350927f, + -0.0040398833f, + -0.0007893964f, + -0.0023966537f, + 0.0005914767f, + -0.0031593446f, + 0.0005442265f + }, + { + -0.0010603208f, /* Filter 3 */ + -0.0010478361f, + -0.0005351649f, + -0.0036853371f, + 0.0004024367f, + -0.0047116222f, + 0.0020807278f, + -0.0100066607f, + 0.0034847552f, + -0.0234119347f, + -0.0347270454f, + -0.0150398618f, + -0.1998021699f, + 0.0000000000f, + 0.3179660415f, + 0.0609882894f, + -0.0397207515f, + 0.0236156498f, + -0.0275273031f, + -0.0031946509f, + -0.0056380189f, + -0.0039760844f, + -0.0007920971f, + -0.0023611717f, + 0.0005943676f, + -0.0031401438f, + 0.0005528774f + }, + { + -0.0010634581f, /* Filter 4 */ + -0.0010290677f, + -0.0005382045f, + -0.0036655608f, + 0.0004078911f, + -0.0046930077f, + 0.0021111713f, + -0.0099978007f, + 0.0036016954f, + -0.0234982733f, + -0.0345406062f, + -0.0152527022f, + -0.2006108859f, + 0.0000000000f, + 0.3175866223f, + 0.0607334955f, + -0.0391196915f, + 0.0237282418f, + -0.0274188054f, + -0.0030643652f, + -0.0056406079f, + -0.0039122945f, + -0.0007947379f, + -0.0023255964f, + 0.0005972242f, + -0.0031208324f, + 0.0005614767f + }, + { + -0.0010665418f, /* Filter 5 */ + -0.0010101913f, + -0.0005412250f, + -0.0036455684f, + 0.0004133284f, + -0.0046740300f, + 0.0021416064f, + -0.0099883217f, + 0.0037190588f, + -0.0235840397f, + -0.0343519019f, + -0.0154661591f, + -0.2014187397f, + 0.0000000000f, + 0.3172037117f, + 0.0604784710f, + -0.0385204653f, + 0.0238393600f, + -0.0273096732f, + -0.0029345974f, + -0.0056428600f, + -0.0038485167f, + -0.0007973189f, + -0.0022899307f, + 0.0006000468f, + -0.0031013993f, + 0.0005700234f + }, + { + -0.0010695713f, /* Filter 6 */ + -0.0009912107f, + -0.0005442239f, + -0.0036253614f, + 0.0004187480f, + -0.0046546893f, + 0.0021720315f, + -0.0099782283f, + 0.0038368434f, + -0.0236692282f, + -0.0341609287f, + -0.0156802262f, + -0.2022256796f, + 0.0000000000f, + 0.3168172996f, + 0.0602232221f, + -0.0379230869f, + 0.0239490016f, + -0.0271999184f, + -0.0028053488f, + -0.0056447778f, + -0.0037847567f, + -0.0007998394f, + -0.0022541739f, + 0.0006028347f, + -0.0030818588f, + 0.0005785159f + }, + { + -0.0010725471f, /* Filter 7 */ + -0.0009721276f, + -0.0005472025f, + -0.0036049447f, + 0.0004241497f, + -0.0046349792f, + 0.0022024452f, + -0.0099675107f, + 0.0039550473f, + -0.0237538274f, + -0.0339676816f, + -0.0158948994f, + -0.2030317064f, + 0.0000000000f, + 0.3164273977f, + 0.0599677508f, + -0.0373275735f, + 0.0240571767f, + -0.0270895417f, + -0.0026766250f, + -0.0056463630f, + -0.0037210144f, + -0.0008022997f, + -0.0022183301f, + 0.0006055880f, + -0.0030622057f, + 0.0005869554f + }, + { + -0.0010754688f, /* Filter 8 */ + -0.0009529418f, + -0.0005501597f, + -0.0035843186f, + 0.0004295331f, + -0.0046149068f, + 0.0022328452f, + -0.0099561737f, + 0.0040736649f, + -0.0238378378f, + -0.0337721594f, + -0.0161101804f, + -0.2038368254f, + 0.0000000000f, + 0.3160340207f, + 0.0597120648f, + -0.0367339203f, + 0.0241638860f, + -0.0269785594f, + -0.0025484301f, + -0.0056476190f, + -0.0036572938f, + -0.0008047006f, + -0.0021824000f, + 0.0006083077f, + -0.0030424399f, + 0.0005953412f + }, + { + -0.0010783348f, /* Filter 9 */ + -0.0009336547f, + -0.0005530965f, + -0.0035634797f, + 0.0004348980f, + -0.0045944683f, + 0.0022632320f, + -0.0099442124f, + 0.0041926924f, + -0.0239212511f, + -0.0335743496f, + -0.0163260586f, + -0.2046409903f, + 0.0000000000f, + 0.3156371650f, + 0.0594561687f, + -0.0361421361f, + 0.0242691274f, + -0.0268669691f, + -0.0024207612f, + -0.0056485410f, + -0.0035936024f, + -0.0008070415f, + -0.0021463869f, + 0.0006109918f, + -0.0030225659f, + 0.0006036715f + }, + { + -0.0010811471f, /* Filter 10 */ + -0.0009142662f, + -0.0005560113f, + -0.0035424291f, + 0.0004402438f, + -0.0045736640f, + 0.0022936003f, + -0.0099316248f, + 0.0043121270f, + -0.0240040573f, + -0.0333742621f, + -0.0165425387f, + -0.2054441908f, + 0.0000000000f, + 0.3152368615f, + 0.0592000667f, + -0.0355522381f, + 0.0243729114f, + -0.0267547838f, + -0.0022936316f, + -0.0056491353f, + -0.0035299389f, + -0.0008093224f, + -0.0021102948f, + 0.0006136415f, + -0.0030025882f, + 0.0006119487f + }, + { + -0.0010839035f, /* Filter 11 */ + -0.0008947789f, + -0.0005589051f, + -0.0035211710f, + 0.0004455703f, + -0.0045524968f, + 0.0023239498f, + -0.0099184093f, + 0.0044319669f, + -0.0240862569f, + -0.0331718869f, + -0.0167596094f, + -0.2062464072f, + 0.0000000000f, + 0.3148330983f, + 0.0589437714f, + -0.0349642354f, + 0.0244752336f, + -0.0266420053f, + -0.0021670347f, + -0.0056494033f, + -0.0034663098f, + -0.0008115432f, + -0.0020741216f, + 0.0006162563f, + -0.0029824996f, + 0.0006201690f + }, + { + -0.0010866047f, /* Filter 12 */ + -0.0008751904f, + -0.0005617769f, + -0.0034997014f, + 0.0004508774f, + -0.0045309631f, + 0.0023542801f, + -0.0099045618f, + 0.0045522045f, + -0.0241678403f, + -0.0329672208f, + -0.0169772735f, + -0.2070476286f, + 0.0000000000f, + 0.3144258846f, + 0.0586872803f, + -0.0343781233f, + 0.0245761020f, + -0.0265286487f, + -0.0020409848f, + -0.0056493451f, + -0.0034027170f, + -0.0008137041f, + -0.0020378694f, + 0.0006188364f, + -0.0029623072f, + 0.0006283354f + }, + { + -0.0010892491f, /* Filter 13 */ + -0.0008555029f, + -0.0005646263f, + -0.0034780238f, + 0.0004561643f, + -0.0045090662f, + 0.0023845877f, + -0.0098900840f, + 0.0046728389f, + -0.0242488027f, + -0.0327602608f, + -0.0171955271f, + -0.2078478261f, + 0.0000000000f, + 0.3140152457f, + 0.0584305988f, + -0.0337939187f, + 0.0246755187f, + -0.0264147135f, + -0.0019154745f, + -0.0056489612f, + -0.0033391637f, + -0.0008158054f, + -0.0020015478f, + 0.0006213814f, + -0.0029420128f, + 0.0006364452f + }, + { + -0.0010918376f, /* Filter 14 */ + -0.0008357192f, + -0.0005674541f, + -0.0034561409f, + 0.0004614303f, + -0.0044868044f, + 0.0024148721f, + -0.0098749731f, + 0.0047938623f, + -0.0243291356f, + -0.0325509996f, + -0.0174143633f, + -0.2086469963f, + 0.0000000000f, + 0.3136011746f, + 0.0581737338f, + -0.0332116253f, + 0.0247734851f, + -0.0263002095f, + -0.0017905126f, + -0.0056482532f, + -0.0032756556f, + -0.0008178467f, + -0.0019651518f, + 0.0006238918f, + -0.0029216139f, + 0.0006445000f + }, + { + -0.0010943707f, /* Filter 15 */ + -0.0008158402f, + -0.0005702596f, + -0.0034340508f, + 0.0004666765f, + -0.0044641793f, + 0.0024451296f, + -0.0098592238f, + 0.0049152798f, + -0.0244088358f, + -0.0323394438f, + -0.0176337824f, + -0.2094451305f, + 0.0000000000f, + 0.3131837077f, + 0.0579166932f, + -0.0326312586f, + 0.0248700024f, + -0.0261851487f, + -0.0016661048f, + -0.0056472232f, + -0.0032121944f, + -0.0008198288f, + -0.0019286856f, + 0.0006263667f, + -0.0029011137f, + 0.0006524993f + }, + { + -0.0010968458f, /* Filter 16 */ + -0.0007958630f, + -0.0005730427f, + -0.0034117569f, + 0.0004719013f, + -0.0044411910f, + 0.0024753611f, + -0.0098428385f, + 0.0050370769f, + -0.0244879001f, + -0.0321255811f, + -0.0178537803f, + -0.2102421898f, + 0.0000000000f, + 0.3127628142f, + 0.0576594816f, + -0.0320528142f, + 0.0249650783f, + -0.0260695287f, + -0.0015422517f, + -0.0056458725f, + -0.0031487834f, + -0.0008217507f, + -0.0018921522f, + 0.0006288068f, + -0.0028805136f, + 0.0006604403f + }, + { + -0.0010992647f, /* Filter 17 */ + -0.0007757912f, + -0.0005758024f, + -0.0033892575f, + 0.0004771044f, + -0.0044178382f, + 0.0025055626f, + -0.0098258104f, + 0.0051592580f, + -0.0245663138f, + -0.0319094130f, + -0.0180743524f, + -0.2110381623f, + 0.0000000000f, + 0.3123385428f, + 0.0574021029f, + -0.0314763108f, + 0.0250587156f, + -0.0259533663f, + -0.0014189535f, + -0.0056442026f, + -0.0030854265f, + -0.0008236137f, + -0.0018555547f, + 0.0006312114f, + -0.0028598142f, + 0.0006683247f + }, + { + -0.0011016261f, /* Filter 18 */ + -0.0007556262f, + -0.0005785397f, + -0.0033665528f, + 0.0004822863f, + -0.0043941217f, + 0.0025357324f, + -0.0098081440f, + 0.0052818148f, + -0.0246440780f, + -0.0316909395f, + -0.0182954959f, + -0.2118330321f, + 0.0000000000f, + 0.3119108657f, + 0.0571445584f, + -0.0309017550f, + 0.0251509113f, + -0.0258366582f, + -0.0012962189f, + -0.0056422136f, + -0.0030221280f, + -0.0008254161f, + -0.0018188896f, + 0.0006335812f, + -0.0028390167f, + 0.0006761526f + }, + { + -0.0011039297f, /* Filter 19 */ + -0.0007353671f, + -0.0005812542f, + -0.0033436471f, + 0.0004874456f, + -0.0043700441f, + 0.0025658703f, + -0.0097898366f, + 0.0054047443f, + -0.0247211833f, + -0.0314701461f, + -0.0185172081f, + -0.2126267914f, + 0.0000000000f, + 0.3114798415f, + 0.0568868638f, + -0.0303291444f, + 0.0252416741f, + -0.0257194246f, + -0.0011740477f, + -0.0056399089f, + -0.0029588901f, + -0.0008271599f, + -0.0017821677f, + 0.0006359151f, + -0.0028181240f, + 0.0006839229f + }, + { + -0.0011061764f, /* Filter 20 */ + -0.0007150169f, + -0.0005839447f, + -0.0033205371f, + 0.0004925827f, + -0.0043456043f, + 0.0025959719f, + -0.0097708788f, + 0.0055280441f, + -0.0247976278f, + -0.0312470546f, + -0.0187394818f, + -0.2134194107f, + 0.0000000000f, + 0.3110454402f, + 0.0566290193f, + -0.0297585045f, + 0.0253310073f, + -0.0256016596f, + -0.0010524428f, + -0.0056372904f, + -0.0028957165f, + -0.0008288440f, + -0.0017453870f, + 0.0006382133f, + -0.0027971360f, + 0.0006916353f + }, + { + -0.0011083647f, /* Filter 21 */ + -0.0006945730f, + -0.0005866125f, + -0.0032972252f, + 0.0004976973f, + -0.0043208011f, + 0.0026260383f, + -0.0097512727f, + 0.0056517100f, + -0.0248734028f, + -0.0310216307f, + -0.0189623215f, + -0.2142108808f, + 0.0000000000f, + 0.3106076970f, + 0.0563710278f, + -0.0291898232f, + 0.0254189118f, + -0.0254833823f, + -0.0009314100f, + -0.0056343580f, + -0.0028326096f, + -0.0008304692f, + -0.0017085512f, + 0.0006404764f, + -0.0027760579f, + 0.0006992894f + }, + { + -0.0011104952f, /* Filter 22 */ + -0.0006740415f, + -0.0005892559f, + -0.0032737161f, + 0.0005027885f, + -0.0042956373f, + 0.0026560650f, + -0.0097310227f, + 0.0057757379f, + -0.0249485018f, + -0.0307939004f, + -0.0191857145f, + -0.2150011852f, + 0.0000000000f, + 0.3101666084f, + 0.0561128940f, + -0.0286231268f, + 0.0255053896f, + -0.0253645868f, + -0.0008109511f, + -0.0056311136f, + -0.0027695749f, + -0.0008320342f, + -0.0016716548f, + 0.0006427045f, + -0.0027548851f, + 0.0007068858f + }, + { + -0.0011125657f, /* Filter 23 */ + -0.0006534169f, + -0.0005918760f, + -0.0032500058f, + 0.0005078562f, + -0.0042701101f, + 0.0026860528f, + -0.0097101173f, + 0.0059001204f, + -0.0250229166f, + -0.0305638362f, + -0.0194096624f, + -0.2157902819f, + 0.0000000000f, + 0.3097221447f, + 0.0558546306f, + -0.0280584049f, + 0.0255904448f, + -0.0252452876f, + -0.0006910682f, + -0.0056275581f, + -0.0027066155f, + -0.0008335401f, + -0.0016347116f, + 0.0006448967f, + -0.0027336213f, + 0.0007144220f + }, + { + -0.0011145787f, /* Filter 24 */ + -0.0006327059f, + -0.0005944716f, + -0.0032260964f, + 0.0005129003f, + -0.0042442251f, + 0.0027159978f, + -0.0096885644f, + 0.0060248575f, + -0.0250966487f, + -0.0303314503f, + -0.0196341633f, + -0.2165782048f, + 0.0000000000f, + 0.3092744009f, + 0.0555962347f, + -0.0274956721f, + 0.0256740870f, + -0.0251254954f, + -0.0005717650f, + -0.0056236919f, + -0.0026437316f, + -0.0008349875f, + -0.0015977154f, + 0.0006470528f, + -0.0027122668f, + 0.0007219006f + }, + { + -0.0011165324f, /* Filter 25 */ + -0.0006119059f, + -0.0005970431f, + -0.0032019911f, + 0.0005179204f, + -0.0042179768f, + 0.0027458996f, + -0.0096663567f, + 0.0061499438f, + -0.0251696825f, + -0.0300967342f, + -0.0198592091f, + -0.2173648848f, + 0.0000000000f, + 0.3088233260f, + 0.0553377160f, + -0.0269349394f, + 0.0257563106f, + -0.0250052112f, + -0.0004530424f, + -0.0056195189f, + -0.0025809300f, + -0.0008363755f, + -0.0015606744f, + 0.0006491736f, + -0.0026908252f, + 0.0007293197f + }, + { + -0.0011184266f, /* Filter 26 */ + -0.0005910222f, + -0.0005995907f, + -0.0031776877f, + 0.0005229154f, + -0.0041913714f, + 0.0027757547f, + -0.0096434929f, + 0.0062753772f, + -0.0252420229f, + -0.0298596961f, + -0.0200847999f, + -0.2181503385f, + 0.0000000000f, + 0.3083689567f, + 0.0550790808f, + -0.0263762111f, + 0.0258371249f, + -0.0248844430f, + -0.0003349080f, + -0.0056150400f, + -0.0025182118f, + -0.0008377045f, + -0.0015235876f, + 0.0006512590f, + -0.0026692913f, + 0.0007366795f + }, + { + -0.0011202621f, /* Filter 27 */ + -0.0005700511f, + -0.0006021129f, + -0.0031531871f, + 0.0005278863f, + -0.0041644052f, + 0.0028055617f, + -0.0096199673f, + 0.0064011503f, + -0.0253136575f, + -0.0296203256f, + -0.0203109314f, + -0.2189345318f, + 0.0000000000f, + 0.3079113063f, + 0.0548203341f, + -0.0258194949f, + 0.0259165316f, + -0.0247632008f, + -0.0002173634f, + -0.0056102576f, + -0.0024555805f, + -0.0008389747f, + -0.0014864566f, + 0.0006533075f, + -0.0026476775f, + 0.0007439798f + }, + { + -0.0011220364f, /* Filter 28 */ + -0.0005489924f, + -0.0006046111f, + -0.0031284972f, + 0.0005328312f, + -0.0041370795f, + 0.0028353206f, + -0.0095957903f, + 0.0065272595f, + -0.0253845763f, + -0.0293786112f, + -0.0205375984f, + -0.2197174532f, + 0.0000000000f, + 0.3074503577f, + 0.0545614749f, + -0.0252647915f, + 0.0259945305f, + -0.0246414870f, + -0.0001004067f, + -0.0056051701f, + -0.0023930406f, + -0.0008401860f, + -0.0014492849f, + 0.0006553215f, + -0.0026259796f, + 0.0007512199f + }, + { + -0.0011237517f, /* Filter 29 */ + -0.0005278527f, + -0.0006070843f, + -0.0031036105f, + 0.0005377507f, + -0.0041093948f, + 0.0028650273f, + -0.0095709494f, + 0.0066537014f, + -0.0254547815f, + -0.0291345655f, + -0.0207647986f, + -0.2204990899f, + 0.0000000000f, + 0.3069861396f, + 0.0543025138f, + -0.0247121182f, + 0.0260711303f, + -0.0245193118f, + 0.0000159544f, + -0.0055997838f, + -0.0023305944f, + -0.0008413388f, + -0.0014120734f, + 0.0006572991f, + -0.0026041949f, + 0.0007583996f + }, + { + -0.0011254062f, /* Filter 30 */ + -0.0005066256f, + -0.0006095327f, + -0.0030785301f, + 0.0005426448f, + -0.0040813532f, + 0.0028946812f, + -0.0095454444f, + 0.0067804730f, + -0.0255242620f, + -0.0288881786f, + -0.0209925275f, + -0.2212794214f, + 0.0000000000f, + 0.3065186635f, + 0.0540434590f, + -0.0241614731f, + 0.0261463325f, + -0.0243966808f, + 0.0001317175f, + -0.0055940942f, + -0.0022682453f, + -0.0008424327f, + -0.0013748253f, + 0.0006592405f, + -0.0025823298f, + 0.0007655187f + }, + { + -0.0011270002f, /* Filter 31 */ + -0.0004853179f, + -0.0006119553f, + -0.0030532624f, + 0.0005475125f, + -0.0040529530f, + 0.0029242805f, + -0.0095192815f, + 0.0069075694f, + -0.0255930153f, + -0.0286394536f, + -0.0212207828f, + -0.2220584278f, + 0.0000000000f, + 0.3060479408f, + 0.0537843091f, + -0.0236128695f, + 0.0262201394f, + -0.0242736037f, + 0.0002468810f, + -0.0055881087f, + -0.0022059974f, + -0.0008434682f, + -0.0013375415f, + 0.0006611462f, + -0.0025603850f, + 0.0007725774f + }, + { + -0.0011285343f, /* Filter 32 */ + -0.0004639333f, + -0.0006143526f, + -0.0030278003f, + 0.0005523537f, + -0.0040241966f, + 0.0029538215f, + -0.0094924497f, + 0.0070349865f, + -0.0256610332f, + -0.0283883894f, + -0.0214495583f, + -0.2228360951f, + 0.0000000000f, + 0.3055739837f, + 0.0535250786f, + -0.0230663128f, + 0.0262925563f, + -0.0241500844f, + 0.0003614454f, + -0.0055818244f, + -0.0021438527f, + -0.0008444454f, + -0.0013002283f, + 0.0006630156f, + -0.0025383600f, + 0.0007795745f + }, + { + -0.0011300064f, /* Filter 33 */ + -0.0004424639f, + -0.0006167238f, + -0.0030021495f, + 0.0005571683f, + -0.0039950848f, + 0.0029833043f, + -0.0094649501f, + 0.0071627177f, + -0.0257283081f, + -0.0281349795f, + -0.0216788527f, + -0.2236123999f, + 0.0000000000f, + 0.3050968003f, + 0.0532657623f, + -0.0225218090f, + 0.0263635834f, + -0.0240261303f, + 0.0004754026f, + -0.0055752463f, + -0.0020818155f, + -0.0008453638f, + -0.0012628858f, + 0.0006648496f, + -0.0025162605f, + 0.0007865111f + }, + { + -0.0011314178f, /* Filter 34 */ + -0.0004209182f, + -0.0006190693f, + -0.0029763130f, + 0.0005619550f, + -0.0039656166f, + 0.0030127268f, + -0.0094367826f, + 0.0072907606f, + -0.0257948378f, + -0.0278792178f, + -0.0219086634f, + -0.2243873441f, + 0.0000000000f, + 0.3046163955f, + 0.0530063717f, + -0.0219793618f, + 0.0264332338f, + -0.0239017519f, + 0.0005887490f, + -0.0055683734f, + -0.0020198867f, + -0.0008462245f, + -0.0012255137f, + 0.0006666470f, + -0.0024940795f, + 0.0007933850f + }, + { + -0.0011327680f, /* Filter 35 */ + -0.0003992901f, + -0.0006213891f, + -0.0029502835f, + 0.0005667146f, + -0.0039357947f, + 0.0030420866f, + -0.0094079482f, + 0.0074191106f, + -0.0258606166f, + -0.0276211080f, + -0.0221389834f, + -0.2251608839f, + 0.0000000000f, + 0.3041327986f, + 0.0527469133f, + -0.0214389786f, + 0.0265014986f, + -0.0237769522f, + 0.0007014887f, + -0.0055612069f, + -0.0019580722f, + -0.0008470267f, + -0.0011881132f, + 0.0006684086f, + -0.0024718253f, + 0.0008001983f + }, + { + -0.0011340562f, /* Filter 36 */ + -0.0003775881f, + -0.0006236829f, + -0.0029240706f, + 0.0005714460f, + -0.0039056182f, + 0.0030713817f, + -0.0093784411f, + 0.0075477654f, + -0.0259256365f, + -0.0273606501f, + -0.0223698105f, + -0.2259330273f, + 0.0000000000f, + 0.3036460014f, + 0.0524873873f, + -0.0209006716f, + 0.0265683906f, + -0.0236517400f, + 0.0008136137f, + -0.0055537525f, + -0.0018963726f, + -0.0008477713f, + -0.0011506901f, + 0.0006701339f, + -0.0024494986f, + 0.0008069505f + }, + { + -0.0011352831f, /* Filter 37 */ + -0.0003558105f, + -0.0006259504f, + -0.0028976751f, + 0.0005761496f, + -0.0038750887f, + 0.0031006109f, + -0.0093482617f, + 0.0076767172f, + -0.0259898899f, + -0.0270978352f, + -0.0226011415f, + -0.2267037589f, + 0.0000000000f, + 0.3031560303f, + 0.0522278035f, + -0.0203644373f, + 0.0266339120f, + -0.0235261215f, + 0.0009251240f, + -0.0055460065f, + -0.0018347918f, + -0.0008484581f, + -0.0011132506f, + 0.0006718223f, + -0.0024270988f, + 0.0008136394f + }, + { + -0.0011364467f, /* Filter 38 */ + -0.0003339556f, + -0.0006281911f, + -0.0028710917f, + 0.0005808245f, + -0.0038442047f, + 0.0031297716f, + -0.0093174091f, + 0.0078059632f, + -0.0260533737f, + -0.0268326719f, + -0.0228329704f, + -0.2274730162f, + 0.0000000000f, + 0.3026628734f, + 0.0519681634f, + -0.0198302924f, + 0.0266980579f, + -0.0234001010f, + 0.0010360162f, + -0.0055379751f, + -0.0017733359f, + -0.0008490868f, + -0.0010757878f, + 0.0006734762f, + -0.0024046275f, + 0.0008202657f + }, + { + -0.0011375491f, /* Filter 39 */ + -0.0003120266f, + -0.0006304052f, + -0.0028443280f, + 0.0005854703f, + -0.0038129681f, + 0.0031588620f, + -0.0092858815f, + 0.0079354970f, + -0.0261160785f, + -0.0265651549f, + -0.0230652947f, + -0.2282408324f, + 0.0000000000f, + 0.3021665630f, + 0.0517084734f, + -0.0192982375f, + 0.0267608416f, + -0.0232736903f, + 0.0011462885f, + -0.0055296570f, + -0.0017120052f, + -0.0008496578f, + -0.0010383048f, + 0.0006750925f, + -0.0023820868f, + 0.0008268290f + }, + { + -0.0011385890f, /* Filter 40 */ + -0.0002900256f, + -0.0006325925f, + -0.0028173807f, + 0.0005900872f, + -0.0037813826f, + 0.0031878807f, + -0.0092536796f, + 0.0080653181f, + -0.0261780046f, + -0.0262952744f, + -0.0232981107f, + -0.2290071711f, + 0.0000000000f, + 0.3016671090f, + 0.0514487439f, + -0.0187682815f, + 0.0268222652f, + -0.0231468974f, + 0.0012559383f, + -0.0055210536f, + -0.0016508024f, + -0.0008501715f, + -0.0010008101f, + 0.0006766731f, + -0.0023594786f, + 0.0008333308f + }, + { + -0.0011395655f, /* Filter 41 */ + -0.0002679518f, + -0.0006347531f, + -0.0027902521f, + 0.0005946742f, + -0.0037494443f, + 0.0032168260f, + -0.0092207994f, + 0.0081954182f, + -0.0262391416f, + -0.0260230330f, + -0.0235314163f, + -0.2297720123f, + 0.0000000000f, + 0.3011645002f, + 0.0511889706f, + -0.0182404248f, + 0.0268823332f, + -0.0230197214f, + 0.0013649606f, + -0.0055121682f, + -0.0015897306f, + -0.0008506279f, + -0.0009633032f, + 0.0006782178f, + -0.0023368007f, + 0.0008397688f + }, + { + -0.0011404805f, /* Filter 42 */ + -0.0002458049f, + -0.0006368855f, + -0.0027629465f, + 0.0005992319f, + -0.0037171597f, + 0.0032456946f, + -0.0091872395f, + 0.0083257964f, + -0.0262994873f, + -0.0257484410f, + -0.0237652053f, + -0.2305353631f, + 0.0000000000f, + 0.3006587981f, + 0.0509291719f, + -0.0177146788f, + 0.0269410438f, + -0.0228921794f, + 0.0014733573f, + -0.0055030012f, + -0.0015287938f, + -0.0008510271f, + -0.0009257855f, + 0.0006797257f, + -0.0023140572f, + 0.0008461448f + }, + { + -0.0011413312f, /* Filter 43 */ + -0.0002235915f, + -0.0006389909f, + -0.0027354617f, + 0.0006037586f, + -0.0036845251f, + 0.0032744845f, + -0.0091529990f, + 0.0084564442f, + -0.0263590324f, + -0.0254714879f, + -0.0239994729f, + -0.2312971713f, + 0.0000000000f, + 0.3001499723f, + 0.0506693432f, + -0.0171910545f, + 0.0269984086f, + -0.0227642672f, + 0.0015811215f, + -0.0054935571f, + -0.0014679953f, + -0.0008513686f, + -0.0008882574f, + 0.0006811972f, + -0.0022912484f, + 0.0008524555f + }, + { + -0.0011421190f, /* Filter 44 */ + -0.0002013077f, + -0.0006410700f, + -0.0027078003f, + 0.0006082550f, + -0.0036515394f, + 0.0033031978f, + -0.0091180770f, + 0.0085873575f, + -0.0264177686f, + -0.0251921607f, + -0.0242342195f, + -0.2320574430f, + 0.0000000000f, + 0.2996380397f, + 0.0504094875f, + -0.0166695436f, + 0.0270544253f, + -0.0226359994f, + 0.0016882547f, + -0.0054838338f, + -0.0014073357f, + -0.0008516534f, + -0.0008507286f, + 0.0006826328f, + -0.0022683768f, + 0.0008587025f + }, + { + -0.0011428431f, /* Filter 45 */ + -0.0001789542f, + -0.0006431206f, + -0.0026799609f, + 0.0006127204f, + -0.0036182106f, + 0.0033318265f, + -0.0090824743f, + 0.0087185352f, + -0.0264756977f, + -0.0249104828f, + -0.0244694365f, + -0.2328161450f, + 0.0000000000f, + 0.2991230182f, + 0.0501496170f, + -0.0161501676f, + 0.0271090985f, + -0.0225073789f, + 0.0017947555f, + -0.0054738356f, + -0.0013468222f, + -0.0008518814f, + -0.0008131900f, + 0.0006840326f, + -0.0022454470f, + 0.0008648856f + }, + { + -0.0011435041f, /* Filter 46 */ + -0.0001565332f, + -0.0006451435f, + -0.0026519463f, + 0.0006171547f, + -0.0035845316f, + 0.0033603747f, + -0.0090461878f, + 0.0088499695f, + -0.0265328037f, + -0.0246264247f, + -0.0247051227f, + -0.2335732964f, + 0.0000000000f, + 0.2986049201f, + 0.0498897355f, + -0.0156329159f, + 0.0271624382f, + -0.0223784170f, + 0.0019006173f, + -0.0054635619f, + -0.0012864544f, + -0.0008520524f, + -0.0007756478f, + 0.0006853956f, + -0.0022224528f, + 0.0008710057f + }, + { + -0.0011441008f, /* Filter 47 */ + -0.0001340487f, + -0.0006471375f, + -0.0026237608f, + 0.0006215577f, + -0.0035505117f, + 0.0033888350f, + -0.0090092137f, + 0.0089816572f, + -0.0265890915f, + -0.0243400141f, + -0.0249412739f, + -0.2343288410f, + 0.0000000000f, + 0.2980837677f, + 0.0496298476f, + -0.0151178086f, + 0.0272144465f, + -0.0222491169f, + 0.0020058404f, + -0.0054530144f, + -0.0012262341f, + -0.0008521672f, + -0.0007381110f, + 0.0006867219f, + -0.0021993958f, + 0.0008770619f + }, + { + -0.0011446338f, /* Filter 48 */ + -0.0001114988f, + -0.0006491045f, + -0.0025953985f, + 0.0006259285f, + -0.0035161441f, + 0.0034172101f, + -0.0089715590f, + 0.0091135918f, + -0.0266445489f, + -0.0240512288f, + -0.0251778857f, + -0.2350827773f, + 0.0000000000f, + 0.2975595531f, + 0.0493699555f, + -0.0146048459f, + 0.0272651190f, + -0.0221194870f, + 0.0021104232f, + -0.0054421973f, + -0.0011661681f, + -0.0008522255f, + -0.0007005733f, + 0.0006880123f, + -0.0021762900f, + 0.0008830525f + }, + { + -0.0011451026f, /* Filter 49 */ + -0.0000888863f, + -0.0006510433f, + -0.0025668690f, + 0.0006302670f, + -0.0034814320f, + 0.0034454945f, + -0.0089332130f, + 0.0092457714f, + -0.0266991688f, + -0.0237600772f, + -0.0254149538f, + -0.2358351039f, + 0.0000000000f, + 0.2970323104f, + 0.0491100685f, + -0.0140940276f, + 0.0273144693f, + -0.0219895354f, + 0.0022143617f, + -0.0054311098f, + -0.0011062575f, + -0.0008522276f, + -0.0006630402f, + 0.0006892660f, + -0.0021531195f, + 0.0008889799f + }, + { + -0.0011455063f, /* Filter 50 */ + -0.0000662085f, + -0.0006529527f, + -0.0025381729f, + 0.0006345732f, + -0.0034463789f, + 0.0034736888f, + -0.0088941795f, + 0.0093781859f, + -0.0267529502f, + -0.0234665539f, + -0.0256524730f, + -0.2365857471f, + 0.0000000000f, + 0.2965020230f, + 0.0488501916f, + -0.0135853716f, + 0.0273624970f, + -0.0218592629f, + 0.0023176579f, + -0.0054197563f, + -0.0010465041f, + -0.0008521730f, + -0.0006255130f, + 0.0006904839f, + -0.0021298969f, + 0.0008948414f + }, + { + -0.0011458464f, /* Filter 51 */ + -0.0000434707f, + -0.0006548344f, + -0.0025093019f, + 0.0006388465f, + -0.0034109859f, + 0.0035017896f, + -0.0088544608f, + 0.0095108389f, + -0.0268058885f, + -0.0231706626f, + -0.0258904414f, + -0.2373347695f, + 0.0000000000f, + 0.2959687351f, + 0.0485903285f, + -0.0130788749f, + 0.0274092098f, + -0.0217286837f, + 0.0024203039f, + -0.0054081355f, + -0.0009869126f, + -0.0008520632f, + -0.0005879963f, + 0.0006916650f, + -0.0021066237f, + 0.0009006378f + }, + { + -0.0011461218f, /* Filter 52 */ + -0.0000206692f, + -0.0006566866f, + -0.0024802648f, + 0.0006430867f, + -0.0033752497f, + 0.0035297957f, + -0.0088140501f, + 0.0096437180f, + -0.0268579697f, + -0.0228724030f, + -0.0261288554f, + -0.2380821155f, + 0.0000000000f, + 0.2954324350f, + 0.0483304827f, + -0.0125745438f, + 0.0274546077f, + -0.0215977999f, + 0.0025223003f, + -0.0053962514f, + -0.0009274844f, + -0.0008518969f, + -0.0005504888f, + 0.0006928102f, + -0.0020832938f, + 0.0009063690f + }, + { + -0.0011463315f, /* Filter 53 */ + 0.0000021866f, + -0.0006585102f, + -0.0024510651f, + 0.0006472933f, + -0.0033391752f, + 0.0035577053f, + -0.0087729478f, + 0.0097768207f, + -0.0269091934f, + -0.0225717691f, + -0.0263677085f, + -0.2388277557f, + 0.0000000000f, + 0.2948931379f, + 0.0480706645f, + -0.0120723842f, + 0.0274986943f, + -0.0214666211f, + 0.0026236483f, + -0.0053841057f, + -0.0008682246f, + -0.0008516749f, + -0.0005129974f, + 0.0006939189f, + -0.0020599133f, + 0.0009120349f + }, + { + -0.0011464770f, /* Filter 54 */ + 0.0000251055f, + -0.0006603052f, + -0.0024216984f, + 0.0006514662f, + -0.0033027631f, + 0.0035855149f, + -0.0087311541f, + 0.0099101441f, + -0.0269595532f, + -0.0222687697f, + -0.0266069972f, + -0.2395716850f, + 0.0000000000f, + 0.2943508790f, + 0.0478108764f, + -0.0115724089f, + 0.0275414759f, + -0.0213351496f, + 0.0027243401f, + -0.0053716984f, + -0.0008091340f, + -0.0008513979f, + -0.0004755140f, + 0.0006949917f, + -0.0020364848f, + 0.0009176370f + }, + { + -0.0011465566f, /* Filter 55 */ + 0.0000480783f, + -0.0006620704f, + -0.0023921649f, + 0.0006556046f, + -0.0032660113f, + 0.0036132252f, + -0.0086886704f, + 0.0100436811f, + -0.0270090421f, + -0.0219633899f, + -0.0268467200f, + -0.2403138872f, + 0.0000000000f, + 0.2938056346f, + 0.0475511207f, + -0.0110746124f, + 0.0275829612f, + -0.0212033969f, + 0.0028243793f, + -0.0053590326f, + -0.0007502150f, + -0.0008510646f, + -0.0004380525f, + 0.0006960278f, + -0.0020130052f, + 0.0009231713f + }, + { + -0.0011465712f, /* Filter 56 */ + 0.0000711074f, + -0.0006638063f, + -0.0023624732f, + 0.0006597090f, + -0.0032289263f, + 0.0036408325f, + -0.0086454904f, + 0.0101774269f, + -0.0270576581f, + -0.0216556342f, + -0.0270868685f, + -0.2410543557f, + 0.0000000000f, + 0.2932574514f, + 0.0472914089f, + -0.0105789967f, + 0.0276231475f, + -0.0210713702f, + 0.0029237612f, + -0.0053461072f, + -0.0006914707f, + -0.0008506772f, + -0.0004006073f, + 0.0006970279f, + -0.0019894817f, + 0.0009286405f + }, + { + -0.0011465197f, /* Filter 57 */ + 0.0000941955f, + -0.0006655128f, + -0.0023326243f, + 0.0006637778f, + -0.0031915023f, + 0.0036683357f, + -0.0086016160f, + 0.0103113770f, + -0.0271053905f, + -0.0213455089f, + -0.0273274427f, + -0.2417930608f, + 0.0000000000f, + 0.2927063137f, + 0.0470317378f, + -0.0100855779f, + 0.0276620429f, + -0.0209390691f, + 0.0030224817f, + -0.0053329287f, + -0.0006329051f, + -0.0008502345f, + -0.0003631842f, + 0.0006979908f, + -0.0019659065f, + 0.0009340436f + }, + { + -0.0011464036f, /* Filter 58 */ + 0.0001173340f, + -0.0006671893f, + -0.0023026112f, + 0.0006678127f, + -0.0031537479f, + 0.0036957313f, + -0.0085570476f, + 0.0104455273f, + -0.0271522404f, + -0.0210330123f, + -0.0275684376f, + -0.2425299982f, + 0.0000000000f, + 0.2921522650f, + 0.0467721216f, + -0.0095943625f, + 0.0276996474f, + -0.0208065104f, + 0.0031205442f, + -0.0053194953f, + -0.0005745208f, + -0.0008497364f, + -0.0003257856f, + 0.0006989185f, + -0.0019422951f, + 0.0009393808f + }, + { + -0.0011462210f, /* Filter 59 */ + 0.0001405276f, + -0.0006688361f, + -0.0022724392f, + 0.0006718119f, + -0.0031156583f, + 0.0037230192f, + -0.0085117824f, + 0.0105798714f, + -0.0271981923f, + -0.0207181373f, + -0.0278098438f, + -0.2432651518f, + 0.0000000000f, + 0.2915952853f, + 0.0465125625f, + -0.0091053416f, + 0.0277359720f, + -0.0206736926f, + 0.0032179461f, + -0.0053058091f, + -0.0005163194f, + -0.0008491842f, + -0.0002884118f, + 0.0006998097f, + -0.0019186336f, + 0.0009446531f + }, + { + -0.0011459727f, /* Filter 60 */ + 0.0001637720f, + -0.0006704533f, + -0.0022421145f, + 0.0006757746f, + -0.0030772368f, + 0.0037501966f, + -0.0084658221f, + 0.0107144051f, + -0.0272432488f, + -0.0204008878f, + -0.0280516644f, + -0.2439984781f, + 0.0000000000f, + 0.2910354206f, + 0.0462530597f, + -0.0086185289f, + 0.0277710140f, + -0.0205406256f, + 0.0033146815f, + -0.0052918732f, + -0.0004583052f, + -0.0008485774f, + -0.0002510630f, + 0.0007006644f, + -0.0018949355f, + 0.0009498575f + }, + { + -0.0011456582f, /* Filter 61 */ + 0.0001870628f, + -0.0006720400f, + -0.0022116302f, + 0.0006797022f, + -0.0030384868f, + 0.0037772614f, + -0.0084191624f, + 0.0108491236f, + -0.0272874001f, + -0.0200812646f, + -0.0282938934f, + -0.2447299955f, + 0.0000000000f, + 0.2904726541f, + 0.0459936256f, + -0.0081339331f, + 0.0278047850f, + -0.0204073193f, + 0.0034107494f, + -0.0052776890f, + -0.0004004791f, + -0.0008479164f, + -0.0002137479f, + 0.0007014831f, + -0.0018711939f, + 0.0009549959f + }, + { + -0.0011452775f, /* Filter 62 */ + 0.0002104096f, + -0.0006735974f, + -0.0021809969f, + 0.0006835927f, + -0.0029994070f, + 0.0038042124f, + -0.0083718053f, + 0.0109840200f, + -0.0273306427f, + -0.0197592651f, + -0.0285365229f, + -0.2454596814f, + 0.0000000000f, + 0.2899070162f, + 0.0457342605f, + -0.0076515486f, + 0.0278372858f, + -0.0202737736f, + 0.0035061537f, + -0.0052632581f, + -0.0003428435f, + -0.0008472010f, + -0.0001764611f, + 0.0007022654f, + -0.0018474133f, + 0.0009600683f + }, + { + -0.0011448304f, /* Filter 63 */ + 0.0002338013f, + -0.0006751235f, + -0.0021502064f, + 0.0006874465f, + -0.0029599977f, + 0.0038310474f, + -0.0083237506f, + 0.0111190914f, + -0.0273729679f, + -0.0194348927f, + -0.0287795539f, + -0.2461874974f, + 0.0000000000f, + 0.2893385169f, + 0.0454749735f, + -0.0071713863f, + 0.0278685199f, + -0.0201399968f, + 0.0036008869f, + -0.0052485826f, + -0.0002854022f, + -0.0008464313f, + -0.0001392054f, + 0.0007030120f, + -0.0018235921f, + 0.0009650723f + }, + { + -0.0011443167f, /* Filter 64 */ + 0.0002572390f, + -0.0006766191f, + -0.0021192677f, + 0.0006912640f, + -0.0029202617f, + 0.0038577642f, + -0.0082749947f, + 0.0112543303f, + -0.0274143701f, + -0.0191081382f, + -0.0290229756f, + -0.2469134452f, + 0.0000000000f, + 0.2887671637f, + 0.0452157695f, + -0.0066934534f, + 0.0278984903f, + -0.0200059998f, + 0.0036949493f, + -0.0052336635f, + -0.0002281595f, + -0.0008456086f, + -0.0001019889f, + 0.0007037221f, + -0.0017997404f, + 0.0009700106f + }, + { + -0.0011437373f, /* Filter 65 */ + 0.0002807266f, + -0.0006780840f, + -0.0020881801f, + 0.0006950437f, + -0.0028802012f, + 0.0038843610f, + -0.0082255396f, + 0.0113897330f, + -0.0274548475f, + -0.0187790160f, + -0.0292667911f, + -0.2476375210f, + 0.0000000000f, + 0.2881929551f, + 0.0449566483f, + -0.0062177469f, + 0.0279272053f, + -0.0198717871f, + 0.0037883407f, + -0.0052185020f, + -0.0001711151f, + -0.0008447316f, + -0.0000648082f, + 0.0007043957f, + -0.0017758509f, + 0.0009748823f + }, + { + -0.0011430900f, /* Filter 66 */ + 0.0003042571f, + -0.0006795190f, + -0.0020569427f, + 0.0006987861f, + -0.0028398167f, + 0.0039108359f, + -0.0081753869f, + 0.0115252954f, + -0.0274943939f, + -0.0184475121f, + -0.0295109907f, + -0.2483596736f, + 0.0000000000f, + 0.2876159521f, + 0.0446976236f, + -0.0057442757f, + 0.0279546684f, + -0.0197373608f, + 0.0038810597f, + -0.0052031015f, + -0.0001142728f, + -0.0008438015f, + -0.0000276667f, + 0.0007050338f, + -0.0017519279f, + 0.0009796859f + }, + { + -0.0011423760f, /* Filter 67 */ + 0.0003278322f, + -0.0006809223f, + -0.0020255556f, + 0.0007024905f, + -0.0027991078f, + 0.0039371865f, + -0.0081245295f, + 0.0116610092f, + -0.0275330008f, + -0.0181136380f, + -0.0297555716f, + -0.2490799083f, + 0.0000000000f, + 0.2870361257f, + 0.0444386921f, + -0.0052730430f, + 0.0279808820f, + -0.0196027359f, + 0.0039731038f, + -0.0051874639f, + -0.0000576352f, + -0.0008428182f, + 0.0000094350f, + 0.0007056362f, + -0.0017279724f, + 0.0009844227f + }, + { + -0.0011415948f, /* Filter 68 */ + 0.0003514459f, + -0.0006822951f, + -0.0019940273f, + 0.0007061565f, + -0.0027580796f, + 0.0039634116f, + -0.0080729717f, + 0.0117968713f, + -0.0275706627f, + -0.0177773850f, + -0.0300005287f, + -0.2497981996f, + 0.0000000000f, + 0.2864534851f, + 0.0441798639f, + -0.0048040611f, + 0.0280058520f, + -0.0194679108f, + 0.0040644718f, + -0.0051715888f, + -0.0000012056f, + -0.0008417822f, + 0.0000464885f, + 0.0007062025f, + -0.0017039849f, + 0.0009890919f + }, + { + -0.0011407479f, /* Filter 69 */ + 0.0003751028f, + -0.0006836357f, + -0.0019623556f, + 0.0007097842f, + -0.0027167309f, + 0.0039895092f, + -0.0080207126f, + 0.0119328775f, + -0.0276073771f, + -0.0174387598f, + -0.0302458606f, + -0.2505145525f, + 0.0000000000f, + 0.2858680847f, + 0.0439211421f, + -0.0043373221f, + 0.0280295876f, + -0.0193328981f, + 0.0041551601f, + -0.0051554812f, + 0.0000550153f, + -0.0008406932f, + 0.0000835019f, + 0.0007067322f, + -0.0016799665f, + 0.0009936943f + }, + { + -0.0011398326f, /* Filter 70 */ + 0.0003988042f, + -0.0006849461f, + -0.0019305404f, + 0.0007133733f, + -0.0026750618f, + 0.0040154761f, + -0.0079677486f, + 0.0120690194f, + -0.0276431323f, + -0.0170977662f, + -0.0304915602f, + -0.2512289255f, + 0.0000000000f, + 0.2852799039f, + 0.0436625339f, + -0.0038728344f, + 0.0280520870f, + -0.0191976997f, + 0.0042451687f, + -0.0051391395f, + 0.0001110239f, + -0.0008395513f, + 0.0001204636f, + 0.0007072258f, + -0.0016559196f, + 0.0009982289f + }, + { + -0.0011388502f, /* Filter 71 */ + 0.0004225402f, + -0.0006862248f, + -0.0018985847f, + 0.0007169229f, + -0.0026330778f, + 0.0040413123f, + -0.0079140847f, + 0.0122052947f, + -0.0276779292f, + -0.0167543922f, + -0.0307376220f, + -0.2519413212f, + 0.0000000000f, + 0.2846889619f, + 0.0434040427f, + -0.0034106068f, + 0.0280733535f, + -0.0190623224f, + 0.0043344990f, + -0.0051225696f, + 0.0001668158f, + -0.0008383569f, + 0.0001573786f, + 0.0007076840f, + -0.0016318514f, + 0.0010026952f + }, + { + -0.0011378009f, /* Filter 72 */ + 0.0004463107f, + -0.0006874708f, + -0.0018664891f, + 0.0007204335f, + -0.0025907777f, + 0.0040670144f, + -0.0078597165f, + 0.0123416968f, + -0.0277117641f, + -0.0164086448f, + -0.0309840461f, + -0.2526517170f, + 0.0000000000f, + 0.2840952899f, + 0.0431456757f, + -0.0029506329f, + 0.0280933977f, + -0.0189267792f, + 0.0044231476f, + -0.0051057689f, + 0.0002223928f, + -0.0008371108f, + 0.0001942402f, + 0.0007081066f, + -0.0016077501f, + 0.0010070953f + }, + { + -0.0011366832f, /* Filter 73 */ + 0.0004701241f, + -0.0006886862f, + -0.0018342587f, + 0.0007239040f, + -0.0025481605f, + 0.0040925809f, + -0.0078046434f, + 0.0124782163f, + -0.0277446198f, + -0.0160605319f, + -0.0312308280f, + -0.2533600885f, + 0.0000000000f, + 0.2834988794f, + 0.0428874304f, + -0.0024929295f, + 0.0281122245f, + -0.0187910667f, + 0.0045111089f, + -0.0050887420f, + 0.0002777495f, + -0.0008358123f, + 0.0002310499f, + 0.0007084933f, + -0.0015836262f, + 0.0010114265f + }, + { + -0.0011354988f, /* Filter 74 */ + 0.0004939715f, + -0.0006898704f, + -0.0018018889f, + 0.0007273343f, + -0.0025052338f, + 0.0041180110f, + -0.0077488684f, + 0.0126148560f, + -0.0277765039f, + -0.0157100397f, + -0.0314779578f, + -0.2540664421f, + 0.0000000000f, + 0.2828997467f, + 0.0426293218f, + -0.0020374872f, + 0.0281298337f, + -0.0186551985f, + 0.0045983896f, + -0.0050714890f, + 0.0003328846f, + -0.0008344621f, + 0.0002678034f, + 0.0007088438f, + -0.0015594822f, + 0.0010156894f + }, + { + -0.0011342460f, /* Filter 75 */ + 0.0005178491f, + -0.0006910215f, + -0.0017693819f, + 0.0007307251f, + -0.0024619949f, + 0.0041433007f, + -0.0076923868f, + 0.0127516043f, + -0.0278074035f, + -0.0153571814f, + -0.0317254312f, + -0.2547707314f, + 0.0000000000f, + 0.2822979260f, + 0.0423713512f, + -0.0015843239f, + 0.0281462298f, + -0.0185191789f, + 0.0046849864f, + -0.0050540140f, + 0.0003877925f, + -0.0008330604f, + 0.0003045018f, + 0.0007091591f, + -0.0015353137f, + 0.0010198845f + }, + { + -0.0011329266f, /* Filter 76 */ + 0.0005417639f, + -0.0006921406f, + -0.0017367458f, + 0.0007340746f, + -0.0024184465f, + 0.0041684487f, + -0.0076352001f, + 0.0128884592f, + -0.0278373157f, + -0.0150019516f, + -0.0319732494f, + -0.2554729654f, + 0.0000000000f, + 0.2816934067f, + 0.0421135221f, + -0.0011334349f, + 0.0281614214f, + -0.0183830151f, + 0.0047708942f, + -0.0050363165f, + 0.0004424761f, + -0.0008316073f, + 0.0003411385f, + 0.0007094385f, + -0.0015111241f, + 0.0010240124f + }, + { + -0.0011315384f, /* Filter 77 */ + 0.0005657123f, + -0.0006932284f, + -0.0017039785f, + 0.0007373837f, + -0.0023745874f, + 0.0041934535f, + -0.0075773118f, + 0.0130254114f, + -0.0278662299f, + -0.0146443485f, + -0.0322214047f, + -0.2561731303f, + 0.0000000000f, + 0.2810862181f, + 0.0418558409f, + -0.0006848186f, + 0.0281754096f, + -0.0182467125f, + 0.0048561151f, + -0.0050183999f, + 0.0004969285f, + -0.0008301031f, + 0.0003777139f, + 0.0007096819f, + -0.0014869168f, + 0.0010280722f + }, + { + -0.0011300824f, /* Filter 78 */ + 0.0005896863f, + -0.0006942834f, + -0.0016710782f, + 0.0007406513f, + -0.0023304223f, + 0.0042183140f, + -0.0075187177f, + 0.0131624584f, + -0.0278941437f, + -0.0142843817f, + -0.0324698940f, + -0.2568711694f, + 0.0000000000f, + 0.2804763702f, + 0.0415983080f, + -0.0002384932f, + 0.0281882036f, + -0.0181102764f, + 0.0049406467f, + -0.0050002667f, + 0.0005511493f, + -0.0008285479f, + 0.0004142275f, + 0.0007098902f, + -0.0014626955f, + 0.0010320630f + }, + { + -0.0011285579f, /* Filter 79 */ + 0.0006136924f, + -0.0006953053f, + -0.0016380516f, + 0.0007438774f, + -0.0022859543f, + 0.0042430267f, + -0.0074594171f, + 0.0132995926f, + -0.0279210583f, + -0.0139220482f, + -0.0327187127f, + -0.2575671213f, + 0.0000000000f, + 0.2798638600f, + 0.0413409384f, + 0.0002055523f, + 0.0281998083f, + -0.0179737156f, + 0.0050244882f, + -0.0049819167f, + 0.0006051376f, + -0.0008269419f, + 0.0004506776f, + 0.0007100626f, + -0.0014384488f, + 0.0010359857f + }, + { + -0.0011269662f, /* Filter 80 */ + 0.0006377245f, + -0.0006962954f, + -0.0016048978f, + 0.0007470620f, + -0.0022411794f, + 0.0042675892f, + -0.0073994093f, + 0.0134368115f, + -0.0279469562f, + -0.0135573465f, + -0.0329678544f, + -0.2582609415f, + 0.0000000000f, + 0.2792487420f, + 0.0410837254f, + 0.0006473074f, + 0.0282102244f, + -0.0178370350f, + 0.0051076392f, + -0.0049633513f, + 0.0006588884f, + -0.0008252858f, + 0.0004870592f, + 0.0007102002f, + -0.0014141938f, + 0.0010398406f + }, + { + -0.0011253062f, /* Filter 81 */ + 0.0006617856f, + -0.0006972533f, + -0.0015716164f, + 0.0007502043f, + -0.0021961043f, + 0.0042920026f, + -0.0073387013f, + 0.0135741072f, + -0.0279718407f, + -0.0131902755f, + -0.0332173170f, + -0.2589526285f, + 0.0000000000f, + 0.2786309892f, + 0.0408266823f, + 0.0010867680f, + 0.0282194586f, + -0.0177002397f, + 0.0051900982f, + -0.0049445757f, + 0.0007124005f, + -0.0008235790f, + 0.0005233689f, + 0.0007103019f, + -0.0013899237f, + 0.0010436270f + }, + { + -0.0011235774f, /* Filter 82 */ + 0.0006858725f, + -0.0006981778f, + -0.0015382175f, + 0.0007533040f, + -0.0021507287f, + 0.0043162620f, + -0.0072772828f, + 0.0137114739f, + -0.0279957011f, + -0.0128208432f, + -0.0334670906f, + -0.2596421332f, + 0.0000000000f, + 0.2780106203f, + 0.0405698114f, + 0.0015239316f, + 0.0282275159f, + -0.0175633376f, + 0.0052718651f, + -0.0049255890f, + 0.0007656713f, + -0.0008218223f, + 0.0005596113f, + 0.0007103683f, + -0.0013656386f, + 0.0010473447f + }, + { + -0.0011217811f, /* Filter 83 */ + 0.0007099836f, + -0.0006990699f, + -0.0015046928f, + 0.0007563619f, + -0.0021050531f, + 0.0043403671f, + -0.0072151640f, + 0.0138489067f, + -0.0280185355f, + -0.0124490497f, + -0.0337171812f, + -0.2603294831f, + 0.0000000000f, + 0.2773876760f, + 0.0403131167f, + 0.0019587970f, + 0.0282344015f, + -0.0174263349f, + 0.0053529350f, + -0.0049063926f, + 0.0008186992f, + -0.0008200157f, + 0.0005957808f, + 0.0007103997f, + -0.0013413474f, + 0.0010509944f + }, + { + -0.0011199163f, /* Filter 84 */ + 0.0007341161f, + -0.0006999287f, + -0.0014710468f, + 0.0007593767f, + -0.0020590840f, + 0.0043643149f, + -0.0071523315f, + 0.0139864014f, + -0.0280403419f, + -0.0120748958f, + -0.0339675709f, + -0.2610146369f, + 0.0000000000f, + 0.2767621627f, + 0.0400566092f, + 0.0023913529f, + 0.0282401182f, + -0.0172892379f, + 0.0054333145f, + -0.0048869925f, + 0.0008714809f, + -0.0008181599f, + 0.0006318766f, + 0.0007103956f, + -0.0013170424f, + 0.0010545747f + }, + { + -0.0011179829f, /* Filter 85 */ + 0.0007582745f, + -0.0007007544f, + -0.0014372807f, + 0.0007623479f, + -0.0020128174f, + 0.0043881031f, + -0.0070888016f, + 0.0141239484f, + -0.0280611071f, + -0.0116983767f, + -0.0342182684f, + -0.2616976047f, + 0.0000000000f, + 0.2761340693f, + 0.0398002822f, + 0.0028216146f, + 0.0282446739f, + -0.0171520528f, + 0.0055129977f, + -0.0048673860f, + 0.0009240159f, + -0.0008162546f, + 0.0006678940f, + 0.0007103560f, + -0.0012927253f, + 0.0010580875f + }, + { + -0.0011159811f, /* Filter 86 */ + 0.0007824483f, + -0.0007015467f, + -0.0014034000f, + 0.0007652759f, + -0.0019662596f, + 0.0044117309f, + -0.0070245603f, + 0.0142615460f, + -0.0280808335f, + -0.0113195056f, + -0.0344692561f, + -0.2623783208f, + 0.0000000000f, + 0.2755034477f, + 0.0395441536f, + 0.0032495562f, + 0.0282480711f, + -0.0170147851f, + 0.0055919826f, + -0.0048475769f, + 0.0009763001f, + -0.0008142999f, + 0.0007038334f, + 0.0007102820f, + -0.0012684074f, + 0.0010615314f + }, + { + -0.0011139108f, /* Filter 87 */ + 0.0008066464f, + -0.0007023057f, + -0.0013694064f, + 0.0007681603f, + -0.0019194063f, + 0.0044351971f, + -0.0069596165f, + 0.0143991860f, + -0.0280995041f, + -0.0109382733f, + -0.0347205358f, + -0.2630568185f, + 0.0000000000f, + 0.2748702724f, + 0.0392882154f, + 0.0036751886f, + 0.0282503148f, + -0.0168774407f, + 0.0056702745f, + -0.0048275684f, + 0.0010283306f, + -0.0008122961f, + 0.0007396959f, + 0.0007101728f, + -0.0012440816f, + 0.0010649059f + }, + { + -0.0011117715f, /* Filter 88 */ + 0.0008308606f, + -0.0007030318f, + -0.0013352954f, + 0.0007710007f, + -0.0018722654f, + 0.0044584976f, + -0.0068939665f, + 0.0145368636f, + -0.0281171251f, + -0.0105546851f, + -0.0349721092f, + -0.2637330636f, + 0.0000000000f, + 0.2742345901f, + 0.0390324810f, + 0.0040985108f, + 0.0282514167f, + -0.0167400258f, + 0.0057478644f, + -0.0048073586f, + 0.0010801096f, + -0.0008102444f, + 0.0007754711f, + 0.0007100281f, + -0.0012197508f, + 0.0010682126f + }, + { + -0.0011095645f, /* Filter 89 */ + 0.0008550943f, + -0.0007037243f, + -0.0013010732f, + 0.0007737966f, + -0.0018248365f, + 0.0044816329f, + -0.0068276127f, + 0.0146745726f, + -0.0281336842f, + -0.0101687455f, + -0.0352239617f, + -0.2644070374f, + 0.0000000000f, + 0.2735964027f, + 0.0387769531f, + 0.0045195090f, + 0.0282513728f, + -0.0166025495f, + 0.0058247562f, + -0.0047869527f, + 0.0011316304f, + -0.0008081438f, + 0.0008111646f, + 0.0007098493f, + -0.0011954135f, + 0.0010714499f + }, + { + -0.0011072888f, /* Filter 90 */ + 0.0008793391f, + -0.0007043828f, + -0.0012667403f, + 0.0007765483f, + -0.0017771208f, + 0.0045045986f, + -0.0067605516f, + 0.0148123088f, + -0.0281491810f, + -0.0097804550f, + -0.0354760915f, + -0.2650787521f, + 0.0000000000f, + 0.2729557400f, + 0.0385216388f, + 0.0049381914f, + 0.0282501922f, + -0.0164650142f, + 0.0059009524f, + -0.0047663503f, + 0.0011828923f, + -0.0008059954f, + 0.0008467735f, + 0.0007096353f, + -0.0011710809f, + 0.0010746199f + }, + { + -0.0011049449f, /* Filter 91 */ + 0.0009036035f, + -0.0007050083f, + -0.0012322999f, + 0.0007792550f, + -0.0017291225f, + 0.0045273937f, + -0.0066927872f, + 0.0149500663f, + -0.0281636114f, + -0.0093898117f, + -0.0357284951f, + -0.2657481612f, + 0.0000000000f, + 0.2723125962f, + 0.0382665409f, + 0.0053545504f, + 0.0282478795f, + -0.0163274298f, + 0.0059764462f, + -0.0047455561f, + 0.0012338955f, + -0.0008037990f, + 0.0008822936f, + 0.0007093863f, + -0.0011467390f, + 0.0010777208f + }, + { + -0.0011025314f, /* Filter 92 */ + 0.0009278782f, + -0.0007055992f, + -0.0011977518f, + 0.0007819166f, + -0.0016808379f, + 0.0045500170f, + -0.0066243185f, + 0.0150878344f, + -0.0281769583f, + -0.0089968171f, + -0.0359811698f, + -0.2664152474f, + 0.0000000000f, + 0.2716669587f, + 0.0380116603f, + 0.0057685833f, + 0.0282444393f, + -0.0161897978f, + 0.0060512416f, + -0.0047245691f, + 0.0012846341f, + -0.0008015547f, + 0.0009177243f, + 0.0007091032f, + -0.0011224055f, + 0.0010807523f + }, + { + -0.0011000489f, /* Filter 93 */ + 0.0009521661f, + -0.0007061567f, + -0.0011630979f, + 0.0007845324f, + -0.0016322755f, + 0.0045724660f, + -0.0065551444f, + 0.0152256120f, + -0.0281892312f, + -0.0086014783f, + -0.0362341056f, + -0.2670800130f, + 0.0000000000f, + 0.2710189037f, + 0.0377570069f, + 0.0061802870f, + 0.0282398744f, + -0.0160521270f, + 0.0061253362f, + -0.0047033938f, + 0.0013351080f, + -0.0007992633f, + 0.0009530667f, + 0.0007087854f, + -0.0010980696f, + 0.0010837151f + }, + { + -0.0010974987f, /* Filter 94 */ + 0.0009764635f, + -0.0007066809f, + -0.0011283415f, + 0.0007871033f, + -0.0015834325f, + 0.0045947392f, + -0.0064852680f, + 0.0153633929f, + -0.0282004157f, + -0.0082037943f, + -0.0364873025f, + -0.2677424355f, + 0.0000000000f, + 0.2703684189f, + 0.0375025848f, + 0.0065896599f, + 0.0282341986f, + -0.0159144236f, + 0.0061987274f, + -0.0046820312f, + 0.0013853149f, + -0.0007969244f, + 0.0009883163f, + 0.0007084328f, + -0.0010737353f, + 0.0010866095f + }, + { + -0.0010948788f, /* Filter 95 */ + 0.0010007685f, + -0.0007071699f, + -0.0010934830f, + 0.0007896280f, + -0.0015343131f, + 0.0046168336f, + -0.0064146873f, + 0.0155011700f, + -0.0282105095f, + -0.0078037652f, + -0.0367407547f, + -0.2684024935f, + 0.0000000000f, + 0.2697155022f, + 0.0372483977f, + 0.0069967006f, + 0.0282274062f, + -0.0157766902f, + 0.0062714142f, + -0.0046604811f, + 0.0014352527f, + -0.0007945388f, + 0.0010234687f, + 0.0007080463f, + -0.0010494074f, + 0.0010894346f + }, + { + -0.0010921912f, /* Filter 96 */ + 0.0010250866f, + -0.0007076253f, + -0.0010585255f, + 0.0007921070f, + -0.0014849205f, + 0.0046387483f, + -0.0063434030f, + 0.0156389383f, + -0.0282195101f, + -0.0074014019f, + -0.0369944541f, + -0.2690601973f, + 0.0000000000f, + 0.2690601973f, + 0.0369944541f, + 0.0074014019f, + 0.0282195101f, + -0.0156389384f, + 0.0063434030f, + -0.0046387483f, + 0.0014849205f, + -0.0007921070f, + 0.0010585255f, + 0.0007076253f, + -0.0010250866f, + 0.0010921912f + }, + { + -0.0010894346f, /* Filter 97 */ + 0.0010494074f, + -0.0007080463f, + -0.0010234687f, + 0.0007945388f, + -0.0014352527f, + 0.0046604811f, + -0.0062714142f, + 0.0157766902f, + -0.0282274062f, + -0.0069967006f, + -0.0372483977f, + -0.2697155022f, + 0.0000000000f, + 0.2684024935f, + 0.0367407547f, + 0.0078037652f, + 0.0282105095f, + -0.0155011700f, + 0.0064146873f, + -0.0046168336f, + 0.0015343131f, + -0.0007896280f, + 0.0010934830f, + 0.0007071699f, + -0.0010007685f, + 0.0010948788f + }, + { + -0.0010866095f, /* Filter 98 */ + 0.0010737353f, + -0.0007084328f, + -0.0009883163f, + 0.0007969244f, + -0.0013853149f, + 0.0046820312f, + -0.0061987274f, + 0.0159144236f, + -0.0282341986f, + -0.0065896598f, + -0.0375025848f, + -0.2703684189f, + 0.0000000000f, + 0.2677424355f, + 0.0364873025f, + 0.0082037943f, + 0.0282004157f, + -0.0153633929f, + 0.0064852680f, + -0.0045947392f, + 0.0015834325f, + -0.0007871033f, + 0.0011283415f, + 0.0007066809f, + -0.0009764635f, + 0.0010974987f + }, + { + -0.0010837151f, /* Filter 99 */ + 0.0010980696f, + -0.0007087854f, + -0.0009530667f, + 0.0007992633f, + -0.0013351080f, + 0.0047033938f, + -0.0061253362f, + 0.0160521270f, + -0.0282398744f, + -0.0061802870f, + -0.0377570069f, + -0.2710189037f, + 0.0000000000f, + 0.2670800127f, + 0.0362341056f, + 0.0086014783f, + 0.0281892312f, + -0.0152256120f, + 0.0065551444f, + -0.0045724660f, + 0.0016322755f, + -0.0007845324f, + 0.0011630979f, + 0.0007061567f, + -0.0009521661f, + 0.0011000489f + }, + { + -0.0010807523f, /* Filter 100 */ + 0.0011224055f, + -0.0007091032f, + -0.0009177243f, + 0.0008015547f, + -0.0012846341f, + 0.0047245691f, + -0.0060512416f, + 0.0161897978f, + -0.0282444393f, + -0.0057685833f, + -0.0380116603f, + -0.2716669587f, + 0.0000000000f, + 0.2664152474f, + 0.0359811698f, + 0.0089968171f, + 0.0281769583f, + -0.0150878344f, + 0.0066243185f, + -0.0045500170f, + 0.0016808379f, + -0.0007819166f, + 0.0011977518f, + 0.0007055992f, + -0.0009278782f, + 0.0011025314f + }, + { + -0.0010777208f, /* Filter 101 */ + 0.0011467390f, + -0.0007093863f, + -0.0008822936f, + 0.0008037990f, + -0.0012338955f, + 0.0047455561f, + -0.0059764462f, + 0.0163274298f, + -0.0282478795f, + -0.0053545504f, + -0.0382665409f, + -0.2723125962f, + 0.0000000000f, + 0.2657481612f, + 0.0357284950f, + 0.0093898117f, + 0.0281636114f, + -0.0149500663f, + 0.0066927872f, + -0.0045273937f, + 0.0017291225f, + -0.0007792550f, + 0.0012322999f, + 0.0007050083f, + -0.0009036035f, + 0.0011049449f + }, + { + -0.0010746199f, /* Filter 102 */ + 0.0011710809f, + -0.0007096353f, + -0.0008467735f, + 0.0008059954f, + -0.0011828923f, + 0.0047663503f, + -0.0059009524f, + 0.0164650142f, + -0.0282501922f, + -0.0049381913f, + -0.0385216388f, + -0.2729557400f, + 0.0000000000f, + 0.2650787521f, + 0.0354760915f, + 0.0097804550f, + 0.0281491810f, + -0.0148123088f, + 0.0067605516f, + -0.0045045986f, + 0.0017771208f, + -0.0007765483f, + 0.0012667403f, + 0.0007043828f, + -0.0008793391f, + 0.0011072888f + }, + { + -0.0010714499f, /* Filter 103 */ + 0.0011954135f, + -0.0007098493f, + -0.0008111646f, + 0.0008081438f, + -0.0011316304f, + 0.0047869527f, + -0.0058247562f, + 0.0166025495f, + -0.0282513728f, + -0.0045195090f, + -0.0387769531f, + -0.2735964027f, + 0.0000000000f, + 0.2644070374f, + 0.0352239617f, + 0.0101687456f, + 0.0281336842f, + -0.0146745726f, + 0.0068276127f, + -0.0044816329f, + 0.0018248365f, + -0.0007737966f, + 0.0013010732f, + 0.0007037243f, + -0.0008550943f, + 0.0011095645f + }, + { + -0.0010682126f, /* Filter 104 */ + 0.0012197508f, + -0.0007100281f, + -0.0007754711f, + 0.0008102444f, + -0.0010801096f, + 0.0048073586f, + -0.0057478644f, + 0.0167400258f, + -0.0282514167f, + -0.0040985108f, + -0.0390324810f, + -0.2742345901f, + 0.0000000000f, + 0.2637330636f, + 0.0349721092f, + 0.0105546851f, + 0.0281171251f, + -0.0145368636f, + 0.0068939665f, + -0.0044584976f, + 0.0018722654f, + -0.0007710007f, + 0.0013352954f, + 0.0007030318f, + -0.0008308606f, + 0.0011117715f + }, + { + -0.0010649059f, /* Filter 105 */ + 0.0012440816f, + -0.0007101728f, + -0.0007396959f, + 0.0008122961f, + -0.0010283306f, + 0.0048275684f, + -0.0056702745f, + 0.0168774407f, + -0.0282503148f, + -0.0036751886f, + -0.0392882154f, + -0.2748702724f, + 0.0000000000f, + 0.2630568185f, + 0.0347205358f, + 0.0109382733f, + 0.0280995041f, + -0.0143991860f, + 0.0069596165f, + -0.0044351971f, + 0.0019194063f, + -0.0007681603f, + 0.0013694064f, + 0.0007023057f, + -0.0008066464f, + 0.0011139108f + }, + { + -0.0010615314f, /* Filter 106 */ + 0.0012684074f, + -0.0007102820f, + -0.0007038334f, + 0.0008142999f, + -0.0009763001f, + 0.0048475769f, + -0.0055919826f, + 0.0170147851f, + -0.0282480711f, + -0.0032495562f, + -0.0395441537f, + -0.2755034477f, + 0.0000000000f, + 0.2623783208f, + 0.0344692561f, + 0.0113195056f, + 0.0280808335f, + -0.0142615460f, + 0.0070245603f, + -0.0044117309f, + 0.0019662596f, + -0.0007652759f, + 0.0014034000f, + 0.0007015467f, + -0.0007824483f, + 0.0011159811f + }, + { + -0.0010580875f, /* Filter 107 */ + 0.0012927253f, + -0.0007103560f, + -0.0006678940f, + 0.0008162546f, + -0.0009240159f, + 0.0048673860f, + -0.0055129977f, + 0.0171520528f, + -0.0282446739f, + -0.0028216146f, + -0.0398002822f, + -0.2761340693f, + 0.0000000000f, + 0.2616976047f, + 0.0342182684f, + 0.0116983767f, + 0.0280611071f, + -0.0141239484f, + 0.0070888016f, + -0.0043881031f, + 0.0020128174f, + -0.0007623479f, + 0.0014372807f, + 0.0007007544f, + -0.0007582745f, + 0.0011179829f + }, + { + -0.0010545747f, /* Filter 108 */ + 0.0013170424f, + -0.0007103956f, + -0.0006318766f, + 0.0008181599f, + -0.0008714809f, + 0.0048869925f, + -0.0054333145f, + 0.0172892379f, + -0.0282401182f, + -0.0023913529f, + -0.0400566092f, + -0.2767621627f, + 0.0000000000f, + 0.2610146369f, + 0.0339675709f, + 0.0120748958f, + 0.0280403419f, + -0.0139864014f, + 0.0071523315f, + -0.0043643149f, + 0.0020590840f, + -0.0007593767f, + 0.0014710468f, + 0.0006999287f, + -0.0007341161f, + 0.0011199163f + }, + { + -0.0010509944f, /* Filter 109 */ + 0.0013413474f, + -0.0007103997f, + -0.0005957808f, + 0.0008200157f, + -0.0008186991f, + 0.0049063926f, + -0.0053529350f, + 0.0174263349f, + -0.0282344015f, + -0.0019587970f, + -0.0403131167f, + -0.2773876760f, + 0.0000000000f, + 0.2603294831f, + 0.0337171812f, + 0.0124490497f, + 0.0280185355f, + -0.0138489067f, + 0.0072151640f, + -0.0043403671f, + 0.0021050531f, + -0.0007563619f, + 0.0015046928f, + 0.0006990699f, + -0.0007099836f, + 0.0011217811f + }, + { + -0.0010473447f, /* Filter 110 */ + 0.0013656386f, + -0.0007103683f, + -0.0005596113f, + 0.0008218223f, + -0.0007656713f, + 0.0049255890f, + -0.0052718651f, + 0.0175633376f, + -0.0282275159f, + -0.0015239316f, + -0.0405698114f, + -0.2780106203f, + 0.0000000000f, + 0.2596421332f, + 0.0334670906f, + 0.0128208432f, + 0.0279957011f, + -0.0137114739f, + 0.0072772828f, + -0.0043162620f, + 0.0021507287f, + -0.0007533040f, + 0.0015382175f, + 0.0006981778f, + -0.0006858725f, + 0.0011235774f + }, + { + -0.0010436270f, /* Filter 111 */ + 0.0013899237f, + -0.0007103019f, + -0.0005233689f, + 0.0008235790f, + -0.0007124005f, + 0.0049445757f, + -0.0051900982f, + 0.0177002397f, + -0.0282194586f, + -0.0010867680f, + -0.0408266823f, + -0.2786309892f, + 0.0000000000f, + 0.2589526285f, + 0.0332173170f, + 0.0131902755f, + 0.0279718407f, + -0.0135741072f, + 0.0073387013f, + -0.0042920026f, + 0.0021961043f, + -0.0007502043f, + 0.0015716164f, + 0.0006972533f, + -0.0006617856f, + 0.0011253062f + }, + { + -0.0010398406f, /* Filter 112 */ + 0.0014141938f, + -0.0007102002f, + -0.0004870592f, + 0.0008252858f, + -0.0006588884f, + 0.0049633513f, + -0.0051076392f, + 0.0178370350f, + -0.0282102244f, + -0.0006473074f, + -0.0410837254f, + -0.2792487420f, + 0.0000000000f, + 0.2582609415f, + 0.0329678544f, + 0.0135573465f, + 0.0279469562f, + -0.0134368115f, + 0.0073994093f, + -0.0042675892f, + 0.0022411794f, + -0.0007470620f, + 0.0016048978f, + 0.0006962954f, + -0.0006377245f, + 0.0011269662f + }, + { + -0.0010359857f, /* Filter 113 */ + 0.0014384488f, + -0.0007100627f, + -0.0004506776f, + 0.0008269419f, + -0.0006051376f, + 0.0049819167f, + -0.0050244882f, + 0.0179737156f, + -0.0281998083f, + -0.0002055523f, + -0.0413409384f, + -0.2798638600f, + 0.0000000000f, + 0.2575671213f, + 0.0327187127f, + 0.0139220482f, + 0.0279210583f, + -0.0132995926f, + 0.0074594171f, + -0.0042430267f, + 0.0022859543f, + -0.0007438774f, + 0.0016380516f, + 0.0006953053f, + -0.0006136924f, + 0.0011285579f + }, + { + -0.0010320630f, /* Filter 114 */ + 0.0014626955f, + -0.0007098902f, + -0.0004142275f, + 0.0008285479f, + -0.0005511493f, + 0.0050002667f, + -0.0049406467f, + 0.0181102764f, + -0.0281882036f, + 0.0002384932f, + -0.0415983080f, + -0.2804763703f, + 0.0000000000f, + 0.2568711694f, + 0.0324698939f, + 0.0142843817f, + 0.0278941437f, + -0.0131624584f, + 0.0075187177f, + -0.0042183140f, + 0.0023304223f, + -0.0007406513f, + 0.0016710782f, + 0.0006942834f, + -0.0005896863f, + 0.0011300824f + }, + { + -0.0010280722f, /* Filter 115 */ + 0.0014869168f, + -0.0007096819f, + -0.0003777139f, + 0.0008301031f, + -0.0004969285f, + 0.0050183999f, + -0.0048561151f, + 0.0182467125f, + -0.0281754096f, + 0.0006848186f, + -0.0418558409f, + -0.2810862181f, + 0.0000000000f, + 0.2561731303f, + 0.0322214047f, + 0.0146443485f, + 0.0278662299f, + -0.0130254114f, + 0.0075773118f, + -0.0041934535f, + 0.0023745874f, + -0.0007373837f, + 0.0017039785f, + 0.0006932284f, + -0.0005657123f, + 0.0011315384f + }, + { + -0.0010240124f, /* Filter 116 */ + 0.0015111241f, + -0.0007094385f, + -0.0003411385f, + 0.0008316073f, + -0.0004424761f, + 0.0050363165f, + -0.0047708942f, + 0.0183830151f, + -0.0281614214f, + 0.0011334349f, + -0.0421135221f, + -0.2816934067f, + 0.0000000000f, + 0.2554729654f, + 0.0319732494f, + 0.0150019516f, + 0.0278373157f, + -0.0128884592f, + 0.0076352001f, + -0.0041684487f, + 0.0024184465f, + -0.0007340746f, + 0.0017367458f, + 0.0006921406f, + -0.0005417639f, + 0.0011329266f + }, + { + -0.0010198845f, /* Filter 117 */ + 0.0015353137f, + -0.0007091591f, + -0.0003045018f, + 0.0008330604f, + -0.0003877925f, + 0.0050540140f, + -0.0046849864f, + 0.0185191789f, + -0.0281462298f, + 0.0015843239f, + -0.0423713512f, + -0.2822979260f, + 0.0000000000f, + 0.2547707314f, + 0.0317254312f, + 0.0153571814f, + 0.0278074035f, + -0.0127516043f, + 0.0076923868f, + -0.0041433007f, + 0.0024619949f, + -0.0007307251f, + 0.0017693819f, + 0.0006910215f, + -0.0005178491f, + 0.0011342460f + }, + { + -0.0010156894f, /* Filter 118 */ + 0.0015594822f, + -0.0007088438f, + -0.0002678034f, + 0.0008344621f, + -0.0003328846f, + 0.0050714890f, + -0.0045983896f, + 0.0186551985f, + -0.0281298337f, + 0.0020374872f, + -0.0426293218f, + -0.2828997467f, + 0.0000000000f, + 0.2540664421f, + 0.0314779578f, + 0.0157100397f, + 0.0277765039f, + -0.0126148560f, + 0.0077488684f, + -0.0041180110f, + 0.0025052338f, + -0.0007273343f, + 0.0018018889f, + 0.0006898704f, + -0.0004939715f, + 0.0011354988f + }, + { + -0.0010114265f, /* Filter 119 */ + 0.0015836262f, + -0.0007084933f, + -0.0002310499f, + 0.0008358123f, + -0.0002777495f, + 0.0050887420f, + -0.0045111089f, + 0.0187910667f, + -0.0281122245f, + 0.0024929295f, + -0.0428874304f, + -0.2834988794f, + 0.0000000000f, + 0.2533600885f, + 0.0312308279f, + 0.0160605319f, + 0.0277446198f, + -0.0124782163f, + 0.0078046434f, + -0.0040925809f, + 0.0025481605f, + -0.0007239040f, + 0.0018342587f, + 0.0006886862f, + -0.0004701241f, + 0.0011366832f + }, + { + -0.0010070953f, /* Filter 120 */ + 0.0016077501f, + -0.0007081066f, + -0.0001942402f, + 0.0008371108f, + -0.0002223928f, + 0.0051057689f, + -0.0044231476f, + 0.0189267792f, + -0.0280933977f, + 0.0029506329f, + -0.0431456757f, + -0.2840952899f, + 0.0000000000f, + 0.2526517170f, + 0.0309840461f, + 0.0164086448f, + 0.0277117641f, + -0.0123416968f, + 0.0078597165f, + -0.0040670144f, + 0.0025907777f, + -0.0007204335f, + 0.0018664891f, + 0.0006874708f, + -0.0004463107f, + 0.0011378009f + }, + { + -0.0010026952f, /* Filter 121 */ + 0.0016318514f, + -0.0007076840f, + -0.0001573786f, + 0.0008383569f, + -0.0001668158f, + 0.0051225696f, + -0.0043344990f, + 0.0190623224f, + -0.0280733535f, + 0.0034106068f, + -0.0434040427f, + -0.2846889619f, + 0.0000000000f, + 0.2519413212f, + 0.0307376220f, + 0.0167543922f, + 0.0276779292f, + -0.0122052947f, + 0.0079140847f, + -0.0040413123f, + 0.0026330778f, + -0.0007169229f, + 0.0018985847f, + 0.0006862248f, + -0.0004225402f, + 0.0011388502f + }, + { + -0.0009982289f, /* Filter 122 */ + 0.0016559196f, + -0.0007072258f, + -0.0001204636f, + 0.0008395513f, + -0.0001110239f, + 0.0051391395f, + -0.0042451688f, + 0.0191976997f, + -0.0280520870f, + 0.0038728344f, + -0.0436625339f, + -0.2852799039f, + 0.0000000000f, + 0.2512289255f, + 0.0304915602f, + 0.0170977662f, + 0.0276431323f, + -0.0120690194f, + 0.0079677486f, + -0.0040154761f, + 0.0026750618f, + -0.0007133733f, + 0.0019305404f, + 0.0006849461f, + -0.0003988041f, + 0.0011398326f + }, + { + -0.0009936943f, /* Filter 123 */ + 0.0016799665f, + -0.0007067322f, + -0.0000835019f, + 0.0008406932f, + -0.0000550153f, + 0.0051554812f, + -0.0041551601f, + 0.0193328981f, + -0.0280295876f, + 0.0043373221f, + -0.0439211421f, + -0.2858680847f, + 0.0000000000f, + 0.2505145525f, + 0.0302458600f, + 0.0174387598f, + 0.0276073771f, + -0.0119328775f, + 0.0080207126f, + -0.0039895092f, + 0.0027167309f, + -0.0007097842f, + 0.0019623556f, + 0.0006836357f, + -0.0003751028f, + 0.0011407479f + }, + { + -0.0009890919f, /* Filter 124 */ + 0.0017039849f, + -0.0007062025f, + -0.0000464885f, + 0.0008417822f, + 0.0000012056f, + 0.0051715888f, + -0.0040644718f, + 0.0194679108f, + -0.0280058520f, + 0.0048040611f, + -0.0441798639f, + -0.2864534851f, + 0.0000000000f, + 0.2497981996f, + 0.0300005287f, + 0.0177773850f, + 0.0275706627f, + -0.0117968713f, + 0.0080729717f, + -0.0039634116f, + 0.0027580796f, + -0.0007061565f, + 0.0019940273f, + 0.0006822951f, + -0.0003514459f, + 0.0011415948f + }, + { + -0.0009844227f, /* Filter 125 */ + 0.0017279724f, + -0.0007056362f, + -0.0000094350f, + 0.0008428182f, + 0.0000576352f, + 0.0051874639f, + -0.0039731038f, + 0.0196027359f, + -0.0279808828f, + 0.0052730430f, + -0.0444386921f, + -0.2870361257f, + 0.0000000000f, + 0.2490799083f, + 0.0297555716f, + 0.0181136380f, + 0.0275330008f, + -0.0116610092f, + 0.0081245295f, + -0.0039371865f, + 0.0027991078f, + -0.0007024905f, + 0.0020255556f, + 0.0006809223f, + -0.0003278284f, + 0.0011423760f + }, + { + -0.0009796859f, /* Filter 126 */ + 0.0017519279f, + -0.0007050338f, + 0.0000276667f, + 0.0008438015f, + 0.0001142729f, + 0.0052031015f, + -0.0038810597f, + 0.0197373608f, + -0.0279546684f, + 0.0057442757f, + -0.0446976236f, + -0.2876159521f, + 0.0000000000f, + 0.2483596736f, + 0.0295109907f, + 0.0184475121f, + 0.0274943939f, + -0.0115252954f, + 0.0081753869f, + -0.0039108359f, + 0.0028398167f, + -0.0006987861f, + 0.0020569427f, + 0.0006795190f, + -0.0003042571f, + 0.0011430900f + }, + { + -0.0009748823f, /* Filter 127 */ + 0.0017758509f, + -0.0007043957f, + 0.0000648082f, + 0.0008447316f, + 0.0001711151f, + 0.0052185020f, + -0.0037883407f, + 0.0198717871f, + -0.0279272053f, + 0.0062177469f, + -0.0449566483f, + -0.2881929551f, + 0.0000000000f, + 0.2476375210f, + 0.0292667911f, + 0.0187790160f, + 0.0274548475f, + -0.0113897330f, + 0.0082255396f, + -0.0038843609f, + 0.0028802012f, + -0.0006950437f, + 0.0020881801f, + 0.0006780840f, + -0.0002807266f, + 0.0011437373f + }, + { + -0.0009700106f, /* Filter 128 */ + 0.0017997404f, + -0.0007037221f, + 0.0001019889f, + 0.0008456086f, + 0.0002281595f, + 0.0052336635f, + -0.0036949493f, + 0.0200059998f, + -0.0278984903f, + 0.0066934534f, + -0.0452157695f, + -0.2887671637f, + 0.0000000000f, + 0.2469134451f, + 0.0290229756f, + 0.0191081383f, + 0.0274143701f, + -0.0112543303f, + 0.0082749947f, + -0.0038577642f, + 0.0029202617f, + -0.0006912640f, + 0.0021192677f, + 0.0006766191f, + -0.0002572389f, + 0.0011443167f + }, + { + -0.0009650723f, /* Filter 129 */ + 0.0018235921f, + -0.0007030120f, + 0.0001392054f, + 0.0008464313f, + 0.0002854022f, + 0.0052485826f, + -0.0036008869f, + 0.0201399968f, + -0.0278685199f, + 0.0071713863f, + -0.0454749735f, + -0.2893385169f, + 0.0000000000f, + 0.2461874974f, + 0.0287795539f, + 0.0194348927f, + 0.0273729679f, + -0.0111190914f, + 0.0083237506f, + -0.0038310474f, + 0.0029599977f, + -0.0006874465f, + 0.0021502064f, + 0.0006751235f, + -0.0002338013f, + 0.0011448304f + }, + { + -0.0009600683f, /* Filter 130 */ + 0.0018474133f, + -0.0007022654f, + 0.0001764611f, + 0.0008472010f, + 0.0003428435f, + 0.0052632581f, + -0.0035061537f, + 0.0202737736f, + -0.0278372858f, + 0.0076515487f, + -0.0457342605f, + -0.2899070162f, + 0.0000000000f, + 0.2454596814f, + 0.0285365229f, + 0.0197592651f, + 0.0273306427f, + -0.0109840200f, + 0.0083718053f, + -0.0038042124f, + 0.0029994070f, + -0.0006835927f, + 0.0021809969f, + 0.0006735974f, + -0.0002104096f, + 0.0011452775f + }, + { + -0.0009549959f, /* Filter 131 */ + 0.0018711939f, + -0.0007014832f, + 0.0002137479f, + 0.0008479164f, + 0.0004004791f, + 0.0052776885f, + -0.0034107494f, + 0.0204073193f, + -0.0278047850f, + 0.0081339331f, + -0.0459936256f, + -0.2904726541f, + 0.0000000000f, + 0.2447299955f, + 0.0282938934f, + 0.0200812646f, + 0.0272874001f, + -0.0108491236f, + 0.0084191624f, + -0.0037772614f, + 0.0030384868f, + -0.0006797019f, + 0.0022116302f, + 0.0006720400f, + -0.0001870628f, + 0.0011456582f + }, + { + -0.0009498575f, /* Filter 132 */ + 0.0018949356f, + -0.0007006644f, + 0.0002510630f, + 0.0008485774f, + 0.0004583052f, + 0.0052918732f, + -0.0033146815f, + 0.0205406256f, + -0.0277710140f, + 0.0086185289f, + -0.0462530597f, + -0.2910354206f, + 0.0000000000f, + 0.2439984781f, + 0.0280516644f, + 0.0204008878f, + 0.0272432488f, + -0.0107144051f, + 0.0084658221f, + -0.0037501966f, + 0.0030772368f, + -0.0006757746f, + 0.0022421145f, + 0.0006704533f, + -0.0001637720f, + 0.0011459727f + }, + { + -0.0009446530f, /* Filter 133 */ + 0.0019186336f, + -0.0006998097f, + 0.0002884118f, + 0.0008491842f, + 0.0005163194f, + 0.0053058091f, + -0.0032179461f, + 0.0206736926f, + -0.0277359720f, + 0.0091053416f, + -0.0465125625f, + -0.2915952853f, + 0.0000000000f, + 0.2432651518f, + 0.0278098438f, + 0.0207181373f, + 0.0271981923f, + -0.0105798714f, + 0.0085117824f, + -0.0037230192f, + 0.0031156583f, + -0.0006718119f, + 0.0022724392f, + 0.0006688361f, + -0.0001405276f, + 0.0011462210f + }, + { + -0.0009393808f, /* Filter 134 */ + 0.0019422951f, + -0.0006989186f, + 0.0003257856f, + 0.0008497364f, + 0.0005745208f, + 0.0053194953f, + -0.0031205442f, + 0.0208065104f, + -0.0276996474f, + 0.0095943625f, + -0.0467721216f, + -0.2921522650f, + 0.0000000000f, + 0.2425299982f, + 0.0275684376f, + 0.0210330123f, + 0.0271522404f, + -0.0104455273f, + 0.0085570476f, + -0.0036957313f, + 0.0031537479f, + -0.0006678127f, + 0.0023026112f, + 0.0006671893f, + -0.0001173340f, + 0.0011464036f + }, + { + -0.0009340436f, /* Filter 135 */ + 0.0019659065f, + -0.0006979908f, + 0.0003631842f, + 0.0008502345f, + 0.0006329051f, + 0.0053329287f, + -0.0030224817f, + 0.0209390691f, + -0.0276620429f, + 0.0100855779f, + -0.0470317378f, + -0.2927063137f, + 0.0000000000f, + 0.2417930608f, + 0.0273274427f, + 0.0213455089f, + 0.0271053905f, + -0.0103113770f, + 0.0086016160f, + -0.0036683357f, + 0.0031915023f, + -0.0006637778f, + 0.0023326243f, + 0.0006655128f, + -0.0000941955f, + 0.0011465197f + }, + { + -0.0009286405f, /* Filter 136 */ + 0.0019894817f, + -0.0006970279f, + 0.0004006073f, + 0.0008506772f, + 0.0006914707f, + 0.0053461072f, + -0.0029237612f, + 0.0210713702f, + -0.0276231475f, + 0.0105789967f, + -0.0472914089f, + -0.2932574514f, + 0.0000000000f, + 0.2410543557f, + 0.0270868685f, + 0.0216556342f, + 0.0270576581f, + -0.0101774269f, + 0.0086454904f, + -0.0036408325f, + 0.0032289263f, + -0.0006597090f, + 0.0023624732f, + 0.0006638063f, + -0.0000711074f, + 0.0011465712f + }, + { + -0.0009231713f, /* Filter 137 */ + 0.0020130052f, + -0.0006960278f, + 0.0004380525f, + 0.0008510646f, + 0.0007502151f, + 0.0053590326f, + -0.0028243793f, + 0.0212033969f, + -0.0275829612f, + 0.0110746124f, + -0.0475511207f, + -0.2938056346f, + 0.0000000000f, + 0.2403138872f, + 0.0268467200f, + 0.0219633900f, + 0.0270090421f, + -0.0100436811f, + 0.0086886704f, + -0.0036132252f, + 0.0032660113f, + -0.0006556046f, + 0.0023921649f, + 0.0006620704f, + -0.0000480783f, + 0.0011465566f + }, + { + -0.0009176370f, /* Filter 138 */ + 0.0020364848f, + -0.0006949917f, + 0.0004755140f, + 0.0008513979f, + 0.0008091340f, + 0.0053716984f, + -0.0027243401f, + 0.0213351496f, + -0.0275414759f, + 0.0115724090f, + -0.0478108764f, + -0.2943508790f, + 0.0000000000f, + 0.2395716850f, + 0.0266069972f, + 0.0222687697f, + 0.0269595532f, + -0.0099101441f, + 0.0087311541f, + -0.0035855149f, + 0.0033027631f, + -0.0006514662f, + 0.0024216984f, + 0.0006603052f, + -0.0000251055f, + 0.0011464770f + }, + { + -0.0009120349f, /* Filter 139 */ + 0.0020599133f, + -0.0006939189f, + 0.0005129974f, + 0.0008516749f, + 0.0008682246f, + 0.0053841057f, + -0.0026236483f, + 0.0214666211f, + -0.0274986943f, + 0.0120723842f, + -0.0480706645f, + -0.2948931379f, + 0.0000000000f, + 0.2388277557f, + 0.0263677085f, + 0.0225717691f, + 0.0269091934f, + -0.0097768207f, + 0.0087729478f, + -0.0035577053f, + 0.0033391752f, + -0.0006472933f, + 0.0024510651f, + 0.0006585102f, + -0.0000021866f, + 0.0011463315f + }, + { + -0.0009063690f, /* Filter 140 */ + 0.0020832938f, + -0.0006928102f, + 0.0005504888f, + 0.0008518969f, + 0.0009274844f, + 0.0053962514f, + -0.0025223003f, + 0.0215977998f, + -0.0274546077f, + 0.0125745438f, + -0.0483304827f, + -0.2954324350f, + 0.0000000000f, + 0.2380821155f, + 0.0261288554f, + 0.0228724030f, + 0.0268579697f, + -0.0096437180f, + 0.0088140500f, + -0.0035297957f, + 0.0033752497f, + -0.0006430867f, + 0.0024802648f, + 0.0006566866f, + 0.0000206692f, + 0.0011461218f + }, + { + -0.0009006378f, /* Filter 141 */ + 0.0021066237f, + -0.0006916650f, + 0.0005879963f, + 0.0008520632f, + 0.0009869126f, + 0.0054081355f, + -0.0024203039f, + 0.0217286837f, + -0.0274092098f, + 0.0130788749f, + -0.0485903285f, + -0.2959687351f, + 0.0000000000f, + 0.2373347695f, + 0.0258904414f, + 0.0231706626f, + 0.0268058885f, + -0.0095108389f, + 0.0088544608f, + -0.0035017896f, + 0.0034109859f, + -0.0006388465f, + 0.0025093019f, + 0.0006548344f, + 0.0000434707f, + 0.0011458464f + }, + { + -0.0008948414f, /* Filter 142 */ + 0.0021298969f, + -0.0006904839f, + 0.0006255130f, + 0.0008521730f, + 0.0010465041f, + 0.0054197563f, + -0.0023176579f, + 0.0218592629f, + -0.0273624970f, + 0.0135853716f, + -0.0488501916f, + -0.2965020230f, + 0.0000000000f, + 0.2365857471f, + 0.0256524730f, + 0.0234665539f, + 0.0267529502f, + -0.0093781859f, + 0.0088941795f, + -0.0034736888f, + 0.0034463789f, + -0.0006345732f, + 0.0025381729f, + 0.0006529527f, + 0.0000662085f, + 0.0011455063f + }, + { + -0.0008889799f, /* Filter 143 */ + 0.0021531195f, + -0.0006892660f, + 0.0006630402f, + 0.0008522276f, + 0.0011062575f, + 0.0054311098f, + -0.0022143617f, + 0.0219895354f, + -0.0273144693f, + 0.0140940276f, + -0.0491100685f, + -0.2970323104f, + 0.0000000000f, + 0.2358351039f, + 0.0254149538f, + 0.0237600772f, + 0.0266991688f, + -0.0092457714f, + 0.0089332130f, + -0.0034454945f, + 0.0034814320f, + -0.0006302670f, + 0.0025668690f, + 0.0006510433f, + 0.0000888863f, + 0.0011451026f + }, + { + -0.0008830525f, /* Filter 144 */ + 0.0021762900f, + -0.0006880123f, + 0.0007005733f, + 0.0008522255f, + 0.0011661681f, + 0.0054421973f, + -0.0021104232f, + 0.0221194870f, + -0.0272651190f, + 0.0146048459f, + -0.0493699555f, + -0.2975595531f, + 0.0000000000f, + 0.2350827773f, + 0.0251778857f, + 0.0240512288f, + 0.0266445489f, + -0.0091135918f, + 0.0089715590f, + -0.0034172101f, + 0.0035161441f, + -0.0006259285f, + 0.0025953985f, + 0.0006491045f, + 0.0001114988f, + 0.0011446338f + }, + { + -0.0008770619f, /* Filter 145 */ + 0.0021993958f, + -0.0006867219f, + 0.0007381110f, + 0.0008521672f, + 0.0012262341f, + 0.0054530144f, + -0.0020058404f, + 0.0222491169f, + -0.0272144465f, + 0.0151178087f, + -0.0496298476f, + -0.2980837677f, + 0.0000000000f, + 0.2343288410f, + 0.0249412739f, + 0.0243400141f, + 0.0265890915f, + -0.0089816572f, + 0.0090092137f, + -0.0033888350f, + 0.0035505117f, + -0.0006215577f, + 0.0026237608f, + 0.0006471375f, + 0.0001340487f, + 0.0011441008f + }, + { + -0.0008710057f, /* Filter 146 */ + 0.0022224528f, + -0.0006853956f, + 0.0007756478f, + 0.0008520524f, + 0.0012864544f, + 0.0054635619f, + -0.0019006173f, + 0.0223784170f, + -0.0271624382f, + 0.0156329160f, + -0.0498897355f, + -0.2986049201f, + 0.0000000000f, + 0.2335732963f, + 0.0247051227f, + 0.0246264247f, + 0.0265328037f, + -0.0088499695f, + 0.0090461878f, + -0.0033603747f, + 0.0035845316f, + -0.0006171547f, + 0.0026519463f, + 0.0006451435f, + 0.0001565332f, + 0.0011435041f + }, + { + -0.0008648856f, /* Filter 147 */ + 0.0022454470f, + -0.0006840326f, + 0.0008131900f, + 0.0008518814f, + 0.0013468222f, + 0.0054738356f, + -0.0017947555f, + 0.0225073789f, + -0.0271090985f, + 0.0161501676f, + -0.0501496170f, + -0.2991230182f, + 0.0000000000f, + 0.2328161450f, + 0.0244694365f, + 0.0249104828f, + 0.0264756977f, + -0.0087185354f, + 0.0090824743f, + -0.0033318265f, + 0.0036182106f, + -0.0006127204f, + 0.0026799609f, + 0.0006431206f, + 0.0001789542f, + 0.0011428431f + }, + { + -0.0008587025f, /* Filter 148 */ + 0.0022683768f, + -0.0006826328f, + 0.0008507285f, + 0.0008516534f, + 0.0014073357f, + 0.0054838338f, + -0.0016882547f, + 0.0226359994f, + -0.0270544253f, + 0.0166695436f, + -0.0504094875f, + -0.2996380397f, + 0.0000000000f, + 0.2320574430f, + 0.0242342195f, + 0.0251921607f, + 0.0264177686f, + -0.0085873575f, + 0.0091180770f, + -0.0033031978f, + 0.0036515394f, + -0.0006082550f, + 0.0027078003f, + 0.0006410700f, + 0.0002013077f, + 0.0011421190f + }, + { + -0.0008524555f, /* Filter 149 */ + 0.0022912484f, + -0.0006811972f, + 0.0008882574f, + 0.0008513686f, + 0.0014679953f, + 0.0054935571f, + -0.0015811215f, + 0.0227642672f, + -0.0269984086f, + 0.0171910545f, + -0.0506693432f, + -0.3001499723f, + 0.0000000000f, + 0.2312971712f, + 0.0239994729f, + 0.0254714879f, + 0.0263590324f, + -0.0084564442f, + 0.0091529990f, + -0.0032744845f, + 0.0036845251f, + -0.0006037586f, + 0.0027354617f, + 0.0006389909f, + 0.0002235915f, + 0.0011413312f + }, + { + -0.0008461448f, /* Filter 150 */ + 0.0023140572f, + -0.0006797257f, + 0.0009257855f, + 0.0008510271f, + 0.0015287938f, + 0.0055030012f, + -0.0014733573f, + 0.0228921794f, + -0.0269410438f, + 0.0177146788f, + -0.0509291719f, + -0.3006587981f, + 0.0000000000f, + 0.2305353630f, + 0.0237652053f, + 0.0257484410f, + 0.0262994869f, + -0.0083257964f, + 0.0091872395f, + -0.0032456946f, + 0.0037171597f, + -0.0005992319f, + 0.0027629465f, + 0.0006368855f, + 0.0002458049f, + 0.0011404805f + }, + { + -0.0008397688f, /* Filter 151 */ + 0.0023368007f, + -0.0006782178f, + 0.0009633032f, + 0.0008506279f, + 0.0015897306f, + 0.0055121682f, + -0.0013649606f, + 0.0230197214f, + -0.0268823332f, + 0.0182404248f, + -0.0511889706f, + -0.3011645002f, + 0.0000000000f, + 0.2297720123f, + 0.0235314163f, + 0.0260230330f, + 0.0262391416f, + -0.0081954182f, + 0.0092207994f, + -0.0032168260f, + 0.0037494443f, + -0.0005946742f, + 0.0027902521f, + 0.0006347531f, + 0.0002679518f, + 0.0011395655f + }, + { + -0.0008333308f, /* Filter 152 */ + 0.0023594786f, + -0.0006766731f, + 0.0010008101f, + 0.0008501715f, + 0.0016508024f, + 0.0055210536f, + -0.0012559383f, + 0.0231468974f, + -0.0268222652f, + 0.0187682815f, + -0.0514487439f, + -0.3016671090f, + 0.0000000000f, + 0.2290071711f, + 0.0232981107f, + 0.0262952744f, + 0.0261780046f, + -0.0080653181f, + 0.0092536796f, + -0.0031878807f, + 0.0037813826f, + -0.0005900872f, + 0.0028173807f, + 0.0006325925f, + 0.0002900256f, + 0.0011385890f + }, + { + -0.0008268290f, /* Filter 153 */ + 0.0023820868f, + -0.0006750925f, + 0.0010383048f, + 0.0008496578f, + 0.0017120052f, + 0.0055296570f, + -0.0011462885f, + 0.0232736903f, + -0.0267608416f, + 0.0192982375f, + -0.0517084734f, + -0.3021665631f, + 0.0000000000f, + 0.2282408324f, + 0.0230652947f, + 0.0265651549f, + 0.0261160785f, + -0.0079354970f, + 0.0092858815f, + -0.0031588620f, + 0.0038129681f, + -0.0005854703f, + 0.0028443280f, + 0.0006304052f, + 0.0003120266f, + 0.0011375491f + }, + { + -0.0008202657f, /* Filter 154 */ + 0.0024046275f, + -0.0006734762f, + 0.0010757878f, + 0.0008490868f, + 0.0017733360f, + 0.0055379751f, + -0.0010360162f, + 0.0234001010f, + -0.0266980579f, + 0.0198302924f, + -0.0519681634f, + -0.3026628735f, + 0.0000000000f, + 0.2274730162f, + 0.0228329704f, + 0.0268326719f, + 0.0260533737f, + -0.0078059632f, + 0.0093174091f, + -0.0031297716f, + 0.0038442047f, + -0.0005808245f, + 0.0028710917f, + 0.0006281911f, + 0.0003339556f, + 0.0011364467f + }, + { + -0.0008136394f, /* Filter 155 */ + 0.0024270988f, + -0.0006718223f, + 0.0011132506f, + 0.0008484581f, + 0.0018347918f, + 0.0055460065f, + -0.0009251240f, + 0.0235261215f, + -0.0266339120f, + 0.0203644374f, + -0.0522278035f, + -0.3031560303f, + 0.0000000000f, + 0.2267037589f, + 0.0226011415f, + 0.0270978352f, + 0.0259898899f, + -0.0076767172f, + 0.0093482617f, + -0.0031006109f, + 0.0038750887f, + -0.0005761496f, + 0.0028976751f, + 0.0006259504f, + 0.0003558105f, + 0.0011352831f + }, + { + -0.0008069505f, /* Filter 156 */ + 0.0024494986f, + -0.0006701339f, + 0.0011506901f, + 0.0008477713f, + 0.0018963726f, + 0.0055537525f, + -0.0008136137f, + 0.0236517400f, + -0.0265683906f, + 0.0209006716f, + -0.0524873874f, + -0.3036460014f, + 0.0000000000f, + 0.2259330273f, + 0.0223698105f, + 0.0273606502f, + 0.0259256365f, + -0.0075477654f, + 0.0093784411f, + -0.0030713817f, + 0.0039056182f, + -0.0005714460f, + 0.0029240706f, + 0.0006236829f, + 0.0003775881f, + 0.0011340562f + }, + { + -0.0008001983f, /* Filter 157 */ + 0.0024718253f, + -0.0006684086f, + 0.0011881132f, + 0.0008470267f, + 0.0019580722f, + 0.0055612069f, + -0.0007014887f, + 0.0237769522f, + -0.0265014986f, + 0.0214389786f, + -0.0527469133f, + -0.3041327986f, + 0.0000000000f, + 0.2251608839f, + 0.0221389834f, + 0.0276211080f, + 0.0258606166f, + -0.0074191106f, + 0.0094079482f, + -0.0030420866f, + 0.0039357947f, + -0.0005667146f, + 0.0029502835f, + 0.0006213891f, + 0.0003992901f, + 0.0011327680f + }, + { + -0.0007933850f, /* Filter 158 */ + 0.0024940796f, + -0.0006666470f, + 0.0012255137f, + 0.0008462245f, + 0.0020198867f, + 0.0055683734f, + -0.0005887490f, + 0.0239017519f, + -0.0264332338f, + 0.0219793618f, + -0.0530063717f, + -0.3046163955f, + 0.0000000000f, + 0.2243873441f, + 0.0219086634f, + 0.0278792178f, + 0.0257948378f, + -0.0072907606f, + 0.0094367825f, + -0.0030127268f, + 0.0039656166f, + -0.0005619550f, + 0.0029763130f, + 0.0006190693f, + 0.0004209182f, + 0.0011314178f + }, + { + -0.0007865111f, /* Filter 159 */ + 0.0025162605f, + -0.0006648496f, + 0.0012628858f, + 0.0008453638f, + 0.0020818155f, + 0.0055752463f, + -0.0004754026f, + 0.0240261303f, + -0.0263635834f, + 0.0225218090f, + -0.0532657623f, + -0.3050968004f, + 0.0000000000f, + 0.2236123999f, + 0.0216788527f, + 0.0281349795f, + 0.0257283081f, + -0.0071627177f, + 0.0094649501f, + -0.0029833043f, + 0.0039950848f, + -0.0005571683f, + 0.0030021495f, + 0.0006167238f, + 0.0004424639f, + 0.0011300064f + }, + { + -0.0007795745f, /* Filter 160 */ + 0.0025383600f, + -0.0006630156f, + 0.0013002283f, + 0.0008444454f, + 0.0021438527f, + 0.0055818244f, + -0.0003614454f, + 0.0241500844f, + -0.0262925563f, + 0.0230663128f, + -0.0535250786f, + -0.3055739837f, + 0.0000000000f, + 0.2228360951f, + 0.0214495583f, + 0.0283883894f, + 0.0256610332f, + -0.0070349865f, + 0.0094924497f, + -0.0029538215f, + 0.0040241966f, + -0.0005523537f, + 0.0030278003f, + 0.0006143526f, + 0.0004639333f, + 0.0011285343f + }, + { + -0.0007725774f, /* Filter 161 */ + 0.0025603850f, + -0.0006611462f, + 0.0013375415f, + 0.0008434682f, + 0.0022059974f, + 0.0055881087f, + -0.0002468810f, + 0.0242736037f, + -0.0262201394f, + 0.0236128695f, + -0.0537843091f, + -0.3060479408f, + 0.0000000000f, + 0.2220584277f, + 0.0212207828f, + 0.0286394536f, + 0.0255930153f, + -0.0069075694f, + 0.0095192815f, + -0.0029242805f, + 0.0040529530f, + -0.0005475125f, + 0.0030532624f, + 0.0006119553f, + 0.0004853179f, + 0.0011270002f + }, + { + -0.0007655187f, /* Filter 162 */ + 0.0025823298f, + -0.0006592405f, + 0.0013748252f, + 0.0008424327f, + 0.0022682453f, + 0.0055940942f, + -0.0001317175f, + 0.0243966808f, + -0.0261463325f, + 0.0241614731f, + -0.0540434590f, + -0.3065186635f, + 0.0000000000f, + 0.2212794214f, + 0.0209925275f, + 0.0288881786f, + 0.0255242620f, + -0.0067804730f, + 0.0095454444f, + -0.0028946812f, + 0.0040813532f, + -0.0005426448f, + 0.0030785301f, + 0.0006095327f, + 0.0005066256f, + 0.0011254062f + }, + { + -0.0007583996f, /* Filter 163 */ + 0.0026041949f, + -0.0006572991f, + 0.0014120734f, + 0.0008413388f, + 0.0023305944f, + 0.0055997838f, + -0.0000159544f, + 0.0245193118f, + -0.0260711303f, + 0.0247121182f, + -0.0543025138f, + -0.3069861396f, + 0.0000000000f, + 0.2204990899f, + 0.0207647986f, + 0.0291345655f, + 0.0254547815f, + -0.0066537014f, + 0.0095709494f, + -0.0028650273f, + 0.0041093948f, + -0.0005377507f, + 0.0031036105f, + 0.0006070843f, + 0.0005278527f, + 0.0011237517f + }, + { + -0.0007512199f, /* Filter 164 */ + 0.0026259796f, + -0.0006553215f, + 0.0014492849f, + 0.0008401860f, + 0.0023930406f, + 0.0056051701f, + 0.0001004067f, + 0.0246414870f, + -0.0259945305f, + 0.0252647915f, + -0.0545614749f, + -0.3074503577f, + 0.0000000000f, + 0.2197174532f, + 0.0205375984f, + 0.0293786112f, + 0.0253845763f, + -0.0065272595f, + 0.0095957903f, + -0.0028353206f, + 0.0041370795f, + -0.0005328312f, + 0.0031284972f, + 0.0006046111f, + 0.0005489924f, + 0.0011220364f + }, + { + -0.0007439798f, /* Filter 165 */ + 0.0026476775f, + -0.0006533075f, + 0.0014864566f, + 0.0008389747f, + 0.0024555805f, + 0.0056102576f, + 0.0002173634f, + 0.0247632008f, + -0.0259165316f, + 0.0258194949f, + -0.0548203341f, + -0.3079113063f, + 0.0000000000f, + 0.2189345318f, + 0.0203109314f, + 0.0296203256f, + 0.0253136575f, + -0.0064011503f, + 0.0096199673f, + -0.0028055617f, + 0.0041644052f, + -0.0005278863f, + 0.0031531871f, + 0.0006021129f, + 0.0005700511f, + 0.0011202621f + }, + { + -0.0007366795f, /* Filter 166 */ + 0.0026692913f, + -0.0006512591f, + 0.0015235876f, + 0.0008377045f, + 0.0025182118f, + 0.0056150401f, + 0.0003349079f, + 0.0248844430f, + -0.0258371249f, + 0.0263762111f, + -0.0550790809f, + -0.3083689567f, + 0.0000000000f, + 0.2181503385f, + 0.0200847999f, + 0.0298596961f, + 0.0252420229f, + -0.0062753772f, + 0.0096434929f, + -0.0027757547f, + 0.0041913714f, + -0.0005229154f, + 0.0031776877f, + 0.0005995907f, + 0.0005910222f, + 0.0011184266f + }, + { + -0.0007293197f, /* Filter 167 */ + 0.0026908252f, + -0.0006491736f, + 0.0015606744f, + 0.0008363755f, + 0.0025809300f, + 0.0056195189f, + 0.0004530424f, + 0.0250052112f, + -0.0257563105f, + 0.0269349394f, + -0.0553377160f, + -0.3088233260f, + 0.0000000000f, + 0.2173648848f, + 0.0198592091f, + 0.0300967342f, + 0.0251696825f, + -0.0061499438f, + 0.0096663567f, + -0.0027458996f, + 0.0042179768f, + -0.0005179204f, + 0.0032019911f, + 0.0005970431f, + 0.0006119059f, + 0.0011165324f + }, + { + -0.0007219006f, /* Filter 168 */ + 0.0027122668f, + -0.0006470528f, + 0.0015977154f, + 0.0008349875f, + 0.0026437316f, + 0.0056236919f, + 0.0005717650f, + 0.0251254954f, + -0.0256740870f, + 0.0274956721f, + -0.0555962347f, + -0.3092744009f, + 0.0000000000f, + 0.2165782048f, + 0.0196341633f, + 0.0303314503f, + 0.0250966487f, + -0.0060248575f, + 0.0096885644f, + -0.0027159978f, + 0.0042442251f, + -0.0005129003f, + 0.0032260964f, + 0.0005944716f, + 0.0006327059f, + 0.0011145787f + }, + { + -0.0007144220f, /* Filter 169 */ + 0.0027336214f, + -0.0006448967f, + 0.0016347116f, + 0.0008335401f, + 0.0027066155f, + 0.0056275581f, + 0.0006910682f, + 0.0252452876f, + -0.0255904448f, + 0.0280584049f, + -0.0558546306f, + -0.3097221447f, + 0.0000000000f, + 0.2157902819f, + 0.0194096624f, + 0.0305638362f, + 0.0250229166f, + -0.0059001204f, + 0.0097101173f, + -0.0026860528f, + 0.0042701101f, + -0.0005078562f, + 0.0032500058f, + 0.0005918760f, + 0.0006534169f, + 0.0011125657f + }, + { + -0.0007068858f, /* Filter 170 */ + 0.0027548851f, + -0.0006427045f, + 0.0016716548f, + 0.0008320342f, + 0.0027695749f, + 0.0056311136f, + 0.0008109511f, + 0.0253645868f, + -0.0255053896f, + 0.0286231268f, + -0.0561128940f, + -0.3101666084f, + 0.0000000000f, + 0.2150011852f, + 0.0191857145f, + 0.0307939004f, + 0.0249485018f, + -0.0057757379f, + 0.0097310227f, + -0.0026560650f, + 0.0042956373f, + -0.0005027885f, + 0.0032737161f, + 0.0005892559f, + 0.0006740415f, + 0.0011104952f + }, + { + -0.0006992894f, /* Filter 171 */ + 0.0027760579f, + -0.0006404764f, + 0.0017085512f, + 0.0008304692f, + 0.0028326096f, + 0.0056343580f, + 0.0009314100f, + 0.0254833823f, + -0.0254189118f, + 0.0291898232f, + -0.0563710278f, + -0.3106076970f, + 0.0000000000f, + 0.2142108808f, + 0.0189623215f, + 0.0310216307f, + 0.0248734028f, + -0.0056517100f, + 0.0097512727f, + -0.0026260383f, + 0.0043208011f, + -0.0004976973f, + 0.0032972252f, + 0.0005866125f, + 0.0006945730f, + 0.0011083647f + }, + { + -0.0006916353f, /* Filter 172 */ + 0.0027971360f, + -0.0006382133f, + 0.0017453870f, + 0.0008288440f, + 0.0028957165f, + 0.0056372904f, + 0.0010524428f, + 0.0256016596f, + -0.0253310073f, + 0.0297585045f, + -0.0566290193f, + -0.3110454402f, + 0.0000000000f, + 0.2134194107f, + 0.0187394818f, + 0.0312470546f, + 0.0247976278f, + -0.0055280441f, + 0.0097708788f, + -0.0025959719f, + 0.0043456043f, + -0.0004925827f, + 0.0033205371f, + 0.0005839447f, + 0.0007150169f, + 0.0011061764f + }, + { + -0.0006839229f, /* Filter 173 */ + 0.0028181240f, + -0.0006359151f, + 0.0017821677f, + 0.0008271599f, + 0.0029588901f, + 0.0056399089f, + 0.0011740477f, + 0.0257194246f, + -0.0252416741f, + 0.0303291445f, + -0.0568868638f, + -0.3114798415f, + 0.0000000000f, + 0.2126267914f, + 0.0185172081f, + 0.0314701461f, + 0.0247211833f, + -0.0054047446f, + 0.0097898366f, + -0.0025658703f, + 0.0043700441f, + -0.0004874456f, + 0.0033436471f, + 0.0005812542f, + 0.0007353671f, + 0.0011039297f + }, + { + -0.0006761526f, /* Filter 174 */ + 0.0028390167f, + -0.0006335812f, + 0.0018188896f, + 0.0008254161f, + 0.0030221280f, + 0.0056422136f, + 0.0012962189f, + 0.0258366582f, + -0.0251509113f, + 0.0309017550f, + -0.0571445584f, + -0.3119108658f, + 0.0000000000f, + 0.2118330321f, + 0.0182954959f, + 0.0316909395f, + 0.0246440780f, + -0.0052818148f, + 0.0098081440f, + -0.0025357324f, + 0.0043941217f, + -0.0004822863f, + 0.0033665528f, + 0.0005785397f, + 0.0007556262f, + 0.0011016261f + }, + { + -0.0006683247f, /* Filter 175 */ + 0.0028598142f, + -0.0006312114f, + 0.0018555547f, + 0.0008236137f, + 0.0030854265f, + 0.0056442026f, + 0.0014189535f, + 0.0259533663f, + -0.0250587156f, + 0.0314763108f, + -0.0574021029f, + -0.3123385428f, + 0.0000000000f, + 0.2110381623f, + 0.0180743524f, + 0.0319094130f, + 0.0245663138f, + -0.0051592580f, + 0.0098258104f, + -0.0025055626f, + 0.0044178382f, + -0.0004771044f, + 0.0033892575f, + 0.0005758024f, + 0.0007757912f, + 0.0010992647f + }, + { + -0.0006604403f, /* Filter 176 */ + 0.0028805136f, + -0.0006288068f, + 0.0018921522f, + 0.0008217507f, + 0.0031487834f, + 0.0056458725f, + 0.0015422517f, + 0.0260695287f, + -0.0249650782f, + 0.0320528142f, + -0.0576594816f, + -0.3127628142f, + 0.0000000000f, + 0.2102421898f, + 0.0178537803f, + 0.0321255811f, + 0.0244879001f, + -0.0050370769f, + 0.0098428385f, + -0.0024753611f, + 0.0044411910f, + -0.0004719013f, + 0.0034117569f, + 0.0005730427f, + 0.0007958630f, + 0.0010968458f + }, + { + -0.0006524993f, /* Filter 177 */ + 0.0029011137f, + -0.0006263667f, + 0.0019286856f, + 0.0008198288f, + 0.0032121944f, + 0.0056472232f, + 0.0016661049f, + 0.0261851487f, + -0.0248700024f, + 0.0326312586f, + -0.0579166932f, + -0.3131837077f, + 0.0000000000f, + 0.2094451305f, + 0.0176337824f, + 0.0323394438f, + 0.0244088358f, + -0.0049152798f, + 0.0098592238f, + -0.0024451296f, + 0.0044641793f, + -0.0004666765f, + 0.0034340501f, + 0.0005702596f, + 0.0008158402f, + 0.0010943707f + }, + { + -0.0006445000f, /* Filter 178 */ + 0.0029216139f, + -0.0006238918f, + 0.0019651518f, + 0.0008178467f, + 0.0032756556f, + 0.0056482532f, + 0.0017905126f, + 0.0263002095f, + -0.0247734851f, + 0.0332116253f, + -0.0581737338f, + -0.3136011746f, + 0.0000000000f, + 0.2086469963f, + 0.0174143633f, + 0.0325509996f, + 0.0243291356f, + -0.0047938623f, + 0.0098749731f, + -0.0024148721f, + 0.0044868044f, + -0.0004614303f, + 0.0034561409f, + 0.0005674541f, + 0.0008357192f, + 0.0010918376f + }, + { + -0.0006364452f, /* Filter 179 */ + 0.0029420128f, + -0.0006213814f, + 0.0020015478f, + 0.0008158054f, + 0.0033391637f, + 0.0056489612f, + 0.0019154745f, + 0.0264147135f, + -0.0246755187f, + 0.0337939187f, + -0.0584305988f, + -0.3140152457f, + 0.0000000000f, + 0.2078478261f, + 0.0171955271f, + 0.0327602608f, + 0.0242488027f, + -0.0046728389f, + 0.0098900840f, + -0.0023845877f, + 0.0045090662f, + -0.0004561643f, + 0.0034780238f, + 0.0005646263f, + 0.0008555029f, + 0.0010892491f + }, + { + -0.0006283354f, /* Filter 180 */ + 0.0029623072f, + -0.0006188364f, + 0.0020378694f, + 0.0008137041f, + 0.0034027170f, + 0.0056493451f, + 0.0020409848f, + 0.0265286486f, + -0.0245761020f, + 0.0343781233f, + -0.0586872803f, + -0.3144258846f, + 0.0000000000f, + 0.2070476286f, + 0.0169772735f, + 0.0329672208f, + 0.0241678403f, + -0.0045522045f, + 0.0099045618f, + -0.0023542801f, + 0.0045309631f, + -0.0004508774f, + 0.0034997014f, + 0.0005617769f, + 0.0008751904f, + 0.0010866047f + }, + { + -0.0006201690f, /* Filter 181 */ + 0.0029824996f, + -0.0006162563f, + 0.0020741216f, + 0.0008115432f, + 0.0034663098f, + 0.0056494033f, + 0.0021670347f, + 0.0266420053f, + -0.0244752336f, + 0.0349642354f, + -0.0589437714f, + -0.3148330983f, + 0.0000000000f, + 0.2062464072f, + 0.0167596094f, + 0.0331718869f, + 0.0240862569f, + -0.0044319669f, + 0.0099184093f, + -0.0023239498f, + 0.0045524968f, + -0.0004455703f, + 0.0035211710f, + 0.0005589051f, + 0.0008947789f, + 0.0010839035f + }, + { + -0.0006119487f, /* Filter 182 */ + 0.0030025882f, + -0.0006136415f, + 0.0021102948f, + 0.0008093224f, + 0.0035299389f, + 0.0056491353f, + 0.0022936316f, + 0.0267547838f, + -0.0243729114f, + 0.0355522381f, + -0.0592000667f, + -0.3152368615f, + 0.0000000000f, + 0.2054441908f, + 0.0165425387f, + 0.0333742622f, + 0.0240040573f, + -0.0043121270f, + 0.0099316248f, + -0.0022936003f, + 0.0045736640f, + -0.0004402438f, + 0.0035424291f, + 0.0005560113f, + 0.0009142662f, + 0.0010811471f + }, + { + -0.0006036715f, /* Filter 183 */ + 0.0030225659f, + -0.0006109918f, + 0.0021463869f, + 0.0008070415f, + 0.0035936024f, + 0.0056485410f, + 0.0024207612f, + 0.0268669691f, + -0.0242691274f, + 0.0361421361f, + -0.0594561687f, + -0.3156371650f, + 0.0000000000f, + 0.2046409903f, + 0.0163260586f, + 0.0335743496f, + 0.0239212511f, + -0.0041926924f, + 0.0099442124f, + -0.0022632320f, + 0.0045944683f, + -0.0004348980f, + 0.0035634797f, + 0.0005530965f, + 0.0009336547f, + 0.0010783348f + }, + { + -0.0005953412f, /* Filter 184 */ + 0.0030424399f, + -0.0006083077f, + 0.0021824000f, + 0.0008047006f, + 0.0036572938f, + 0.0056476190f, + 0.0025484301f, + 0.0269785594f, + -0.0241638860f, + 0.0367339203f, + -0.0597120648f, + -0.3160340207f, + 0.0000000000f, + 0.2038368254f, + 0.0161101804f, + 0.0337721594f, + 0.0238378378f, + -0.0040736649f, + 0.0099561737f, + -0.0022328452f, + 0.0046149068f, + -0.0004295331f, + 0.0035843186f, + 0.0005501597f, + 0.0009529418f, + 0.0010754688f + }, + { + -0.0005869554f, /* Filter 185 */ + 0.0030622057f, + -0.0006055880f, + 0.0022183301f, + 0.0008022997f, + 0.0037210144f, + 0.0056463630f, + 0.0026766250f, + 0.0270895417f, + -0.0240571767f, + 0.0373275735f, + -0.0599677508f, + -0.3164273977f, + 0.0000000000f, + 0.2030317064f, + 0.0158948994f, + 0.0339676816f, + 0.0237538274f, + -0.0039550473f, + 0.0099675107f, + -0.0022024452f, + 0.0046349792f, + -0.0004241497f, + 0.0036049447f, + 0.0005472025f, + 0.0009721276f, + 0.0010725471f + }, + { + -0.0005785159f, /* Filter 186 */ + 0.0030818588f, + -0.0006028347f, + 0.0022541739f, + 0.0007998394f, + 0.0037847567f, + 0.0056447778f, + 0.0028053488f, + 0.0271999184f, + -0.0239490016f, + 0.0379230869f, + -0.0602232221f, + -0.3168172996f, + 0.0000000000f, + 0.2022256796f, + 0.0156802262f, + 0.0341609287f, + 0.0236692282f, + -0.0038368434f, + 0.0099782283f, + -0.0021720315f, + 0.0046546893f, + -0.0004187480f, + 0.0036253614f, + 0.0005442239f, + 0.0009912107f, + 0.0010695713f + }, + { + -0.0005700234f, /* Filter 187 */ + 0.0031013993f, + -0.0006000468f, + 0.0022899307f, + 0.0007973185f, + 0.0038485167f, + 0.0056428600f, + 0.0029345974f, + 0.0273096732f, + -0.0238393600f, + 0.0385204653f, + -0.0604784710f, + -0.3172037117f, + 0.0000000000f, + 0.2014187397f, + 0.0154661591f, + 0.0343519019f, + 0.0235840397f, + -0.0037190588f, + 0.0099883217f, + -0.0021416064f, + 0.0046740300f, + -0.0004133284f, + 0.0036455684f, + 0.0005412250f, + 0.0010101913f, + 0.0010665418f + }, + { + -0.0005614767f, /* Filter 188 */ + 0.0031208324f, + -0.0005972242f, + 0.0023255964f, + 0.0007947379f, + 0.0039122945f, + 0.0056406079f, + 0.0030643652f, + 0.0274188054f, + -0.0237282417f, + 0.0391196915f, + -0.0607334955f, + -0.3175866223f, + 0.0000000000f, + 0.2006108859f, + 0.0152527022f, + 0.0345406062f, + 0.0234982733f, + -0.0036016954f, + 0.0099978007f, + -0.0021111713f, + 0.0046930077f, + -0.0004078911f, + 0.0036655608f, + 0.0005382045f, + 0.0010290677f, + 0.0010634581f + }, + { + -0.0005528774f, /* Filter 189 */ + 0.0031401438f, + -0.0005943676f, + 0.0023611717f, + 0.0007920971f, + 0.0039760844f, + 0.0056380189f, + 0.0031946509f, + 0.0275273031f, + -0.0236156498f, + 0.0397207515f, + -0.0609882894f, + -0.3179660415f, + 0.0000000000f, + 0.1998021754f, + 0.0150398618f, + 0.0347270454f, + 0.0234119347f, + -0.0034847552f, + 0.0100066607f, + -0.0020807278f, + 0.0047116222f, + -0.0004024367f, + 0.0036853371f, + 0.0005351649f, + 0.0010478361f, + 0.0010603208f + }, + { + -0.0005442265f, /* Filter 190 */ + 0.0031593446f, + -0.0005914767f, + 0.0023966537f, + 0.0007893964f, + 0.0040398833f, + 0.0056350927f, + 0.0033254474f, + 0.0276351621f, + -0.0235015798f, + 0.0403236493f, + -0.0612428465f, + -0.3183419274f, + 0.0000000000f, + 0.1989925921f, + 0.0148276355f, + 0.0349112193f, + 0.0233250244f, + -0.0033682442f, + 0.0100149086f, + -0.0020502784f, + 0.0047298674f, + -0.0003969653f, + 0.0037048962f, + 0.0005321040f, + 0.0010665015f, + 0.0010571307f + }, + { + -0.0005355213f, /* Filter 191 */ + 0.0031784322f, + -0.0005885521f, + 0.0024320363f, + 0.0007866356f, + 0.0041036870f, + 0.0056318290f, + 0.0034567511f, + 0.0277423726f, + -0.0233860277f, + 0.0409283686f, + -0.0614971622f, + -0.3187142949f, + 0.0000000000f, + 0.1981821640f, + 0.0146160285f, + 0.0350931330f, + 0.0232375547f, + -0.0032521646f, + 0.0100225453f, + -0.0020198251f, + 0.0047477499f, + -0.0003914777f, + 0.0037242426f, + 0.0005290238f, + 0.0010850603f, + 0.0010538876f + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v17tx_fixed_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v17tx_fixed_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,115 @@ +#define TX_PULSESHAPER_GAIN 0.948561f +#define TX_PULSESHAPER_COEFF_SETS 10 +static const int16_t tx_pulseshaper[TX_PULSESHAPER_COEFF_SETS][9] = +{ + { + -89, /* Filter 0 */ + -561, + 2002, + -5223, + 19071, + 19071, + -5223, + 2002, + -561 + }, + { + 97, /* Filter 1 */ + -922, + 2553, + -6054, + 23507, + 14325, + -3959, + 1300, + -183 + }, + { + 297, /* Filter 2 */ + -1210, + 2855, + -6268, + 27331, + 9577, + -2461, + 548, + 159 + }, + { + 478, /* Filter 3 */ + -1370, + 2827, + -5713, + 30276, + 5120, + -924, + -157, + 426 + }, + { + 605, /* Filter 4 */ + -1359, + 2421, + -4291, + 32132, + 1207, + 482, + -741, + 593 + }, + { + 650, /* Filter 5 */ + -1150, + 1627, + -1970, + 32767, + -1970, + 1627, + -1150, + 650 + }, + { + 593, /* Filter 6 */ + -741, + 482, + 1207, + 32132, + -4291, + 2421, + -1359, + 605 + }, + { + 426, /* Filter 7 */ + -157, + -924, + 5120, + 30276, + -5713, + 2827, + -1370, + 478 + }, + { + 159, /* Filter 8 */ + 548, + -2461, + 9577, + 27331, + -6268, + 2855, + -1210, + 297 + }, + { + -183, /* Filter 9 */ + 1300, + -3959, + 14325, + 23507, + -6054, + 2553, + -922, + 97 + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v17tx_floating_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v17tx_floating_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,115 @@ +#define TX_PULSESHAPER_GAIN 1.000000f +#define TX_PULSESHAPER_COEFF_SETS 10 +static const float tx_pulseshaper[TX_PULSESHAPER_COEFF_SETS][9] = +{ + { + -0.0028949651f, /* Filter 0 */ + -0.0180558826f, + 0.0644370007f, + -0.1680546408f, + 0.6136031185f, + 0.6136031185f, + -0.1680546408f, + 0.0644370007f, + -0.0180558826f + }, + { + 0.0031457252f, /* Filter 1 */ + -0.0296755127f, + 0.0821537989f, + -0.1948071639f, + 0.7563219340f, + 0.4608861696f, + -0.1273859874f, + 0.0418434527f, + -0.0059021756f + }, + { + 0.0095859914f, /* Filter 2 */ + -0.0389394461f, + 0.0918555164f, + -0.2016880165f, + 0.8793516522f, + 0.3081344924f, + -0.0792085168f, + 0.0176601547f, + 0.0051283313f + }, + { + 0.0153896886f, /* Filter 3 */ + -0.0441001627f, + 0.0909724632f, + -0.1838386257f, + 0.9741012232f, + 0.1647552896f, + -0.0297442695f, + -0.0050682351f, + 0.0137350965f + }, + { + 0.0194884074f, /* Filter 4 */ + -0.0437412555f, + 0.0779044290f, + -0.1380831525f, + 1.0338273601f, + 0.0388498601f, + 0.0155354866f, + -0.0238603903f, + 0.0191007897f + }, + { + 0.0209425254f, /* Filter 5 */ + -0.0370198705f, + 0.0523524598f, + -0.0633894611f, + 1.0542286928f, + -0.0633894611f, + 0.0523524598f, + -0.0370198705f, + 0.0209425254f + }, + { + 0.0191007897f, /* Filter 6 */ + -0.0238603903f, + 0.0155354866f, + 0.0388498602f, + 1.0338273601f, + -0.1380831525f, + 0.0779044290f, + -0.0437412555f, + 0.0194884074f + }, + { + 0.0137350965f, /* Filter 7 */ + -0.0050682351f, + -0.0297442695f, + 0.1647552896f, + 0.9741012231f, + -0.1838386257f, + 0.0909724632f, + -0.0441001627f, + 0.0153896885f + }, + { + 0.0051283313f, /* Filter 8 */ + 0.0176601547f, + -0.0792085168f, + 0.3081344925f, + 0.8793516522f, + -0.2016880165f, + 0.0918555164f, + -0.0389394461f, + 0.0095859914f + }, + { + -0.0059021756f, /* Filter 9 */ + 0.0418434528f, + -0.1273859874f, + 0.4608861697f, + 0.7563219340f, + -0.1948071639f, + 0.0821537989f, + -0.0296755127f, + 0.0031457252f + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v22bis_rx_1200_fixed_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v22bis_rx_1200_fixed_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,944 @@ +#define RX_PULSESHAPER_1200_GAIN 32767.000000f +#define RX_PULSESHAPER_1200_COEFF_SETS 12 +static const int16_t rx_pulseshaper_1200_re[RX_PULSESHAPER_1200_COEFF_SETS][37] = +{ + { + 19, /* Filter 0 */ + 125, + 162, + 0, + -234, + -269, + -70, + 66, + -65, + -180, + 187, + 903, + 1071, + 0, + -1676, + -2284, + -825, + 1681, + 2960, + 1739, + -884, + -2540, + -1943, + 0, + 1379, + 1259, + 293, + -356, + -307, + -38, + -34, + -216, + -229, + 0, + 208, + 191, + 40 + }, + { + 21, /* Filter 1 */ + 131, + 166, + 0, + -235, + -266, + -67, + 58, + -83, + -194, + 195, + 932, + 1096, + 0, + -1700, + -2308, + -831, + 1688, + 2964, + 1737, + -880, + -2521, + -1922, + 0, + 1354, + 1228, + 284, + -340, + -284, + -28, + -38, + -222, + -231, + 0, + 205, + 185, + 39 + }, + { + 22, /* Filter 2 */ + 136, + 171, + 0, + -235, + -264, + -65, + 51, + -101, + -207, + 204, + 961, + 1122, + 0, + -1723, + -2331, + -836, + 1695, + 2967, + 1734, + -876, + -2502, + -1901, + 0, + 1328, + 1198, + 275, + -324, + -262, + -18, + -41, + -228, + -232, + 0, + 201, + 180, + 37 + }, + { + 24, /* Filter 3 */ + 142, + 175, + 0, + -236, + -260, + -63, + 43, + -120, + -221, + 212, + 990, + 1148, + 0, + -1747, + -2354, + -842, + 1701, + 2969, + 1730, + -872, + -2482, + -1880, + 0, + 1303, + 1168, + 266, + -309, + -241, + -8, + -45, + -234, + -233, + 0, + 198, + 175, + 35 + }, + { + 26, /* Filter 4 */ + 148, + 179, + 0, + -236, + -257, + -60, + 35, + -139, + -235, + 221, + 1020, + 1174, + 0, + -1769, + -2376, + -847, + 1707, + 2971, + 1726, + -867, + -2462, + -1858, + 0, + 1277, + 1138, + 256, + -294, + -220, + 0, + -48, + -239, + -234, + 0, + 194, + 169, + 33 + }, + { + 28, /* Filter 5 */ + 153, + 183, + 0, + -236, + -253, + -57, + 26, + -159, + -250, + 230, + 1049, + 1199, + 0, + -1792, + -2398, + -853, + 1712, + 2972, + 1722, + -862, + -2441, + -1837, + 0, + 1251, + 1108, + 247, + -279, + -199, + 9, + -51, + -244, + -235, + 0, + 191, + 164, + 31 + }, + { + 29, /* Filter 6 */ + 159, + 187, + 0, + -236, + -249, + -54, + 18, + -178, + -264, + 239, + 1079, + 1225, + 0, + -1814, + -2420, + -858, + 1718, + 2972, + 1718, + -858, + -2420, + -1814, + 0, + 1225, + 1079, + 239, + -264, + -178, + 18, + -54, + -249, + -236, + 0, + 187, + 159, + 29 + }, + { + 31, /* Filter 7 */ + 164, + 191, + 0, + -235, + -244, + -51, + 9, + -199, + -279, + 247, + 1108, + 1251, + 0, + -1837, + -2441, + -862, + 1722, + 2972, + 1712, + -853, + -2398, + -1792, + 0, + 1199, + 1049, + 230, + -250, + -159, + 26, + -57, + -253, + -236, + 0, + 183, + 153, + 28 + }, + { + 33, /* Filter 8 */ + 169, + 194, + 0, + -234, + -239, + -48, + 0, + -220, + -294, + 256, + 1138, + 1277, + 0, + -1858, + -2462, + -867, + 1726, + 2971, + 1707, + -847, + -2376, + -1769, + 0, + 1174, + 1020, + 221, + -235, + -139, + 35, + -60, + -257, + -236, + 0, + 179, + 148, + 26 + }, + { + 35, /* Filter 9 */ + 175, + 198, + 0, + -233, + -234, + -45, + -8, + -241, + -309, + 266, + 1168, + 1303, + 0, + -1880, + -2482, + -872, + 1730, + 2969, + 1701, + -842, + -2354, + -1747, + 0, + 1148, + 990, + 212, + -221, + -120, + 43, + -63, + -260, + -236, + 0, + 175, + 142, + 24 + }, + { + 37, /* Filter 10 */ + 180, + 201, + 0, + -232, + -228, + -41, + -18, + -262, + -324, + 275, + 1198, + 1328, + 0, + -1901, + -2502, + -876, + 1734, + 2967, + 1695, + -836, + -2331, + -1723, + 0, + 1122, + 961, + 204, + -207, + -101, + 51, + -65, + -264, + -235, + 0, + 171, + 136, + 22 + }, + { + 39, /* Filter 11 */ + 185, + 205, + 0, + -231, + -222, + -38, + -28, + -284, + -340, + 284, + 1228, + 1354, + 0, + -1922, + -2521, + -880, + 1737, + 2964, + 1688, + -831, + -2308, + -1700, + 0, + 1096, + 932, + 195, + -194, + -83, + 58, + -67, + -266, + -235, + 0, + 166, + 131, + 21 + } +}; +static const int16_t rx_pulseshaper_1200_im[RX_PULSESHAPER_1200_COEFF_SETS][37] = +{ + { + -59, /* Filter 0 */ + -40, + 118, + 257, + 170, + -87, + -216, + -90, + 0, + -248, + -576, + -293, + 778, + 1705, + 1218, + -742, + -2540, + -2314, + 0, + 2394, + 2721, + 825, + -1411, + -2072, + -1002, + 409, + 903, + 490, + 0, + -53, + 106, + 70, + -166, + -289, + -151, + 62, + 125 + }, + { + -65, /* Filter 1 */ + -42, + 121, + 261, + 170, + -86, + -209, + -80, + 0, + -267, + -602, + -303, + 796, + 1737, + 1235, + -749, + -2558, + -2324, + 0, + 2391, + 2709, + 819, + -1396, + -2043, + -983, + 399, + 875, + 468, + 0, + -39, + 118, + 72, + -167, + -288, + -149, + 60, + 120 + }, + { + -70, /* Filter 2 */ + -44, + 124, + 265, + 171, + -85, + -201, + -70, + 0, + -285, + -628, + -312, + 815, + 1768, + 1252, + -757, + -2575, + -2333, + 0, + 2387, + 2696, + 813, + -1381, + -2013, + -965, + 389, + 847, + 447, + 0, + -25, + 129, + 74, + -168, + -286, + -146, + 58, + 114 + }, + { + -75, /* Filter 3 */ + -46, + 127, + 268, + 171, + -84, + -194, + -59, + 0, + -305, + -654, + -321, + 834, + 1799, + 1269, + -764, + -2593, + -2342, + 0, + 2382, + 2683, + 806, + -1366, + -1983, + -946, + 379, + 818, + 426, + 0, + -12, + 139, + 76, + -169, + -284, + -144, + 56, + 108 + }, + { + -81, /* Filter 4 */ + -48, + 130, + 271, + 171, + -83, + -186, + -48, + 0, + -324, + -681, + -331, + 853, + 1830, + 1285, + -772, + -2609, + -2350, + 0, + 2376, + 2670, + 800, + -1350, + -1953, + -928, + 370, + 790, + 405, + 0, + 0, + 149, + 77, + -170, + -282, + -141, + 55, + 103 + }, + { + -86, /* Filter 5 */ + -49, + 133, + 274, + 171, + -82, + -177, + -37, + 0, + -344, + -708, + -341, + 871, + 1861, + 1302, + -779, + -2625, + -2357, + 0, + 2371, + 2655, + 793, + -1334, + -1923, + -909, + 360, + 763, + 384, + 0, + 13, + 159, + 79, + -171, + -280, + -138, + 53, + 97 + }, + { + -92, /* Filter 6 */ + -51, + 136, + 277, + 171, + -80, + -168, + -25, + 0, + -364, + -735, + -350, + 890, + 1892, + 1318, + -786, + -2641, + -2364, + 0, + 2364, + 2641, + 786, + -1318, + -1892, + -890, + 350, + 735, + 364, + 0, + 25, + 168, + 80, + -171, + -277, + -136, + 51, + 92 + }, + { + -97, /* Filter 7 */ + -53, + 138, + 280, + 171, + -79, + -159, + -13, + 0, + -384, + -763, + -360, + 909, + 1923, + 1334, + -793, + -2655, + -2371, + 0, + 2357, + 2625, + 779, + -1302, + -1861, + -871, + 341, + 708, + 344, + 0, + 37, + 177, + 82, + -171, + -274, + -133, + 49, + 86 + }, + { + -103, /* Filter 8 */ + -55, + 141, + 282, + 170, + -77, + -149, + 0, + 0, + -405, + -790, + -370, + 928, + 1953, + 1350, + -800, + -2670, + -2376, + 0, + 2350, + 2609, + 772, + -1285, + -1830, + -853, + 331, + 681, + 324, + 0, + 48, + 186, + 83, + -171, + -271, + -130, + 48, + 81 + }, + { + -108, /* Filter 9 */ + -56, + 144, + 284, + 169, + -76, + -139, + 12, + 0, + -426, + -818, + -379, + 946, + 1983, + 1366, + -806, + -2683, + -2382, + 0, + 2342, + 2593, + 764, + -1269, + -1799, + -834, + 321, + 654, + 305, + 0, + 59, + 194, + 84, + -171, + -268, + -127, + 46, + 75 + }, + { + -114, /* Filter 10 */ + -58, + 146, + 286, + 168, + -74, + -129, + 25, + 0, + -447, + -847, + -389, + 965, + 2013, + 1381, + -813, + -2696, + -2387, + 0, + 2333, + 2575, + 757, + -1252, + -1768, + -815, + 312, + 628, + 285, + 0, + 70, + 201, + 85, + -171, + -265, + -124, + 44, + 70 + }, + { + -120, /* Filter 11 */ + -60, + 149, + 288, + 167, + -72, + -118, + 39, + 0, + -468, + -875, + -399, + 983, + 2043, + 1396, + -819, + -2709, + -2391, + 0, + 2324, + 2558, + 749, + -1235, + -1737, + -796, + 303, + 602, + 267, + 0, + 80, + 209, + 86, + -170, + -261, + -121, + 42, + 65 + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v22bis_rx_1200_floating_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v22bis_rx_1200_floating_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,944 @@ +#define RX_PULSESHAPER_1200_GAIN 1.000000f +#define RX_PULSESHAPER_1200_COEFF_SETS 12 +static const float rx_pulseshaper_1200_re[RX_PULSESHAPER_1200_COEFF_SETS][37] = +{ + { + 0.0005944581f, /* Filter 0 */ + 0.0038355882f, + 0.0049609968f, + -0.0000000000f, + -0.0071488562f, + -0.0082219847f, + -0.0021426098f, + 0.0020161991f, + -0.0020114800f, + -0.0055144152f, + 0.0057163992f, + 0.0275887139f, + 0.0326864751f, + -0.0000000000f, + -0.0511755900f, + -0.0697114085f, + -0.0251880617f, + 0.0513295208f, + 0.0903420234f, + 0.0531017090f, + -0.0269855260f, + -0.0775208828f, + -0.0593000660f, + -0.0000000000f, + 0.0421113111f, + 0.0384252560f, + 0.0089641165f, + -0.0108732375f, + -0.0093816835f, + -0.0011823183f, + -0.0010599786f, + -0.0065942748f, + -0.0069940380f, + -0.0000000000f, + 0.0063634379f, + 0.0058320016f, + 0.0012462581f + }, + { + 0.0006465801f, /* Filter 1 */ + 0.0040066013f, + 0.0050934529f, + -0.0000000000f, + -0.0071761839f, + -0.0081457795f, + -0.0020744514f, + 0.0017937337f, + -0.0025533503f, + -0.0059239838f, + 0.0059724768f, + 0.0284672348f, + 0.0334715400f, + -0.0000000000f, + -0.0518963804f, + -0.0704369116f, + -0.0253682062f, + 0.0515426342f, + 0.0904586247f, + 0.0530207977f, + -0.0268674426f, + -0.0769505513f, + -0.0586725740f, + -0.0000000000f, + 0.0413316408f, + 0.0375040844f, + 0.0086805868f, + -0.0103918880f, + -0.0086971142f, + -0.0008717462f, + -0.0011727478f, + -0.0067921410f, + -0.0070502812f, + -0.0000000000f, + 0.0062655968f, + 0.0056738985f, + 0.0011906836f + }, + { + 0.0006992621f, /* Filter 2 */ + 0.0041774074f, + 0.0052236926f, + -0.0000000000f, + -0.0071967801f, + -0.0080593114f, + -0.0020023867f, + 0.0015632808f, + -0.0031086542f, + -0.0063406470f, + 0.0062314920f, + 0.0293513452f, + 0.0342577560f, + -0.0000000000f, + -0.0526102914f, + -0.0711499279f, + -0.0255430962f, + 0.0517441335f, + 0.0905540931f, + 0.0529275462f, + -0.0267433682f, + -0.0763645934f, + -0.0580350475f, + -0.0000000000f, + 0.0405498128f, + 0.0365850135f, + 0.0083990788f, + -0.0099164224f, + -0.0080249289f, + -0.0005691347f, + -0.0012813449f, + -0.0069782257f, + -0.0070980966f, + -0.0000000000f, + 0.0061636632f, + 0.0055136150f, + 0.0011351585f + }, + { + 0.0007524586f, /* Filter 3 */ + 0.0043478209f, + 0.0053515345f, + -0.0000000000f, + -0.0072104667f, + -0.0079624054f, + -0.0019263796f, + 0.0013248222f, + -0.0036773273f, + -0.0067643060f, + 0.0064933625f, + 0.0302407132f, + 0.0350448010f, + -0.0000000000f, + -0.0533169949f, + -0.0718501024f, + -0.0257126472f, + 0.0519339297f, + 0.0906283998f, + 0.0528219995f, + -0.0266133659f, + -0.0757632982f, + -0.0573877799f, + -0.0000000000f, + 0.0397661628f, + 0.0356684082f, + 0.0081196950f, + -0.0094469844f, + -0.0073652682f, + -0.0002745080f, + -0.0013857854f, + -0.0071526572f, + -0.0071376445f, + -0.0000000000f, + 0.0060578290f, + 0.0053513607f, + 0.0010797387f + }, + { + 0.0008061228f, /* Filter 4 */ + 0.0045176541f, + 0.0054767942f, + -0.0000000000f, + -0.0072170648f, + -0.0078548930f, + -0.0018463962f, + 0.0010783437f, + -0.0042592917f, + -0.0071948553f, + 0.0067580050f, + 0.0311350075f, + 0.0358323492f, + -0.0000000000f, + -0.0540161669f, + -0.0725371076f, + -0.0258767749f, + 0.0521119220f, + 0.0906815023f, + 0.0527042181f, + -0.0264775002f, + -0.0751469523f, + -0.0567310773f, + -0.0000000000f, + 0.0389810295f, + 0.0347546342f, + 0.0078425317f, + -0.0089837114f, + -0.0067182711f, + 0.0000121147f, + -0.0014860895f, + -0.0073155681f, + -0.0071690834f, + -0.0000000000f, + 0.0059482846f, + 0.0051873402f, + 0.0010244801f + }, + { + 0.0008602070f, /* Filter 5 */ + 0.0046867184f, + 0.0055992856f, + -0.0000000000f, + -0.0072163979f, + -0.0077366100f, + -0.0017624047f, + 0.0008238360f, + -0.0048544647f, + -0.0076321872f, + 0.0070253327f, + 0.0320338908f, + 0.0366200761f, + -0.0000000000f, + -0.0547074810f, + -0.0732106139f, + -0.0260354008f, + 0.0522780261f, + 0.0907133744f, + 0.0525742489f, + -0.0263358366f, + -0.0745158480f, + -0.0560652526f, + -0.0000000000f, + 0.0381947481f, + 0.0338440552f, + 0.0075676877f, + -0.0085267369f, + -0.0060840594f, + 0.0002907188f, + -0.0015822779f, + -0.0074671003f, + -0.0071925765f, + -0.0000000000f, + 0.0058352199f, + 0.0050217593f, + 0.0009694368f + }, + { + 0.0009146617f, /* Filter 6 */ + 0.0048548193f, + 0.0057188240f, + -0.0000000000f, + -0.0072082928f, + -0.0076073982f, + -0.0016743743f, + 0.0005612938f, + -0.0054627541f, + -0.0080761873f, + 0.0072952570f, + 0.0329370235f, + 0.0374076526f, + -0.0000000000f, + -0.0553906148f, + -0.0738702978f, + -0.0261884465f, + 0.0524321605f, + 0.0907240049f, + 0.0524321605f, + -0.0261884465f, + -0.0738702978f, + -0.0553906148f, + -0.0000000000f, + 0.0374076525f, + 0.0329370235f, + 0.0072952570f, + -0.0080761873f, + -0.0054627541f, + 0.0005612938f, + -0.0016743743f, + -0.0076073982f, + -0.0072082928f, + -0.0000000000f, + 0.0057188240f, + 0.0048548193f, + 0.0009146617f + }, + { + 0.0009694368f, /* Filter 7 */ + 0.0050217593f, + 0.0058352199f, + -0.0000000000f, + -0.0071925765f, + -0.0074671003f, + -0.0015822779f, + 0.0002907188f, + -0.0060840594f, + -0.0085267369f, + 0.0075676877f, + 0.0338440552f, + 0.0381947481f, + -0.0000000000f, + -0.0560652526f, + -0.0745158480f, + -0.0263358366f, + 0.0525742489f, + 0.0907133744f, + 0.0522780261f, + -0.0260354008f, + -0.0732106139f, + -0.0547074810f, + -0.0000000000f, + 0.0366200761f, + 0.0320338908f, + 0.0070253327f, + -0.0076321872f, + -0.0048544647f, + 0.0008238360f, + -0.0017624047f, + -0.0077366100f, + -0.0072163979f, + -0.0000000000f, + 0.0055992856f, + 0.0046867184f, + 0.0008602070f + }, + { + 0.0010244801f, /* Filter 8 */ + 0.0051873402f, + 0.0059482846f, + -0.0000000000f, + -0.0071690834f, + -0.0073155681f, + -0.0014860895f, + 0.0000121147f, + -0.0067182711f, + -0.0089837114f, + 0.0078425317f, + 0.0347546343f, + 0.0389810295f, + -0.0000000000f, + -0.0567310773f, + -0.0751469523f, + -0.0264775002f, + 0.0527042181f, + 0.0906815023f, + 0.0521119220f, + -0.0258767749f, + -0.0725371076f, + -0.0540161669f, + -0.0000000000f, + 0.0358323491f, + 0.0311350075f, + 0.0067580050f, + -0.0071948553f, + -0.0042592917f, + 0.0010783437f, + -0.0018463962f, + -0.0078548930f, + -0.0072170648f, + -0.0000000000f, + 0.0054767942f, + 0.0045176541f, + 0.0008061228f + }, + { + 0.0010797387f, /* Filter 9 */ + 0.0053513607f, + 0.0060578290f, + -0.0000000000f, + -0.0071376445f, + -0.0071526572f, + -0.0013857854f, + -0.0002745080f, + -0.0073652682f, + -0.0094469844f, + 0.0081196950f, + 0.0356684082f, + 0.0397661628f, + -0.0000000000f, + -0.0573877799f, + -0.0757632982f, + -0.0266133659f, + 0.0528219995f, + 0.0906283998f, + 0.0519339297f, + -0.0257126472f, + -0.0718501024f, + -0.0533169949f, + -0.0000000000f, + 0.0350448010f, + 0.0302407132f, + 0.0064933625f, + -0.0067643060f, + -0.0036773273f, + 0.0013248222f, + -0.0019263796f, + -0.0079624054f, + -0.0072104667f, + -0.0000000000f, + 0.0053515345f, + 0.0043478209f, + 0.0007524586f + }, + { + 0.0011351585f, /* Filter 10 */ + 0.0055136150f, + 0.0061636632f, + -0.0000000000f, + -0.0070980966f, + -0.0069782257f, + -0.0012813449f, + -0.0005691347f, + -0.0080249289f, + -0.0099164224f, + 0.0083990788f, + 0.0365850135f, + 0.0405498128f, + -0.0000000000f, + -0.0580350475f, + -0.0763645934f, + -0.0267433682f, + 0.0529275462f, + 0.0905540931f, + 0.0517441335f, + -0.0255430962f, + -0.0711499279f, + -0.0526102914f, + -0.0000000000f, + 0.0342577560f, + 0.0293513451f, + 0.0062314920f, + -0.0063406470f, + -0.0031086542f, + 0.0015632808f, + -0.0020023867f, + -0.0080593114f, + -0.0071967801f, + -0.0000000000f, + 0.0052236926f, + 0.0041774074f, + 0.0006992621f + }, + { + 0.0011906836f, /* Filter 11 */ + 0.0056738985f, + 0.0062655968f, + -0.0000000000f, + -0.0070502812f, + -0.0067921410f, + -0.0011727478f, + -0.0008717462f, + -0.0086971142f, + -0.0103918880f, + 0.0086805868f, + 0.0375040844f, + 0.0413316408f, + -0.0000000000f, + -0.0586725740f, + -0.0769505513f, + -0.0268674426f, + 0.0530207977f, + 0.0904586247f, + 0.0515426342f, + -0.0253682062f, + -0.0704369116f, + -0.0518963804f, + -0.0000000000f, + 0.0334715400f, + 0.0284672348f, + 0.0059724768f, + -0.0059239838f, + -0.0025533503f, + 0.0017937337f, + -0.0020744514f, + -0.0081457795f, + -0.0071761839f, + -0.0000000000f, + 0.0050934529f, + 0.0040066013f, + 0.0006465801f + } +}; +static const float rx_pulseshaper_1200_im[RX_PULSESHAPER_1200_COEFF_SETS][37] = +{ + { + -0.0018295539f, /* Filter 0 */ + -0.0012462581f, + 0.0036043752f, + 0.0078656419f, + 0.0051939480f, + -0.0026714848f, + -0.0065942748f, + -0.0027750599f, + -0.0000000000f, + -0.0075899414f, + -0.0175932678f, + -0.0089641165f, + 0.0237481142f, + 0.0520524432f, + 0.0371812426f, + -0.0226506097f, + -0.0775208828f, + -0.0706490244f, + 0.0000000000f, + 0.0730882322f, + 0.0830529093f, + 0.0251880617f, + -0.0430840199f, + -0.0632565081f, + -0.0305956585f, + 0.0124851225f, + 0.0275887139f, + 0.0149657275f, + 0.0000000000f, + -0.0016273215f, + 0.0032622786f, + 0.0021426098f, + -0.0050814660f, + -0.0088364722f, + -0.0046233083f, + 0.0018949322f, + 0.0038355882f + }, + { + -0.0019899690f, /* Filter 1 */ + -0.0013018237f, + 0.0037006101f, + 0.0079812854f, + 0.0052138028f, + -0.0026467242f, + -0.0063845049f, + -0.0024688626f, + -0.0000000000f, + -0.0081536643f, + -0.0183813935f, + -0.0092495653f, + 0.0243184973f, + 0.0530130803f, + 0.0377049274f, + -0.0228863399f, + -0.0780753105f, + -0.0709423499f, + 0.0000000000f, + 0.0729768673f, + 0.0826894857f, + 0.0250027498f, + -0.0426281202f, + -0.0623574663f, + -0.0300291948f, + 0.0121858157f, + 0.0267160989f, + 0.0143032067f, + 0.0000000000f, + -0.0011998558f, + 0.0036093465f, + 0.0022069004f, + -0.0051223291f, + -0.0087945988f, + -0.0045522226f, + 0.0018435614f, + 0.0036645473f + }, + { + -0.0021521075f, /* Filter 2 */ + -0.0013573219f, + 0.0037952348f, + 0.0080913986f, + 0.0052287668f, + -0.0026186290f, + -0.0061627125f, + -0.0021516714f, + -0.0000000000f, + -0.0087271518f, + -0.0191785603f, + -0.0095368301f, + 0.0248897166f, + 0.0539702141f, + 0.0382236141f, + -0.0231180130f, + -0.0786135668f, + -0.0712196898f, + 0.0000000000f, + 0.0728485177f, + 0.0823076239f, + 0.0248123605f, + -0.0421649301f, + -0.0614507444f, + -0.0294611635f, + 0.0118871915f, + 0.0258497066f, + 0.0136487845f, + 0.0000000000f, + -0.0007833467f, + 0.0039435742f, + 0.0022673630f, + -0.0051570691f, + -0.0087448582f, + -0.0044781635f, + 0.0017914821f, + 0.0034936588f + }, + { + -0.0023158293f, /* Filter 3 */ + -0.0014126926f, + 0.0038881174f, + 0.0081957427f, + 0.0052387107f, + -0.0025871424f, + -0.0059287867f, + -0.0018234614f, + -0.0000000000f, + -0.0093102685f, + -0.0199845150f, + -0.0098258033f, + 0.0254615384f, + 0.0549234238f, + 0.0387370642f, + -0.0233455134f, + -0.0791353911f, + -0.0714809219f, + 0.0000000000f, + 0.0727032451f, + 0.0819075180f, + 0.0246169878f, + -0.0416946627f, + -0.0605367479f, + -0.0288918084f, + 0.0115893684f, + 0.0249898517f, + 0.0130026585f, + 0.0000000000f, + -0.0003778279f, + 0.0042650089f, + 0.0023240392f, + -0.0051858023f, + -0.0086874779f, + -0.0044012704f, + 0.0017387625f, + 0.0033230939f + }, + { + -0.0024809909f, /* Filter 4 */ + -0.0014678748f, + 0.0039791239f, + 0.0082940836f, + 0.0052435045f, + -0.0025522094f, + -0.0056826233f, + -0.0014842128f, + -0.0000000000f, + -0.0099028688f, + -0.0207990006f, + -0.0101163772f, + 0.0260337255f, + 0.0558722880f, + 0.0392450425f, + -0.0235687350f, + -0.0796405240f, + -0.0717259073f, + 0.0000000000f, + 0.0725411330f, + 0.0814893666f, + 0.0244167249f, + -0.0412175403f, + -0.0596159016f, + -0.0283213757f, + 0.0112924652f, + 0.0241368306f, + 0.0123650179f, + 0.0000000000f, + 0.0000166744f, + 0.0045737133f, + 0.0023769722f, + -0.0052086440f, + -0.0086226877f, + -0.0043216818f, + 0.0016854690f, + 0.0031530254f + }, + { + -0.0026474449f, /* Filter 5 */ + -0.0015228071f, + 0.0040681191f, + 0.0083861837f, + 0.0052430199f, + -0.0025137770f, + -0.0054241238f, + -0.0011339130f, + -0.0000000000f, + -0.0105048045f, + -0.0216217509f, + -0.0104084421f, + 0.0266060427f, + 0.0568163868f, + 0.0397473115f, + -0.0237875704f, + -0.0801287243f, + -0.0719545300f, + 0.0000000000f, + 0.0723622457f, + 0.0810533708f, + 0.0242116667f, + -0.0407337903f, + -0.0586886174f, + -0.0277501089f, + 0.0109966001f, + 0.0232909479f, + 0.0117360466f, + 0.0000000000f, + 0.0004001402f, + 0.0048697507f, + 0.0024262080f, + -0.0052257127f, + -0.0085507200f, + -0.0042395355f, + 0.0016316685f, + 0.0029836196f + }, + { + -0.0028150393f, /* Filter 6 */ + -0.0015774264f, + 0.0041549688f, + 0.0084718067f, + 0.0052371313f, + -0.0024717935f, + -0.0051531942f, + -0.0007725546f, + -0.0000000000f, + -0.0111159182f, + -0.0224524923f, + -0.0107018877f, + 0.0271782505f, + 0.0577553021f, + 0.0402436373f, + -0.0240019147f, + -0.0805997506f, + -0.0721666777f, + 0.0000000000f, + 0.0721666777f, + 0.0805997506f, + 0.0240019147f, + -0.0402436373f, + -0.0577553021f, + -0.0271782505f, + 0.0107018876f, + 0.0224524923f, + 0.0111159182f, + 0.0000000000f, + 0.0007725546f, + 0.0051531942f, + 0.0024717935f, + -0.0052371313f, + -0.0084718067f, + -0.0041549688f, + 0.0015774264f, + 0.0028150393f + }, + { + -0.0029836196f, /* Filter 7 */ + -0.0016316685f, + 0.0042395355f, + 0.0085507200f, + 0.0052257127f, + -0.0024262080f, + -0.0048697507f, + -0.0004001402f, + -0.0000000000f, + -0.0117360466f, + -0.0232909479f, + -0.0109966001f, + 0.0277501089f, + 0.0586886174f, + 0.0407337903f, + -0.0242116667f, + -0.0810533708f, + -0.0723622457f, + 0.0000000000f, + 0.0719545299f, + 0.0801287243f, + 0.0237875704f, + -0.0397473115f, + -0.0568163868f, + -0.0266060427f, + 0.0104084421f, + 0.0216217509f, + 0.0105048045f, + 0.0000000000f, + 0.0011339130f, + 0.0054241238f, + 0.0025137770f, + -0.0052430199f, + -0.0083861837f, + -0.0040681191f, + 0.0015228071f, + 0.0026474449f + }, + { + -0.0031530254f, /* Filter 8 */ + -0.0016854690f, + 0.0043216818f, + 0.0086226877f, + 0.0052086440f, + -0.0023769722f, + -0.0045737133f, + -0.0000166744f, + -0.0000000000f, + -0.0123650179f, + -0.0241368306f, + -0.0112924652f, + 0.0283213757f, + 0.0596159016f, + 0.0412175403f, + -0.0244167249f, + -0.0814893666f, + -0.0725411330f, + 0.0000000000f, + 0.0717259073f, + 0.0796405240f, + 0.0235687350f, + -0.0392450425f, + -0.0558722880f, + -0.0260337255f, + 0.0101163772f, + 0.0207990006f, + 0.0099028688f, + 0.0000000000f, + 0.0014842128f, + 0.0056826233f, + 0.0025522094f, + -0.0052435045f, + -0.0082940836f, + -0.0039791239f, + 0.0014678748f, + 0.0024809909f + }, + { + -0.0033230939f, /* Filter 9 */ + -0.0017387625f, + 0.0044012704f, + 0.0086874779f, + 0.0051858023f, + -0.0023240392f, + -0.0042650089f, + 0.0003778279f, + -0.0000000000f, + -0.0130026585f, + -0.0249898517f, + -0.0115893684f, + 0.0288918084f, + 0.0605367479f, + 0.0416946627f, + -0.0246169878f, + -0.0819075180f, + -0.0727032451f, + 0.0000000000f, + 0.0714809218f, + 0.0791353911f, + 0.0233455134f, + -0.0387370642f, + -0.0549234238f, + -0.0254615383f, + 0.0098258033f, + 0.0199845150f, + 0.0093102685f, + 0.0000000000f, + 0.0018234614f, + 0.0059287867f, + 0.0025871424f, + -0.0052387107f, + -0.0081957427f, + -0.0038881174f, + 0.0014126926f, + 0.0023158293f + }, + { + -0.0034936588f, /* Filter 10 */ + -0.0017914821f, + 0.0044781635f, + 0.0087448582f, + 0.0051570691f, + -0.0022673630f, + -0.0039435742f, + 0.0007833467f, + -0.0000000000f, + -0.0136487845f, + -0.0258497066f, + -0.0118871915f, + 0.0294611635f, + 0.0614507444f, + 0.0421649301f, + -0.0248123605f, + -0.0823076239f, + -0.0728485177f, + 0.0000000000f, + 0.0712196898f, + 0.0786135668f, + 0.0231180130f, + -0.0382236141f, + -0.0539702141f, + -0.0248897166f, + 0.0095368301f, + 0.0191785603f, + 0.0087271518f, + 0.0000000000f, + 0.0021516714f, + 0.0061627125f, + 0.0026186290f, + -0.0052287668f, + -0.0080913986f, + -0.0037952348f, + 0.0013573219f, + 0.0021521075f + }, + { + -0.0036645473f, /* Filter 11 */ + -0.0018435614f, + 0.0045522226f, + 0.0087945988f, + 0.0051223291f, + -0.0022069004f, + -0.0036093465f, + 0.0011998558f, + -0.0000000000f, + -0.0143032067f, + -0.0267160990f, + -0.0121858157f, + 0.0300291948f, + 0.0623574663f, + 0.0426281202f, + -0.0250027498f, + -0.0826894857f, + -0.0729768673f, + 0.0000000000f, + 0.0709423499f, + 0.0780753105f, + 0.0228863399f, + -0.0377049274f, + -0.0530130803f, + -0.0243184973f, + 0.0092495653f, + 0.0183813935f, + 0.0081536643f, + 0.0000000000f, + 0.0024688626f, + 0.0063845049f, + 0.0026467242f, + -0.0052138028f, + -0.0079812854f, + -0.0037006101f, + 0.0013018237f, + 0.0019899690f + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v22bis_rx_2400_fixed_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v22bis_rx_2400_fixed_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,944 @@ +#define RX_PULSESHAPER_2400_GAIN 32767.000000f +#define RX_PULSESHAPER_2400_COEFF_SETS 12 +static const int16_t rx_pulseshaper_2400_re[RX_PULSESHAPER_2400_COEFF_SETS][37] = +{ + { + 50, /* Filter 0 */ + -106, + -62, + 257, + -89, + -229, + 183, + 34, + 65, + -94, + -490, + 768, + 409, + -1705, + 640, + 1943, + -2160, + -884, + 2960, + -914, + -2314, + 2160, + 742, + -2072, + 527, + 1071, + -768, + -187, + 307, + -20, + 90, + -183, + -87, + 289, + -79, + -162, + 106 + }, + { + 55, /* Filter 1 */ + -111, + -63, + 261, + -89, + -227, + 177, + 30, + 83, + -102, + -512, + 793, + 418, + -1737, + 649, + 1963, + -2176, + -887, + 2964, + -913, + -2304, + 2144, + 734, + -2043, + 517, + 1045, + -744, + -179, + 284, + -15, + 100, + -189, + -88, + 288, + -78, + -158, + 102 + }, + { + 59, /* Filter 2 */ + -116, + -65, + 265, + -90, + -224, + 171, + 26, + 101, + -109, + -534, + 818, + 428, + -1768, + 658, + 1983, + -2191, + -891, + 2967, + -911, + -2294, + 2128, + 726, + -2013, + 507, + 1019, + -720, + -170, + 262, + -9, + 109, + -194, + -88, + 286, + -77, + -153, + 97 + }, + { + 64, /* Filter 3 */ + -121, + -66, + 268, + -90, + -221, + 165, + 22, + 120, + -116, + -557, + 842, + 438, + -1799, + 667, + 2002, + -2205, + -894, + 2969, + -909, + -2283, + 2111, + 718, + -1983, + 497, + 994, + -696, + -162, + 241, + -4, + 118, + -199, + -89, + 284, + -75, + -149, + 92 + }, + { + 69, /* Filter 4 */ + -125, + -68, + 271, + -90, + -218, + 158, + 18, + 139, + -123, + -579, + 867, + 448, + -1830, + 676, + 2021, + -2219, + -897, + 2971, + -907, + -2271, + 2094, + 710, + -1953, + 487, + 968, + -672, + -154, + 220, + 0, + 127, + -203, + -89, + 282, + -74, + -144, + 87 + }, + { + 73, /* Filter 5 */ + -130, + -70, + 274, + -90, + -215, + 151, + 14, + 159, + -131, + -602, + 892, + 458, + -1861, + 684, + 2040, + -2233, + -900, + 2972, + -905, + -2259, + 2077, + 701, + -1923, + 478, + 943, + -649, + -146, + 199, + 5, + 135, + -208, + -90, + 280, + -73, + -139, + 83 + }, + { + 78, /* Filter 6 */ + -135, + -71, + 277, + -90, + -212, + 143, + 9, + 178, + -139, + -625, + 918, + 468, + -1892, + 693, + 2059, + -2246, + -903, + 2972, + -903, + -2246, + 2059, + 693, + -1892, + 468, + 918, + -625, + -139, + 178, + 9, + 143, + -212, + -90, + 277, + -71, + -135, + 78 + }, + { + 83, /* Filter 7 */ + -139, + -73, + 280, + -90, + -208, + 135, + 5, + 199, + -146, + -649, + 943, + 478, + -1923, + 701, + 2077, + -2259, + -905, + 2972, + -900, + -2233, + 2040, + 684, + -1861, + 458, + 892, + -602, + -131, + 159, + 14, + 151, + -215, + -90, + 274, + -70, + -130, + 73 + }, + { + 87, /* Filter 8 */ + -144, + -74, + 282, + -89, + -203, + 127, + 0, + 220, + -154, + -672, + 968, + 487, + -1953, + 710, + 2094, + -2271, + -907, + 2971, + -897, + -2219, + 2021, + 676, + -1830, + 448, + 867, + -579, + -123, + 139, + 18, + 158, + -218, + -90, + 271, + -68, + -125, + 69 + }, + { + 92, /* Filter 9 */ + -149, + -75, + 284, + -89, + -199, + 118, + -4, + 241, + -162, + -696, + 994, + 497, + -1983, + 718, + 2111, + -2283, + -909, + 2969, + -894, + -2205, + 2002, + 667, + -1799, + 438, + 842, + -557, + -116, + 120, + 22, + 165, + -221, + -90, + 268, + -66, + -121, + 64 + }, + { + 97, /* Filter 10 */ + -153, + -77, + 286, + -88, + -194, + 109, + -9, + 262, + -170, + -720, + 1019, + 507, + -2013, + 726, + 2128, + -2294, + -911, + 2967, + -891, + -2191, + 1983, + 658, + -1768, + 428, + 818, + -534, + -109, + 101, + 26, + 171, + -224, + -90, + 265, + -65, + -116, + 59 + }, + { + 102, /* Filter 11 */ + -158, + -78, + 288, + -88, + -189, + 100, + -15, + 284, + -179, + -744, + 1045, + 517, + -2043, + 734, + 2144, + -2304, + -913, + 2964, + -887, + -2176, + 1963, + 649, + -1737, + 418, + 793, + -512, + -102, + 83, + 30, + 177, + -227, + -89, + 261, + -63, + -111, + 55 + } +}; +static const int16_t rx_pulseshaper_2400_im[RX_PULSESHAPER_2400_COEFF_SETS][37] = +{ + { + 37, /* Filter 0 */ + 77, + -191, + 0, + 275, + -166, + -133, + 106, + 0, + 292, + -356, + -558, + 1259, + 0, + -1971, + 1411, + 1569, + -2721, + 0, + 2815, + -1681, + -1569, + 2284, + 0, + -1622, + 778, + 558, + -576, + 0, + 62, + 66, + 133, + -269, + 0, + 245, + -118, + -77 + }, + { + 40, /* Filter 1 */ + 81, + -196, + 0, + 276, + -164, + -129, + 95, + 0, + 314, + -372, + -576, + 1289, + 0, + -1999, + 1426, + 1581, + -2732, + 0, + 2811, + -1674, + -1558, + 2260, + 0, + -1592, + 759, + 541, + -550, + 0, + 46, + 73, + 137, + -271, + 0, + 241, + -114, + -74 + }, + { + 43, /* Filter 2 */ + 84, + -201, + 0, + 277, + -163, + -124, + 82, + 0, + 336, + -388, + -594, + 1319, + 0, + -2026, + 1440, + 1592, + -2743, + 0, + 2806, + -1666, + -1546, + 2235, + 0, + -1561, + 740, + 523, + -525, + 0, + 30, + 79, + 141, + -273, + 0, + 237, + -111, + -70 + }, + { + 46, /* Filter 3 */ + 88, + -206, + 0, + 277, + -161, + -120, + 70, + 0, + 358, + -404, + -612, + 1349, + 0, + -2053, + 1455, + 1602, + -2753, + 0, + 2800, + -1658, + -1534, + 2210, + 0, + -1531, + 722, + 506, + -500, + 0, + 14, + 86, + 144, + -274, + 0, + 233, + -108, + -67 + }, + { + 50, /* Filter 4 */ + 91, + -210, + 0, + 278, + -159, + -115, + 57, + 0, + 381, + -421, + -630, + 1380, + 0, + -2080, + 1468, + 1612, + -2762, + 0, + 2794, + -1650, + -1521, + 2185, + 0, + -1501, + 703, + 488, + -476, + 0, + 0, + 92, + 148, + -276, + 0, + 229, + -105, + -63 + }, + { + 53, /* Filter 5 */ + 94, + -215, + 0, + 277, + -156, + -109, + 43, + 0, + 404, + -437, + -648, + 1410, + 0, + -2107, + 1482, + 1622, + -2771, + 0, + 2787, + -1641, + -1509, + 2159, + 0, + -1471, + 685, + 471, + -452, + 0, + -15, + 98, + 151, + -277, + 0, + 224, + -101, + -60 + }, + { + 57, /* Filter 6 */ + 98, + -220, + 0, + 277, + -154, + -104, + 29, + 0, + 428, + -454, + -667, + 1440, + 0, + -2133, + 1495, + 1632, + -2779, + 0, + 2779, + -1632, + -1495, + 2133, + 0, + -1440, + 667, + 454, + -428, + 0, + -29, + 104, + 154, + -277, + 0, + 220, + -98, + -57 + }, + { + 60, /* Filter 7 */ + 101, + -224, + 0, + 277, + -151, + -98, + 15, + 0, + 452, + -471, + -685, + 1471, + 0, + -2159, + 1509, + 1641, + -2787, + 0, + 2771, + -1622, + -1482, + 2107, + 0, + -1410, + 648, + 437, + -404, + 0, + -43, + 109, + 156, + -277, + 0, + 215, + -94, + -53 + }, + { + 63, /* Filter 8 */ + 105, + -229, + 0, + 276, + -148, + -92, + 0, + 0, + 476, + -488, + -703, + 1501, + 0, + -2185, + 1521, + 1650, + -2794, + 0, + 2762, + -1612, + -1468, + 2080, + 0, + -1380, + 630, + 421, + -381, + 0, + -57, + 115, + 159, + -278, + 0, + 210, + -91, + -50 + }, + { + 67, /* Filter 9 */ + 108, + -233, + 0, + 274, + -144, + -86, + -14, + 0, + 500, + -506, + -722, + 1531, + 0, + -2210, + 1534, + 1658, + -2800, + 0, + 2753, + -1602, + -1455, + 2053, + 0, + -1349, + 612, + 404, + -358, + 0, + -70, + 120, + 161, + -277, + 0, + 206, + -88, + -46 + }, + { + 70, /* Filter 10 */ + 111, + -237, + 0, + 273, + -141, + -79, + -30, + 0, + 525, + -523, + -740, + 1561, + 0, + -2235, + 1546, + 1666, + -2806, + 0, + 2743, + -1592, + -1440, + 2026, + 0, + -1319, + 594, + 388, + -336, + 0, + -82, + 124, + 163, + -277, + 0, + 201, + -84, + -43 + }, + { + 74, /* Filter 11 */ + 114, + -241, + 0, + 271, + -137, + -73, + -46, + 0, + 550, + -541, + -759, + 1592, + 0, + -2260, + 1558, + 1674, + -2811, + 0, + 2732, + -1581, + -1426, + 1999, + 0, + -1289, + 576, + 372, + -314, + 0, + -95, + 129, + 164, + -276, + 0, + 196, + -81, + -40 + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v22bis_rx_2400_floating_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v22bis_rx_2400_floating_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,944 @@ +#define RX_PULSESHAPER_2400_GAIN 1.000000f +#define RX_PULSESHAPER_2400_COEFF_SETS 12 +static const float rx_pulseshaper_2400_re[RX_PULSESHAPER_2400_COEFF_SETS][37] = +{ + { + 0.0015563115f, /* Filter 0 */ + -0.0032627462f, + -0.0018949322f, + 0.0078656419f, + -0.0027306201f, + -0.0069940380f, + 0.0056094252f, + 0.0010599786f, + 0.0020114800f, + -0.0028990996f, + -0.0149657275f, + 0.0234683618f, + 0.0124851225f, + -0.0520524432f, + 0.0195473360f, + 0.0593000660f, + -0.0659432016f, + -0.0269855260f, + 0.0903420234f, + -0.0279172205f, + -0.0706490244f, + 0.0659432016f, + 0.0226506097f, + -0.0632565081f, + 0.0160850895f, + 0.0326864751f, + -0.0234683618f, + -0.0057163992f, + 0.0093816835f, + -0.0006215815f, + 0.0027750599f, + -0.0056094252f, + -0.0026714848f, + 0.0088364722f, + -0.0024306170f, + -0.0049609969f, + 0.0032627462f + }, + { + 0.0016927688f, /* Filter 1 */ + -0.0034082187f, + -0.0019455259f, + 0.0079812854f, + -0.0027410584f, + -0.0069292139f, + 0.0054309843f, + 0.0009430216f, + 0.0025533503f, + -0.0031144226f, + -0.0156361473f, + 0.0242156763f, + 0.0127849906f, + -0.0530130803f, + 0.0198226534f, + 0.0599172158f, + -0.0664148260f, + -0.0270975664f, + 0.0904586247f, + -0.0278746829f, + -0.0703398778f, + 0.0654580487f, + 0.0224109291f, + -0.0623574663f, + 0.0157872820f, + 0.0319028797f, + -0.0227260712f, + -0.0054633388f, + 0.0086971142f, + -0.0004583041f, + 0.0030702935f, + -0.0057777402f, + -0.0026929678f, + 0.0087945988f, + -0.0023932450f, + -0.0048265064f, + 0.0031172501f + }, + { + 0.0018306919f, /* Filter 2 */ + -0.0035535150f, + -0.0019952730f, + 0.0080913986f, + -0.0027489254f, + -0.0068556597f, + 0.0052423164f, + 0.0008218653f, + 0.0031086542f, + -0.0033334754f, + -0.0163142578f, + 0.0249677455f, + 0.0130852984f, + -0.0539702141f, + 0.0200953432f, + 0.0605237437f, + -0.0668726942f, + -0.0272035008f, + 0.0905540931f, + -0.0278256577f, + -0.0700150468f, + 0.0649596031f, + 0.0221674156f, + -0.0614507444f, + 0.0154886502f, + 0.0311210713f, + -0.0219890738f, + -0.0052133718f, + 0.0080249289f, + -0.0002992118f, + 0.0033546046f, + -0.0059360333f, + -0.0027112317f, + 0.0087448582f, + -0.0023543099f, + -0.0046901610f, + 0.0029718837f + }, + { + 0.0019699621f, /* Filter 3 */ + -0.0036984773f, + -0.0020441043f, + 0.0081957427f, + -0.0027541532f, + -0.0067732266f, + 0.0050433272f, + 0.0006965003f, + 0.0036773273f, + -0.0035562061f, + -0.0169998438f, + 0.0257242871f, + 0.0133859229f, + -0.0549234238f, + 0.0203652799f, + 0.0611193477f, + -0.0673165844f, + -0.0273032826f, + 0.0906283998f, + -0.0277701685f, + -0.0696746964f, + 0.0644481108f, + 0.0219201814f, + -0.0605367479f, + 0.0151893226f, + 0.0303413603f, + -0.0212576375f, + -0.0049665736f, + 0.0073652682f, + -0.0001443174f, + 0.0036280332f, + -0.0060844136f, + -0.0027263376f, + 0.0086874779f, + -0.0023138848f, + -0.0045521393f, + 0.0028267925f + }, + { + 0.0021104569f, /* Filter 4 */ + -0.0038429461f, + -0.0020919492f, + 0.0082940836f, + -0.0027566735f, + -0.0066817710f, + 0.0048339281f, + 0.0005669188f, + 0.0042592917f, + -0.0037825593f, + -0.0176926866f, + 0.0264850193f, + 0.0136867395f, + -0.0558722880f, + 0.0206323398f, + 0.0617037492f, + -0.0677462761f, + -0.0273968587f, + 0.0906815023f, + -0.0277082472f, + -0.0693189956f, + 0.0639238157f, + 0.0216693433f, + -0.0596159016f, + 0.0148894283f, + 0.0295640577f, + -0.0205320145f, + -0.0047230166f, + 0.0067182711f, + 0.0000063691f, + 0.0038906329f, + -0.0062229939f, + -0.0027383462f, + 0.0086226877f, + -0.0022720426f, + -0.0044126151f, + 0.0026821236f + }, + { + 0.0022520511f, /* Filter 5 */ + -0.0039867608f, + -0.0021387368f, + 0.0083861837f, + -0.0027564187f, + -0.0065811535f, + 0.0046140353f, + 0.0004331162f, + 0.0048544647f, + -0.0040124783f, + -0.0183925599f, + 0.0272496551f, + 0.0139876244f, + -0.0568163868f, + 0.0208963983f, + 0.0622766679f, + -0.0681615641f, + -0.0274841848f, + 0.0907133744f, + -0.0276399183f, + -0.0689481154f, + 0.0633869663f, + 0.0214150209f, + -0.0586886174f, + 0.0145890956f, + 0.0287894729f, + -0.0198124637f, + -0.0044827709f, + 0.0060840594f, + 0.0001528399f, + 0.0041424574f, + -0.0063518949f, + -0.0027473198f, + 0.0085507200f, + -0.0022288557f, + -0.0042717636f, + 0.0025380184f + }, + { + 0.0023946154f, /* Filter 6 */ + -0.0041297560f, + -0.0021843964f, + 0.0084718067f, + -0.0027533229f, + -0.0064712394f, + 0.0043835688f, + 0.0002950896f, + 0.0054627541f, + -0.0042459030f, + -0.0190992307f, + 0.0280179056f, + 0.0142884518f, + -0.0577553021f, + 0.0211573322f, + 0.0628378285f, + -0.0685622430f, + -0.0275652180f, + 0.0907240049f, + -0.0275652180f, + -0.0685622430f, + 0.0628378285f, + 0.0211573322f, + -0.0577553021f, + 0.0142884518f, + 0.0280179056f, + -0.0190992307f, + -0.0042459030f, + 0.0054627541f, + 0.0002950896f, + 0.0043835688f, + -0.0064712394f, + -0.0027533229f, + 0.0084718067f, + -0.0021843964f, + -0.0041297560f, + 0.0023946154f + }, + { + 0.0025380184f, /* Filter 7 */ + -0.0042717636f, + -0.0022288557f, + 0.0085507200f, + -0.0027473198f, + -0.0063518949f, + 0.0041424574f, + 0.0001528399f, + 0.0060840594f, + -0.0044827709f, + -0.0198124637f, + 0.0287894729f, + 0.0145890956f, + -0.0586886174f, + 0.0214150209f, + 0.0633869663f, + -0.0689481154f, + -0.0276399183f, + 0.0907133744f, + -0.0274841848f, + -0.0681615641f, + 0.0622766679f, + 0.0208963983f, + -0.0568163868f, + 0.0139876244f, + 0.0272496551f, + -0.0183925599f, + -0.0040124783f, + 0.0048544647f, + 0.0004331162f, + 0.0046140353f, + -0.0065811535f, + -0.0027564187f, + 0.0083861837f, + -0.0021387368f, + -0.0039867608f, + 0.0022520511f + }, + { + 0.0026821236f, /* Filter 8 */ + -0.0044126151f, + -0.0022720426f, + 0.0086226877f, + -0.0027383462f, + -0.0062229939f, + 0.0038906329f, + 0.0000063691f, + 0.0067182711f, + -0.0047230166f, + -0.0205320145f, + 0.0295640577f, + 0.0148894283f, + -0.0596159016f, + 0.0216693433f, + 0.0639238157f, + -0.0693189956f, + -0.0277082472f, + 0.0906815023f, + -0.0273968587f, + -0.0677462761f, + 0.0617037492f, + 0.0206323398f, + -0.0558722880f, + 0.0136867395f, + 0.0264850193f, + -0.0176926866f, + -0.0037825593f, + 0.0042592917f, + 0.0005669188f, + 0.0048339281f, + -0.0066817710f, + -0.0027566735f, + 0.0082940836f, + -0.0020919492f, + -0.0038429461f, + 0.0021104569f + }, + { + 0.0028267925f, /* Filter 9 */ + -0.0045521393f, + -0.0023138848f, + 0.0086874779f, + -0.0027263376f, + -0.0060844136f, + 0.0036280332f, + -0.0001443174f, + 0.0073652682f, + -0.0049665736f, + -0.0212576375f, + 0.0303413603f, + 0.0151893226f, + -0.0605367479f, + 0.0219201814f, + 0.0644481108f, + -0.0696746964f, + -0.0277701685f, + 0.0906283998f, + -0.0273032826f, + -0.0673165844f, + 0.0611193477f, + 0.0203652799f, + -0.0549234238f, + 0.0133859229f, + 0.0257242871f, + -0.0169998438f, + -0.0035562061f, + 0.0036773273f, + 0.0006965003f, + 0.0050433272f, + -0.0067732266f, + -0.0027541532f, + 0.0081957427f, + -0.0020441043f, + -0.0036984773f, + 0.0019699621f + }, + { + 0.0029718837f, /* Filter 10 */ + -0.0046901610f, + -0.0023543099f, + 0.0087448582f, + -0.0027112317f, + -0.0059360333f, + 0.0033546046f, + -0.0002992118f, + 0.0080249289f, + -0.0052133718f, + -0.0219890738f, + 0.0311210713f, + 0.0154886502f, + -0.0614507444f, + 0.0221674156f, + 0.0649596031f, + -0.0700150468f, + -0.0278256577f, + 0.0905540931f, + -0.0272035008f, + -0.0668726942f, + 0.0605237437f, + 0.0200953432f, + -0.0539702141f, + 0.0130852984f, + 0.0249677455f, + -0.0163142578f, + -0.0033334754f, + 0.0031086542f, + 0.0008218653f, + 0.0052423164f, + -0.0068556597f, + -0.0027489254f, + 0.0080913986f, + -0.0019952730f, + -0.0035535150f, + 0.0018306919f + }, + { + 0.0031172501f, /* Filter 11 */ + -0.0048265064f, + -0.0023932450f, + 0.0087945988f, + -0.0026929678f, + -0.0057777402f, + 0.0030702935f, + -0.0004583041f, + 0.0086971142f, + -0.0054633388f, + -0.0227260712f, + 0.0319028797f, + 0.0157872820f, + -0.0623574663f, + 0.0224109291f, + 0.0654580487f, + -0.0703398778f, + -0.0278746829f, + 0.0904586247f, + -0.0270975664f, + -0.0664148260f, + 0.0599172158f, + 0.0198226534f, + -0.0530130803f, + 0.0127849906f, + 0.0242156763f, + -0.0156361472f, + -0.0031144226f, + 0.0025533503f, + 0.0009430216f, + 0.0054309843f, + -0.0069292139f, + -0.0027410584f, + 0.0079812854f, + -0.0019455259f, + -0.0034082187f, + 0.0016927688f + } +}; +static const float rx_pulseshaper_2400_im[RX_PULSESHAPER_2400_COEFF_SETS][37] = +{ + { + 0.0011307265f, /* Filter 0 */ + 0.0023705238f, + -0.0058320016f, + 0.0000000000f, + 0.0084039844f, + -0.0050814660f, + -0.0040754860f, + 0.0032622786f, + 0.0000000000f, + 0.0089225112f, + -0.0108732375f, + -0.0170507629f, + 0.0384252560f, + -0.0000000000f, + -0.0601605142f, + 0.0430840199f, + 0.0479105404f, + -0.0830529093f, + 0.0000000000f, + 0.0859203700f, + -0.0513295208f, + -0.0479105404f, + 0.0697114085f, + 0.0000000000f, + -0.0495048153f, + 0.0237481142f, + 0.0170507629f, + -0.0175932678f, + -0.0000000000f, + 0.0019130312f, + 0.0020161991f, + 0.0040754860f, + -0.0082219847f, + -0.0000000000f, + 0.0074806699f, + -0.0036043752f, + -0.0023705238f + }, + { + 0.0012298685f, /* Filter 1 */ + 0.0024762158f, + -0.0059877130f, + 0.0000000000f, + 0.0084361101f, + -0.0050343686f, + -0.0039458410f, + 0.0029023221f, + 0.0000000000f, + 0.0095852072f, + -0.0113603260f, + -0.0175937187f, + 0.0393481552f, + -0.0000000000f, + -0.0610078541f, + 0.0435324055f, + 0.0482531955f, + -0.0833977341f, + 0.0000000000f, + 0.0857894527f, + -0.0511049127f, + -0.0475580562f, + 0.0689737474f, + 0.0000000000f, + -0.0485882579f, + 0.0231787989f, + 0.0165114572f, + -0.0168144279f, + -0.0000000000f, + 0.0014105150f, + 0.0022306988f, + 0.0041977740f, + -0.0082881026f, + -0.0000000000f, + 0.0073656508f, + -0.0035066621f, + -0.0022648148f + }, + { + 0.0013300756f, /* Filter 2 */ + 0.0025817797f, + -0.0061408189f, + 0.0000000000f, + 0.0084603224f, + -0.0049809284f, + -0.0038087658f, + 0.0025294414f, + 0.0000000000f, + 0.0102593823f, + -0.0118530021f, + -0.0181401289f, + 0.0402724075f, + -0.0000000000f, + -0.0618471069f, + 0.0439730737f, + 0.0485858563f, + -0.0837237667f, + 0.0000000000f, + 0.0856385688f, + -0.0508689091f, + -0.0471959142f, + 0.0682242900f, + 0.0000000000f, + -0.0476691639f, + 0.0226107818f, + 0.0159759973f, + -0.0160451085f, + -0.0000000000f, + 0.0009208793f, + 0.0024372629f, + 0.0043127806f, + -0.0083443130f, + -0.0000000000f, + 0.0072458207f, + -0.0034076014f, + -0.0021591999f + }, + { + 0.0014312612f, /* Filter 3 */ + 0.0026871011f, + -0.0062911061f, + 0.0000000000f, + 0.0084764120f, + -0.0049210372f, + -0.0036641917f, + 0.0021436074f, + 0.0000000000f, + 0.0109448771f, + -0.0123511095f, + -0.0186897886f, + 0.0411976345f, + -0.0000000000f, + -0.0626778865f, + 0.0444058054f, + 0.0489083614f, + -0.0840308634f, + 0.0000000000f, + 0.0854677905f, + -0.0506216301f, + -0.0468242934f, + 0.0674633814f, + 0.0000000000f, + -0.0467479280f, + 0.0220442886f, + 0.0154445777f, + -0.0152855418f, + -0.0000000000f, + 0.0004441633f, + 0.0026359204f, + 0.0044205852f, + -0.0083908043f, + -0.0000000000f, + 0.0071214052f, + -0.0033073228f, + -0.0020537850f + }, + { + 0.0015333367f, /* Filter 4 */ + 0.0027920638f, + -0.0064383577f, + 0.0000000000f, + 0.0084841685f, + -0.0048545908f, + -0.0035120543f, + 0.0017447968f, + 0.0000000000f, + 0.0116415204f, + -0.0128544893f, + -0.0192424929f, + 0.0421234528f, + -0.0000000000f, + -0.0634998126f, + 0.0448303979f, + 0.0492205507f, + -0.0843188611f, + 0.0000000000f, + 0.0852772163f, + -0.0503631983f, + -0.0464433707f, + 0.0666913811f, + 0.0000000000f, + -0.0458249485f, + 0.0214795452f, + 0.0149173817f, + -0.0145359503f, + -0.0000000000f, + -0.0000196020f, + 0.0028267103f, + 0.0045212697f, + -0.0084277630f, + -0.0000000000f, + 0.0069926280f, + -0.0032059525f, + -0.0019486769f + }, + { + 0.0016362109f, /* Filter 5 */ + 0.0028965513f, + -0.0065823550f, + 0.0000000000f, + 0.0084833845f, + -0.0047814879f, + -0.0033522929f, + 0.0013329947f, + 0.0000000000f, + 0.0123491384f, + -0.0133629770f, + -0.0197980333f, + 0.0430494814f, + -0.0000000000f, + -0.0643125010f, + 0.0452466478f, + 0.0495222751f, + -0.0845876231f, + 0.0000000000f, + 0.0850669216f, + -0.0500937381f, + -0.0460533268f, + 0.0659086572f, + 0.0000000000f, + -0.0449006193f, + 0.0209167764f, + 0.0143945974f, + -0.0137965502f, + -0.0000000000f, + -0.0004703930f, + 0.0030096715f, + 0.0046149218f, + -0.0084553808f, + -0.0000000000f, + 0.0068597125f, + -0.0031036179f, + -0.0018439783f + }, + { + 0.0017397900f, /* Filter 6 */ + 0.0030004433f, + -0.0067228808f, + 0.0000000000f, + 0.0084738564f, + -0.0047016307f, + -0.0031848491f, + 0.0009081924f, + 0.0000000000f, + 0.0130675456f, + -0.0138764034f, + -0.0203562000f, + 0.0439753330f, + -0.0000000000f, + -0.0651155730f, + 0.0456543548f, + 0.0498133853f, + -0.0848370177f, + 0.0000000000f, + 0.0848370177f, + -0.0498133853f, + -0.0456543548f, + 0.0651155730f, + 0.0000000000f, + -0.0439753330f, + 0.0203562000f, + 0.0138764034f, + -0.0130675456f, + -0.0000000000f, + -0.0009081924f, + 0.0031848491f, + 0.0047016307f, + -0.0084738564f, + -0.0000000000f, + 0.0067228808f, + -0.0030004433f, + -0.0017397900f + }, + { + 0.0018439783f, /* Filter 7 */ + 0.0031036179f, + -0.0068597125f, + 0.0000000000f, + 0.0084553808f, + -0.0046149218f, + -0.0030096715f, + 0.0004703930f, + 0.0000000000f, + 0.0137965502f, + -0.0143945974f, + -0.0209167764f, + 0.0449006193f, + -0.0000000000f, + -0.0659086573f, + 0.0460533268f, + 0.0500937381f, + -0.0850669216f, + 0.0000000000f, + 0.0845876231f, + -0.0495222751f, + -0.0452466478f, + 0.0643125010f, + 0.0000000000f, + -0.0430494814f, + 0.0197980333f, + 0.0133629770f, + -0.0123491384f, + -0.0000000000f, + -0.0013329947f, + 0.0033522929f, + 0.0047814879f, + -0.0084833845f, + -0.0000000000f, + 0.0065823550f, + -0.0028965513f, + -0.0016362109f + }, + { + 0.0019486769f, /* Filter 8 */ + 0.0032059525f, + -0.0069926280f, + 0.0000000000f, + 0.0084277630f, + -0.0045212697f, + -0.0028267103f, + 0.0000196020f, + 0.0000000000f, + 0.0145359503f, + -0.0149173817f, + -0.0214795452f, + 0.0458249485f, + -0.0000000000f, + -0.0666913811f, + 0.0464433707f, + 0.0503631983f, + -0.0852772163f, + 0.0000000000f, + 0.0843188611f, + -0.0492205507f, + -0.0448303979f, + 0.0634998126f, + 0.0000000000f, + -0.0421234528f, + 0.0192424929f, + 0.0128544893f, + -0.0116415204f, + -0.0000000000f, + -0.0017447968f, + 0.0035120543f, + 0.0048545908f, + -0.0084841685f, + -0.0000000000f, + 0.0064383577f, + -0.0027920638f, + -0.0015333367f + }, + { + 0.0020537850f, /* Filter 9 */ + 0.0033073228f, + -0.0071214052f, + 0.0000000000f, + 0.0083908043f, + -0.0044205852f, + -0.0026359204f, + -0.0004441633f, + 0.0000000000f, + 0.0152855418f, + -0.0154445777f, + -0.0220442886f, + 0.0467479280f, + -0.0000000000f, + -0.0674633814f, + 0.0468242934f, + 0.0506216301f, + -0.0854677905f, + 0.0000000000f, + 0.0840308634f, + -0.0489083614f, + -0.0444058054f, + 0.0626778865f, + 0.0000000000f, + -0.0411976344f, + 0.0186897886f, + 0.0123511095f, + -0.0109448771f, + -0.0000000000f, + -0.0021436074f, + 0.0036641917f, + 0.0049210372f, + -0.0084764120f, + -0.0000000000f, + 0.0062911061f, + -0.0026871011f, + -0.0014312612f + }, + { + 0.0021591999f, /* Filter 10 */ + 0.0034076014f, + -0.0072458207f, + 0.0000000000f, + 0.0083443130f, + -0.0043127806f, + -0.0024372629f, + -0.0009208793f, + 0.0000000000f, + 0.0160451085f, + -0.0159759973f, + -0.0226107818f, + 0.0476691639f, + -0.0000000000f, + -0.0682242900f, + 0.0471959142f, + 0.0508689091f, + -0.0856385688f, + 0.0000000000f, + 0.0837237667f, + -0.0485858563f, + -0.0439730737f, + 0.0618471068f, + 0.0000000000f, + -0.0402724075f, + 0.0181401289f, + 0.0118530021f, + -0.0102593823f, + -0.0000000000f, + -0.0025294414f, + 0.0038087658f, + 0.0049809284f, + -0.0084603224f, + -0.0000000000f, + 0.0061408189f, + -0.0025817797f, + -0.0013300756f + }, + { + 0.0022648148f, /* Filter 11 */ + 0.0035066621f, + -0.0073656508f, + 0.0000000000f, + 0.0082881026f, + -0.0041977740f, + -0.0022306988f, + -0.0014105150f, + 0.0000000000f, + 0.0168144279f, + -0.0165114572f, + -0.0231787989f, + 0.0485882579f, + -0.0000000000f, + -0.0689737474f, + 0.0475580562f, + 0.0511049127f, + -0.0857894527f, + 0.0000000000f, + 0.0833977341f, + -0.0482531955f, + -0.0435324055f, + 0.0610078541f, + 0.0000000000f, + -0.0393481552f, + 0.0175937187f, + 0.0113603260f, + -0.0095852072f, + -0.0000000000f, + -0.0029023221f, + 0.0039458410f, + 0.0050343686f, + -0.0084361101f, + -0.0000000000f, + 0.0059877130f, + -0.0024762158f, + -0.0012298685f + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v22bis_tx_fixed_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v22bis_tx_fixed_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,445 @@ +#define TX_PULSESHAPER_GAIN 0.829192f +#define TX_PULSESHAPER_COEFF_SETS 40 +static const int16_t tx_pulseshaper[TX_PULSESHAPER_COEFF_SETS][9] = +{ + { + -128, /* Filter 0 */ + -228, + -237, + 239, + 13893, + 13893, + 239, + -237, + -228 + }, + { + -121, /* Filter 1 */ + -242, + -302, + 63, + 15293, + 12507, + 393, + -172, + -210 + }, + { + -111, /* Filter 2 */ + -252, + -365, + -132, + 16699, + 11146, + 525, + -106, + -188 + }, + { + -99, /* Filter 3 */ + -258, + -425, + -345, + 18102, + 9816, + 634, + -42, + -164 + }, + { + -84, /* Filter 4 */ + -260, + -480, + -575, + 19492, + 8526, + 719, + 18, + -138 + }, + { + -68, /* Filter 5 */ + -256, + -530, + -817, + 20859, + 7283, + 782, + 75, + -110 + }, + { + -49, /* Filter 6 */ + -248, + -573, + -1069, + 22194, + 6093, + 821, + 128, + -81 + }, + { + -30, /* Filter 7 */ + -235, + -607, + -1326, + 23486, + 4962, + 839, + 176, + -51 + }, + { + -9, /* Filter 8 */ + -217, + -633, + -1586, + 24728, + 3896, + 837, + 218, + -21 + }, + { + 12, /* Filter 9 */ + -195, + -650, + -1843, + 25908, + 2898, + 815, + 254, + 8 + }, + { + 33, /* Filter 10 */ + -169, + -656, + -2093, + 27019, + 1972, + 776, + 282, + 36 + }, + { + 55, /* Filter 11 */ + -138, + -651, + -2331, + 28052, + 1122, + 721, + 304, + 63 + }, + { + 76, /* Filter 12 */ + -105, + -634, + -2552, + 29000, + 349, + 653, + 319, + 88 + }, + { + 97, /* Filter 13 */ + -69, + -607, + -2751, + 29854, + -344, + 573, + 326, + 111 + }, + { + 116, /* Filter 14 */ + -30, + -568, + -2922, + 30608, + -960, + 483, + 326, + 131 + }, + { + 133, /* Filter 15 */ + 9, + -517, + -3059, + 31257, + -1497, + 387, + 320, + 148 + }, + { + 148, /* Filter 16 */ + 49, + -456, + -3158, + 31794, + -1956, + 286, + 307, + 161 + }, + { + 161, /* Filter 17 */ + 90, + -385, + -3212, + 32217, + -2340, + 182, + 289, + 171 + }, + { + 171, /* Filter 18 */ + 130, + -306, + -3217, + 32522, + -2649, + 78, + 265, + 178 + }, + { + 177, /* Filter 19 */ + 168, + -218, + -3168, + 32705, + -2888, + -24, + 236, + 181 + }, + { + 181, /* Filter 20 */ + 204, + -123, + -3060, + 32767, + -3060, + -123, + 204, + 181 + }, + { + 181, /* Filter 21 */ + 236, + -24, + -2888, + 32705, + -3168, + -218, + 168, + 177 + }, + { + 178, /* Filter 22 */ + 265, + 78, + -2649, + 32522, + -3217, + -306, + 130, + 171 + }, + { + 171, /* Filter 23 */ + 289, + 182, + -2340, + 32217, + -3212, + -385, + 90, + 161 + }, + { + 161, /* Filter 24 */ + 307, + 286, + -1956, + 31794, + -3158, + -456, + 49, + 148 + }, + { + 148, /* Filter 25 */ + 320, + 387, + -1497, + 31257, + -3059, + -517, + 9, + 133 + }, + { + 131, /* Filter 26 */ + 326, + 483, + -960, + 30608, + -2922, + -568, + -30, + 116 + }, + { + 111, /* Filter 27 */ + 326, + 573, + -344, + 29854, + -2751, + -607, + -69, + 97 + }, + { + 88, /* Filter 28 */ + 319, + 653, + 349, + 29000, + -2552, + -634, + -105, + 76 + }, + { + 63, /* Filter 29 */ + 304, + 721, + 1122, + 28052, + -2331, + -651, + -138, + 55 + }, + { + 36, /* Filter 30 */ + 282, + 776, + 1972, + 27019, + -2093, + -656, + -169, + 33 + }, + { + 8, /* Filter 31 */ + 254, + 815, + 2898, + 25908, + -1843, + -650, + -195, + 12 + }, + { + -21, /* Filter 32 */ + 218, + 837, + 3896, + 24728, + -1586, + -633, + -217, + -9 + }, + { + -51, /* Filter 33 */ + 176, + 839, + 4962, + 23486, + -1326, + -607, + -235, + -30 + }, + { + -81, /* Filter 34 */ + 128, + 821, + 6093, + 22194, + -1069, + -573, + -248, + -49 + }, + { + -110, /* Filter 35 */ + 75, + 782, + 7283, + 20859, + -817, + -530, + -256, + -68 + }, + { + -138, /* Filter 36 */ + 18, + 719, + 8526, + 19492, + -575, + -480, + -260, + -84 + }, + { + -164, /* Filter 37 */ + -42, + 634, + 9816, + 18102, + -345, + -425, + -258, + -99 + }, + { + -188, /* Filter 38 */ + -106, + 525, + 11146, + 16699, + -132, + -365, + -252, + -111 + }, + { + -210, /* Filter 39 */ + -172, + 393, + 12507, + 15293, + 63, + -302, + -242, + -121 + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v22bis_tx_floating_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v22bis_tx_floating_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,445 @@ +#define TX_PULSESHAPER_GAIN 1.000000f +#define TX_PULSESHAPER_COEFF_SETS 40 +static const float tx_pulseshaper[TX_PULSESHAPER_COEFF_SETS][9] = +{ + { + -0.0047225799f, /* Filter 0 */ + -0.0084017854f, + -0.0087512705f, + 0.0088069151f, + 0.5113443423f, + 0.5113443422f, + 0.0088069150f, + -0.0087512705f, + -0.0084017854f + }, + { + -0.0044560627f, /* Filter 1 */ + -0.0089299784f, + -0.0111430081f, + 0.0023375926f, + 0.5628832742f, + 0.4603563001f, + 0.0144879379f, + -0.0063308268f, + -0.0077375780f + }, + { + -0.0040955757f, /* Filter 2 */ + -0.0093085520f, + -0.0134608686f, + -0.0048652084f, + 0.6146393768f, + 0.4102392997f, + 0.0193418829f, + -0.0039255892f, + -0.0069531299f + }, + { + -0.0036459251f, /* Filter 3 */ + -0.0095262914f, + -0.0156592355f, + -0.0127304083f, + 0.6662684960f, + 0.3612970480f, + 0.0233456667f, + -0.0015775329f, + -0.0060659391f + }, + { + -0.0031137078f, /* Filter 4 */ + -0.0095747033f, + -0.0176928206f, + -0.0211706543f, + 0.7174186958f, + 0.3138144449f, + 0.0264912738f, + 0.0006739922f, + -0.0050949150f + }, + { + -0.0025072439f, /* Filter 5 */ + -0.0094482428f, + -0.0195175151f, + -0.0300826256f, + 0.7677341786f, + 0.2680550805f, + 0.0287849965f, + 0.0027928495f, + -0.0040599976f + }, + { + -0.0018364509f, /* Filter 6 */ + -0.0091444853f, + -0.0210912336f, + -0.0393474967f, + 0.8168580673f, + 0.2242592987f, + 0.0302465054f, + 0.0047466024f, + -0.0029817423f + }, + { + -0.0011126906f, /* Filter 7 */ + -0.0086642941f, + -0.0223747662f, + -0.0488316115f, + 0.8644361861f, + 0.1826424770f, + 0.0309077815f, + 0.0065069834f, + -0.0018809527f + }, + { + -0.0003486070f, /* Filter 8 */ + -0.0080118899f, + -0.0233326132f, + -0.0583874108f, + 0.9101203338f, + 0.1433934276f, + 0.0308119316f, + 0.0080502010f, + -0.0007782996f + }, + { + 0.0004421038f, /* Filter 9 */ + -0.0071948793f, + -0.0239337731f, + -0.0678546589f, + 0.9535717032f, + 0.1066734699f, + 0.0300118637f, + 0.0093572179f, + 0.0003060784f + }, + { + 0.0012449004f, /* Filter 10 */ + -0.0062242175f, + -0.0241525264f, + -0.0770617470f, + 0.9944641631f, + 0.0726154565f, + 0.0285689605f, + 0.0104139109f, + 0.0013528956f + }, + { + 0.0020446769f, /* Filter 11 */ + -0.0051140981f, + -0.0239691024f, + -0.0858273278f, + 1.0324875613f, + 0.0413233951f, + 0.0265516451f, + 0.0112111290f, + 0.0023440604f + }, + { + 0.0028260046f, /* Filter 12 */ + -0.0038818095f, + -0.0233703410f, + -0.0939620315f, + 1.0673511303f, + 0.0128722494f, + 0.0240338606f, + 0.0117446951f, + 0.0032629820f + }, + { + 0.0035734256f, /* Filter 13 */ + -0.0025475002f, + -0.0223501989f, + -0.1012704788f, + 1.0987857647f, + -0.0126918879f, + 0.0210936824f, + 0.0120153027f, + 0.0040948071f + }, + { + 0.0042717487f, /* Filter 14 */ + -0.0011339020f, + -0.0209102209f, + -0.1075533482f, + 1.1265473042f, + -0.0353513115f, + 0.0178118270f, + 0.0120283162f, + 0.0048266759f + }, + { + 0.0049063204f, /* Filter 15 */ + 0.0003340068f, + -0.0190598540f, + -0.1126096101f, + 1.1504189013f, + -0.0551159112f, + 0.0142701967f, + 0.0117935356f, + 0.0054478772f + }, + { + 0.0054633378f, /* Filter 16 */ + 0.0018293983f, + -0.0168166384f, + -0.1162389085f, + 1.1702128005f, + -0.0720220989f, + 0.0105505105f, + 0.0113248682f, + 0.0059499999f + }, + { + 0.0059300986f, /* Filter 17 */ + 0.0033240172f, + -0.0142063354f, + -0.1182439353f, + 1.1857731261f, + -0.0861315420f, + 0.0067330166f, + 0.0106398969f, + 0.0063270335f + }, + { + 0.0062952926f, /* Filter 18 */ + 0.0047886664f, + -0.0112628308f, + -0.1184330100f, + 1.1969766889f, + -0.0975294679f, + 0.0028952510f, + 0.0097595312f, + 0.0065754012f + }, + { + 0.0065492251f, /* Filter 19 */ + 0.0061937075f, + -0.0080279745f, + -0.1166224166f, + 1.2037346307f, + -0.1063230130f, + -0.0008890961f, + 0.0087074429f, + 0.0066939821f + }, + { + 0.0066840559f, /* Filter 20 */ + 0.0075095974f, + -0.0045512022f, + -0.1126391143f, + 1.2059933265f, + -0.1126391143f, + -0.0045512022f, + 0.0075095974f, + 0.0066840559f + }, + { + 0.0066939821f, /* Filter 21 */ + 0.0087074429f, + -0.0008890961f, + -0.1063230130f, + 1.2037346307f, + -0.1166224167f, + -0.0080279745f, + 0.0061937074f, + 0.0065492251f + }, + { + 0.0065754012f, /* Filter 22 */ + 0.0097595313f, + 0.0028952510f, + -0.0975294679f, + 1.1969766889f, + -0.1184330100f, + -0.0112628308f, + 0.0047886664f, + 0.0062952926f + }, + { + 0.0063270335f, /* Filter 23 */ + 0.0106398969f, + 0.0067330166f, + -0.0861315419f, + 1.1857731261f, + -0.1182439353f, + -0.0142063354f, + 0.0033240172f, + 0.0059300986f + }, + { + 0.0059499999f, /* Filter 24 */ + 0.0113248682f, + 0.0105505105f, + -0.0720220988f, + 1.1702128005f, + -0.1162389085f, + -0.0168166384f, + 0.0018293982f, + 0.0054633378f + }, + { + 0.0054478772f, /* Filter 25 */ + 0.0117935356f, + 0.0142701967f, + -0.0551159112f, + 1.1504189013f, + -0.1126096102f, + -0.0190598540f, + 0.0003340068f, + 0.0049063204f + }, + { + 0.0048266759f, /* Filter 26 */ + 0.0120283162f, + 0.0178118270f, + -0.0353513115f, + 1.1265473042f, + -0.1075533483f, + -0.0209102209f, + -0.0011339020f, + 0.0042717487f + }, + { + 0.0040948071f, /* Filter 27 */ + 0.0120153027f, + 0.0210936824f, + -0.0126918879f, + 1.0987857646f, + -0.1012704788f, + -0.0223501990f, + -0.0025475002f, + 0.0035734256f + }, + { + 0.0032629820f, /* Filter 28 */ + 0.0117446951f, + 0.0240338606f, + 0.0128722494f, + 1.0673511303f, + -0.0939620315f, + -0.0233703410f, + -0.0038818095f, + 0.0028260045f + }, + { + 0.0023440604f, /* Filter 29 */ + 0.0112111290f, + 0.0265516451f, + 0.0413233951f, + 1.0324875612f, + -0.0858273278f, + -0.0239691024f, + -0.0051140981f, + 0.0020446769f + }, + { + 0.0013528956f, /* Filter 30 */ + 0.0104139109f, + 0.0285689605f, + 0.0726154565f, + 0.9944641630f, + -0.0770617471f, + -0.0241525264f, + -0.0062242175f, + 0.0012449004f + }, + { + 0.0003060784f, /* Filter 31 */ + 0.0093572179f, + 0.0300118637f, + 0.1066734700f, + 0.9535717031f, + -0.0678546589f, + -0.0239337731f, + -0.0071948793f, + 0.0004421038f + }, + { + -0.0007782996f, /* Filter 32 */ + 0.0080502011f, + 0.0308119316f, + 0.1433934276f, + 0.9101203338f, + -0.0583874108f, + -0.0233326132f, + -0.0080118899f, + -0.0003486070f + }, + { + -0.0018809527f, /* Filter 33 */ + 0.0065069834f, + 0.0309077816f, + 0.1826424771f, + 0.8644361860f, + -0.0488316115f, + -0.0223747662f, + -0.0086642941f, + -0.0011126906f + }, + { + -0.0029817423f, /* Filter 34 */ + 0.0047466024f, + 0.0302465054f, + 0.2242592987f, + 0.8168580673f, + -0.0393474967f, + -0.0210912336f, + -0.0091444853f, + -0.0018364509f + }, + { + -0.0040599976f, /* Filter 35 */ + 0.0027928495f, + 0.0287849965f, + 0.2680550805f, + 0.7677341786f, + -0.0300826256f, + -0.0195175151f, + -0.0094482428f, + -0.0025072439f + }, + { + -0.0050949150f, /* Filter 36 */ + 0.0006739922f, + 0.0264912738f, + 0.3138144449f, + 0.7174186958f, + -0.0211706543f, + -0.0176928206f, + -0.0095747033f, + -0.0031137079f + }, + { + -0.0060659391f, /* Filter 37 */ + -0.0015775329f, + 0.0233456667f, + 0.3612970481f, + 0.6662684959f, + -0.0127304083f, + -0.0156592355f, + -0.0095262914f, + -0.0036459251f + }, + { + -0.0069531299f, /* Filter 38 */ + -0.0039255892f, + 0.0193418829f, + 0.4102392997f, + 0.6146393768f, + -0.0048652084f, + -0.0134608686f, + -0.0093085520f, + -0.0040955757f + }, + { + -0.0077375780f, /* Filter 39 */ + -0.0063308268f, + 0.0144879379f, + 0.4603563001f, + 0.5628832742f, + 0.0023375926f, + -0.0111430081f, + -0.0089299784f, + -0.0044560627f + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v27ter_rx_2400_fixed_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v27ter_rx_2400_fixed_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,704 @@ +#define RX_PULSESHAPER_2400_GAIN 32767.000000f +#define RX_PULSESHAPER_2400_COEFF_SETS 12 +static const int16_t rx_pulseshaper_2400_re[RX_PULSESHAPER_2400_COEFF_SETS][27] = +{ + { + 183, /* Filter 0 */ + -58, + -42, + 0, + -518, + -233, + 686, + 261, + 195, + 1096, + -1202, + -3745, + 778, + 5561, + 869, + -4735, + -1787, + 2142, + 958, + -162, + 396, + -238, + -747, + 0, + 215, + -13, + 167 + }, + { + 185, /* Filter 1 */ + -56, + -25, + 0, + -542, + -237, + 675, + 235, + 250, + 1178, + -1252, + -3839, + 789, + 5584, + 865, + -4667, + -1741, + 2052, + 886, + -118, + 433, + -241, + -734, + 0, + 190, + -18, + 173 + }, + { + 187, /* Filter 2 */ + -53, + -6, + 0, + -565, + -240, + 661, + 207, + 307, + 1262, + -1302, + -3932, + 799, + 5603, + 860, + -4596, + -1695, + 1962, + 816, + -76, + 468, + -243, + -720, + 0, + 166, + -23, + 177 + }, + { + 188, /* Filter 3 */ + -50, + 12, + 0, + -587, + -242, + 645, + 177, + 365, + 1347, + -1353, + -4023, + 809, + 5618, + 855, + -4522, + -1647, + 1873, + 748, + -35, + 501, + -245, + -704, + 0, + 142, + -28, + 181 + }, + { + 189, /* Filter 4 */ + -47, + 32, + 0, + -609, + -244, + 627, + 146, + 425, + 1433, + -1403, + -4112, + 818, + 5628, + 849, + -4445, + -1599, + 1784, + 680, + 4, + 531, + -246, + -687, + 0, + 119, + -32, + 184 + }, + { + 189, /* Filter 5 */ + -44, + 53, + 0, + -630, + -246, + 607, + 113, + 486, + 1519, + -1452, + -4199, + 827, + 5634, + 842, + -4366, + -1551, + 1695, + 614, + 42, + 559, + -247, + -669, + 0, + 96, + -37, + 187 + }, + { + 188, /* Filter 6 */ + -40, + 74, + 0, + -650, + -247, + 584, + 78, + 550, + 1607, + -1502, + -4284, + 835, + 5637, + 835, + -4284, + -1502, + 1607, + 550, + 78, + 584, + -247, + -650, + 0, + 74, + -40, + 188 + }, + { + 187, /* Filter 7 */ + -37, + 96, + 0, + -669, + -247, + 559, + 42, + 614, + 1695, + -1551, + -4366, + 842, + 5634, + 827, + -4199, + -1452, + 1519, + 486, + 113, + 607, + -246, + -630, + 0, + 53, + -44, + 189 + }, + { + 184, /* Filter 8 */ + -32, + 119, + 0, + -687, + -246, + 531, + 4, + 680, + 1784, + -1599, + -4445, + 849, + 5628, + 818, + -4112, + -1403, + 1433, + 425, + 146, + 627, + -244, + -609, + 0, + 32, + -47, + 189 + }, + { + 181, /* Filter 9 */ + -28, + 142, + 0, + -704, + -245, + 501, + -35, + 748, + 1873, + -1647, + -4522, + 855, + 5618, + 809, + -4023, + -1353, + 1347, + 365, + 177, + 645, + -242, + -587, + 0, + 12, + -50, + 188 + }, + { + 177, /* Filter 10 */ + -23, + 166, + 0, + -720, + -243, + 468, + -76, + 816, + 1962, + -1695, + -4596, + 860, + 5603, + 799, + -3932, + -1302, + 1262, + 307, + 207, + 661, + -240, + -565, + 0, + -6, + -53, + 187 + }, + { + 173, /* Filter 11 */ + -18, + 190, + 0, + -734, + -241, + 433, + -118, + 886, + 2052, + -1741, + -4667, + 865, + 5584, + 789, + -3839, + -1252, + 1178, + 250, + 235, + 675, + -237, + -542, + 0, + -25, + -56, + 185 + } +}; +static const int16_t rx_pulseshaper_2400_im[RX_PULSESHAPER_2400_COEFF_SETS][27] = +{ + { + 93, /* Filter 0 */ + 179, + -6, + 217, + 82, + -719, + -349, + 359, + -195, + 796, + 2359, + -1216, + -4918, + 0, + 5492, + 1538, + -3508, + -1556, + 958, + 223, + 201, + 732, + -118, + -524, + -34, + -41, + -85 + }, + { + 94, /* Filter 1 */ + 172, + -4, + 242, + 85, + -730, + -344, + 323, + -250, + 856, + 2458, + -1247, + -4985, + 0, + 5466, + 1516, + -3418, + -1491, + 886, + 163, + 221, + 742, + -116, + -500, + -30, + -57, + -88 + }, + { + 95, /* Filter 2 */ + 165, + -1, + 268, + 89, + -739, + -337, + 285, + -307, + 917, + 2556, + -1277, + -5050, + 0, + 5435, + 1493, + -3326, + -1426, + 816, + 104, + 238, + 750, + -114, + -475, + -26, + -72, + -90 + }, + { + 96, /* Filter 3 */ + 156, + 1, + 294, + 93, + -747, + -328, + 244, + -365, + 978, + 2655, + -1307, + -5111, + 0, + 5400, + 1469, + -3233, + -1361, + 748, + 48, + 255, + 756, + -111, + -449, + -22, + -87, + -92 + }, + { + 96, /* Filter 4 */ + 147, + 5, + 320, + 96, + -753, + -319, + 201, + -425, + 1041, + 2753, + -1336, + -5168, + 0, + 5361, + 1444, + -3139, + -1296, + 680, + -6, + 270, + 759, + -108, + -423, + -18, + -101, + -94 + }, + { + 96, /* Filter 5 */ + 137, + 8, + 346, + 99, + -757, + -309, + 155, + -486, + 1104, + 2851, + -1364, + -5222, + 0, + 5318, + 1418, + -3044, + -1231, + 614, + -58, + 284, + 760, + -106, + -398, + -15, + -114, + -95 + }, + { + 96, /* Filter 6 */ + 126, + 11, + 372, + 103, + -760, + -297, + 108, + -550, + 1167, + 2948, + -1391, + -5272, + 0, + 5272, + 1391, + -2948, + -1167, + 550, + -108, + 297, + 760, + -103, + -372, + -11, + -126, + -96 + }, + { + 95, /* Filter 7 */ + 114, + 15, + 398, + 106, + -760, + -284, + 58, + -614, + 1231, + 3044, + -1418, + -5318, + 0, + 5222, + 1364, + -2851, + -1104, + 486, + -155, + 309, + 757, + -99, + -346, + -8, + -137, + -96 + }, + { + 94, /* Filter 8 */ + 101, + 18, + 423, + 108, + -759, + -270, + 6, + -680, + 1296, + 3139, + -1444, + -5361, + 0, + 5168, + 1336, + -2753, + -1041, + 425, + -201, + 319, + 753, + -96, + -320, + -5, + -147, + -96 + }, + { + 92, /* Filter 9 */ + 87, + 22, + 449, + 111, + -756, + -255, + -48, + -748, + 1361, + 3233, + -1469, + -5400, + 0, + 5111, + 1307, + -2655, + -978, + 365, + -244, + 328, + 747, + -93, + -294, + -1, + -156, + -96 + }, + { + 90, /* Filter 10 */ + 72, + 26, + 475, + 114, + -750, + -238, + -104, + -816, + 1426, + 3326, + -1493, + -5435, + 0, + 5050, + 1277, + -2556, + -917, + 307, + -285, + 337, + 739, + -89, + -268, + 1, + -165, + -95 + }, + { + 88, /* Filter 11 */ + 57, + 30, + 500, + 116, + -742, + -221, + -163, + -886, + 1491, + 3418, + -1516, + -5466, + 0, + 4985, + 1247, + -2458, + -856, + 250, + -323, + 344, + 730, + -85, + -242, + 4, + -172, + -94 + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v27ter_rx_2400_floating_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v27ter_rx_2400_floating_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,704 @@ +#define RX_PULSESHAPER_2400_GAIN 1.000000f +#define RX_PULSESHAPER_2400_COEFF_SETS 12 +static const float rx_pulseshaper_2400_re[RX_PULSESHAPER_2400_COEFF_SETS][27] = +{ + { + 0.0055897353f, /* Filter 0 */ + -0.0017768555f, + -0.0013103940f, + -0.0000000000f, + -0.0158167680f, + -0.0071354798f, + 0.0209536104f, + 0.0079805594f, + 0.0059737033f, + 0.0334507241f, + -0.0366873785f, + -0.1142993318f, + 0.0237732032f, + 0.1697241571f, + 0.0265507077f, + -0.1445311926f, + -0.0545612273f, + 0.0653773871f, + 0.0292370049f, + -0.0049656640f, + 0.0120974973f, + -0.0072670867f, + -0.0228066104f, + -0.0000000000f, + 0.0065619589f, + -0.0004099816f, + 0.0051233099f + }, + { + 0.0056661324f, /* Filter 1 */ + -0.0017109303f, + -0.0007708414f, + -0.0000000000f, + -0.0165439672f, + -0.0072433070f, + 0.0206042610f, + 0.0071755753f, + 0.0076467868f, + 0.0359728632f, + -0.0382251381f, + -0.1171902140f, + 0.0240999725f, + 0.1704283439f, + 0.0264209157f, + -0.1424503693f, + -0.0531570681f, + 0.0626369632f, + 0.0270658031f, + -0.0036203809f, + 0.0132414079f, + -0.0073656400f, + -0.0224159869f, + -0.0000000000f, + 0.0058122224f, + -0.0005708451f, + 0.0052884998f + }, + { + 0.0057239310f, /* Filter 2 */ + -0.0016362891f, + -0.0002066397f, + -0.0000000000f, + -0.0172533640f, + -0.0073359675f, + 0.0201882078f, + 0.0063201372f, + 0.0093733613f, + 0.0385302697f, + -0.0397608538f, + -0.1200263595f, + 0.0244107583f, + 0.1710059274f, + 0.0262716833f, + -0.1402783754f, + -0.0517306911f, + 0.0598999355f, + 0.0249301574f, + -0.0023214919f, + 0.0143092559f, + -0.0074421425f, + -0.0219819125f, + -0.0000000000f, + 0.0050747268f, + -0.0007235567f, + 0.0054290965f + }, + { + 0.0057623290f, /* Filter 3 */ + -0.0015528738f, + 0.0003813736f, + -0.0000000000f, + -0.0179424453f, + -0.0074126928f, + 0.0197040287f, + 0.0054142358f, + 0.0111521022f, + 0.0411200929f, + -0.0412925136f, + -0.1228037562f, + 0.0247051059f, + 0.1714560725f, + 0.0261032340f, + -0.1380184057f, + -0.0502840872f, + 0.0571697634f, + 0.0228323007f, + -0.0010698185f, + 0.0153014454f, + -0.0074971800f, + -0.0215069309f, + -0.0000000000f, + 0.0043511037f, + -0.0008679402f, + 0.0055454595f + }, + { + 0.0057805629f, /* Filter 4 */ + -0.0014606490f, + 0.0009922677f, + -0.0000000000f, + -0.0186086705f, + -0.0074727246f, + 0.0191503979f, + 0.0044579578f, + 0.0129815758f, + 0.0437393992f, + -0.0428181071f, + -0.1255184420f, + 0.0249825756f, + 0.1717780904f, + 0.0259158247f, + -0.1356737711f, + -0.0488192570f, + 0.0544498624f, + 0.0207743813f, + 0.0001339048f, + 0.0162185066f, + -0.0075313657f, + -0.0209936138f, + -0.0000000000f, + 0.0036429017f, + -0.0010038447f, + 0.0056380167f + }, + { + 0.0057779068f, /* Filter 5 */ + -0.0013596055f, + 0.0016250229f, + -0.0000000000f, + -0.0192494812f, + -0.0075153229f, + 0.0185260951f, + 0.0034514727f, + 0.0148602405f, + 0.0463851645f, + -0.0443356077f, + -0.1281665483f, + 0.0252427568f, + 0.1719714956f, + 0.0257097307f, + -0.1332478798f, + -0.0473382129f, + 0.0517436041f, + 0.0187584474f, + 0.0012890415f, + 0.0170610995f, + -0.0075453395f, + -0.0204445393f, + -0.0000000000f, + 0.0029515842f, + -0.0011311490f, + 0.0057072442f + }, + { + 0.0057536787f, /* Filter 6 */ + -0.0012497586f, + 0.0022785281f, + -0.0000000000f, + -0.0198622982f, + -0.0075397630f, + 0.0178299978f, + 0.0023950476f, + 0.0167864468f, + 0.0490542902f, + -0.0458429864f, + -0.1307442661f, + 0.0254852625f, + 0.1720360055f, + 0.0254852625f, + -0.1307442661f, + -0.0458429864f, + 0.0490542902f, + 0.0167864468f, + 0.0023950476f, + 0.0178299978f, + -0.0075397630f, + -0.0198622982f, + -0.0000000000f, + 0.0022785281f, + -0.0012497586f, + 0.0057536787f + }, + { + 0.0057072442f, /* Filter 7 */ + -0.0011311490f, + 0.0029515842f, + -0.0000000000f, + -0.0204445393f, + -0.0075453394f, + 0.0170610995f, + 0.0012890415f, + 0.0187584474f, + 0.0517436041f, + -0.0473382129f, + -0.1332478798f, + 0.0257097307f, + 0.1719714956f, + 0.0252427568f, + -0.1281665483f, + -0.0443356077f, + 0.0463851645f, + 0.0148602405f, + 0.0034514727f, + 0.0185260951f, + -0.0075153229f, + -0.0192494812f, + -0.0000000000f, + 0.0016250229f, + -0.0013596055f, + 0.0057779068f + }, + { + 0.0056380167f, /* Filter 8 */ + -0.0010038447f, + 0.0036429017f, + -0.0000000000f, + -0.0209936138f, + -0.0075313657f, + 0.0162185066f, + 0.0001339048f, + 0.0207743813f, + 0.0544498624f, + -0.0488192570f, + -0.1356737711f, + 0.0259158247f, + 0.1717780904f, + 0.0249825756f, + -0.1255184420f, + -0.0428181071f, + 0.0437393992f, + 0.0129815758f, + 0.0044579578f, + 0.0191503979f, + -0.0074727246f, + -0.0186086705f, + -0.0000000000f, + 0.0009922677f, + -0.0014606490f, + 0.0057805629f + }, + { + 0.0055454595f, /* Filter 9 */ + -0.0008679402f, + 0.0043511037f, + -0.0000000000f, + -0.0215069309f, + -0.0074971800f, + 0.0153014454f, + -0.0010698185f, + 0.0228323007f, + 0.0571697634f, + -0.0502840872f, + -0.1380184057f, + 0.0261032340f, + 0.1714560725f, + 0.0247051059f, + -0.1228037562f, + -0.0412925136f, + 0.0411200929f, + 0.0111521022f, + 0.0054142358f, + 0.0197040287f, + -0.0074126928f, + -0.0179424453f, + -0.0000000000f, + 0.0003813736f, + -0.0015528738f, + 0.0057623290f + }, + { + 0.0054290965f, /* Filter 10 */ + -0.0007235567f, + 0.0050747268f, + -0.0000000000f, + -0.0219819125f, + -0.0074421425f, + 0.0143092559f, + -0.0023214919f, + 0.0249301574f, + 0.0598999355f, + -0.0517306911f, + -0.1402783754f, + 0.0262716833f, + 0.1710059274f, + 0.0244107583f, + -0.1200263595f, + -0.0397608538f, + 0.0385302696f, + 0.0093733613f, + 0.0063201372f, + 0.0201882078f, + -0.0073359675f, + -0.0172533640f, + -0.0000000000f, + -0.0002066397f, + -0.0016362891f, + 0.0057239310f + }, + { + 0.0052884998f, /* Filter 11 */ + -0.0005708451f, + 0.0058122224f, + -0.0000000000f, + -0.0224159869f, + -0.0073656400f, + 0.0132414079f, + -0.0036203809f, + 0.0270658031f, + 0.0626369632f, + -0.0531570681f, + -0.1424503693f, + 0.0264209157f, + 0.1704283439f, + 0.0240999725f, + -0.1171902140f, + -0.0382251381f, + 0.0359728632f, + 0.0076467868f, + 0.0071755753f, + 0.0206042610f, + -0.0072433070f, + -0.0165439672f, + -0.0000000000f, + -0.0007708414f, + -0.0017109303f, + 0.0056661324f + } +}; +static const float rx_pulseshaper_2400_im[RX_PULSESHAPER_2400_COEFF_SETS][27] = +{ + { + 0.0028481124f, /* Filter 0 */ + 0.0054685989f, + -0.0002075460f, + 0.0066437545f, + 0.0025051299f, + -0.0219607487f, + -0.0106763977f, + 0.0109842977f, + -0.0059737033f, + 0.0243033737f, + 0.0720030344f, + -0.0371381042f, + -0.1500980975f, + 0.0000000000f, + 0.1676345711f, + 0.0469610312f, + -0.1070824379f, + -0.0474994521f, + 0.0292370049f, + 0.0068346502f, + 0.0061639827f, + 0.0223657932f, + -0.0036122122f, + -0.0160139260f, + -0.0010393122f, + -0.0012617935f, + -0.0026104568f + }, + { + 0.0028870387f, /* Filter 1 */ + 0.0052657019f, + -0.0001220893f, + 0.0074134959f, + 0.0026203070f, + -0.0222926068f, + -0.0104983953f, + 0.0098763321f, + -0.0076467868f, + 0.0261358150f, + 0.0750210576f, + -0.0380774087f, + -0.1521612376f, + 0.0000000000f, + 0.1668150966f, + 0.0462849307f, + -0.1043266203f, + -0.0455084176f, + 0.0270658031f, + 0.0049830269f, + 0.0067468343f, + 0.0226691090f, + -0.0035503435f, + -0.0152621568f, + -0.0009205656f, + -0.0017568807f, + -0.0026946253f + }, + { + 0.0029164885f, /* Filter 2 */ + 0.0050359799f, + -0.0000327285f, + 0.0081920829f, + 0.0027326644f, + -0.0225777865f, + -0.0102864056f, + 0.0086989226f, + -0.0093733613f, + 0.0279938795f, + 0.0780350694f, + -0.0389989283f, + -0.1541234619f, + 0.0000000000f, + 0.1658728803f, + 0.0455792071f, + -0.1015271978f, + -0.0435198506f, + 0.0249301574f, + 0.0031952595f, + 0.0072909301f, + 0.0229045595f, + -0.0034815929f, + -0.0144973559f, + -0.0008037578f, + -0.0022268784f, + -0.0027662629f + }, + { + 0.0029360533f, /* Filter 3 */ + 0.0047792542f, + 0.0000604036f, + 0.0089776236f, + 0.0028418041f, + -0.0228139225f, + -0.0100397041f, + 0.0074520562f, + -0.0111521022f, + 0.0298754963f, + 0.0810411210f, + -0.0399013592f, + -0.1559818998f, + 0.0000000000f, + 0.1648093332f, + 0.0448448985f, + -0.0986880778f, + -0.0415362644f, + 0.0228323007f, + 0.0014724788f, + 0.0077964758f, + 0.0230739473f, + -0.0034063632f, + -0.0137219696f, + -0.0006891471f, + -0.0026712454f, + -0.0028255527f + }, + { + 0.0029453439f, /* Filter 4 */ + 0.0044954152f, + 0.0001571598f, + 0.0097681519f, + 0.0029473238f, + -0.0229986814f, + -0.0097576151f, + 0.0061358525f, + -0.0129815758f, + 0.0317785336f, + 0.0840352668f, + -0.0407834141f, + -0.1577337746f, + 0.0000000000f, + 0.1636260777f, + 0.0440830805f, + -0.0958131866f, + -0.0395601407f, + 0.0207743813f, + -0.0001843041f, + 0.0082637419f, + 0.0231791603f, + -0.0033250618f, + -0.0129383854f, + -0.0005769789f, + -0.0030895164f, + -0.0028727130f + }, + { + 0.0029439906f, /* Filter 5 */ + 0.0041844356f, + 0.0002573783f, + 0.0105616312f, + 0.0030488183f, + -0.0231297855f, + -0.0094395169f, + 0.0047505446f, + -0.0148602405f, + 0.0337007947f, + 0.0870135294f, + -0.0416438360f, + -0.1593764942f, + 0.0000000000f, + 0.1623248514f, + 0.0432948606f, + -0.0929064739f, + -0.0375939289f, + 0.0187584474f, + -0.0017742134f, + 0.0086930644f, + 0.0232221670f, + -0.0032380969f, + -0.0121489492f, + -0.0004674850f, + -0.0034813187f, + -0.0029079862f + }, + { + 0.0029316457f, /* Filter 6 */ + 0.0038463614f, + 0.0003608834f, + 0.0113559549f, + 0.0031458790f, + -0.0232050046f, + -0.0090848376f, + 0.0032965003f, + -0.0167864468f, + 0.0356400280f, + 0.0899719266f, + -0.0424813872f, + -0.1609076145f, + 0.0000000000f, + 0.1609076145f, + 0.0424813872f, + -0.0899719266f, + -0.0356400280f, + 0.0167864468f, + -0.0032965003f, + 0.0090848376f, + 0.0232050046f, + -0.0031458790f, + -0.0113559549f, + -0.0003608834f, + -0.0038463614f, + -0.0029316457f + }, + { + 0.0029079862f, /* Filter 7 */ + 0.0034813187f, + 0.0004674850f, + 0.0121489492f, + 0.0032380969f, + -0.0232221670f, + -0.0086930644f, + 0.0017742134f, + -0.0187584474f, + 0.0375939290f, + 0.0929064739f, + -0.0432948606f, + -0.1623248514f, + 0.0000000000f, + 0.1593764942f, + 0.0416438359f, + -0.0870135294f, + -0.0337007947f, + 0.0148602405f, + -0.0047505446f, + 0.0094395170f, + 0.0231297855f, + -0.0030488183f, + -0.0105616312f, + -0.0002573783f, + -0.0041844356f, + -0.0029439906f + }, + { + 0.0028727130f, /* Filter 8 */ + 0.0030895164f, + 0.0005769789f, + 0.0129383854f, + 0.0033250618f, + -0.0231791603f, + -0.0082637419f, + 0.0001843041f, + -0.0207743813f, + 0.0395601407f, + 0.0958131866f, + -0.0440830805f, + -0.1636260777f, + 0.0000000000f, + 0.1577337746f, + 0.0407834141f, + -0.0840352668f, + -0.0317785336f, + 0.0129815758f, + -0.0061358525f, + 0.0097576151f, + 0.0229986814f, + -0.0029473238f, + -0.0097681519f, + -0.0001571598f, + -0.0044954152f, + -0.0029453439f + }, + { + 0.0028255527f, /* Filter 9 */ + 0.0026712454f, + 0.0006891471f, + 0.0137219696f, + 0.0034063632f, + -0.0230739473f, + -0.0077964758f, + -0.0014724788f, + -0.0228323007f, + 0.0415362644f, + 0.0986880778f, + -0.0448448985f, + -0.1648093332f, + 0.0000000000f, + 0.1559818998f, + 0.0399013592f, + -0.0810411210f, + -0.0298754963f, + 0.0111521022f, + -0.0074520562f, + 0.0100397041f, + 0.0228139225f, + -0.0028418041f, + -0.0089776236f, + -0.0000604036f, + -0.0047792542f, + -0.0029360533f + }, + { + 0.0027662629f, /* Filter 10 */ + 0.0022268784f, + 0.0008037578f, + 0.0144973559f, + 0.0034815929f, + -0.0229045595f, + -0.0072909301f, + -0.0031952595f, + -0.0249301574f, + 0.0435198506f, + 0.1015271978f, + -0.0455792071f, + -0.1658728803f, + 0.0000000000f, + 0.1541234619f, + 0.0389989283f, + -0.0780350694f, + -0.0279938795f, + 0.0093733613f, + -0.0086989227f, + 0.0102864056f, + 0.0225777865f, + -0.0027326644f, + -0.0081920829f, + 0.0000327285f, + -0.0050359799f, + -0.0029164885f + }, + { + 0.0026946253f, /* Filter 11 */ + 0.0017568807f, + 0.0009205656f, + 0.0152621568f, + 0.0035503435f, + -0.0226691090f, + -0.0067468343f, + -0.0049830269f, + -0.0270658031f, + 0.0455084176f, + 0.1043266203f, + -0.0462849307f, + -0.1668150966f, + 0.0000000000f, + 0.1521612376f, + 0.0380774087f, + -0.0750210576f, + -0.0261358150f, + 0.0076467868f, + -0.0098763321f, + 0.0104983953f, + 0.0222926068f, + -0.0026203070f, + -0.0074134959f, + 0.0001220893f, + -0.0052657019f, + -0.0028870387f + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v27ter_rx_4800_fixed_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v27ter_rx_4800_fixed_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,472 @@ +#define RX_PULSESHAPER_4800_GAIN 32767.000000f +#define RX_PULSESHAPER_4800_COEFF_SETS 8 +static const int16_t rx_pulseshaper_4800_re[RX_PULSESHAPER_4800_COEFF_SETS][27] = +{ + { + -108, /* Filter 0 */ + 30, + -52, + 0, + 261, + 2, + 439, + 568, + -696, + -143, + -695, + -3619, + 934, + 7298, + 1141, + -5681, + -1727, + 1239, + -125, + 578, + 861, + -152, + 8, + 0, + -230, + -16, + -87 + }, + { + -112, /* Filter 1 */ + 26, + -76, + 0, + 246, + -13, + 500, + 589, + -660, + -8, + -815, + -3898, + 969, + 7375, + 1126, + -5454, + -1594, + 1032, + -233, + 600, + 822, + -131, + 56, + 0, + -212, + -9, + -97 + }, + { + -115, /* Filter 2 */ + 21, + -100, + 0, + 227, + -30, + 561, + 606, + -614, + 138, + -939, + -4173, + 1002, + 7431, + 1107, + -5216, + -1460, + 834, + -330, + 615, + 778, + -110, + 100, + 0, + -192, + -2, + -104 + }, + { + -115, /* Filter 3 */ + 16, + -124, + 0, + 202, + -49, + 620, + 617, + -559, + 296, + -1066, + -4444, + 1033, + 7465, + 1085, + -4967, + -1327, + 645, + -417, + 622, + 729, + -89, + 139, + 0, + -171, + 4, + -110 + }, + { + -113, /* Filter 4 */ + 10, + -148, + 0, + 173, + -68, + 676, + 623, + -493, + 466, + -1196, + -4709, + 1060, + 7476, + 1060, + -4709, + -1196, + 466, + -493, + 623, + 676, + -68, + 173, + 0, + -148, + 10, + -113 + }, + { + -110, /* Filter 5 */ + 4, + -171, + 0, + 139, + -89, + 729, + 622, + -417, + 645, + -1327, + -4967, + 1085, + 7465, + 1033, + -4444, + -1066, + 296, + -559, + 617, + 620, + -49, + 202, + 0, + -124, + 16, + -115 + }, + { + -104, /* Filter 6 */ + -2, + -192, + 0, + 100, + -110, + 778, + 615, + -330, + 834, + -1460, + -5216, + 1107, + 7431, + 1002, + -4173, + -939, + 138, + -614, + 606, + 561, + -30, + 227, + 0, + -100, + 21, + -115 + }, + { + -97, /* Filter 7 */ + -9, + -212, + 0, + 56, + -131, + 822, + 600, + -233, + 1032, + -1594, + -5454, + 1126, + 7375, + 969, + -3898, + -815, + -8, + -660, + 589, + 500, + -13, + 246, + 0, + -76, + 26, + -112 + } +}; +static const int16_t rx_pulseshaper_4800_im[RX_PULSESHAPER_4800_COEFF_SETS][27] = +{ + { + -55, /* Filter 0 */ + -93, + -8, + -233, + -41, + 8, + -224, + 782, + 696, + -104, + 1365, + -1176, + -5900, + 0, + 7208, + 1846, + -3391, + -900, + -125, + -796, + 439, + 469, + 1, + 264, + 36, + -50, + 44 + }, + { + -57, /* Filter 1 */ + -81, + -12, + -249, + -39, + -41, + -255, + 811, + 660, + -5, + 1600, + -1266, + -6123, + 0, + 7110, + 1772, + -3129, + -750, + -233, + -826, + 419, + 403, + 9, + 274, + 33, + -27, + 49 + }, + { + -58, /* Filter 2 */ + -67, + -15, + -262, + -35, + -95, + -286, + 834, + 614, + 100, + 1844, + -1356, + -6331, + 0, + 6992, + 1694, + -2866, + -606, + -330, + -846, + 396, + 338, + 15, + 280, + 30, + -6, + 53 + }, + { + -58, /* Filter 3 */ + -51, + -19, + -272, + -32, + -152, + -315, + 850, + 559, + 215, + 2093, + -1444, + -6522, + 0, + 6854, + 1613, + -2606, + -468, + -417, + -856, + 371, + 274, + 22, + 281, + 27, + 14, + 56 + }, + { + -58, /* Filter 4 */ + -33, + -23, + -279, + -27, + -212, + -344, + 857, + 493, + 338, + 2347, + -1530, + -6697, + 0, + 6697, + 1530, + -2347, + -338, + -493, + -857, + 344, + 212, + 27, + 279, + 23, + 33, + 58 + }, + { + -56, /* Filter 5 */ + -14, + -27, + -281, + -22, + -274, + -371, + 856, + 417, + 468, + 2606, + -1613, + -6854, + 0, + 6522, + 1444, + -2093, + -215, + -559, + -850, + 315, + 152, + 32, + 272, + 19, + 51, + 58 + }, + { + -53, /* Filter 6 */ + 6, + -30, + -280, + -15, + -338, + -396, + 846, + 330, + 606, + 2866, + -1694, + -6992, + 0, + 6331, + 1356, + -1844, + -100, + -614, + -834, + 286, + 95, + 35, + 262, + 15, + 67, + 58 + }, + { + -49, /* Filter 7 */ + 27, + -33, + -274, + -9, + -403, + -419, + 826, + 233, + 750, + 3129, + -1772, + -7110, + 0, + 6123, + 1266, + -1600, + 5, + -660, + -811, + 255, + 41, + 39, + 249, + 12, + 81, + 57 + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v27ter_rx_4800_floating_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v27ter_rx_4800_floating_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,472 @@ +#define RX_PULSESHAPER_4800_GAIN 1.000000f +#define RX_PULSESHAPER_4800_COEFF_SETS 8 +static const float rx_pulseshaper_4800_re[RX_PULSESHAPER_4800_COEFF_SETS][27] = +{ + { + -0.0033256218f, /* Filter 0 */ + 0.0009305771f, + -0.0015971835f, + 0.0000000000f, + 0.0079803629f, + 0.0000856199f, + 0.0134186592f, + 0.0173489890f, + -0.0212482252f, + -0.0043725352f, + -0.0212278148f, + -0.1104697471f, + 0.0285220984f, + 0.2227359376f, + 0.0348435773f, + -0.1734025016f, + -0.0527331603f, + 0.0378282430f, + -0.0038217359f, + 0.0176626696f, + 0.0262988265f, + -0.0046538310f, + 0.0002736608f, + 0.0000000000f, + -0.0070402814f, + -0.0004997091f, + -0.0026831867f + }, + { + -0.0034458238f, /* Filter 1 */ + 0.0008096319f, + -0.0023281305f, + 0.0000000000f, + 0.0075308694f, + -0.0004118109f, + 0.0152885238f, + 0.0179999198f, + -0.0201560074f, + -0.0002450506f, + -0.0248951628f, + -0.1189640874f, + 0.0295975058f, + 0.2251016174f, + 0.0343715984f, + -0.1664714744f, + -0.0486568478f, + 0.0315222376f, + -0.0071130021f, + 0.0183322510f, + 0.0251163790f, + -0.0040031308f, + 0.0017373694f, + 0.0000000000f, + -0.0064895990f, + -0.0002763861f, + -0.0029729852f + }, + { + -0.0035131448f, /* Filter 2 */ + 0.0006690952f, + -0.0030664478f, + 0.0000000000f, + 0.0069350877f, + -0.0009454877f, + 0.0171306792f, + 0.0185057200f, + -0.0187663603f, + 0.0042370446f, + -0.0286756337f, + -0.1273684894f, + 0.0306020346f, + 0.2268016406f, + 0.0338005382f, + -0.1591873153f, + -0.0445801870f, + 0.0254709341f, + -0.0100839969f, + 0.0187737877f, + 0.0237628386f, + -0.0033572432f, + 0.0030664735f, + 0.0000000000f, + -0.0058786966f, + -0.0000612735f, + -0.0032022929f + }, + { + -0.0035245124f, /* Filter 3 */ + 0.0005101233f, + -0.0038017456f, + 0.0000000000f, + 0.0061906444f, + -0.0015115772f, + 0.0189227445f, + 0.0188507571f, + -0.0170703338f, + 0.0090637512f, + -0.0325525585f, + -0.1356378526f, + 0.0315298182f, + 0.2278257713f, + 0.0331338197f, + -0.1515915567f, + -0.0405239110f, + 0.0196974299f, + -0.0127330841f, + 0.0189988021f, + 0.0222629772f, + -0.0027227278f, + 0.0042544823f, + 0.0000000000f, + -0.0052193006f, + 0.0001430276f, + -0.0033704179f + }, + { + -0.0034775081f, /* Filter 4 */ + 0.0003341791f, + -0.0045231271f, + 0.0000000000f, + 0.0052967893f, + -0.0021056563f, + 0.0206414817f, + 0.0190199255f, + -0.0150609085f, + 0.0142223501f, + -0.0365082065f, + -0.1437270842f, + 0.0323754130f, + 0.2281678478f, + 0.0323754130f, + -0.1437270842f, + -0.0365082065f, + 0.0142223501f, + -0.0150609085f, + 0.0190199255f, + 0.0206414817f, + -0.0021056563f, + 0.0052967893f, + 0.0000000000f, + -0.0045231271f, + 0.0003341791f, + -0.0034775081f + }, + { + -0.0033704179f, /* Filter 5 */ + 0.0001430276f, + -0.0052193006f, + 0.0000000000f, + 0.0042544823f, + -0.0027227278f, + 0.0222629772f, + 0.0189988021f, + -0.0127330840f, + 0.0196974299f, + -0.0405239110f, + -0.1515915567f, + 0.0331338197f, + 0.2278257713f, + 0.0315298182f, + -0.1356378526f, + -0.0325525585f, + 0.0090637512f, + -0.0170703338f, + 0.0188507571f, + 0.0189227445f, + -0.0015115772f, + 0.0061906444f, + 0.0000000000f, + -0.0038017456f, + 0.0005101233f, + -0.0035245124f + }, + { + -0.0032022929f, /* Filter 6 */ + -0.0000612735f, + -0.0058786966f, + 0.0000000000f, + 0.0030664735f, + -0.0033572432f, + 0.0237628386f, + 0.0187737877f, + -0.0100839969f, + 0.0254709341f, + -0.0445801870f, + -0.1591873153f, + 0.0338005382f, + 0.2268016406f, + 0.0306020346f, + -0.1273684894f, + -0.0286756337f, + 0.0042370446f, + -0.0187663603f, + 0.0185057200f, + 0.0171306792f, + -0.0009454877f, + 0.0069350877f, + 0.0000000000f, + -0.0030664478f, + 0.0006690952f, + -0.0035131448f + }, + { + -0.0029729852f, /* Filter 7 */ + -0.0002763861f, + -0.0064895990f, + 0.0000000000f, + 0.0017373694f, + -0.0040031308f, + 0.0251163790f, + 0.0183322510f, + -0.0071130021f, + 0.0315222376f, + -0.0486568478f, + -0.1664714744f, + 0.0343715984f, + 0.2251016174f, + 0.0295975058f, + -0.1189640874f, + -0.0248951628f, + -0.0002450506f, + -0.0201560074f, + 0.0179999198f, + 0.0152885238f, + -0.0004118109f, + 0.0075308694f, + 0.0000000000f, + -0.0023281305f, + 0.0008096319f, + -0.0034458238f + } +}; +static const float rx_pulseshaper_4800_im[RX_PULSESHAPER_4800_COEFF_SETS][27] = +{ + { + -0.0016944890f, /* Filter 0 */ + -0.0028640219f, + -0.0002529690f, + -0.0071280394f, + -0.0012639653f, + 0.0002635111f, + -0.0068371484f, + 0.0238788348f, + 0.0212482252f, + -0.0031768328f, + 0.0416619324f, + -0.0358937967f, + -0.1800814422f, + 0.0000000000f, + 0.2199936886f, + 0.0563418882f, + -0.1034946543f, + -0.0274838273f, + -0.0038217359f, + -0.0243105791f, + 0.0133999214f, + 0.0143230189f, + 0.0000433436f, + 0.0080798392f, + 0.0011150710f, + -0.0015379465f, + 0.0013671519f + }, + { + -0.0017557349f, /* Filter 1 */ + -0.0024917908f, + -0.0003687396f, + -0.0076128677f, + -0.0011927725f, + -0.0012674236f, + -0.0077898920f, + 0.0247747642f, + 0.0201560073f, + -0.0001780397f, + 0.0488595080f, + -0.0386537751f, + -0.1868712970f, + 0.0000000000f, + 0.2170137312f, + 0.0540898609f, + -0.0954944407f, + -0.0229022462f, + -0.0071130021f, + -0.0252321788f, + 0.0127974343f, + 0.0123203697f, + 0.0002751723f, + 0.0083907693f, + 0.0010278515f, + -0.0008506290f, + 0.0015148116f + }, + { + -0.0017900367f, /* Filter 2 */ + -0.0020592633f, + -0.0004856776f, + -0.0080135090f, + -0.0010984100f, + -0.0029099119f, + -0.0087285170f, + 0.0254709384f, + 0.0187663602f, + 0.0030783931f, + 0.0562791000f, + -0.0413845309f, + -0.1932136421f, + 0.0000000000f, + 0.2134081993f, + 0.0517230941f, + -0.0874935433f, + -0.0185057168f, + -0.0100839969f, + -0.0258399020f, + 0.0121077710f, + 0.0103325321f, + 0.0004856817f, + 0.0085629052f, + 0.0009310941f, + -0.0001885803f, + 0.0016316497f + }, + { + -0.0017958288f, /* Filter 3 */ + -0.0015699981f, + -0.0006021373f, + -0.0083189193f, + -0.0009805017f, + -0.0046521564f, + -0.0096416199f, + 0.0259458413f, + 0.0170703338f, + 0.0065852007f, + 0.0638879934f, + -0.0440714099f, + -0.1990714373f, + 0.0000000000f, + 0.2091987041f, + 0.0492550826f, + -0.0795326534f, + -0.0143110205f, + -0.0127330840f, + -0.0261496077f, + 0.0113435535f, + 0.0083796945f, + 0.0006738438f, + 0.0086029159f, + 0.0008266560f, + 0.0004401936f, + 0.0017173137f + }, + { + -0.0017718789f, /* Filter 4 */ + -0.0010284976f, + -0.0007163930f, + -0.0085186340f, + -0.0008389290f, + -0.0064805437f, + -0.0105173602f, + 0.0261786816f, + 0.0150609085f, + 0.0103331422f, + 0.0716513895f, + -0.0466997606f, + -0.2044103127f, + 0.0000000000f, + 0.2044103127f, + 0.0466997606f, + -0.0716513895f, + -0.0103331422f, + -0.0150609085f, + -0.0261786816f, + 0.0105173602f, + 0.0064805437f, + 0.0008389290f, + 0.0085186340f, + 0.0007163930f, + 0.0010284976f, + 0.0017718789f + }, + { + -0.0017173137f, /* Filter 5 */ + -0.0004401936f, + -0.0008266560f, + -0.0086029159f, + -0.0006738438f, + -0.0083796945f, + -0.0113435535f, + 0.0261496077f, + 0.0127330840f, + 0.0143110205f, + 0.0795326534f, + -0.0492550826f, + -0.2091987041f, + 0.0000000000f, + 0.1990714373f, + 0.0440714099f, + -0.0638879934f, + -0.0065852007f, + -0.0170703338f, + -0.0259458413f, + 0.0096416199f, + 0.0046521564f, + 0.0009805017f, + 0.0083189193f, + 0.0006021373f, + 0.0015699981f, + 0.0017958288f + }, + { + -0.0016316497f, /* Filter 6 */ + 0.0001885803f, + -0.0009310941f, + -0.0085629052f, + -0.0004856817f, + -0.0103325321f, + -0.0121077710f, + 0.0258399020f, + 0.0100839969f, + 0.0185057168f, + 0.0874935433f, + -0.0517230941f, + -0.2134081993f, + 0.0000000000f, + 0.1932136421f, + 0.0413845309f, + -0.0562791000f, + -0.0030783931f, + -0.0187663602f, + -0.0254709384f, + 0.0087285170f, + 0.0029099119f, + 0.0010984100f, + 0.0080135090f, + 0.0004856776f, + 0.0020592633f, + 0.0017900367f + }, + { + -0.0015148116f, /* Filter 7 */ + 0.0008506290f, + -0.0010278515f, + -0.0083907693f, + -0.0002751723f, + -0.0123203697f, + -0.0127974343f, + 0.0252321788f, + 0.0071130021f, + 0.0229022462f, + 0.0954944407f, + -0.0540898609f, + -0.2170137312f, + 0.0000000000f, + 0.1868712970f, + 0.0386537751f, + -0.0488595080f, + 0.0001780397f, + -0.0201560073f, + -0.0247747642f, + 0.0077898920f, + 0.0012674236f, + 0.0011927725f, + 0.0076128677f, + 0.0003687396f, + 0.0024917908f, + 0.0017557349f + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v27ter_tx_2400_fixed_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v27ter_tx_2400_fixed_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,225 @@ +#define TX_PULSESHAPER_2400_GAIN 0.875533f +#define TX_PULSESHAPER_2400_COEFF_SETS 20 +static const int16_t tx_pulseshaper_2400[TX_PULSESHAPER_2400_COEFF_SETS][9] = +{ + { + 144, /* Filter 0 */ + 308, + -432, + -2162, + 16681, + 16681, + -2162, + -432, + 308 + }, + { + 105, /* Filter 1 */ + 379, + -311, + -2761, + 19232, + 14102, + -1560, + -516, + 228 + }, + { + 58, /* Filter 2 */ + 434, + -155, + -3327, + 21702, + 11548, + -978, + -560, + 141 + }, + { + 4, /* Filter 3 */ + 470, + 28, + -3830, + 24037, + 9071, + -439, + -566, + 52 + }, + { + -52, /* Filter 4 */ + 484, + 232, + -4238, + 26183, + 6715, + 39, + -536, + -32 + }, + { + -110, /* Filter 5 */ + 474, + 445, + -4521, + 28093, + 4521, + 445, + -474, + -110 + }, + { + -164, /* Filter 6 */ + 439, + 657, + -4647, + 29721, + 2524, + 770, + -386, + -176 + }, + { + -213, /* Filter 7 */ + 381, + 854, + -4586, + 31029, + 752, + 1008, + -279, + -229 + }, + { + -252, /* Filter 8 */ + 300, + 1023, + -4315, + 31986, + -776, + 1160, + -159, + -267 + }, + { + -278, /* Filter 9 */ + 201, + 1150, + -3811, + 32570, + -2047, + 1229, + -35, + -287 + }, + { + -291, /* Filter 10 */ + 87, + 1223, + -3058, + 32767, + -3058, + 1223, + 87, + -291 + }, + { + -287, /* Filter 11 */ + -35, + 1229, + -2047, + 32570, + -3811, + 1150, + 201, + -278 + }, + { + -267, /* Filter 12 */ + -159, + 1160, + -776, + 31986, + -4315, + 1023, + 300, + -252 + }, + { + -229, /* Filter 13 */ + -279, + 1008, + 752, + 31029, + -4586, + 854, + 381, + -213 + }, + { + -176, /* Filter 14 */ + -386, + 770, + 2524, + 29721, + -4647, + 657, + 439, + -164 + }, + { + -110, /* Filter 15 */ + -474, + 445, + 4521, + 28093, + -4521, + 445, + 474, + -110 + }, + { + -32, /* Filter 16 */ + -536, + 39, + 6715, + 26183, + -4238, + 232, + 484, + -52 + }, + { + 52, /* Filter 17 */ + -566, + -439, + 9071, + 24037, + -3830, + 28, + 470, + 4 + }, + { + 141, /* Filter 18 */ + -560, + -978, + 11548, + 21702, + -3327, + -155, + 434, + 58 + }, + { + 228, /* Filter 19 */ + -516, + -1560, + 14102, + 19232, + -2761, + -311, + 379, + 105 + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v27ter_tx_2400_floating_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v27ter_tx_2400_floating_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,225 @@ +#define TX_PULSESHAPER_2400_GAIN 1.000000f +#define TX_PULSESHAPER_2400_COEFF_SETS 20 +static const float tx_pulseshaper_2400[TX_PULSESHAPER_2400_COEFF_SETS][9] = +{ + { + 0.0050261981f, /* Filter 0 */ + 0.0107704081f, + -0.0150784949f, + -0.0753922201f, + 0.5814534590f, + 0.5814534590f, + -0.0753922201f, + -0.0150784949f, + 0.0107704081f + }, + { + 0.0036769624f, /* Filter 1 */ + 0.0132151788f, + -0.0108416500f, + -0.0962477460f, + 0.6703977011f, + 0.4915574836f, + -0.0543875542f, + -0.0179957571f, + 0.0079493167f + }, + { + 0.0020271568f, /* Filter 2 */ + 0.0151310537f, + -0.0054150755f, + -0.1159725328f, + 0.7564987705f, + 0.4025542918f, + -0.0341116983f, + -0.0195425394f, + 0.0049156957f + }, + { + 0.0001575806f, /* Filter 3 */ + 0.0163856870f, + 0.0009922293f, + -0.1335090587f, + 0.8378712700f, + 0.3161905873f, + -0.0153166425f, + -0.0197430380f, + 0.0018355795f + }, + { + -0.0018345641f, /* Filter 4 */ + 0.0168753681f, + 0.0080958424f, + -0.1477565732f, + 0.9126905398f, + 0.2340689659f, + 0.0013877622f, + -0.0186894796f, + -0.0011314557f + }, + { + -0.0038402662f, /* Filter 5 */ + 0.0165323372f, + 0.0155436576f, + -0.1576073891f, + 0.9792460964f, + 0.1576073967f, + 0.0155436170f, + -0.0165323542f, + -0.0038401947f + }, + { + -0.0057441235f, /* Filter 6 */ + 0.0153307042f, + 0.0229275652f, + -0.1619859120f, + 1.0359920618f, + 0.0880058079f, + 0.0268485017f, + -0.0134685582f, + -0.0061665117f + }, + { + -0.0074304083f, /* Filter 7 */ + 0.0132904385f, + 0.0297988389f, + -0.1598887936f, + 1.0815943275f, + 0.0262205388f, + 0.0351527365f, + -0.0097281399f, + -0.0080126751f + }, + { + -0.0087894091f, /* Filter 8 */ + 0.0104791756f, + 0.0356867178f, + -0.1504249523f, + 1.1149702451f, + -0.0270525892f, + 0.0404511689f, + -0.0055604029f, + -0.0093110519f + }, + { + -0.0097237699f, /* Filter 9 */ + 0.0070115978f, + 0.0401196528f, + -0.1328538516f, + 1.1353219580f, + -0.0713862169f, + 0.0428697868f, + -0.0012200200f, + -0.0100260759f + }, + { + -0.0101544656f, /* Filter 10 */ + 0.0030462720f, + 0.0426483505f, + -0.1066205506f, + 1.1421607874f, + -0.1066205506f, + 0.0426483505f, + 0.0030462720f, + -0.0101544656f + }, + { + -0.0100260759f, /* Filter 11 */ + -0.0012200200f, + 0.0428697868f, + -0.0713862169f, + 1.1353219580f, + -0.1328538517f, + 0.0401196528f, + 0.0070115978f, + -0.0097237699f + }, + { + -0.0093110519f, /* Filter 12 */ + -0.0055604029f, + 0.0404511689f, + -0.0270525892f, + 1.1149702451f, + -0.1504249524f, + 0.0356867178f, + 0.0104791756f, + -0.0087894091f + }, + { + -0.0080126751f, /* Filter 13 */ + -0.0097281399f, + 0.0351527365f, + 0.0262205388f, + 1.0815943275f, + -0.1598887936f, + 0.0297988389f, + 0.0132904385f, + -0.0074304083f + }, + { + -0.0061665117f, /* Filter 14 */ + -0.0134685582f, + 0.0268485017f, + 0.0880058079f, + 1.0359920618f, + -0.1619859120f, + 0.0229275652f, + 0.0153307042f, + -0.0057441235f + }, + { + -0.0038401947f, /* Filter 15 */ + -0.0165323542f, + 0.0155436170f, + 0.1576073967f, + 0.9792460963f, + -0.1576073891f, + 0.0155436576f, + 0.0165323372f, + -0.0038402662f + }, + { + -0.0011314557f, /* Filter 16 */ + -0.0186894796f, + 0.0013877622f, + 0.2340689660f, + 0.9126905398f, + -0.1477565732f, + 0.0080958424f, + 0.0168753681f, + -0.0018345641f + }, + { + 0.0018355795f, /* Filter 17 */ + -0.0197430380f, + -0.0153166425f, + 0.3161905873f, + 0.8378712699f, + -0.1335090587f, + 0.0009922293f, + 0.0163856870f, + 0.0001575806f + }, + { + 0.0049156957f, /* Filter 18 */ + -0.0195425394f, + -0.0341116983f, + 0.4025542919f, + 0.7564987705f, + -0.1159725328f, + -0.0054150755f, + 0.0151310537f, + 0.0020271568f + }, + { + 0.0079493167f, /* Filter 19 */ + -0.0179957571f, + -0.0543875542f, + 0.4915574837f, + 0.6703977010f, + -0.0962477460f, + -0.0108416500f, + 0.0132151788f, + 0.0036769624f + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v27ter_tx_4800_fixed_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v27ter_tx_4800_fixed_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,60 @@ +#define TX_PULSESHAPER_4800_GAIN 0.875534f +#define TX_PULSESHAPER_4800_COEFF_SETS 5 +static const int16_t tx_pulseshaper_4800[TX_PULSESHAPER_4800_COEFF_SETS][9] = +{ + { + 58, /* Filter 0 */ + 434, + -155, + -3327, + 21702, + 11548, + -978, + -560, + 141 + }, + { + -164, /* Filter 1 */ + 439, + 657, + -4647, + 29721, + 2524, + 770, + -386, + -176 + }, + { + -291, /* Filter 2 */ + 87, + 1223, + -3058, + 32767, + -3058, + 1223, + 87, + -291 + }, + { + -176, /* Filter 3 */ + -386, + 770, + 2524, + 29721, + -4647, + 657, + 439, + -164 + }, + { + 141, /* Filter 4 */ + -560, + -978, + 11548, + 21702, + -3327, + -155, + 434, + 58 + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v27ter_tx_4800_floating_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v27ter_tx_4800_floating_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,60 @@ +#define TX_PULSESHAPER_4800_GAIN 1.000000f +#define TX_PULSESHAPER_4800_COEFF_SETS 5 +static const float tx_pulseshaper_4800[TX_PULSESHAPER_4800_COEFF_SETS][9] = +{ + { + 0.0020271599f, /* Filter 0 */ + 0.0151309301f, + -0.0054150603f, + -0.1159724004f, + 0.7564986175f, + 0.4025541225f, + -0.0341116438f, + -0.0195424323f, + 0.0049156270f + }, + { + -0.0057440210f, /* Filter 1 */ + 0.0153306246f, + 0.0229274754f, + -0.1619857959f, + 1.0359919667f, + 0.0880056950f, + 0.0268484406f, + -0.0134684459f, + -0.0061664697f + }, + { + -0.0101543455f, /* Filter 2 */ + 0.0030462995f, + 0.0426482259f, + -0.1066205465f, + 1.1421607333f, + -0.1066205466f, + 0.0426482259f, + 0.0030462995f, + -0.0101543455f + }, + { + -0.0061664697f, /* Filter 3 */ + -0.0134684458f, + 0.0268484406f, + 0.0880056950f, + 1.0359919667f, + -0.1619857959f, + 0.0229274754f, + 0.0153306246f, + -0.0057440210f + }, + { + 0.0049156270f, /* Filter 4 */ + -0.0195424323f, + -0.0341116438f, + 0.4025541225f, + 0.7564986174f, + -0.1159724004f, + -0.0054150603f, + 0.0151309301f, + 0.0020271599f + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v29rx_fixed_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v29rx_fixed_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,2792 @@ +#define RX_PULSESHAPER_GAIN 32767.000000f +#define RX_PULSESHAPER_COEFF_SETS 48 +static const int16_t rx_pulseshaper_re[RX_PULSESHAPER_COEFF_SETS][27] = +{ + { + -7, /* Filter 0 */ + 35, + -67, + 91, + -80, + 54, + -151, + -65, + -138, + -766, + 843, + -1372, + 1529, + 10574, + 2468, + -5839, + -1000, + -763, + -1205, + 23, + -416, + -46, + -149, + -66, + -67, + -122, + -2 + }, + { + -7, /* Filter 1 */ + 32, + -68, + 89, + -84, + 53, + -160, + -65, + -158, + -778, + 825, + -1452, + 1554, + 10621, + 2457, + -5743, + -942, + -778, + -1186, + 20, + -418, + -44, + -151, + -63, + -69, + -119, + -3 + }, + { + -7, /* Filter 2 */ + 29, + -69, + 87, + -88, + 52, + -169, + -64, + -179, + -789, + 807, + -1533, + 1579, + 10667, + 2445, + -5647, + -885, + -793, + -1167, + 16, + -418, + -41, + -153, + -59, + -70, + -116, + -3 + }, + { + -7, /* Filter 3 */ + 26, + -71, + 84, + -92, + 51, + -178, + -64, + -199, + -799, + 787, + -1615, + 1604, + 10711, + 2432, + -5550, + -828, + -806, + -1148, + 13, + -418, + -38, + -155, + -56, + -71, + -114, + -3 + }, + { + -7, /* Filter 4 */ + 23, + -72, + 82, + -96, + 50, + -187, + -64, + -221, + -810, + 767, + -1698, + 1629, + 10753, + 2419, + -5453, + -773, + -819, + -1128, + 10, + -418, + -35, + -157, + -52, + -73, + -111, + -3 + }, + { + -7, /* Filter 5 */ + 20, + -73, + 79, + -100, + 49, + -196, + -63, + -242, + -820, + 745, + -1781, + 1653, + 10792, + 2406, + -5356, + -718, + -831, + -1108, + 7, + -418, + -32, + -158, + -49, + -74, + -108, + -4 + }, + { + -7, /* Filter 6 */ + 16, + -74, + 77, + -104, + 47, + -205, + -63, + -264, + -830, + 723, + -1866, + 1678, + 10830, + 2392, + -5259, + -664, + -843, + -1088, + 3, + -417, + -29, + -160, + -45, + -75, + -105, + -4 + }, + { + -7, /* Filter 7 */ + 13, + -75, + 74, + -108, + 46, + -214, + -62, + -285, + -839, + 700, + -1951, + 1702, + 10866, + 2378, + -5161, + -610, + -854, + -1067, + 0, + -416, + -27, + -161, + -41, + -76, + -102, + -4 + }, + { + -7, /* Filter 8 */ + 10, + -76, + 72, + -111, + 45, + -222, + -61, + -307, + -848, + 676, + -2038, + 1726, + 10900, + 2364, + -5064, + -558, + -864, + -1046, + -2, + -414, + -24, + -162, + -38, + -77, + -99, + -4 + }, + { + -7, /* Filter 9 */ + 6, + -77, + 69, + -115, + 43, + -231, + -60, + -330, + -857, + 652, + -2125, + 1750, + 10932, + 2349, + -4966, + -506, + -873, + -1025, + -5, + -412, + -21, + -162, + -34, + -78, + -96, + -4 + }, + { + -7, /* Filter 10 */ + 3, + -78, + 66, + -118, + 42, + -240, + -60, + -352, + -865, + 626, + -2212, + 1774, + 10962, + 2334, + -4868, + -455, + -881, + -1003, + -7, + -410, + -18, + -163, + -30, + -79, + -93, + -5 + }, + { + -7, /* Filter 11 */ + 0, + -79, + 63, + -122, + 41, + -248, + -59, + -375, + -873, + 599, + -2301, + 1797, + 10990, + 2318, + -4770, + -405, + -889, + -981, + -10, + -407, + -16, + -164, + -27, + -80, + -90, + -5 + }, + { + -7, /* Filter 12 */ + -3, + -80, + 60, + -125, + 39, + -257, + -58, + -398, + -880, + 572, + -2390, + 1820, + 11016, + 2302, + -4672, + -355, + -896, + -959, + -13, + -405, + -13, + -164, + -23, + -81, + -86, + -5 + }, + { + -7, /* Filter 13 */ + -6, + -81, + 57, + -128, + 37, + -265, + -57, + -421, + -887, + 543, + -2480, + 1844, + 11040, + 2286, + -4574, + -307, + -903, + -937, + -16, + -401, + -10, + -164, + -19, + -82, + -83, + -5 + }, + { + -7, /* Filter 14 */ + -10, + -81, + 54, + -131, + 36, + -273, + -56, + -444, + -893, + 514, + -2570, + 1866, + 11062, + 2269, + -4476, + -259, + -908, + -914, + -18, + -398, + -8, + -164, + -15, + -82, + -80, + -5 + }, + { + -7, /* Filter 15 */ + -13, + -82, + 51, + -134, + 34, + -281, + -54, + -467, + -899, + 484, + -2661, + 1889, + 11082, + 2252, + -4378, + -212, + -914, + -891, + -21, + -394, + -5, + -164, + -12, + -83, + -76, + -5 + }, + { + -7, /* Filter 16 */ + -17, + -83, + 48, + -137, + 32, + -289, + -53, + -490, + -905, + 453, + -2753, + 1912, + 11099, + 2234, + -4281, + -166, + -918, + -868, + -23, + -390, + -3, + -163, + -8, + -84, + -73, + -6 + }, + { + -7, /* Filter 17 */ + -20, + -83, + 45, + -139, + 30, + -297, + -52, + -514, + -910, + 421, + -2845, + 1934, + 11115, + 2217, + -4183, + -120, + -922, + -845, + -26, + -385, + 0, + -163, + -4, + -84, + -70, + -6 + }, + { + -7, /* Filter 18 */ + -24, + -84, + 41, + -142, + 28, + -305, + -50, + -537, + -914, + 388, + -2938, + 1956, + 11129, + 2198, + -4085, + -76, + -925, + -822, + -28, + -380, + 2, + -162, + 0, + -84, + -66, + -6 + }, + { + -7, /* Filter 19 */ + -27, + -84, + 38, + -144, + 26, + -312, + -49, + -561, + -918, + 354, + -3031, + 1978, + 11140, + 2180, + -3988, + -32, + -927, + -798, + -30, + -375, + 4, + -161, + 2, + -85, + -63, + -6 + }, + { + -7, /* Filter 20 */ + -31, + -85, + 34, + -147, + 24, + -319, + -47, + -585, + -922, + 319, + -3125, + 1999, + 11149, + 2161, + -3891, + 9, + -929, + -775, + -32, + -370, + 6, + -160, + 6, + -85, + -59, + -6 + }, + { + -7, /* Filter 21 */ + -34, + -85, + 31, + -149, + 22, + -326, + -46, + -609, + -924, + 284, + -3220, + 2020, + 11157, + 2142, + -3794, + 51, + -930, + -751, + -35, + -365, + 9, + -159, + 10, + -85, + -56, + -6 + }, + { + -7, /* Filter 22 */ + -38, + -85, + 28, + -151, + 20, + -333, + -44, + -632, + -927, + 247, + -3314, + 2041, + 11162, + 2122, + -3697, + 92, + -931, + -727, + -37, + -359, + 11, + -158, + 13, + -85, + -52, + -6 + }, + { + -7, /* Filter 23 */ + -41, + -85, + 24, + -153, + 18, + -340, + -42, + -656, + -929, + 210, + -3410, + 2062, + 11165, + 2103, + -3601, + 132, + -931, + -704, + -39, + -353, + 13, + -156, + 17, + -85, + -49, + -6 + }, + { + -7, /* Filter 24 */ + -45, + -85, + 21, + -155, + 16, + -347, + -40, + -680, + -930, + 172, + -3505, + 2082, + 11166, + 2082, + -3505, + 172, + -930, + -680, + -40, + -347, + 16, + -155, + 21, + -85, + -45, + -7 + }, + { + -6, /* Filter 25 */ + -49, + -85, + 17, + -156, + 13, + -353, + -39, + -704, + -931, + 132, + -3601, + 2103, + 11165, + 2062, + -3410, + 210, + -929, + -656, + -42, + -340, + 18, + -153, + 24, + -85, + -41, + -7 + }, + { + -6, /* Filter 26 */ + -52, + -85, + 13, + -158, + 11, + -359, + -37, + -727, + -931, + 92, + -3697, + 2122, + 11162, + 2041, + -3314, + 247, + -927, + -632, + -44, + -333, + 20, + -151, + 28, + -85, + -38, + -7 + }, + { + -6, /* Filter 27 */ + -56, + -85, + 10, + -159, + 9, + -365, + -35, + -751, + -930, + 51, + -3794, + 2142, + 11157, + 2020, + -3220, + 284, + -924, + -609, + -46, + -326, + 22, + -149, + 31, + -85, + -34, + -7 + }, + { + -6, /* Filter 28 */ + -59, + -85, + 6, + -160, + 6, + -370, + -32, + -775, + -929, + 9, + -3891, + 2161, + 11149, + 1999, + -3125, + 319, + -922, + -585, + -47, + -319, + 24, + -147, + 34, + -85, + -31, + -7 + }, + { + -6, /* Filter 29 */ + -63, + -85, + 2, + -161, + 4, + -375, + -30, + -798, + -927, + -32, + -3988, + 2180, + 11140, + 1978, + -3031, + 354, + -918, + -561, + -49, + -312, + 26, + -144, + 38, + -84, + -27, + -7 + }, + { + -6, /* Filter 30 */ + -66, + -84, + 0, + -162, + 2, + -380, + -28, + -822, + -925, + -76, + -4085, + 2198, + 11129, + 1956, + -2938, + 388, + -914, + -537, + -50, + -305, + 28, + -142, + 41, + -84, + -24, + -7 + }, + { + -6, /* Filter 31 */ + -70, + -84, + -4, + -163, + 0, + -385, + -26, + -845, + -922, + -120, + -4183, + 2217, + 11115, + 1934, + -2845, + 421, + -910, + -514, + -52, + -297, + 30, + -139, + 45, + -83, + -20, + -7 + }, + { + -6, /* Filter 32 */ + -73, + -84, + -8, + -163, + -3, + -390, + -23, + -868, + -918, + -166, + -4281, + 2234, + 11099, + 1912, + -2753, + 453, + -905, + -490, + -53, + -289, + 32, + -137, + 48, + -83, + -17, + -7 + }, + { + -5, /* Filter 33 */ + -76, + -83, + -12, + -164, + -5, + -394, + -21, + -891, + -914, + -212, + -4378, + 2252, + 11082, + 1889, + -2661, + 484, + -899, + -467, + -54, + -281, + 34, + -134, + 51, + -82, + -13, + -7 + }, + { + -5, /* Filter 34 */ + -80, + -82, + -15, + -164, + -8, + -398, + -18, + -914, + -908, + -259, + -4476, + 2269, + 11062, + 1866, + -2570, + 514, + -893, + -444, + -56, + -273, + 36, + -131, + 54, + -81, + -10, + -7 + }, + { + -5, /* Filter 35 */ + -83, + -82, + -19, + -164, + -10, + -401, + -16, + -937, + -903, + -307, + -4574, + 2286, + 11040, + 1844, + -2480, + 543, + -887, + -421, + -57, + -265, + 37, + -128, + 57, + -81, + -6, + -7 + }, + { + -5, /* Filter 36 */ + -86, + -81, + -23, + -164, + -13, + -405, + -13, + -959, + -896, + -355, + -4672, + 2302, + 11016, + 1820, + -2390, + 572, + -880, + -398, + -58, + -257, + 39, + -125, + 60, + -80, + -3, + -7 + }, + { + -5, /* Filter 37 */ + -90, + -80, + -27, + -164, + -16, + -407, + -10, + -981, + -889, + -405, + -4770, + 2318, + 10990, + 1797, + -2301, + 599, + -873, + -375, + -59, + -248, + 41, + -122, + 63, + -79, + 0, + -7 + }, + { + -5, /* Filter 38 */ + -93, + -79, + -30, + -163, + -18, + -410, + -7, + -1003, + -881, + -455, + -4868, + 2334, + 10962, + 1774, + -2212, + 626, + -865, + -352, + -60, + -240, + 42, + -118, + 66, + -78, + 3, + -7 + }, + { + -4, /* Filter 39 */ + -96, + -78, + -34, + -162, + -21, + -412, + -5, + -1025, + -873, + -506, + -4966, + 2349, + 10932, + 1750, + -2125, + 652, + -857, + -330, + -60, + -231, + 43, + -115, + 69, + -77, + 6, + -7 + }, + { + -4, /* Filter 40 */ + -99, + -77, + -38, + -162, + -24, + -414, + -2, + -1046, + -864, + -558, + -5064, + 2364, + 10900, + 1726, + -2038, + 676, + -848, + -307, + -61, + -222, + 45, + -111, + 72, + -76, + 10, + -7 + }, + { + -4, /* Filter 41 */ + -102, + -76, + -41, + -161, + -27, + -416, + 0, + -1067, + -854, + -610, + -5161, + 2378, + 10866, + 1702, + -1951, + 700, + -839, + -285, + -62, + -214, + 46, + -108, + 74, + -75, + 13, + -7 + }, + { + -4, /* Filter 42 */ + -105, + -75, + -45, + -160, + -29, + -417, + 3, + -1088, + -843, + -664, + -5259, + 2392, + 10830, + 1678, + -1866, + 723, + -830, + -264, + -63, + -205, + 47, + -104, + 77, + -74, + 16, + -7 + }, + { + -4, /* Filter 43 */ + -108, + -74, + -49, + -158, + -32, + -418, + 7, + -1108, + -831, + -718, + -5356, + 2406, + 10792, + 1653, + -1781, + 745, + -820, + -242, + -63, + -196, + 49, + -100, + 79, + -73, + 20, + -7 + }, + { + -3, /* Filter 44 */ + -111, + -73, + -52, + -157, + -35, + -418, + 10, + -1128, + -819, + -773, + -5453, + 2419, + 10753, + 1629, + -1698, + 767, + -810, + -221, + -64, + -187, + 50, + -96, + 82, + -72, + 23, + -7 + }, + { + -3, /* Filter 45 */ + -114, + -71, + -56, + -155, + -38, + -418, + 13, + -1148, + -806, + -828, + -5550, + 2432, + 10711, + 1604, + -1615, + 787, + -799, + -199, + -64, + -178, + 51, + -92, + 84, + -71, + 26, + -7 + }, + { + -3, /* Filter 46 */ + -116, + -70, + -59, + -153, + -41, + -418, + 16, + -1167, + -793, + -885, + -5647, + 2445, + 10667, + 1579, + -1533, + 807, + -789, + -179, + -64, + -169, + 52, + -88, + 87, + -69, + 29, + -7 + }, + { + -3, /* Filter 47 */ + -119, + -69, + -63, + -151, + -44, + -418, + 20, + -1186, + -778, + -942, + -5743, + 2457, + 10621, + 1554, + -1452, + 825, + -778, + -158, + -65, + -160, + 53, + -84, + 89, + -68, + 32, + -7 + } +}; +static const int16_t rx_pulseshaper_im[RX_PULSESHAPER_COEFF_SETS][27] = +{ + { + -93, /* Filter 0 */ + -11, + -109, + -91, + -49, + -166, + -11, + -413, + 57, + -1055, + -987, + -699, + -6372, + 0, + 10282, + 2975, + -1171, + 1050, + -499, + -147, + 32, + -144, + 91, + -66, + 110, + -39, + 36 + }, + { + -94, /* Filter 1 */ + -10, + -111, + -89, + -51, + -163, + -12, + -411, + 65, + -1070, + -966, + -739, + -6476, + 0, + 10234, + 2926, + -1103, + 1071, + -491, + -126, + 32, + -135, + 92, + -63, + 112, + -38, + 40 + }, + { + -95, /* Filter 2 */ + -9, + -113, + -87, + -54, + -161, + -13, + -409, + 74, + -1086, + -944, + -781, + -6580, + 0, + 10184, + 2877, + -1036, + 1091, + -483, + -105, + 32, + -126, + 94, + -59, + 115, + -38, + 43 + }, + { + -96, /* Filter 3 */ + -8, + -116, + -84, + -56, + -157, + -14, + -407, + 82, + -1101, + -922, + -823, + -6683, + 0, + 10132, + 2828, + -970, + 1110, + -475, + -84, + 32, + -118, + 95, + -56, + 117, + -37, + 45 + }, + { + -96, /* Filter 4 */ + -7, + -118, + -82, + -59, + -154, + -14, + -404, + 91, + -1115, + -898, + -865, + -6786, + 0, + 10079, + 2778, + -905, + 1128, + -467, + -64, + 32, + -109, + 96, + -52, + 119, + -36, + 48 + }, + { + -97, /* Filter 5 */ + -6, + -120, + -79, + -61, + -151, + -15, + -401, + 100, + -1129, + -873, + -907, + -6888, + 0, + 10024, + 2729, + -841, + 1145, + -459, + -44, + 32, + -100, + 97, + -49, + 121, + -35, + 51 + }, + { + -97, /* Filter 6 */ + -5, + -121, + -77, + -63, + -147, + -16, + -398, + 109, + -1142, + -847, + -951, + -6989, + 0, + 9967, + 2679, + -777, + 1160, + -450, + -24, + 32, + -92, + 98, + -45, + 123, + -34, + 54 + }, + { + -97, /* Filter 7 */ + -4, + -123, + -74, + -66, + -143, + -16, + -394, + 118, + -1155, + -820, + -994, + -7090, + 0, + 9908, + 2630, + -715, + 1175, + -442, + -5, + 32, + -83, + 98, + -41, + 125, + -33, + 56 + }, + { + -98, /* Filter 8 */ + -3, + -125, + -72, + -68, + -139, + -17, + -389, + 127, + -1167, + -792, + -1038, + -7190, + 0, + 9848, + 2580, + -653, + 1189, + -433, + 13, + 32, + -75, + 99, + -38, + 127, + -32, + 59 + }, + { + -98, /* Filter 9 */ + -2, + -127, + -69, + -70, + -135, + -18, + -384, + 136, + -1179, + -763, + -1082, + -7290, + 0, + 9786, + 2530, + -592, + 1202, + -424, + 31, + 32, + -66, + 99, + -34, + 128, + -31, + 62 + }, + { + -98, /* Filter 10 */ + -1, + -128, + -66, + -72, + -130, + -18, + -379, + 146, + -1191, + -733, + -1127, + -7389, + 0, + 9723, + 2480, + -533, + 1213, + -415, + 49, + 32, + -58, + 100, + -30, + 130, + -30, + 64 + }, + { + -98, /* Filter 11 */ + 0, + -130, + -63, + -74, + -126, + -19, + -373, + 155, + -1201, + -702, + -1172, + -7487, + 0, + 9658, + 2430, + -474, + 1224, + -406, + 67, + 32, + -49, + 100, + -27, + 131, + -29, + 66 + }, + { + -98, /* Filter 12 */ + 1, + -131, + -60, + -76, + -121, + -20, + -367, + 164, + -1211, + -670, + -1217, + -7584, + 0, + 9591, + 2380, + -416, + 1234, + -397, + 84, + 31, + -41, + 100, + -23, + 133, + -28, + 69 + }, + { + -97, /* Filter 13 */ + 2, + -132, + -57, + -78, + -116, + -20, + -361, + 174, + -1221, + -636, + -1263, + -7680, + 0, + 9523, + 2330, + -359, + 1243, + -388, + 101, + 31, + -33, + 100, + -19, + 134, + -27, + 71 + }, + { + -97, /* Filter 14 */ + 3, + -133, + -54, + -80, + -111, + -21, + -354, + 183, + -1230, + -602, + -1309, + -7776, + 0, + 9453, + 2281, + -303, + 1251, + -378, + 118, + 31, + -25, + 100, + -15, + 135, + -26, + 73 + }, + { + -97, /* Filter 15 */ + 4, + -134, + -51, + -82, + -105, + -22, + -346, + 193, + -1238, + -567, + -1356, + -7871, + 0, + 9381, + 2231, + -248, + 1258, + -369, + 134, + 31, + -17, + 100, + -12, + 136, + -25, + 75 + }, + { + -96, /* Filter 16 */ + 5, + -135, + -48, + -84, + -100, + -22, + -338, + 203, + -1245, + -530, + -1402, + -7964, + 0, + 9309, + 2181, + -194, + 1264, + -359, + 149, + 30, + -9, + 100, + -8, + 137, + -23, + 77 + }, + { + -96, /* Filter 17 */ + 6, + -136, + -45, + -85, + -94, + -23, + -330, + 213, + -1252, + -493, + -1449, + -8057, + 0, + 9234, + 2131, + -141, + 1269, + -350, + 164, + 30, + -1, + 100, + -4, + 137, + -22, + 79 + }, + { + -95, /* Filter 18 */ + 7, + -137, + -41, + -87, + -88, + -24, + -321, + 222, + -1258, + -454, + -1497, + -8149, + 0, + 9158, + 2081, + -89, + 1273, + -340, + 179, + 29, + 6, + 99, + 0, + 138, + -21, + 81 + }, + { + -94, /* Filter 19 */ + 9, + -138, + -38, + -88, + -82, + -24, + -312, + 232, + -1264, + -415, + -1544, + -8239, + 0, + 9081, + 2032, + -38, + 1276, + -330, + 193, + 29, + 13, + 99, + 2, + 138, + -20, + 82 + }, + { + -94, /* Filter 20 */ + 10, + -138, + -34, + -90, + -76, + -25, + -302, + 242, + -1269, + -374, + -1592, + -8329, + 0, + 9003, + 1982, + 11, + 1279, + -321, + 207, + 29, + 21, + 98, + 6, + 139, + -19, + 84 + }, + { + -93, /* Filter 21 */ + 11, + -139, + -31, + -91, + -70, + -25, + -292, + 252, + -1273, + -332, + -1640, + -8417, + 0, + 8923, + 1933, + 60, + 1280, + -311, + 221, + 28, + 28, + 97, + 10, + 139, + -18, + 85 + }, + { + -92, /* Filter 22 */ + 12, + -139, + -28, + -92, + -63, + -26, + -281, + 262, + -1276, + -290, + -1689, + -8505, + 0, + 8842, + 1884, + 108, + 1281, + -301, + 234, + 28, + 35, + 96, + 13, + 139, + -17, + 87 + }, + { + -91, /* Filter 23 */ + 13, + -139, + -24, + -93, + -56, + -26, + -270, + 271, + -1278, + -246, + -1737, + -8591, + 0, + 8759, + 1835, + 155, + 1281, + -291, + 246, + 27, + 43, + 96, + 17, + 139, + -15, + 88 + }, + { + -89, /* Filter 24 */ + 14, + -139, + -21, + -95, + -50, + -27, + -258, + 281, + -1280, + -201, + -1786, + -8676, + 0, + 8676, + 1786, + 201, + 1280, + -281, + 258, + 27, + 50, + 95, + 21, + 139, + -14, + 89 + }, + { + -88, /* Filter 25 */ + 15, + -139, + -17, + -96, + -43, + -27, + -246, + 291, + -1281, + -155, + -1835, + -8759, + 0, + 8591, + 1737, + 246, + 1278, + -271, + 270, + 26, + 56, + 93, + 24, + 139, + -13, + 91 + }, + { + -87, /* Filter 26 */ + 17, + -139, + -13, + -96, + -35, + -28, + -234, + 301, + -1281, + -108, + -1884, + -8842, + 0, + 8505, + 1689, + 290, + 1276, + -262, + 281, + 26, + 63, + 92, + 28, + 139, + -12, + 92 + }, + { + -85, /* Filter 27 */ + 18, + -139, + -10, + -97, + -28, + -28, + -221, + 311, + -1280, + -60, + -1933, + -8923, + 0, + 8417, + 1640, + 332, + 1273, + -252, + 292, + 25, + 70, + 91, + 31, + 139, + -11, + 93 + }, + { + -84, /* Filter 28 */ + 19, + -139, + -6, + -98, + -21, + -29, + -207, + 321, + -1279, + -11, + -1982, + -9003, + 0, + 8329, + 1592, + 374, + 1269, + -242, + 302, + 25, + 76, + 90, + 34, + 138, + -10, + 94 + }, + { + -82, /* Filter 29 */ + 20, + -138, + -2, + -99, + -13, + -29, + -193, + 330, + -1276, + 38, + -2032, + -9081, + 0, + 8239, + 1544, + 415, + 1264, + -232, + 312, + 24, + 82, + 88, + 38, + 138, + -9, + 94 + }, + { + -81, /* Filter 30 */ + 21, + -138, + 0, + -99, + -6, + -29, + -179, + 340, + -1273, + 89, + -2081, + -9158, + 0, + 8149, + 1497, + 454, + 1258, + -222, + 321, + 24, + 88, + 87, + 41, + 137, + -7, + 95 + }, + { + -79, /* Filter 31 */ + 22, + -137, + 4, + -100, + 1, + -30, + -164, + 350, + -1269, + 141, + -2131, + -9234, + 0, + 8057, + 1449, + 493, + 1252, + -213, + 330, + 23, + 94, + 85, + 45, + 136, + -6, + 96 + }, + { + -77, /* Filter 32 */ + 23, + -137, + 8, + -100, + 9, + -30, + -149, + 359, + -1264, + 194, + -2181, + -9309, + 0, + 7964, + 1402, + 530, + 1245, + -203, + 338, + 22, + 100, + 84, + 48, + 135, + -5, + 96 + }, + { + -75, /* Filter 33 */ + 25, + -136, + 12, + -100, + 17, + -31, + -134, + 369, + -1258, + 248, + -2231, + -9381, + 0, + 7871, + 1356, + 567, + 1238, + -193, + 346, + 22, + 105, + 82, + 51, + 134, + -4, + 97 + }, + { + -73, /* Filter 34 */ + 26, + -135, + 15, + -100, + 25, + -31, + -118, + 378, + -1251, + 303, + -2281, + -9453, + 0, + 7776, + 1309, + 602, + 1230, + -183, + 354, + 21, + 111, + 80, + 54, + 133, + -3, + 97 + }, + { + -71, /* Filter 35 */ + 27, + -134, + 19, + -100, + 33, + -31, + -101, + 388, + -1243, + 359, + -2330, + -9523, + 0, + 7680, + 1263, + 636, + 1221, + -174, + 361, + 20, + 116, + 78, + 57, + 132, + -2, + 97 + }, + { + -69, /* Filter 36 */ + 28, + -133, + 23, + -100, + 41, + -31, + -84, + 397, + -1234, + 416, + -2380, + -9591, + 0, + 7584, + 1217, + 670, + 1211, + -164, + 367, + 20, + 121, + 76, + 60, + 131, + -1, + 98 + }, + { + -66, /* Filter 37 */ + 29, + -131, + 27, + -100, + 49, + -32, + -67, + 406, + -1224, + 474, + -2430, + -9658, + 0, + 7487, + 1172, + 702, + 1201, + -155, + 373, + 19, + 126, + 74, + 63, + 130, + 0, + 98 + }, + { + -64, /* Filter 38 */ + 30, + -130, + 30, + -100, + 58, + -32, + -49, + 415, + -1213, + 533, + -2480, + -9723, + 0, + 7389, + 1127, + 733, + 1191, + -146, + 379, + 18, + 130, + 72, + 66, + 128, + 1, + 98 + }, + { + -62, /* Filter 39 */ + 31, + -128, + 34, + -99, + 66, + -32, + -31, + 424, + -1202, + 592, + -2530, + -9786, + 0, + 7290, + 1082, + 763, + 1179, + -136, + 384, + 18, + 135, + 70, + 69, + 127, + 2, + 98 + }, + { + -59, /* Filter 40 */ + 32, + -127, + 38, + -99, + 75, + -32, + -13, + 433, + -1189, + 653, + -2580, + -9848, + 0, + 7190, + 1038, + 792, + 1167, + -127, + 389, + 17, + 139, + 68, + 72, + 125, + 3, + 98 + }, + { + -56, /* Filter 41 */ + 33, + -125, + 41, + -98, + 83, + -32, + 5, + 442, + -1175, + 715, + -2630, + -9908, + 0, + 7090, + 994, + 820, + 1155, + -118, + 394, + 16, + 143, + 66, + 74, + 123, + 4, + 97 + }, + { + -54, /* Filter 42 */ + 34, + -123, + 45, + -98, + 92, + -32, + 24, + 450, + -1160, + 777, + -2679, + -9967, + 0, + 6989, + 951, + 847, + 1142, + -109, + 398, + 16, + 147, + 63, + 77, + 121, + 5, + 97 + }, + { + -51, /* Filter 43 */ + 35, + -121, + 49, + -97, + 100, + -32, + 44, + 459, + -1145, + 841, + -2729, + -10024, + 0, + 6888, + 907, + 873, + 1129, + -100, + 401, + 15, + 151, + 61, + 79, + 120, + 6, + 97 + }, + { + -48, /* Filter 44 */ + 36, + -119, + 52, + -96, + 109, + -32, + 64, + 467, + -1128, + 905, + -2778, + -10079, + 0, + 6786, + 865, + 898, + 1115, + -91, + 404, + 14, + 154, + 59, + 82, + 118, + 7, + 96 + }, + { + -45, /* Filter 45 */ + 37, + -117, + 56, + -95, + 118, + -32, + 84, + 475, + -1110, + 970, + -2828, + -10132, + 0, + 6683, + 823, + 922, + 1101, + -82, + 407, + 14, + 157, + 56, + 84, + 116, + 8, + 96 + }, + { + -43, /* Filter 46 */ + 38, + -115, + 59, + -94, + 126, + -32, + 105, + 483, + -1091, + 1036, + -2877, + -10184, + 0, + 6580, + 781, + 944, + 1086, + -74, + 409, + 13, + 161, + 54, + 87, + 113, + 9, + 95 + }, + { + -40, /* Filter 47 */ + 38, + -112, + 63, + -92, + 135, + -32, + 126, + 491, + -1071, + 1103, + -2926, + -10234, + 0, + 6476, + 739, + 966, + 1070, + -65, + 411, + 12, + 163, + 51, + 89, + 111, + 10, + 94 + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v29rx_floating_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v29rx_floating_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,2792 @@ +#define RX_PULSESHAPER_GAIN 1.000000f +#define RX_PULSESHAPER_COEFF_SETS 48 +static const float rx_pulseshaper_re[RX_PULSESHAPER_COEFF_SETS][27] = +{ + { + -0.0002255872f, /* Filter 0 */ + 0.0010772212f, + -0.0020489447f, + 0.0027904154f, + -0.0024613384f, + 0.0016519063f, + -0.0046141775f, + -0.0019967001f, + -0.0042213211f, + -0.0233976901f, + 0.0257378164f, + -0.0418758474f, + 0.0466891744f, + 0.3227157380f, + 0.0753364929f, + -0.1782016926f, + -0.0305229947f, + -0.0232941017f, + -0.0367764365f, + 0.0007147686f, + -0.0127244656f, + -0.0014302683f, + -0.0045579424f, + -0.0020412235f, + -0.0020619065f, + -0.0037295073f, + -0.0000888673f + }, + { + -0.0002275045f, /* Filter 1 */ + 0.0009871039f, + -0.0020910004f, + 0.0027251726f, + -0.0025870146f, + 0.0016252861f, + -0.0048916464f, + -0.0019896284f, + -0.0048397188f, + -0.0237455028f, + 0.0251964799f, + -0.0443225478f, + 0.0474524780f, + 0.3241661780f, + 0.0749845580f, + -0.1752765433f, + -0.0287604570f, + -0.0237602556f, + -0.0362156056f, + 0.0006115934f, + -0.0127572528f, + -0.0013441756f, + -0.0046259384f, + -0.0019355976f, + -0.0021082375f, + -0.0036506231f, + -0.0000961620f + }, + { + -0.0002292356f, /* Filter 2 */ + 0.0008953512f, + -0.0021317304f, + 0.0026574255f, + -0.0027108763f, + 0.0015966923f, + -0.0051685871f, + -0.0019806027f, + -0.0054668817f, + -0.0240839365f, + 0.0246287071f, + -0.0467972792f, + 0.0482124309f, + 0.3255589646f, + 0.0746194196f, + -0.1723405821f, + -0.0270191676f, + -0.0242027907f, + -0.0356412303f, + 0.0005100000f, + -0.0127779299f, + -0.0012580756f, + -0.0046884762f, + -0.0018286776f, + -0.0021526634f, + -0.0035694823f, + -0.0001033121f + }, + { + -0.0002307776f, /* Filter 3 */ + 0.0008020327f, + -0.0021710931f, + 0.0025872148f, + -0.0028327978f, + 0.0015661291f, + -0.0054447492f, + -0.0019695990f, + -0.0061025091f, + -0.0244126095f, + 0.0240343336f, + -0.0492994388f, + 0.0489687748f, + 0.3268935535f, + 0.0742412161f, + -0.1693947992f, + -0.0252995186f, + -0.0246218736f, + -0.0350539120f, + 0.0004100342f, + -0.0127866782f, + -0.0011720449f, + -0.0047455578f, + -0.0017205660f, + -0.0021951585f, + -0.0034861718f, + -0.0001103122f + }, + { + -0.0002321276f, /* Filter 4 */ + 0.0007072103f, + -0.0022090444f, + 0.0025145856f, + -0.0029526533f, + 0.0015336029f, + -0.0057198731f, + -0.0019565932f, + -0.0067462847f, + -0.0247311428f, + 0.0234132130f, + -0.0518284449f, + 0.0497212515f, + 0.3281694617f, + 0.0738500836f, + -0.1664401728f, + -0.0236018860f, + -0.0250176852f, + -0.0344542448f, + 0.0003117406f, + -0.0127836805f, + -0.0010861574f, + -0.0047971886f, + -0.0016113720f, + -0.0022357000f, + -0.0034007733f, + -0.0001171583f + }, + { + -0.0002332832f, /* Filter 5 */ + 0.0006109549f, + -0.0022455442f, + 0.0024395825f, + -0.0030703178f, + 0.0014991220f, + -0.0059936966f, + -0.0019415623f, + -0.0073978880f, + -0.0250391496f, + 0.0227652173f, + -0.0543836682f, + 0.0504696014f, + 0.3293862057f, + 0.0734461719f, + -0.1634776964f, + -0.0219266458f, + -0.0253904152f, + -0.0338428277f, + 0.0002151614f, + -0.0127691311f, + -0.0010004881f, + -0.0048433801f, + -0.0015011959f, + -0.0022742667f, + -0.0033133678f, + -0.0001238455f + }, + { + -0.0002342418f, /* Filter 6 */ + 0.0005133336f, + -0.0022805536f, + 0.0023622545f, + -0.0031856701f, + 0.0014626959f, + -0.0062659606f, + -0.0019244846f, + -0.0080569843f, + -0.0253362547f, + 0.0220902122f, + -0.0569644843f, + 0.0512135691f, + 0.3305433046f, + 0.0730296300f, + -0.1605083564f, + -0.0202741482f, + -0.0257402535f, + -0.0332202557f, + 0.0001203382f, + -0.0127432290f, + -0.0009151099f, + -0.0048841463f, + -0.0013901463f, + -0.0023108391f, + -0.0032240442f, + -0.0001303693f + }, + { + -0.0002350011f, /* Filter 7 */ + 0.0004144205f, + -0.0023140327f, + 0.0022826512f, + -0.0032985844f, + 0.0014243364f, + -0.0065363981f, + -0.0019053410f, + -0.0087232308f, + -0.0256220747f, + 0.0213880887f, + -0.0595702454f, + 0.0519528957f, + 0.3316403995f, + 0.0726006106f, + -0.1575331331f, + -0.0186447416f, + -0.0260674081f, + -0.0325871180f, + 0.0000273092f, + -0.0127061747f, + -0.0008300950f, + -0.0049195054f, + -0.0012783271f, + -0.0023454000f, + -0.0031328855f, + -0.0001367258f + }, + { + -0.0002355590f, /* Filter 8 */ + 0.0003142843f, + -0.0023459445f, + 0.0022008259f, + -0.0034089378f, + 0.0013840565f, + -0.0068047424f, + -0.0018841113f, + -0.0093962743f, + -0.0258962331f, + 0.0206587490f, + -0.0622002845f, + 0.0526873296f, + 0.3326769857f, + 0.0721592734f, + -0.1545530146f, + -0.0170387579f, + -0.0263720939f, + -0.0319440023f, + -0.0000638882f, + -0.0126581845f, + -0.0007455134f, + -0.0049494845f, + -0.0011658419f, + -0.0023779327f, + -0.0030399798f, + -0.0001429107f + }, + { + -0.0002359134f, /* Filter 9 */ + 0.0002129997f, + -0.0023762496f, + 0.0021168342f, + -0.0035166109f, + 0.0013418720f, + -0.0070707263f, + -0.0018607775f, + -0.0100757513f, + -0.0261583498f, + 0.0199020969f, + -0.0648539333f, + 0.0534166146f, + 0.3336527424f, + 0.0717057869f, + -0.1515689653f, + -0.0154565158f, + -0.0266545289f, + -0.0312914991f, + -0.0001532180f, + -0.0125994670f, + -0.0006614353f, + -0.0049741065f, + -0.0010527980f, + -0.0024084239f, + -0.0029454189f, + -0.0001489206f + }, + { + -0.0002360624f, /* Filter 10 */ + 0.0001106457f, + -0.0024049153f, + 0.0020307330f, + -0.0036214854f, + 0.0012977996f, + -0.0073340784f, + -0.0018353240f, + -0.0107612899f, + -0.0264080456f, + 0.0191180538f, + -0.0675304887f, + 0.0541404956f, + 0.3345672589f, + 0.0712403148f, + -0.1485819667f, + -0.0138983208f, + -0.0269149412f, + -0.0306301910f, + -0.0002406474f, + -0.0125302396f, + -0.0005779288f, + -0.0049934088f, + -0.0009392972f, + -0.0024368605f, + -0.0028492882f, + -0.0001547513f + }, + { + -0.0002360044f, /* Filter 11 */ + 0.0000072962f, + -0.0024319051f, + 0.0019425826f, + -0.0037234402f, + 0.0012518575f, + -0.0075945285f, + -0.0018077349f, + -0.0114525069f, + -0.0266449530f, + 0.0183065518f, + -0.0702292589f, + 0.0548587201f, + 0.3354202137f, + 0.0707630243f, + -0.1455930052f, + -0.0123644684f, + -0.0271535702f, + -0.0299606569f, + -0.0003261437f, + -0.0124507320f, + -0.0004950602f, + -0.0050074246f, + -0.0008254433f, + -0.0024632328f, + -0.0027516756f, + -0.0001603995f + }, + { + -0.0002357379f, /* Filter 12 */ + -0.0000969713f, + -0.0024571849f, + 0.0018524437f, + -0.0038223595f, + 0.0012040677f, + -0.0078518000f, + -0.0017779973f, + -0.0121490133f, + -0.0268686949f, + 0.0174675392f, + -0.0729495201f, + 0.0555710382f, + 0.3362112915f, + 0.0702740993f, + -0.1426030329f, + -0.0108552443f, + -0.0273706579f, + -0.0292834752f, + -0.0004096775f, + -0.0123611702f, + -0.0004128962f, + -0.0050161963f, + -0.0007113378f, + -0.0024875330f, + -0.0026526758f, + -0.0001658620f + }, + { + -0.0002352615f, /* Filter 13 */ + -0.0002020749f, + -0.0024807241f, + 0.0017603822f, + -0.0039181269f, + 0.0011544503f, + -0.0081056228f, + -0.0017460976f, + -0.0128504066f, + -0.0270788976f, + 0.0166009646f, + -0.0756905423f, + 0.0562772022f, + 0.3369401960f, + 0.0697737216f, + -0.1396130136f, + -0.0093709121f, + -0.0275664600f, + -0.0285992217f, + -0.0004912199f, + -0.0122617888f, + -0.0003314995f, + -0.0050197673f, + -0.0005970840f, + -0.0025097527f, + -0.0025523730f, + -0.0001711354f + }, + { + -0.0002345739f, /* Filter 14 */ + -0.0003079322f, + -0.0025024909f, + 0.0016664628f, + -0.0040106281f, + 0.0011030318f, + -0.0083557204f, + -0.0017120255f, + -0.0135562762f, + -0.0272751934f, + 0.0157068004f, + -0.0784515724f, + 0.0569769519f, + 0.3376066341f, + 0.0692620702f, + -0.1366239180f, + -0.0079117353f, + -0.0277412306f, + -0.0279084621f, + -0.0005707451f, + -0.0121528275f, + -0.0002509341f, + -0.0050181849f, + -0.0004827837f, + -0.0025298884f, + -0.0024508655f, + -0.0001762169f + }, + { + -0.0002336743f, /* Filter 15 */ + -0.0004144665f, + -0.0025224541f, + 0.0015707543f, + -0.0040997524f, + 0.0010498359f, + -0.0086018170f, + -0.0016757712f, + -0.0142662044f, + -0.0274572178f, + 0.0147850271f, + -0.0812318644f, + 0.0576700502f, + 0.3382103275f, + 0.0687393345f, + -0.1336366907f, + -0.0064779557f, + -0.0278952373f, + -0.0272117582f, + -0.0006482276f, + -0.0120345250f, + -0.0001712606f, + -0.0050115039f, + -0.0003685390f, + -0.0025479356f, + -0.0023482397f, + -0.0001811037f + }, + { + -0.0002325617f, /* Filter 16 */ + -0.0005215883f, + -0.0025405864f, + 0.0014733283f, + -0.0041853880f, + 0.0009948916f, + -0.0088436386f, + -0.0016373263f, + -0.0149797642f, + -0.0276246022f, + 0.0138356301f, + -0.0840306457f, + 0.0583562562f, + 0.3387511245f, + 0.0682057069f, + -0.1306522782f, + -0.0050698048f, + -0.0280287578f, + -0.0265096776f, + -0.0007236441f, + -0.0119071307f, + -0.0000925386f, + -0.0049997803f, + -0.0002544469f, + -0.0025638940f, + -0.0022445889f, + -0.0001857931f + }, + { + -0.0002312353f, /* Filter 17 */ + -0.0006292185f, + -0.0025568618f, + 0.0013742551f, + -0.0042674275f, + 0.0009382281f, + -0.0090809063f, + -0.0015966847f, + -0.0156965162f, + -0.0277769912f, + 0.0128586169f, + -0.0868471324f, + 0.0590353166f, + 0.3392287675f, + 0.0676613773f, + -0.1276716186f, + -0.0036874988f, + -0.0281420647f, + -0.0258027739f, + -0.0007969746f, + -0.0117708870f, + -0.0000148270f, + -0.0049830706f, + -0.0001406071f, + -0.0025777636f, + -0.0021400055f, + -0.0001902827f + }, + { + -0.0002296949f, /* Filter 18 */ + -0.0007372681f, + -0.0025712503f, + 0.0012736106f, + -0.0043457630f, + 0.0008798771f, + -0.0093133450f, + -0.0015538410f, + -0.0164160198f, + -0.0279140251f, + 0.0118540046f, + -0.0896805216f, + 0.0597069972f, + 0.3396430866f, + 0.0671065597f, + -0.1246956673f, + -0.0023312476f, + -0.0282354500f, + -0.0250915936f, + -0.0008681988f, + -0.0116260558f, + 0.0000618176f, + -0.0049614426f, + -0.0000271166f, + -0.0025895460f, + -0.0020345799f, + -0.0001945702f + }, + { + -0.0002279401f, /* Filter 19 */ + -0.0008456543f, + -0.0025837316f, + 0.0011714716f, + -0.0044202915f, + 0.0008198714f, + -0.0095406775f, + -0.0015087910f, + -0.0171378180f, + -0.0280353473f, + 0.0108218242f, + -0.0925300161f, + 0.0603710541f, + 0.3399939607f, + 0.0665414417f, + -0.1217253322f, + -0.0010012477f, + -0.0283092030f, + -0.0243766792f, + -0.0009372986f, + -0.0114728855f, + 0.0001373402f, + -0.0049349593f, + 0.0000859258f, + -0.0025992464f, + -0.0019284058f, + -0.0001986536f + }, + { + -0.0002259705f, /* Filter 20 */ + -0.0009542871f, + -0.0025942816f, + 0.0010679155f, + -0.0044909097f, + 0.0007582451f, + -0.0097626270f, + -0.0014615333f, + -0.0178614493f, + -0.0281406040f, + 0.0097621099f, + -0.0953947966f, + 0.0610272510f, + 0.3402811755f, + 0.0659662416f, + -0.1187615389f, + 0.0003023311f, + -0.0283636203f, + -0.0236585774f, + -0.0010042585f, + -0.0113116356f, + 0.0002116873f, + -0.0049036953f, + 0.0001984275f, + -0.0026068687f, + -0.0018215759f, + -0.0002025310f + }, + { + -0.0002237865f, /* Filter 21 */ + -0.0010630796f, + -0.0026028786f, + 0.0009630217f, + -0.0045575184f, + 0.0006950360f, + -0.0099789231f, + -0.0014120671f, + -0.0185864475f, + -0.0282294528f, + 0.0086749174f, + -0.0982740298f, + 0.0616753532f, + 0.3405046930f, + 0.0653811602f, + -0.1158052202f, + 0.0015793088f, + -0.0283990101f, + -0.0229378136f, + -0.0010690639f, + -0.0111425708f, + 0.0002848063f, + -0.0048677212f, + 0.0003102929f, + -0.0026124209f, + -0.0017141812f, + -0.0002062007f + }, + { + -0.0002213879f, /* Filter 22 */ + -0.0011719437f, + -0.0026095012f, + 0.0008568735f, + -0.0046200208f, + 0.0006302820f, + -0.0101892831f, + -0.0013603937f, + -0.0193123302f, + -0.0283015482f, + 0.0075603134f, + -0.1011668788f, + 0.0623151315f, + 0.3406644084f, + 0.0647864110f, + -0.1128572498f, + 0.0028295415f, + -0.0284156811f, + -0.0222149183f, + -0.0011317024f, + -0.0109659520f, + 0.0003566476f, + -0.0048271153f, + 0.0004214283f, + -0.0026159113f, + -0.0016063144f, + -0.0002096613f + }, + { + -0.0002187756f, /* Filter 23 */ + -0.0012807894f, + -0.0026141320f, + 0.0007495544f, + -0.0046783235f, + 0.0005640234f, + -0.0103934397f, + -0.0013065154f, + -0.0200386163f, + -0.0283565494f, + 0.0064183775f, + -0.1040724930f, + 0.0629463524f, + 0.3407602619f, + 0.0641822150f, + -0.1099185532f, + 0.0040528797f, + -0.0284139469f, + -0.0214904145f, + -0.0011921632f, + -0.0107820433f, + 0.0004271619f, + -0.0047819563f, + 0.0005317429f, + -0.0026173521f, + -0.0014980664f, + -0.0002129114f + }, + { + -0.0002159498f, /* Filter 24 */ + -0.0013895273f, + -0.0026167546f, + 0.0006411480f, + -0.0047323313f, + 0.0004963023f, + -0.0105911158f, + -0.0012504366f, + -0.0207648111f, + -0.0283941279f, + 0.0052491967f, + -0.1069900047f, + 0.0635687875f, + 0.3407922346f, + 0.0635687875f, + -0.1069900047f, + 0.0052491967f, + -0.0283941279f, + -0.0207648111f, + -0.0012504366f, + -0.0105911158f, + 0.0004963023f, + -0.0047323313f, + 0.0006411480f, + -0.0026167546f, + -0.0013895273f, + -0.0002159498f + }, + { + -0.0002129114f, /* Filter 25 */ + -0.0014980664f, + -0.0026173521f, + 0.0005317429f, + -0.0047819563f, + 0.0004271619f, + -0.0107820433f, + -0.0011921632f, + -0.0214904145f, + -0.0284139469f, + 0.0040528797f, + -0.1099185532f, + 0.0641822150f, + 0.3407602619f, + 0.0629463524f, + -0.1040724930f, + 0.0064183775f, + -0.0283565494f, + -0.0200386164f, + -0.0013065154f, + -0.0103934397f, + 0.0005640234f, + -0.0046783235f, + 0.0007495544f, + -0.0026141320f, + -0.0012807894f, + -0.0002187756f + }, + { + -0.0002096613f, /* Filter 26 */ + -0.0016063144f, + -0.0026159113f, + 0.0004214283f, + -0.0048271153f, + 0.0003566476f, + -0.0109659520f, + -0.0011317024f, + -0.0222149182f, + -0.0284156811f, + 0.0028295415f, + -0.1128572498f, + 0.0647864110f, + 0.3406644084f, + 0.0623151315f, + -0.1011668788f, + 0.0075603134f, + -0.0283015482f, + -0.0193123302f, + -0.0013603937f, + -0.0101892831f, + 0.0006302820f, + -0.0046200208f, + 0.0008568735f, + -0.0026095012f, + -0.0011719437f, + -0.0002213879f + }, + { + -0.0002062007f, /* Filter 27 */ + -0.0017141812f, + -0.0026124209f, + 0.0003102929f, + -0.0048677212f, + 0.0002848063f, + -0.0111425708f, + -0.0010690639f, + -0.0229378136f, + -0.0283990101f, + 0.0015793088f, + -0.1158052202f, + 0.0653811602f, + 0.3405046930f, + 0.0616753532f, + -0.0982740298f, + 0.0086749174f, + -0.0282294527f, + -0.0185864475f, + -0.0014120671f, + -0.0099789231f, + 0.0006950360f, + -0.0045575184f, + 0.0009630217f, + -0.0026028786f, + -0.0010630796f, + -0.0002237865f + }, + { + -0.0002025310f, /* Filter 28 */ + -0.0018215759f, + -0.0026068687f, + 0.0001984275f, + -0.0049036953f, + 0.0002116873f, + -0.0113116356f, + -0.0010042585f, + -0.0236585774f, + -0.0283636203f, + 0.0003023310f, + -0.1187615389f, + 0.0659662416f, + 0.3402811755f, + 0.0610272510f, + -0.0953947966f, + 0.0097621099f, + -0.0281406040f, + -0.0178614493f, + -0.0014615333f, + -0.0097626270f, + 0.0007582451f, + -0.0044909097f, + 0.0010679155f, + -0.0025942816f, + -0.0009542871f, + -0.0002259705f + }, + { + -0.0001986536f, /* Filter 29 */ + -0.0019284058f, + -0.0025992464f, + 0.0000859258f, + -0.0049349593f, + 0.0001373402f, + -0.0114728855f, + -0.0009372986f, + -0.0243766792f, + -0.0283092030f, + -0.0010012477f, + -0.1217253322f, + 0.0665414417f, + 0.3399939607f, + 0.0603710541f, + -0.0925300161f, + 0.0108218242f, + -0.0280353473f, + -0.0171378180f, + -0.0015087910f, + -0.0095406775f, + 0.0008198714f, + -0.0044202915f, + 0.0011714716f, + -0.0025837316f, + -0.0008456543f, + -0.0002279401f + }, + { + -0.0001945702f, /* Filter 30 */ + -0.0020345799f, + -0.0025895460f, + -0.0000271166f, + -0.0049614426f, + 0.0000618176f, + -0.0116260558f, + -0.0008681988f, + -0.0250915936f, + -0.0282354500f, + -0.0023312476f, + -0.1246956674f, + 0.0671065597f, + 0.3396430866f, + 0.0597069972f, + -0.0896805216f, + 0.0118540046f, + -0.0279140251f, + -0.0164160198f, + -0.0015538410f, + -0.0093133450f, + 0.0008798771f, + -0.0043457630f, + 0.0012736106f, + -0.0025712503f, + -0.0007372681f, + -0.0002296949f + }, + { + -0.0001902827f, /* Filter 31 */ + -0.0021400055f, + -0.0025777636f, + -0.0001406071f, + -0.0049830706f, + -0.0000148270f, + -0.0117708870f, + -0.0007969746f, + -0.0258027739f, + -0.0281420646f, + -0.0036874988f, + -0.1276716186f, + 0.0676613773f, + 0.3392287675f, + 0.0590353166f, + -0.0868471324f, + 0.0128586169f, + -0.0277769912f, + -0.0156965162f, + -0.0015966847f, + -0.0090809063f, + 0.0009382281f, + -0.0042674275f, + 0.0013742551f, + -0.0025568618f, + -0.0006292185f, + -0.0002312353f + }, + { + -0.0001857931f, /* Filter 32 */ + -0.0022445889f, + -0.0025638940f, + -0.0002544469f, + -0.0049997803f, + -0.0000925386f, + -0.0119071307f, + -0.0007236441f, + -0.0265096776f, + -0.0280287578f, + -0.0050698048f, + -0.1306522782f, + 0.0682057069f, + 0.3387511245f, + 0.0583562562f, + -0.0840306457f, + 0.0138356301f, + -0.0276246022f, + -0.0149797642f, + -0.0016373263f, + -0.0088436386f, + 0.0009948916f, + -0.0041853880f, + 0.0014733283f, + -0.0025405864f, + -0.0005215883f, + -0.0002325617f + }, + { + -0.0001811037f, /* Filter 33 */ + -0.0023482397f, + -0.0025479356f, + -0.0003685390f, + -0.0050115039f, + -0.0001712606f, + -0.0120345250f, + -0.0006482276f, + -0.0272117582f, + -0.0278952373f, + -0.0064779557f, + -0.1336366907f, + 0.0687393345f, + 0.3382103275f, + 0.0576700502f, + -0.0812318644f, + 0.0147850271f, + -0.0274572178f, + -0.0142662044f, + -0.0016757712f, + -0.0086018170f, + 0.0010498359f, + -0.0040997524f, + 0.0015707543f, + -0.0025224541f, + -0.0004144665f, + -0.0002336743f + }, + { + -0.0001762169f, /* Filter 34 */ + -0.0024508655f, + -0.0025298884f, + -0.0004827837f, + -0.0050181849f, + -0.0002509341f, + -0.0121528275f, + -0.0005707451f, + -0.0279084621f, + -0.0277412306f, + -0.0079117353f, + -0.1366239180f, + 0.0692620702f, + 0.3376066341f, + 0.0569769519f, + -0.0784515724f, + 0.0157068004f, + -0.0272751934f, + -0.0135562762f, + -0.0017120255f, + -0.0083557204f, + 0.0011030318f, + -0.0040106281f, + 0.0016664628f, + -0.0025024909f, + -0.0003079322f, + -0.0002345739f + }, + { + -0.0001711354f, /* Filter 35 */ + -0.0025523730f, + -0.0025097527f, + -0.0005970840f, + -0.0050197673f, + -0.0003314995f, + -0.0122617888f, + -0.0004912199f, + -0.0285992217f, + -0.0275664600f, + -0.0093709121f, + -0.1396130136f, + 0.0697737216f, + 0.3369401960f, + 0.0562772022f, + -0.0756905422f, + 0.0166009646f, + -0.0270788976f, + -0.0128504066f, + -0.0017460976f, + -0.0081056228f, + 0.0011544503f, + -0.0039181269f, + 0.0017603822f, + -0.0024807241f, + -0.0002020749f, + -0.0002352615f + }, + { + -0.0001658620f, /* Filter 36 */ + -0.0026526758f, + -0.0024875330f, + -0.0007113378f, + -0.0050161963f, + -0.0004128962f, + -0.0123611702f, + -0.0004096775f, + -0.0292834752f, + -0.0273706579f, + -0.0108552443f, + -0.1426030329f, + 0.0702740993f, + 0.3362112915f, + 0.0555710382f, + -0.0729495201f, + 0.0174675393f, + -0.0268686949f, + -0.0121490134f, + -0.0017779973f, + -0.0078518000f, + 0.0012040677f, + -0.0038223595f, + 0.0018524437f, + -0.0024571849f, + -0.0000969713f, + -0.0002357379f + }, + { + -0.0001603995f, /* Filter 37 */ + -0.0027516756f, + -0.0024632328f, + -0.0008254433f, + -0.0050074246f, + -0.0004950602f, + -0.0124507320f, + -0.0003261437f, + -0.0299606569f, + -0.0271535702f, + -0.0123644684f, + -0.1455930052f, + 0.0707630243f, + 0.3354202136f, + 0.0548587201f, + -0.0702292589f, + 0.0183065518f, + -0.0266449530f, + -0.0114525069f, + -0.0018077349f, + -0.0075945285f, + 0.0012518575f, + -0.0037234402f, + 0.0019425826f, + -0.0024319051f, + 0.0000072962f, + -0.0002360044f + }, + { + -0.0001547513f, /* Filter 38 */ + -0.0028492882f, + -0.0024368605f, + -0.0009392972f, + -0.0049934088f, + -0.0005779288f, + -0.0125302396f, + -0.0002406474f, + -0.0306301910f, + -0.0269149412f, + -0.0138983208f, + -0.1485819667f, + 0.0712403148f, + 0.3345672589f, + 0.0541404956f, + -0.0675304887f, + 0.0191180538f, + -0.0264080456f, + -0.0107612899f, + -0.0018353240f, + -0.0073340784f, + 0.0012977996f, + -0.0036214854f, + 0.0020307330f, + -0.0024049153f, + 0.0001106457f, + -0.0002360624f + }, + { + -0.0001489206f, /* Filter 39 */ + -0.0029454189f, + -0.0024084239f, + -0.0010527980f, + -0.0049741065f, + -0.0006614353f, + -0.0125994671f, + -0.0001532180f, + -0.0312914991f, + -0.0266545289f, + -0.0154565158f, + -0.1515689653f, + 0.0717057869f, + 0.3336527424f, + 0.0534166146f, + -0.0648539333f, + 0.0199020969f, + -0.0261583498f, + -0.0100757513f, + -0.0018607775f, + -0.0070707263f, + 0.0013418720f, + -0.0035166109f, + 0.0021168342f, + -0.0023762496f, + 0.0002129997f, + -0.0002359134f + }, + { + -0.0001429107f, /* Filter 40 */ + -0.0030399798f, + -0.0023779327f, + -0.0011658419f, + -0.0049494845f, + -0.0007455134f, + -0.0126581845f, + -0.0000638882f, + -0.0319440023f, + -0.0263720939f, + -0.0170387579f, + -0.1545530146f, + 0.0721592734f, + 0.3326769857f, + 0.0526873296f, + -0.0622002845f, + 0.0206587490f, + -0.0258962331f, + -0.0093962743f, + -0.0018841113f, + -0.0068047424f, + 0.0013840565f, + -0.0034089378f, + 0.0022008259f, + -0.0023459445f, + 0.0003142843f, + -0.0002355590f + }, + { + -0.0001367258f, /* Filter 41 */ + -0.0031328855f, + -0.0023454000f, + -0.0012783271f, + -0.0049195054f, + -0.0008300950f, + -0.0127061747f, + 0.0000273092f, + -0.0325871180f, + -0.0260674081f, + -0.0186447416f, + -0.1575331331f, + 0.0726006106f, + 0.3316403995f, + 0.0519528957f, + -0.0595702454f, + 0.0213880887f, + -0.0256220747f, + -0.0087232308f, + -0.0019053410f, + -0.0065363981f, + 0.0014243364f, + -0.0032985844f, + 0.0022826512f, + -0.0023140327f, + 0.0004144205f, + -0.0002350011f + }, + { + -0.0001303693f, /* Filter 42 */ + -0.0032240442f, + -0.0023108391f, + -0.0013901463f, + -0.0048841463f, + -0.0009151099f, + -0.0127432290f, + 0.0001203382f, + -0.0332202557f, + -0.0257402535f, + -0.0202741482f, + -0.1605083564f, + 0.0730296300f, + 0.3305433046f, + 0.0512135691f, + -0.0569644843f, + 0.0220902122f, + -0.0253362547f, + -0.0080569843f, + -0.0019244846f, + -0.0062659606f, + 0.0014626959f, + -0.0031856701f, + 0.0023622545f, + -0.0022805536f, + 0.0005133336f, + -0.0002342418f + }, + { + -0.0001238455f, /* Filter 43 */ + -0.0033133678f, + -0.0022742667f, + -0.0015011959f, + -0.0048433801f, + -0.0010004881f, + -0.0127691311f, + 0.0002151614f, + -0.0338428277f, + -0.0253904152f, + -0.0219266458f, + -0.1634776964f, + 0.0734461719f, + 0.3293862057f, + 0.0504696014f, + -0.0543836682f, + 0.0227652173f, + -0.0250391496f, + -0.0073978880f, + -0.0019415623f, + -0.0059936966f, + 0.0014991220f, + -0.0030703178f, + 0.0024395825f, + -0.0022455442f, + 0.0006109549f, + -0.0002332832f + }, + { + -0.0001171583f, /* Filter 44 */ + -0.0034007733f, + -0.0022357000f, + -0.0016113720f, + -0.0047971886f, + -0.0010861574f, + -0.0127836805f, + 0.0003117406f, + -0.0344542448f, + -0.0250176852f, + -0.0236018860f, + -0.1664401729f, + 0.0738500836f, + 0.3281694617f, + 0.0497212515f, + -0.0518284449f, + 0.0234132131f, + -0.0247311428f, + -0.0067462847f, + -0.0019565932f, + -0.0057198731f, + 0.0015336029f, + -0.0029526533f, + 0.0025145856f, + -0.0022090444f, + 0.0007072103f, + -0.0002321276f + }, + { + -0.0001103122f, /* Filter 45 */ + -0.0034861718f, + -0.0021951585f, + -0.0017205660f, + -0.0047455579f, + -0.0011720449f, + -0.0127866782f, + 0.0004100342f, + -0.0350539120f, + -0.0246218736f, + -0.0252995186f, + -0.1693947993f, + 0.0742412161f, + 0.3268935535f, + 0.0489687748f, + -0.0492994388f, + 0.0240343336f, + -0.0244126095f, + -0.0061025091f, + -0.0019695990f, + -0.0054447492f, + 0.0015661291f, + -0.0028327978f, + 0.0025872148f, + -0.0021710931f, + 0.0008020327f, + -0.0002307776f + }, + { + -0.0001033121f, /* Filter 46 */ + -0.0035694823f, + -0.0021526634f, + -0.0018286776f, + -0.0046884762f, + -0.0012580756f, + -0.0127779299f, + 0.0005100000f, + -0.0356412303f, + -0.0242027907f, + -0.0270191676f, + -0.1723405821f, + 0.0746194196f, + 0.3255589646f, + 0.0482124309f, + -0.0467972792f, + 0.0246287071f, + -0.0240839365f, + -0.0054668817f, + -0.0019806027f, + -0.0051685871f, + 0.0015966923f, + -0.0027108763f, + 0.0026574255f, + -0.0021317304f, + 0.0008953512f, + -0.0002292356f + }, + { + -0.0000961620f, /* Filter 47 */ + -0.0036506231f, + -0.0021082375f, + -0.0019355976f, + -0.0046259384f, + -0.0013441756f, + -0.0127572528f, + 0.0006115934f, + -0.0362156056f, + -0.0237602556f, + -0.0287604570f, + -0.1752765433f, + 0.0749845580f, + 0.3241661779f, + 0.0474524780f, + -0.0443225478f, + 0.0251964799f, + -0.0237455028f, + -0.0048397188f, + -0.0019896284f, + -0.0048916464f, + 0.0016252861f, + -0.0025870146f, + 0.0027251726f, + -0.0020910004f, + 0.0009871039f, + -0.0002275045f + } +}; +static const float rx_pulseshaper_im[RX_PULSESHAPER_COEFF_SETS][27] = +{ + { + -0.0028663575f, /* Filter 0 */ + -0.0003500104f, + -0.0033435739f, + -0.0027904154f, + -0.0015083101f, + -0.0050840449f, + -0.0003631436f, + -0.0126066685f, + 0.0017485284f, + -0.0322041576f, + -0.0301351111f, + -0.0213368100f, + -0.1944744073f, + 0.0000000000f, + 0.3137990765f, + 0.0907982975f, + -0.0357378350f, + 0.0320615804f, + -0.0152332987f, + -0.0045128715f, + 0.0010014372f, + -0.0044019132f, + 0.0027931107f, + -0.0020412235f, + 0.0033647255f, + -0.0012117904f, + 0.0011291658f + }, + { + -0.0028907191f, /* Filter 1 */ + -0.0003207295f, + -0.0034122025f, + -0.0027251726f, + -0.0015853246f, + -0.0050021163f, + -0.0003849809f, + -0.0125620192f, + 0.0020046772f, + -0.0326828808f, + -0.0295012876f, + -0.0225834661f, + -0.1976537959f, + 0.0000000000f, + 0.3123331620f, + 0.0893078595f, + -0.0336741686f, + 0.0327031863f, + -0.0150009950f, + -0.0038614490f, + 0.0010040176f, + -0.0041369471f, + 0.0028347787f, + -0.0019355976f, + 0.0034403309f, + -0.0011861593f, + 0.0012218546f + }, + { + -0.0029127149f, /* Filter 2 */ + -0.0002909172f, + -0.0034786678f, + -0.0026574255f, + -0.0016612271f, + -0.0049141135f, + -0.0004067766f, + -0.0125050331f, + 0.0022644566f, + -0.0331486948f, + -0.0288365110f, + -0.0238444047f, + -0.2008192272f, + 0.0000000000f, + 0.3108122511f, + 0.0878119126f, + -0.0316353806f, + 0.0333122836f, + -0.0147630810f, + -0.0032200134f, + 0.0010056449f, + -0.0038719586f, + 0.0028731019f, + -0.0018286776f, + 0.0035128275f, + -0.0011597951f, + 0.0013127044f + }, + { + -0.0029323077f, /* Filter 3 */ + -0.0002605962f, + -0.0035429020f, + -0.0025872148f, + -0.0017359407f, + -0.0048200496f, + -0.0004285111f, + -0.0124355589f, + 0.0025277420f, + -0.0336010744f, + -0.0281405891f, + -0.0251193187f, + -0.2039696262f, + 0.0000000000f, + 0.3092369205f, + 0.0863109612f, + -0.0296219304f, + 0.0338891017f, + -0.0145198058f, + -0.0025888544f, + 0.0010063334f, + -0.0036071832f, + 0.0029080816f, + -0.0017205660f, + 0.0035821731f, + -0.0011327259f, + 0.0014016500f + }, + { + -0.0029494611f, /* Filter 4 */ + -0.0002297865f, + -0.0036048329f, + -0.0025145856f, + -0.0018093883f, + -0.0047199445f, + -0.0004501638f, + -0.0123534430f, + 0.0027944026f, + -0.0340394978f, + -0.0274133503f, + -0.0264079117f, + -0.2071039176f, + 0.0000000000f, + 0.3076077361f, + 0.0848055039f, + -0.0276342580f, + 0.0344338896f, + -0.0142714155f, + -0.0019682529f, + 0.0010060975f, + -0.0033428487f, + 0.0029397209f, + -0.0016113720f, + 0.0036483309f, + -0.0011049782f, + 0.0014886367f + }, + { + -0.0029641442f, /* Filter 5 */ + -0.0001985113f, + -0.0036643951f, + -0.0024395825f, + -0.0018814932f, + -0.0046138230f, + -0.0004717142f, + -0.0122585417f, + 0.0030643056f, + -0.0344634328f, + -0.0266546448f, + -0.0277098630f, + -0.2102210189f, + 0.0000000000f, + 0.3059253229f, + 0.0832960468f, + -0.0256728037f, + 0.0349469084f, + -0.0140181582f, + -0.0013584756f, + 0.0010049524f, + -0.0030791857f, + 0.0029680271f, + -0.0015011959f, + 0.0037112660f, + -0.0010765785f, + 0.0015736058f + }, + { + -0.0029763241f, /* Filter 6 */ + -0.0001667922f, + -0.0037215252f, + -0.0023622545f, + -0.0019521811f, + -0.0045017152f, + -0.0004931418f, + -0.0121507178f, + 0.0033373122f, + -0.0348723628f, + -0.0258643154f, + -0.0290248545f, + -0.2133198677f, + 0.0000000000f, + 0.3041903010f, + 0.0817830924f, + -0.0237379776f, + 0.0354284196f, + -0.0137602804f, + -0.0007597857f, + 0.0010029139f, + -0.0028164188f, + 0.0029930087f, + -0.0013901463f, + 0.0037709467f, + -0.0010475555f, + 0.0016564989f + }, + { + -0.0029859721f, /* Filter 7 */ + -0.0001346534f, + -0.0037761582f, + -0.0022826512f, + -0.0020213751f, + -0.0043836566f, + -0.0005144257f, + -0.0120298496f, + 0.0036132805f, + -0.0352657604f, + -0.0250422344f, + -0.0303525561f, + -0.2163993844f, + 0.0000000000f, + 0.3024033067f, + 0.0802671405f, + -0.0218301876f, + 0.0358787093f, + -0.0134980262f, + -0.0001724233f, + 0.0009999976f, + -0.0025547698f, + 0.0030146768f, + -0.0012783271f, + 0.0038273449f, + -0.0010179362f, + 0.0017372664f + }, + { + -0.0029930609f, /* Filter 8 */ + -0.0001021172f, + -0.0038282335f, + -0.0022008259f, + -0.0020889998f, + -0.0042596878f, + -0.0005355448f, + -0.0118958109f, + 0.0038920642f, + -0.0356431071f, + -0.0241882872f, + -0.0316926279f, + -0.2194585217f, + 0.0000000000f, + 0.3005650049f, + 0.0787486942f, + -0.0199498223f, + 0.0362980733f, + -0.0132316390f, + 0.0004033739f, + 0.0009962207f, + -0.0022944544f, + 0.0030330480f, + -0.0011658419f, + 0.0038804334f, + -0.0009877493f, + 0.0018158530f + }, + { + -0.0029975637f, /* Filter 9 */ + -0.0000692078f, + -0.0038776870f, + -0.0021168342f, + -0.0021549819f, + -0.0041298574f, + -0.0005564782f, + -0.0117484865f, + 0.0041735128f, + -0.0360038798f, + -0.0233023615f, + -0.0330447295f, + -0.2224962126f, + 0.0000000000f, + 0.2986760977f, + 0.0772282452f, + -0.0180972548f, + 0.0366868117f, + -0.0129613633f, + 0.0009673802f, + 0.0009915996f, + -0.0020356887f, + 0.0030481364f, + -0.0010527980f, + 0.0039301906f, + -0.0009570246f, + 0.0018922157f + }, + { + -0.0029994575f, /* Filter 10 */ + -0.0000359510f, + -0.0039244652f, + -0.0020307330f, + -0.0022192491f, + -0.0039942164f, + -0.0005772045f, + -0.0115877798f, + 0.0044574722f, + -0.0363475566f, + -0.0223843650f, + -0.0344085026f, + -0.2255113940f, + 0.0000000000f, + 0.2967372670f, + 0.0757062934f, + -0.0162728428f, + 0.0370452384f, + -0.0126874405f, + 0.0015193877f, + 0.0009861512f, + -0.0017786820f, + 0.0030599648f, + -0.0009392972f, + 0.0039765949f, + -0.0009257899f, + 0.0019663015f + }, + { + -0.0029987207f, /* Filter 11 */ + -0.0000023707f, + -0.0039685085f, + -0.0019425826f, + -0.0022817271f, + -0.0038528212f, + -0.0005977024f, + -0.0114135888f, + 0.0047437837f, + -0.0366736316f, + -0.0214342183f, + -0.0357835947f, + -0.2285030143f, + 0.0000000000f, + 0.2947492090f, + 0.0741833414f, + -0.0144769324f, + 0.0373736831f, + -0.0124101104f, + 0.0020591900f, + 0.0009798939f, + -0.0015236388f, + 0.0030685537f, + -0.0008254433f, + 0.0040196306f, + -0.0008940736f, + 0.0020380694f + }, + { + -0.0029953343f, /* Filter 12 */ + 0.0000315079f, + -0.0040097613f, + -0.0018524437f, + -0.0023423449f, + -0.0037057392f, + -0.0006179501f, + -0.0112258334f, + 0.0050322861f, + -0.0369815859f, + -0.0204518607f, + -0.0371696370f, + -0.2314700325f, + 0.0000000000f, + 0.2927126894f, + 0.0726598745f, + -0.0127098581f, + 0.0376724787f, + -0.0121296126f, + 0.0025866021f, + 0.0009728452f, + -0.0012707638f, + 0.0030739290f, + -0.0007113378f, + 0.0040592849f, + -0.0008619066f, + 0.0021074766f + }, + { + -0.0029892802f, /* Filter 13 */ + 0.0000656581f, + -0.0040481738f, + -0.0017603822f, + -0.0024010313f, + -0.0035530327f, + -0.0006379263f, + -0.0110244264f, + 0.0053228127f, + -0.0372709051f, + -0.0194372322f, + -0.0385662576f, + -0.2344114175f, + 0.0000000000f, + 0.2906284665f, + 0.0711363835f, + -0.0109719283f, + 0.0379419771f, + -0.0118461855f, + 0.0031014405f, + 0.0009650237f, + -0.0010202504f, + 0.0030761174f, + -0.0005970840f, + 0.0040955442f, + -0.0008293163f, + 0.0021744821f + }, + { + -0.0029805445f, /* Filter 14 */ + 0.0001000532f, + -0.0040836940f, + -0.0016664628f, + -0.0024577161f, + -0.0033947827f, + -0.0006576095f, + -0.0108093037f, + 0.0056151934f, + -0.0375410830f, + -0.0183903004f, + -0.0399730727f, + -0.2373260846f, + 0.0000000000f, + 0.2884972851f, + 0.0696133632f, + -0.0092634518f, + 0.0381825282f, + -0.0115600635f, + 0.0036035431f, + 0.0009564483f, + -0.0007722959f, + 0.0030751477f, + -0.0004827837f, + 0.0041284027f, + -0.0007963345f, + 0.0022390484f + }, + { + -0.0029691137f, /* Filter 15 */ + 0.0001346683f, + -0.0041162709f, + -0.0015707543f, + -0.0025123315f, + -0.0032310628f, + -0.0006769777f, + -0.0105804032f, + 0.0059092553f, + -0.0377916182f, + -0.0173110425f, + -0.0413897022f, + -0.2402130469f, + 0.0000000000f, + 0.2863199341f, + 0.0680912949f, + -0.0075847116f, + 0.0383945004f, + -0.0112714793f, + 0.0040927478f, + 0.0009471377f, + -0.0005270858f, + 0.0030710535f, + -0.0003685390f, + 0.0041578530f, + -0.0007629893f, + 0.0023011405f + }, + { + -0.0029549761f, /* Filter 16 */ + 0.0001694743f, + -0.0041458602f, + -0.0014733283f, + -0.0025648091f, + -0.0030619615f, + -0.0006960095f, + -0.0103376715f, + 0.0062048215f, + -0.0380220031f, + -0.0161994415f, + -0.0428157525f, + -0.2430713004f, + 0.0000000000f, + 0.2840972152f, + 0.0665706608f, + -0.0059359787f, + 0.0385782755f, + -0.0109806680f, + 0.0045689089f, + 0.0009371115f, + -0.0002848044f, + 0.0030638693f, + -0.0002544469f, + 0.0041838948f, + -0.0007293112f, + 0.0023607247f + }, + { + -0.0029381234f, /* Filter 17 */ + 0.0002044455f, + -0.0041724192f, + -0.0013742551f, + -0.0026150829f, + -0.0028875692f, + -0.0007146828f, + -0.0100810704f, + 0.0065017099f, + -0.0382317485f, + -0.0150555060f, + -0.0442508242f, + -0.2458997907f, + 0.0000000000f, + 0.2818299191f, + 0.0650519389f, + -0.0043175064f, + 0.0387342290f, + -0.0106878589f, + 0.0050318997f, + 0.0009263889f, + -0.0000456328f, + 0.0030536296f, + -0.0001406071f, + 0.0042065279f, + -0.0006953299f, + 0.0024177706f + }, + { + -0.0029185509f, /* Filter 18 */ + 0.0002395529f, + -0.0041958991f, + -0.0012736106f, + -0.0026630870f, + -0.0027079834f, + -0.0007329762f, + -0.0098105660f, + 0.0067997380f, + -0.0384203595f, + -0.0138792561f, + -0.0456945081f, + -0.2486975418f, + 0.0000000000f, + 0.2795189375f, + 0.0635356160f, + -0.0027295403f, + 0.0388627630f, + -0.0103932783f, + 0.0054815914f, + 0.0009149904f, + 0.0001902551f, + 0.0030403759f, + -0.0000271166f, + 0.0042257549f, + -0.0006610751f, + 0.0024722493f + }, + { + -0.0028962540f, /* Filter 19 */ + 0.0002747697f, + -0.0042162668f, + -0.0011714716f, + -0.0027087581f, + -0.0025233048f, + -0.0007508676f, + -0.0095261317f, + 0.0070987166f, + -0.0385873452f, + -0.0126707281f, + -0.0471463981f, + -0.2514635379f, + 0.0000000000f, + 0.2771650518f, + 0.0620221546f, + -0.0011723105f, + 0.0389642752f, + -0.0100971511f, + 0.0059178704f, + 0.0009029357f, + 0.0004226896f, + 0.0030241469f, + 0.0000859258f, + 0.0042415846f, + -0.0006265770f, + 0.0025241333f + }, + { + -0.0028712275f, /* Filter 20 */ + 0.0003100667f, + -0.0042334829f, + -0.0010679155f, + -0.0027520330f, + -0.0023336385f, + -0.0007683354f, + -0.0092277581f, + 0.0073984545f, + -0.0387322185f, + -0.0114299621f, + -0.0486060766f, + -0.2541967944f, + 0.0000000000f, + 0.2747691711f, + 0.0605120265f, + 0.0003539842f, + 0.0390391742f, + -0.0097997036f, + 0.0063406383f, + 0.0008902450f, + 0.0006515064f, + 0.0030049884f, + 0.0001984275f, + 0.0042540230f, + -0.0005918659f, + 0.0025734007f + }, + { + -0.0028434772f, /* Filter 21 */ + 0.0003454155f, + -0.0042475118f, + -0.0009630217f, + -0.0027928509f, + -0.0021391009f, + -0.0007853583f, + -0.0089154411f, + 0.0076987586f, + -0.0388545084f, + -0.0101570232f, + -0.0500731192f, + -0.2568963346f, + 0.0000000000f, + 0.2723321314f, + 0.0590057069f, + 0.0018491331f, + 0.0390878840f, + -0.0095011535f, + 0.0067498038f, + 0.0008769393f, + 0.0008765438f, + 0.0029829434f, + 0.0003102929f, + 0.0042630834f, + -0.0005569712f, + 0.0026200288f + }, + { + -0.0028130005f, /* Filter 22 */ + 0.0003807876f, + -0.0042583189f, + -0.0008568735f, + -0.0028311524f, + -0.0019398084f, + -0.0008019140f, + -0.0085891878f, + 0.0079994291f, + -0.0389537393f, + -0.0088519897f, + -0.0515470994f, + -0.2595612030f, + 0.0000000000f, + 0.2698548228f, + 0.0575036409f, + 0.0033129675f, + 0.0391108297f, + -0.0092017204f, + 0.0071452877f, + 0.0008630391f, + 0.0010976484f, + 0.0029580601f, + 0.0004214283f, + 0.0042687793f, + -0.0005219232f, + 0.0026639994f + }, + { + -0.0027798077f, /* Filter 23 */ + 0.0004161537f, + -0.0042658758f, + -0.0007495544f, + -0.0028668803f, + -0.0017358856f, + -0.0008179815f, + -0.0082490135f, + 0.0083002667f, + -0.0390294419f, + -0.0075149545f, + -0.0530275838f, + -0.2621904272f, + 0.0000000000f, + 0.2673381654f, + 0.0560063002f, + 0.0047453124f, + 0.0391084429f, + -0.0089016211f, + 0.0075270221f, + 0.0008485652f, + 0.0013146691f, + 0.0029303866f, + 0.0005317429f, + 0.0042711304f, + -0.0004867513f, + 0.0027052959f + }, + { + -0.0027439022f, /* Filter 24 */ + 0.0004514848f, + -0.0042701555f, + -0.0006411480f, + -0.0028999763f, + -0.0015274614f, + -0.0008335389f, + -0.0078949462f, + 0.0086010664f, + -0.0390811643f, + -0.0061460197f, + -0.0545141302f, + -0.2647830558f, + 0.0000000000f, + 0.2647830558f, + 0.0545141302f, + 0.0061460197f, + 0.0390811643f, + -0.0086010664f, + 0.0078949462f, + 0.0008335389f, + 0.0015274614f, + 0.0028999763f, + 0.0006411480f, + 0.0042701555f, + -0.0004514848f, + 0.0027439022f + }, + { + -0.0027052959f, /* Filter 25 */ + 0.0004867513f, + -0.0042711304f, + -0.0005317429f, + -0.0029303866f, + -0.0013146691f, + -0.0008485652f, + -0.0075270221f, + 0.0089016211f, + -0.0391084429f, + -0.0047453124f, + -0.0560063002f, + -0.2673381655f, + 0.0000000000f, + 0.2621904272f, + 0.0530275838f, + 0.0075149545f, + 0.0390294419f, + -0.0083002667f, + 0.0082490135f, + 0.0008179814f, + 0.0017358856f, + 0.0028668803f, + 0.0007495544f, + 0.0042658758f, + -0.0004161537f, + 0.0027798077f + }, + { + -0.0026639994f, /* Filter 26 */ + 0.0005219232f, + -0.0042687793f, + -0.0004214283f, + -0.0029580601f, + -0.0010976484f, + -0.0008630391f, + -0.0071452877f, + 0.0092017204f, + -0.0391108297f, + -0.0033129675f, + -0.0575036410f, + -0.2698548228f, + 0.0000000000f, + 0.2595612030f, + 0.0515470994f, + 0.0088519897f, + 0.0389537393f, + -0.0079994291f, + 0.0085891878f, + 0.0008019140f, + 0.0019398084f, + 0.0028311524f, + 0.0008568735f, + 0.0042583189f, + -0.0003807876f, + 0.0028130005f + }, + { + -0.0026200288f, /* Filter 27 */ + 0.0005569712f, + -0.0042630834f, + -0.0003102929f, + -0.0029829434f, + -0.0008765438f, + -0.0008769393f, + -0.0067498036f, + 0.0095011535f, + -0.0390878840f, + -0.0018491331f, + -0.0590057069f, + -0.2723321315f, + 0.0000000000f, + 0.2568963346f, + 0.0500731192f, + 0.0101570232f, + 0.0388545084f, + -0.0076987586f, + 0.0089154411f, + 0.0007853583f, + 0.0021391009f, + 0.0027928509f, + 0.0009630217f, + 0.0042475118f, + -0.0003454155f, + 0.0028434772f + }, + { + -0.0025734007f, /* Filter 28 */ + 0.0005918659f, + -0.0042540230f, + -0.0001984275f, + -0.0030049884f, + -0.0006515064f, + -0.0008902450f, + -0.0063406383f, + 0.0097997036f, + -0.0390391742f, + -0.0003539842f, + -0.0605120265f, + -0.2747691711f, + 0.0000000000f, + 0.2541967944f, + 0.0486060766f, + 0.0114299621f, + 0.0387322185f, + -0.0073984545f, + 0.0092277581f, + 0.0007683354f, + 0.0023336385f, + 0.0027520330f, + 0.0010679155f, + 0.0042334829f, + -0.0003100667f, + 0.0028712275f + }, + { + -0.0025241333f, /* Filter 29 */ + 0.0006265770f, + -0.0042415846f, + -0.0000859258f, + -0.0030241469f, + -0.0004226896f, + -0.0009029357f, + -0.0059178704f, + 0.0100971511f, + -0.0389642752f, + 0.0011723105f, + -0.0620221546f, + -0.2771650518f, + 0.0000000000f, + 0.2514635379f, + 0.0471463981f, + 0.0126707281f, + 0.0385873452f, + -0.0070987166f, + 0.0095261317f, + 0.0007508676f, + 0.0025233048f, + 0.0027087581f, + 0.0011714716f, + 0.0042162668f, + -0.0002747697f, + 0.0028962540f + }, + { + -0.0024722493f, /* Filter 30 */ + 0.0006610751f, + -0.0042257549f, + 0.0000271166f, + -0.0030403759f, + -0.0001902551f, + -0.0009149904f, + -0.0054815914f, + 0.0103932783f, + -0.0388627629f, + 0.0027295403f, + -0.0635356160f, + -0.2795189375f, + 0.0000000000f, + 0.2486975418f, + 0.0456945081f, + 0.0138792561f, + 0.0384203595f, + -0.0067997380f, + 0.0098105660f, + 0.0007329762f, + 0.0027079834f, + 0.0026630870f, + 0.0012736106f, + 0.0041958991f, + -0.0002395529f, + 0.0029185509f + }, + { + -0.0024177706f, /* Filter 31 */ + 0.0006953299f, + -0.0042065279f, + 0.0001406071f, + -0.0030536296f, + 0.0000456328f, + -0.0009263889f, + -0.0050318997f, + 0.0106878589f, + -0.0387342290f, + 0.0043175064f, + -0.0650519389f, + -0.2818299191f, + 0.0000000000f, + 0.2458997907f, + 0.0442508242f, + 0.0150555060f, + 0.0382317485f, + -0.0065017099f, + 0.0100810704f, + 0.0007146828f, + 0.0028875692f, + 0.0026150829f, + 0.0013742551f, + 0.0041724192f, + -0.0002044455f, + 0.0029381234f + }, + { + -0.0023607247f, /* Filter 32 */ + 0.0007293112f, + -0.0041838948f, + 0.0002544469f, + -0.0030638693f, + 0.0002848044f, + -0.0009371115f, + -0.0045689089f, + 0.0109806680f, + -0.0385782755f, + 0.0059359787f, + -0.0665706608f, + -0.2840972153f, + 0.0000000000f, + 0.2430713004f, + 0.0428157525f, + 0.0161994415f, + 0.0380220031f, + -0.0062048215f, + 0.0103376715f, + 0.0006960095f, + 0.0030619615f, + 0.0025648091f, + 0.0014733283f, + 0.0041458602f, + -0.0001694743f, + 0.0029549761f + }, + { + -0.0023011405f, /* Filter 33 */ + 0.0007629893f, + -0.0041578530f, + 0.0003685390f, + -0.0030710535f, + 0.0005270858f, + -0.0009471377f, + -0.0040927478f, + 0.0112714793f, + -0.0383945003f, + 0.0075847116f, + -0.0680912949f, + -0.2863199341f, + 0.0000000000f, + 0.2402130469f, + 0.0413897022f, + 0.0173110426f, + 0.0377916182f, + -0.0059092553f, + 0.0105804032f, + 0.0006769777f, + 0.0032310628f, + 0.0025123315f, + 0.0015707543f, + 0.0041162709f, + -0.0001346683f, + 0.0029691137f + }, + { + -0.0022390484f, /* Filter 34 */ + 0.0007963345f, + -0.0041284027f, + 0.0004827837f, + -0.0030751477f, + 0.0007722959f, + -0.0009564483f, + -0.0036035431f, + 0.0115600635f, + -0.0381825282f, + 0.0092634518f, + -0.0696133632f, + -0.2884972852f, + 0.0000000000f, + 0.2373260846f, + 0.0399730727f, + 0.0183903004f, + 0.0375410830f, + -0.0056151934f, + 0.0108093037f, + 0.0006576095f, + 0.0033947827f, + 0.0024577161f, + 0.0016664628f, + 0.0040836940f, + -0.0001000532f, + 0.0029805445f + }, + { + -0.0021744821f, /* Filter 35 */ + 0.0008293163f, + -0.0040955442f, + 0.0005970840f, + -0.0030761174f, + 0.0010202504f, + -0.0009650237f, + -0.0031014405f, + 0.0118461855f, + -0.0379419771f, + 0.0109719284f, + -0.0711363835f, + -0.2906284665f, + 0.0000000000f, + 0.2344114175f, + 0.0385662576f, + 0.0194372322f, + 0.0372709051f, + -0.0053228127f, + 0.0110244264f, + 0.0006379263f, + 0.0035530327f, + 0.0024010313f, + 0.0017603822f, + 0.0040481738f, + -0.0000656581f, + 0.0029892802f + }, + { + -0.0021074766f, /* Filter 36 */ + 0.0008619066f, + -0.0040592849f, + 0.0007113378f, + -0.0030739290f, + 0.0012707638f, + -0.0009728452f, + -0.0025866021f, + 0.0121296126f, + -0.0376724787f, + 0.0127098581f, + -0.0726598745f, + -0.2927126894f, + 0.0000000000f, + 0.2314700325f, + 0.0371696370f, + 0.0204518608f, + 0.0369815859f, + -0.0050322861f, + 0.0112258334f, + 0.0006179501f, + 0.0037057392f, + 0.0023423449f, + 0.0018524437f, + 0.0040097613f, + -0.0000315079f, + 0.0029953343f + }, + { + -0.0020380694f, /* Filter 37 */ + 0.0008940736f, + -0.0040196306f, + 0.0008254433f, + -0.0030685537f, + 0.0015236388f, + -0.0009798939f, + -0.0020591900f, + 0.0124101104f, + -0.0373736831f, + 0.0144769324f, + -0.0741833414f, + -0.2947492090f, + 0.0000000000f, + 0.2285030143f, + 0.0357835947f, + 0.0214342183f, + 0.0366736316f, + -0.0047437837f, + 0.0114135888f, + 0.0005977024f, + 0.0038528212f, + 0.0022817271f, + 0.0019425826f, + 0.0039685085f, + 0.0000023707f, + 0.0029987207f + }, + { + -0.0019663015f, /* Filter 38 */ + 0.0009257899f, + -0.0039765949f, + 0.0009392972f, + -0.0030599648f, + 0.0017786820f, + -0.0009861512f, + -0.0015193877f, + 0.0126874405f, + -0.0370452384f, + 0.0162728428f, + -0.0757062934f, + -0.2967372670f, + 0.0000000000f, + 0.2255113940f, + 0.0344085026f, + 0.0223843650f, + 0.0363475566f, + -0.0044574722f, + 0.0115877798f, + 0.0005772045f, + 0.0039942164f, + 0.0022192491f, + 0.0020307330f, + 0.0039244652f, + 0.0000359510f, + 0.0029994575f + }, + { + -0.0018922157f, /* Filter 39 */ + 0.0009570246f, + -0.0039301906f, + 0.0010527980f, + -0.0030481364f, + 0.0020356887f, + -0.0009915996f, + -0.0009673802f, + 0.0129613633f, + -0.0366868117f, + 0.0180972548f, + -0.0772282452f, + -0.2986760977f, + 0.0000000000f, + 0.2224962126f, + 0.0330447295f, + 0.0233023615f, + 0.0360038798f, + -0.0041735128f, + 0.0117484865f, + 0.0005564782f, + 0.0041298574f, + 0.0021549819f, + 0.0021168342f, + 0.0038776870f, + 0.0000692078f, + 0.0029975637f + }, + { + -0.0018158530f, /* Filter 40 */ + 0.0009877493f, + -0.0038804334f, + 0.0011658419f, + -0.0030330480f, + 0.0022944544f, + -0.0009962207f, + -0.0004033739f, + 0.0132316390f, + -0.0362980733f, + 0.0199498223f, + -0.0787486942f, + -0.3005650049f, + 0.0000000000f, + 0.2194585217f, + 0.0316926279f, + 0.0241882873f, + 0.0356431071f, + -0.0038920642f, + 0.0118958109f, + 0.0005355448f, + 0.0042596878f, + 0.0020889998f, + 0.0022008259f, + 0.0038282335f, + 0.0001021172f, + 0.0029930609f + }, + { + -0.0017372664f, /* Filter 41 */ + 0.0010179362f, + -0.0038273449f, + 0.0012783271f, + -0.0030146768f, + 0.0025547698f, + -0.0009999976f, + 0.0001724233f, + 0.0134980262f, + -0.0358787092f, + 0.0218301877f, + -0.0802671405f, + -0.3024033068f, + 0.0000000000f, + 0.2163993844f, + 0.0303525561f, + 0.0250422344f, + 0.0352657604f, + -0.0036132805f, + 0.0120298496f, + 0.0005144257f, + 0.0043836566f, + 0.0020213751f, + 0.0022826512f, + 0.0037761582f, + 0.0001346534f, + 0.0029859721f + }, + { + -0.0016564989f, /* Filter 42 */ + 0.0010475555f, + -0.0037709467f, + 0.0013901463f, + -0.0029930087f, + 0.0028164188f, + -0.0010029139f, + 0.0007597857f, + 0.0137602804f, + -0.0354284196f, + 0.0237379776f, + -0.0817830924f, + -0.3041903010f, + 0.0000000000f, + 0.2133198677f, + 0.0290248545f, + 0.0258643154f, + 0.0348723629f, + -0.0033373122f, + 0.0121507178f, + 0.0004931418f, + 0.0045017152f, + 0.0019521811f, + 0.0023622545f, + 0.0037215252f, + 0.0001667922f, + 0.0029763241f + }, + { + -0.0015736058f, /* Filter 43 */ + 0.0010765785f, + -0.0037112660f, + 0.0015011959f, + -0.0029680271f, + 0.0030791857f, + -0.0010049524f, + 0.0013584756f, + 0.0140181582f, + -0.0349469084f, + 0.0256728037f, + -0.0832960468f, + -0.3059253229f, + 0.0000000000f, + 0.2102210189f, + 0.0277098630f, + 0.0266546448f, + 0.0344634328f, + -0.0030643056f, + 0.0122585417f, + 0.0004717142f, + 0.0046138230f, + 0.0018814932f, + 0.0024395825f, + 0.0036643951f, + 0.0001985113f, + 0.0029641442f + }, + { + -0.0014886367f, /* Filter 44 */ + 0.0011049782f, + -0.0036483309f, + 0.0016113720f, + -0.0029397209f, + 0.0033428487f, + -0.0010060975f, + 0.0019682529f, + 0.0142714155f, + -0.0344338896f, + 0.0276342580f, + -0.0848055039f, + -0.3076077361f, + 0.0000000000f, + 0.2071039176f, + 0.0264079117f, + 0.0274133503f, + 0.0340394978f, + -0.0027944026f, + 0.0123534430f, + 0.0004501638f, + 0.0047199445f, + 0.0018093883f, + 0.0025145856f, + 0.0036048329f, + 0.0002297865f, + 0.0029494611f + }, + { + -0.0014016500f, /* Filter 45 */ + 0.0011327259f, + -0.0035821731f, + 0.0017205660f, + -0.0029080816f, + 0.0036071832f, + -0.0010063334f, + 0.0025888544f, + 0.0145198058f, + -0.0338891017f, + 0.0296219304f, + -0.0863109612f, + -0.3092369205f, + 0.0000000000f, + 0.2039696262f, + 0.0251193187f, + 0.0281405891f, + 0.0336010744f, + -0.0025277420f, + 0.0124355589f, + 0.0004285111f, + 0.0048200496f, + 0.0017359407f, + 0.0025872148f, + 0.0035429020f, + 0.0002605962f, + 0.0029323077f + }, + { + -0.0013127044f, /* Filter 46 */ + 0.0011597951f, + -0.0035128275f, + 0.0018286776f, + -0.0028731019f, + 0.0038719586f, + -0.0010056449f, + 0.0032200133f, + 0.0147630810f, + -0.0333122836f, + 0.0316353806f, + -0.0878119126f, + -0.3108122511f, + 0.0000000000f, + 0.2008192272f, + 0.0238444047f, + 0.0288365110f, + 0.0331486948f, + -0.0022644566f, + 0.0125050331f, + 0.0004067766f, + 0.0049141135f, + 0.0016612271f, + 0.0026574255f, + 0.0034786678f, + 0.0002909172f, + 0.0029127149f + }, + { + -0.0012218546f, /* Filter 47 */ + 0.0011861593f, + -0.0034403309f, + 0.0019355976f, + -0.0028347787f, + 0.0041369471f, + -0.0010040176f, + 0.0038614490f, + 0.0150009950f, + -0.0327031863f, + 0.0336741686f, + -0.0893078595f, + -0.3123331621f, + 0.0000000000f, + 0.1976537959f, + 0.0225834661f, + 0.0295012876f, + 0.0326828808f, + -0.0020046772f, + 0.0125620192f, + 0.0003849809f, + 0.0050021163f, + 0.0015853246f, + 0.0027251726f, + 0.0034122025f, + 0.0003207295f, + 0.0028907191f + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v29tx_fixed_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v29tx_fixed_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,115 @@ +#define TX_PULSESHAPER_GAIN 0.948561f +#define TX_PULSESHAPER_COEFF_SETS 10 +static const int16_t tx_pulseshaper[TX_PULSESHAPER_COEFF_SETS][9] = +{ + { + -89, /* Filter 0 */ + -561, + 2002, + -5223, + 19071, + 19071, + -5223, + 2002, + -561 + }, + { + 97, /* Filter 1 */ + -922, + 2553, + -6054, + 23507, + 14325, + -3959, + 1300, + -183 + }, + { + 297, /* Filter 2 */ + -1210, + 2855, + -6268, + 27331, + 9577, + -2461, + 548, + 159 + }, + { + 478, /* Filter 3 */ + -1370, + 2827, + -5713, + 30276, + 5120, + -924, + -157, + 426 + }, + { + 605, /* Filter 4 */ + -1359, + 2421, + -4291, + 32132, + 1207, + 482, + -741, + 593 + }, + { + 650, /* Filter 5 */ + -1150, + 1627, + -1970, + 32767, + -1970, + 1627, + -1150, + 650 + }, + { + 593, /* Filter 6 */ + -741, + 482, + 1207, + 32132, + -4291, + 2421, + -1359, + 605 + }, + { + 426, /* Filter 7 */ + -157, + -924, + 5120, + 30276, + -5713, + 2827, + -1370, + 478 + }, + { + 159, /* Filter 8 */ + 548, + -2461, + 9577, + 27331, + -6268, + 2855, + -1210, + 297 + }, + { + -183, /* Filter 9 */ + 1300, + -3959, + 14325, + 23507, + -6054, + 2553, + -922, + 97 + } +}; Added: freeswitch/trunk/libs/spandsp/src/generated/v29tx_floating_rrc.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/generated/v29tx_floating_rrc.h Wed Jan 28 13:50:00 2009 @@ -0,0 +1,115 @@ +#define TX_PULSESHAPER_GAIN 1.000000f +#define TX_PULSESHAPER_COEFF_SETS 10 +static const float tx_pulseshaper[TX_PULSESHAPER_COEFF_SETS][9] = +{ + { + -0.0028949651f, /* Filter 0 */ + -0.0180558826f, + 0.0644370007f, + -0.1680546408f, + 0.6136031185f, + 0.6136031185f, + -0.1680546408f, + 0.0644370007f, + -0.0180558826f + }, + { + 0.0031457252f, /* Filter 1 */ + -0.0296755127f, + 0.0821537989f, + -0.1948071639f, + 0.7563219340f, + 0.4608861696f, + -0.1273859874f, + 0.0418434527f, + -0.0059021756f + }, + { + 0.0095859914f, /* Filter 2 */ + -0.0389394461f, + 0.0918555164f, + -0.2016880165f, + 0.8793516522f, + 0.3081344924f, + -0.0792085168f, + 0.0176601547f, + 0.0051283313f + }, + { + 0.0153896886f, /* Filter 3 */ + -0.0441001627f, + 0.0909724632f, + -0.1838386257f, + 0.9741012232f, + 0.1647552896f, + -0.0297442695f, + -0.0050682351f, + 0.0137350965f + }, + { + 0.0194884074f, /* Filter 4 */ + -0.0437412555f, + 0.0779044290f, + -0.1380831525f, + 1.0338273601f, + 0.0388498601f, + 0.0155354866f, + -0.0238603903f, + 0.0191007897f + }, + { + 0.0209425254f, /* Filter 5 */ + -0.0370198705f, + 0.0523524598f, + -0.0633894611f, + 1.0542286928f, + -0.0633894611f, + 0.0523524598f, + -0.0370198705f, + 0.0209425254f + }, + { + 0.0191007897f, /* Filter 6 */ + -0.0238603903f, + 0.0155354866f, + 0.0388498602f, + 1.0338273601f, + -0.1380831525f, + 0.0779044290f, + -0.0437412555f, + 0.0194884074f + }, + { + 0.0137350965f, /* Filter 7 */ + -0.0050682351f, + -0.0297442695f, + 0.1647552896f, + 0.9741012231f, + -0.1838386257f, + 0.0909724632f, + -0.0441001627f, + 0.0153896885f + }, + { + 0.0051283313f, /* Filter 8 */ + 0.0176601547f, + -0.0792085168f, + 0.3081344925f, + 0.8793516522f, + -0.2016880165f, + 0.0918555164f, + -0.0389394461f, + 0.0095859914f + }, + { + -0.0059021756f, /* Filter 9 */ + 0.0418434528f, + -0.1273859874f, + 0.4608861697f, + 0.7563219340f, + -0.1948071639f, + 0.0821537989f, + -0.0296755127f, + 0.0031457252f + } +}; From intralanman at freeswitch.org Wed Jan 28 13:55:49 2009 From: intralanman at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 15:55:49 -0600 Subject: [Freeswitch-svn] [commit] r11544 - freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler Message-ID: Author: intralanman Date: Wed Jan 28 15:55:49 2009 New Revision: 11544 Log: adding tel handler to use with firefox and [hopefully] thunderbird Added: freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/ freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/Makefile freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/tel_handler.c Added: freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/Makefile ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/Makefile Wed Jan 28 15:55:49 2009 @@ -0,0 +1,25 @@ +INCS=-I../../../../../libs/esl/src/include +LIBEDIT_DIR=../../libs/libedit +DEBUG=-g -ggdb +PICKY=-O2 -ffast-math -Wall -Werror -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes +CFLAGS=$(INCS) -DHAVE_EDITLINE $(DEBUG) -I$(LIBEDIT_DIR)/src/ $(PICKY) +MYLIB=libesl.a +LIBS=-lncurses -lpthread -lesl +LDFLAGS=-L../../../../../libs/esl/ +OBJS=src/esl.o src/esl_event.o src/esl_threadmutex.o src/esl_config.o +SRC=src/esl.c src/esl_event.c src/esl_threadmutex.c src/esl_config.c +HEADERS=src/include/esl_config.h src/include/esl_event.h src/include/esl.h src/include/esl_threadmutex.h + +all: tel_handler + +tel_handler: tel_handler.c + $(CC) $(CC_CFLAGS) $(CFLAGS) tel_handler.c -o tel_handler $(LDFLAGS) $(LIBS) + +%.o: %.c + $(CC) $(CC_CFLAGS) $(CFLAGS) -c $< -o $@ + +clean: + rm -f *.o tel_handler *~ + +install: all + cp tel_handler /usr/bin/tel_handler Added: freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/tel_handler.c ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/tel_handler.c Wed Jan 28 15:55:49 2009 @@ -0,0 +1,19 @@ +#include +#include +#include + +int main(int argc, char *argv[]) +{ + esl_handle_t handle = {{0}}; + if(argc == 2) { + char buf[1024]; + esl_connect(&handle, "localhost", 8021, "ClueCon"); + snprintf(buf, sizeof(buf), "api pa call %s", argv[1]); + esl_send_recv(&handle, buf); + esl_disconnect(&handle); + return 0; + } else { + printf("Not enough args!!"); + return 1; + } +} From intralanman at freeswitch.org Wed Jan 28 14:21:13 2009 From: intralanman at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 16:21:13 -0600 Subject: [Freeswitch-svn] [commit] r11545 - freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler Message-ID: Author: intralanman Date: Wed Jan 28 16:21:13 2009 New Revision: 11545 Log: strip out extra Makefile stuff Modified: freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/Makefile freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/tel_handler.c Modified: freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/Makefile ============================================================================== --- freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/Makefile (original) +++ freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/Makefile Wed Jan 28 16:21:13 2009 @@ -1,25 +1,13 @@ -INCS=-I../../../../../libs/esl/src/include -LIBEDIT_DIR=../../libs/libedit -DEBUG=-g -ggdb -PICKY=-O2 -ffast-math -Wall -Werror -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -CFLAGS=$(INCS) -DHAVE_EDITLINE $(DEBUG) -I$(LIBEDIT_DIR)/src/ $(PICKY) -MYLIB=libesl.a -LIBS=-lncurses -lpthread -lesl -LDFLAGS=-L../../../../../libs/esl/ -OBJS=src/esl.o src/esl_event.o src/esl_threadmutex.o src/esl_config.o -SRC=src/esl.c src/esl_event.c src/esl_threadmutex.c src/esl_config.c -HEADERS=src/include/esl_config.h src/include/esl_event.h src/include/esl.h src/include/esl_threadmutex.h +CFLAGS=-I../../../../../libs/esl/src/include -g -ggdb -ffast-math -Wall -Werror -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes +LDFLAGS=-L../../../../../libs/esl/ -lpthread -lesl all: tel_handler tel_handler: tel_handler.c - $(CC) $(CC_CFLAGS) $(CFLAGS) tel_handler.c -o tel_handler $(LDFLAGS) $(LIBS) - -%.o: %.c - $(CC) $(CC_CFLAGS) $(CFLAGS) -c $< -o $@ + $(CC) $(CFLAGS) tel_handler.c -o tel_handler $(LDFLAGS) $(LIBS) clean: - rm -f *.o tel_handler *~ + rm -f tel_handler install: all cp tel_handler /usr/bin/tel_handler Modified: freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/tel_handler.c ============================================================================== --- freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/tel_handler.c (original) +++ freeswitch/trunk/scripts/contrib/intralanman/C/tel_handler/tel_handler.c Wed Jan 28 16:21:13 2009 @@ -1,19 +1,19 @@ #include -#include #include int main(int argc, char *argv[]) { esl_handle_t handle = {{0}}; - if(argc == 2) { - char buf[1024]; - esl_connect(&handle, "localhost", 8021, "ClueCon"); - snprintf(buf, sizeof(buf), "api pa call %s", argv[1]); - esl_send_recv(&handle, buf); - esl_disconnect(&handle); - return 0; - } else { + char buf[1024]; + + if (argc != 2) { printf("Not enough args!!"); return 1; } + + esl_connect(&handle, "localhost", 8021, "ClueCon"); + snprintf(buf, sizeof(buf), "api pa call %s", argv[1]); + esl_send_recv(&handle, buf); + esl_disconnect(&handle); + return 0; } From anthm at freeswitch.org Wed Jan 28 16:17:33 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 18:17:33 -0600 Subject: [Freeswitch-svn] [commit] r11546 - freeswitch/trunk/src Message-ID: Author: anthm Date: Wed Jan 28 18:17:33 2009 New Revision: 11546 Log: annoy CtRiX Modified: freeswitch/trunk/src/switch.c Modified: freeswitch/trunk/src/switch.c ============================================================================== --- freeswitch/trunk/src/switch.c (original) +++ freeswitch/trunk/src/switch.c Wed Jan 28 18:17:33 2009 @@ -275,6 +275,10 @@ switch_file_t *fd; switch_memory_pool_t *pool = NULL; + if (argv[0] && strstr(argv[0], "freeswitchd")) { + nc++; + } + usageDesc = "these are the optional arguments you can pass to freeswitch\n" #ifdef WIN32 "\t-service [name] -- start freeswitch as a service, cannot be used if loaded as a console app\n" From ctrix at freeswitch.org Wed Jan 28 16:48:54 2009 From: ctrix at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 18:48:54 -0600 Subject: [Freeswitch-svn] [commit] r11547 - freeswitch/branches/ctrix/mod_airpe Message-ID: Author: ctrix Date: Wed Jan 28 18:48:53 2009 New Revision: 11547 Log: Some steps to OSX integration (still far away) Modified: freeswitch/branches/ctrix/mod_airpe/Makefile freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c freeswitch/branches/ctrix/mod_airpe/mod_airpe.c freeswitch/branches/ctrix/mod_airpe/mod_airpe.h Modified: freeswitch/branches/ctrix/mod_airpe/Makefile ============================================================================== --- freeswitch/branches/ctrix/mod_airpe/Makefile (original) +++ freeswitch/branches/ctrix/mod_airpe/Makefile Wed Jan 28 18:48:53 2009 @@ -2,12 +2,12 @@ MODNAME=mod_airpe -LOCAL_CFLAGS= +LOCAL_CFLAGS=-w LOCAL_OBJS=airpe_if_common.o airpe_api.o airpe_apps.o airpe_if_x11.o airpe_if_osx.o airpe_if_win32.o LOCAL_SOURCES=airpe_if_common.c airpe_api.c airpe_apps.c airpe_if_x11.c airpe_if_osx.c airpe_if_win32.c LOCAL_INSERT_LDFLAGS=\ - if test $$osarch = "Darwin" ; then echo "-framework Skype -framework CoreFoundation" ; \ + if test $$osarch = "Darwin" ; then echo "-framework Carbon -framework Skype" ; \ else echo "-lX11" ; \ fi; Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c ============================================================================== --- freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c (original) +++ freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c Wed Jan 28 18:48:53 2009 @@ -13,7 +13,16 @@ int watchdog; }; +static switch_memory_pool_t *tech_pool; +/***************************************************************************** + EXPORTED FUNCTIONS + *****************************************************************************/ + +void airpe_tech_set_pool(switch_memory_pool_t *pool) { + if ( !tech_pool ) + tech_pool = pool; +} switch_status_t airpe_skype_watchdog_reset(skype_window_handler_t *window) { window->watchdog = 0; @@ -41,42 +50,60 @@ switch_status_t airpe_skype_send_message(skype_window_handler_t *window, const char *message_P) { CFStringRef string; +ADEBUG("Sending %s \n", message_P); string = CFStringCreateWithCString(NULL, message_P, kCFStringEncodingUTF8 ); SendSkypeCommand(string); - CFRelease(string); - RunCurrentEventLoop(0.01); +// CFRelease(string); +ADEBUG("Sent \n"); return SWITCH_STATUS_SUCCESS; } switch_status_t airpe_skype_avalaible(skype_window_handler_t *window) { -/* if ( IsSkypeAvailable() ) { return SWITCH_STATUS_SUCCESS; } else { return SWITCH_STATUS_FALSE; } -*/ - return SWITCH_STATUS_FALSE; } - - /***************************************************************************** THREADS *****************************************************************************/ static int attached = -1; +static char *ToCString(CFStringRef cstr) { + int strlen; + char *output; + + if ( !cstr ) + return NULL; + + strlen = CFStringGetMaximumSizeForEncoding(CFStringGetLength(cstr), kCFStringEncodingUTF8); + output = NewPtr(strlen+1); + + CFStringGetCString(cstr, output, strlen+1, kCFStringEncodingUTF8); + + return output; +} + + static void IncomingMessage(CFStringRef aNotificationString) { - ADEBUG("Incoming message"); + char *in; + + in = ToCString(aNotificationString); + if ( in ) { + ADEBUG("Incoming message %s\n", in); + } } static void AttachResponse(unsigned int aAttachResponseCode) { ADEBUG("Attach: %d\n", aAttachResponseCode); attached = aAttachResponseCode; } + void *SWITCH_THREAD_FUNC airpe_skype_thread(switch_thread_t * thread, void *obj) { airpe_interface_t *airpe = NULL; struct SkypeDelegate *del; @@ -89,35 +116,39 @@ goto done; } RunCurrentEventLoop(0.1); -/* + if ( !IsSkypeRunning() ) { ADEBUG("Sorry, not running\n"); goto done; } RunCurrentEventLoop(0.1); -*/ - airpe->running = 1; + airpe->running = 1; del = &airpe->skype_window->delegate; del->clientApplicationName=CFSTR("airpe"); del->SkypeNotificationReceived=IncomingMessage; del->SkypeAttachResponse=AttachResponse; + +ADEBUG("\n"); SetSkypeDelegate(del); RunCurrentEventLoop(0.1); ConnectToSkype(); RunCurrentEventLoop(0.1); +ADEBUG("\n"); while ( airpe->running && attached !=1 ) { -// ADEBUG("Sorry, not attached\n"); + ADEBUG("Sorry, not yet attached\n"); RunCurrentEventLoop(0.01); } +ADEBUG("\n"); if ( !attached && airpe->running ) { - ADEBUG("Sorry, not attached\n"); + ADEBUG("Sorry, not attached. exiting\n"); goto done; } +ADEBUG("\n"); if ( airpe_on_connect_messages( airpe, 6 ) != SWITCH_STATUS_SUCCESS ) { switch_log_printf( SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe client %s. Failed to send handshake messages\n", @@ -126,9 +157,11 @@ } +ADEBUG("UUUUUUUUUUUUUUUUUU\n"); while ( airpe->running ) { RunCurrentEventLoop(0.01); } +ADEBUG("AAAAAAAAAAAAAAAaaa\n"); DisconnectFromSkype(); RemoveSkypeDelegate(); Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c ============================================================================== --- freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c (original) +++ freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c Wed Jan 28 18:48:53 2009 @@ -47,7 +47,7 @@ Window skype_win; }; - +static switch_memory_pool_t *tech_pool; static XErrorHandler old_handler = 0; @@ -72,6 +72,11 @@ return (xerror != BadValue) && (xerror != BadWindow); } +void airpe_tech_set_pool(switch_memory_pool_t *pool) { + if ( !tech_pool ) + tech_pool = pool; +} + switch_status_t airpe_skype_watchdog_reset(skype_window_handler_t *window) { window->watchdog = 0; return SWITCH_STATUS_SUCCESS; Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.c ============================================================================== --- freeswitch/branches/ctrix/mod_airpe/mod_airpe.c (original) +++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.c Wed Jan 28 18:48:53 2009 @@ -200,6 +200,7 @@ airpe_audio_sockets_create(airpe); switch_threadattr_create(&attr_skype, airpe_module_pool); + switch_threadattr_detach_set(&attr_skype, 0); switch_threadattr_stacksize_set(attr_skype, SWITCH_THREAD_STACKSIZE); return switch_thread_create(&airpe->airpe_thread_skype, @@ -244,7 +245,7 @@ /* I prefer not to expose airpe_endpoint_interface out of this file. */ return switch_core_session_request(airpe_endpoint_interface, pool); } - + /***************************************************************************** CHANNEL STATE HANDLERS @@ -652,6 +653,7 @@ pool = airpe_module_pool; if (!(xml = switch_xml_open_cfg("airpe.conf", &cfg, NULL))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "airpe.conf not found\n"); return SWITCH_STATUS_TERM; } @@ -873,13 +875,19 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_airpe_load) { airpe_module_pool = pool; + switch_status_t ret; memset(&globals, 0, sizeof(globals)); switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, pool); switch_core_hash_init(&globals.interfaces_hash, pool); - load_config(0); + airpe_tech_set_pool(pool); + + if ( (ret=load_config(0))!=SWITCH_STATUS_SUCCESS ) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error loading configuration!\n"); + return ret; + } *module_interface = switch_loadable_module_create_module_interface(pool, modname); Modified: freeswitch/branches/ctrix/mod_airpe/mod_airpe.h ============================================================================== --- freeswitch/branches/ctrix/mod_airpe/mod_airpe.h (original) +++ freeswitch/branches/ctrix/mod_airpe/mod_airpe.h Wed Jan 28 18:48:53 2009 @@ -225,6 +225,7 @@ switch_status_t airpe_on_connect_messages( airpe_interface_t *airpe, int protocol ); /* INTERFACE - PLATFORM DEPENDANT FUNCTIONS */ +void airpe_tech_set_pool(switch_memory_pool_t *pool); switch_status_t airpe_skype_watchdog_reset(skype_window_handler_t *window); switch_status_t airpe_skype_watchdog_increment(skype_window_handler_t *window); skype_window_handler_t *skype_window_alloc( switch_memory_pool_t *pool); From mikej at freeswitch.org Wed Jan 28 20:00:34 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 22:00:34 -0600 Subject: [Freeswitch-svn] [commit] r11548 - in freeswitch/trunk/libs/spandsp/src: . msvc spandsp Message-ID: Author: mikej Date: Wed Jan 28 22:00:33 2009 New Revision: 11548 Log: update to snapshot spandsp-20090129 Modified: freeswitch/trunk/libs/spandsp/src/adsi.c freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c freeswitch/trunk/libs/spandsp/src/dds_int.c freeswitch/trunk/libs/spandsp/src/floating_fudge.h freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj freeswitch/trunk/libs/spandsp/src/msvc/spandsp.def freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.head freeswitch/trunk/libs/spandsp/src/queue.c freeswitch/trunk/libs/spandsp/src/spandsp/dds.h freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h freeswitch/trunk/libs/spandsp/src/spandsp/version.h freeswitch/trunk/libs/spandsp/src/t30.c freeswitch/trunk/libs/spandsp/src/t31.c freeswitch/trunk/libs/spandsp/src/t38_terminal.c freeswitch/trunk/libs/spandsp/src/time_scale.c freeswitch/trunk/libs/spandsp/src/v17rx.c freeswitch/trunk/libs/spandsp/src/v27ter_rx.c freeswitch/trunk/libs/spandsp/src/v29rx.c Modified: freeswitch/trunk/libs/spandsp/src/adsi.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/adsi.c (original) +++ freeswitch/trunk/libs/spandsp/src/adsi.c Wed Jan 28 22:00:33 2009 @@ -23,7 +23,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: adsi.c,v 1.67 2009/01/28 03:41:26 steveu Exp $ + * $Id: adsi.c,v 1.68 2009/01/29 01:41:05 steveu Exp $ */ /*! \file */ @@ -1045,7 +1045,7 @@ if (field_type != CLIP_DTMF_HASH_UNSPECIFIED) msg[len++] = field_type; memcpy(msg + len, field_body, field_len); - msg[len + field_len] = x; + msg[len + field_len] = (uint8_t) x; len += (field_len + 1); } break; Modified: freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c (original) +++ freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c Wed Jan 28 22:00:33 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: bell_r2_mf.c,v 1.33 2009/01/28 03:41:26 steveu Exp $ + * $Id: bell_r2_mf.c,v 1.34 2009/01/29 01:41:05 steveu Exp $ */ /*! \file */ @@ -628,7 +628,7 @@ if (!initialised) { for (i = 0; i < 6; i++) - make_goertzel_descriptor(&bell_mf_detect_desc[i], bell_mf_frequencies[i], BELL_MF_SAMPLES_PER_BLOCK); + make_goertzel_descriptor(&bell_mf_detect_desc[i], (float) bell_mf_frequencies[i], BELL_MF_SAMPLES_PER_BLOCK); initialised = TRUE; } s->digits_callback = callback; @@ -805,8 +805,8 @@ { for (i = 0; i < 6; i++) { - make_goertzel_descriptor(&mf_fwd_detect_desc[i], r2_mf_fwd_frequencies[i], R2_MF_SAMPLES_PER_BLOCK); - make_goertzel_descriptor(&mf_back_detect_desc[i], r2_mf_back_frequencies[i], R2_MF_SAMPLES_PER_BLOCK); + make_goertzel_descriptor(&mf_fwd_detect_desc[i], (float) r2_mf_fwd_frequencies[i], R2_MF_SAMPLES_PER_BLOCK); + make_goertzel_descriptor(&mf_back_detect_desc[i], (float) r2_mf_back_frequencies[i], R2_MF_SAMPLES_PER_BLOCK); } initialised = TRUE; } Modified: freeswitch/trunk/libs/spandsp/src/dds_int.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/dds_int.c (original) +++ freeswitch/trunk/libs/spandsp/src/dds_int.c Wed Jan 28 22:00:33 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: dds_int.c,v 1.13 2009/01/28 03:41:26 steveu Exp $ + * $Id: dds_int.c,v 1.14 2009/01/29 01:41:05 steveu Exp $ */ /*! \file */ @@ -202,15 +202,15 @@ } /*- End of function --------------------------------------------------------*/ -int dds_scaling_dbm0(float level) +int16_t dds_scaling_dbm0(float level) { - return (int) (powf(10.0f, (level - DBM0_MAX_SINE_POWER)/20.0f)*32767.0f); + return (int16_t) (powf(10.0f, (level - DBM0_MAX_SINE_POWER)/20.0f)*32767.0f); } /*- End of function --------------------------------------------------------*/ -int dds_scaling_dbov(float level) +int16_t dds_scaling_dbov(float level) { - return (int) (powf(10.0f, (level - DBOV_MAX_SINE_POWER)/20.0f)*32767.0f); + return (int16_t) (powf(10.0f, (level - DBOV_MAX_SINE_POWER)/20.0f)*32767.0f); } /*- End of function --------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/floating_fudge.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/floating_fudge.h (original) +++ freeswitch/trunk/libs/spandsp/src/floating_fudge.h Wed Jan 28 22:00:33 2009 @@ -25,7 +25,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: floating_fudge.h,v 1.5 2008/08/03 03:44:00 steveu Exp $ + * $Id: floating_fudge.h,v 1.6 2009/01/29 01:41:05 steveu Exp $ */ #if !defined(_FLOATING_FUDGE_H_) @@ -354,6 +354,23 @@ return i; } + __inline float rintf(float flt) + { + _asm + { fld flt + frndint + } + } + + __inline double rint(double dbl) + { + __asm + { + fld dbl + frndint + } + } + __inline long int lfastrint(double x) { long int i; Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj ============================================================================== --- freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj (original) +++ freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj Wed Jan 28 22:00:33 2009 @@ -42,7 +42,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="src; src\spandsp; src\msvc;..\libtiff\include" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_MATH_H;HAVE_TGMATH_H" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" @@ -51,6 +51,7 @@ Detect64BitPortabilityProblems="true" DebugInformationFormat="4" CompileAs="1" + DisableSpecificWarnings="4127" /> len; /*endif*/ - if (real_len < len + sizeof(uint16_t)) + if (real_len < len + (int) sizeof(uint16_t)) return -1; /*endif*/ - real_len = len + sizeof(uint16_t); + real_len = len + (int) sizeof(uint16_t); to_end = s->len - iptr; lenx = (uint16_t) len; Modified: freeswitch/trunk/libs/spandsp/src/spandsp/dds.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/dds.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/dds.h Wed Jan 28 22:00:33 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: dds.h,v 1.21 2008/09/11 15:13:42 steveu Exp $ + * $Id: dds.h,v 1.22 2009/01/29 01:41:06 steveu Exp $ */ /*! \file */ @@ -51,13 +51,13 @@ \param level The desired signal level, in dBm0. \return The scaling factor. */ -int dds_scaling_dbm0(float level); +int16_t dds_scaling_dbm0(float level); /*! \brief Find the scaling factor needed to achieve a specified level in dBmov. \param level The desired signal level, in dBmov. \return The scaling factor. */ -int dds_scaling_dbov(float level); +int16_t dds_scaling_dbov(float level); /*! \brief Find the amplitude for a particular phase. \param phase The desired phase 32 bit phase. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h Wed Jan 28 22:00:33 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_core.h,v 1.33 2009/01/23 16:07:14 steveu Exp $ + * $Id: t38_core.h,v 1.34 2009/01/29 01:41:06 steveu Exp $ */ /*! \file */ @@ -333,7 +333,7 @@ t38_rx_data_handler_t *rx_data_handler, t38_rx_missing_handler_t *rx_missing_handler, void *rx_user_data, - t38_tx_packet_handler_t tx_packet_handler, + t38_tx_packet_handler_t *tx_packet_handler, void *tx_packet_user_data); #if defined(__cplusplus) Modified: freeswitch/trunk/libs/spandsp/src/spandsp/version.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/version.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/version.h Wed Jan 28 22:00:33 2009 @@ -30,8 +30,8 @@ /* The date and time of the version are in UTC form. */ -#define SPANDSP_RELEASE_DATE 20090128 -#define SPANDSP_RELEASE_TIME 034417 +#define SPANDSP_RELEASE_DATE 20090129 +#define SPANDSP_RELEASE_TIME 014346 #endif /*- End of file ------------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/t30.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t30.c (original) +++ freeswitch/trunk/libs/spandsp/src/t30.c Wed Jan 28 22:00:33 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t30.c,v 1.278 2009/01/28 03:41:27 steveu Exp $ + * $Id: t30.c,v 1.279 2009/01/29 01:41:06 steveu Exp $ */ /*! \file */ @@ -628,7 +628,7 @@ s->ecm_at_page_end = TRUE; return i; } - s->ecm_len[i] = (int16_t) 4 + len; + s->ecm_len[i] = (int16_t) (4 + len); } /* We filled the entire buffer */ s->ecm_frames = 256; Modified: freeswitch/trunk/libs/spandsp/src/t31.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t31.c (original) +++ freeswitch/trunk/libs/spandsp/src/t31.c Wed Jan 28 22:00:33 2009 @@ -25,7 +25,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t31.c,v 1.136 2009/01/28 03:41:27 steveu Exp $ + * $Id: t31.c,v 1.137 2009/01/29 01:41:06 steveu Exp $ */ /*! \file */ @@ -373,7 +373,7 @@ t31_state_t *s; t31_t38_front_end_state_t *fe; #if defined(_MSC_VER) - uint8_t *buf2 = (uint8_t *) alloca(len); + uint8_t *buf2 = (uint8_t *) _alloca(len); #else uint8_t buf2[len]; #endif @@ -1444,7 +1444,7 @@ s->hdlc_tx.len = 0; s->dled = FALSE; fsk_rx_init(&(s->audio.modems.v21_rx), &preset_fsk_specs[FSK_V21CH2], TRUE, (put_bit_func_t) hdlc_rx_put_bit, &(s->audio.modems.hdlc_rx)); - fsk_rx_signal_cutoff(&(s->audio.modems.v21_rx), -39.09); + fsk_rx_signal_cutoff(&(s->audio.modems.v21_rx), -39.09f); s->at_state.transmit = TRUE; } /*- End of function --------------------------------------------------------*/ @@ -2233,7 +2233,7 @@ hdlc_rx_init(&s->hdlc_rx, FALSE, TRUE, HDLC_FRAMING_OK_THRESHOLD, hdlc_accept_frame, user_data); hdlc_tx_init(&s->hdlc_tx, FALSE, 2, FALSE, hdlc_tx_underflow, user_data); fsk_rx_init(&s->v21_rx, &preset_fsk_specs[FSK_V21CH2], TRUE, (put_bit_func_t) hdlc_rx_put_bit, &s->hdlc_rx); - fsk_rx_signal_cutoff(&s->v21_rx, -39.09); + fsk_rx_signal_cutoff(&s->v21_rx, -39.09f); fsk_tx_init(&s->v21_tx, &preset_fsk_specs[FSK_V21CH2], (get_bit_func_t) hdlc_tx_get_bit, &s->hdlc_tx); v17_rx_init(&s->v17_rx, 14400, non_ecm_put_bit, user_data); v17_tx_init(&s->v17_tx, 14400, s->use_tep, non_ecm_get_bit, user_data); Modified: freeswitch/trunk/libs/spandsp/src/t38_terminal.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t38_terminal.c (original) +++ freeswitch/trunk/libs/spandsp/src/t38_terminal.c Wed Jan 28 22:00:33 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_terminal.c,v 1.119 2009/01/28 03:41:27 steveu Exp $ + * $Id: t38_terminal.c,v 1.120 2009/01/29 01:41:06 steveu Exp $ */ /*! \file */ @@ -278,7 +278,7 @@ t38_terminal_state_t *s; t38_terminal_front_end_state_t *fe; #if defined(_MSC_VER) - uint8_t *buf2 = (uint8_t *) alloca(len); + uint8_t *buf2 = (uint8_t *) _alloca(len); #else uint8_t buf2[len]; #endif Modified: freeswitch/trunk/libs/spandsp/src/time_scale.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/time_scale.c (original) +++ freeswitch/trunk/libs/spandsp/src/time_scale.c Wed Jan 28 22:00:33 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: time_scale.c,v 1.27 2009/01/28 03:41:27 steveu Exp $ + * $Id: time_scale.c,v 1.28 2009/01/29 01:41:06 steveu Exp $ */ /*! \file */ @@ -274,7 +274,7 @@ int time_scale_max_output_len(time_scale_state_t *s, int input_len) { - return input_len*s->playout_rate + s->min_pitch + 1; + return (int) (input_len*s->playout_rate + s->min_pitch + 1); } /*- End of function --------------------------------------------------------*/ /*- End of file ------------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/v17rx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v17rx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v17rx.c Wed Jan 28 22:00:33 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v17rx.c,v 1.129 2009/01/28 03:41:27 steveu Exp $ + * $Id: v17rx.c,v 1.130 2009/01/29 01:41:06 steveu Exp $ */ /*! \file */ @@ -984,7 +984,7 @@ We need to measure the power with the DC blocked, but not using a slow to respond DC blocker. Use the most elementary HPF. */ x = amp[i] >> 1; - diff = x - s->last_sample; + diff = (int32_t) x - s->last_sample; power = power_meter_update(&(s->power), diff); #if defined(IAXMODEM_STUFF) /* Quick power drop fudge */ Modified: freeswitch/trunk/libs/spandsp/src/v27ter_rx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v27ter_rx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v27ter_rx.c Wed Jan 28 22:00:33 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v27ter_rx.c,v 1.113 2009/01/28 03:41:27 steveu Exp $ + * $Id: v27ter_rx.c,v 1.114 2009/01/29 01:41:06 steveu Exp $ */ /*! \file */ @@ -772,7 +772,7 @@ We need to measure the power with the DC blocked, but not using a slow to respond DC blocker. Use the most elementary HPF. */ x = amp[i] >> 1; - diff = x - s->last_sample; + diff = (int32_t) x - s->last_sample; power = power_meter_update(&(s->power), diff); #if defined(IAXMODEM_STUFF) /* Quick power drop fudge */ Modified: freeswitch/trunk/libs/spandsp/src/v29rx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v29rx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v29rx.c Wed Jan 28 22:00:33 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v29rx.c,v 1.150 2009/01/28 03:41:27 steveu Exp $ + * $Id: v29rx.c,v 1.151 2009/01/29 01:41:06 steveu Exp $ */ /*! \file */ @@ -858,7 +858,7 @@ We need to measure the power with the DC blocked, but not using a slow to respond DC blocker. Use the most elementary HPF. */ x = amp[i] >> 1; - diff = x - s->last_sample; + diff = (int32_t) x - s->last_sample; power = power_meter_update(&(s->power), diff); #if defined(IAXMODEM_STUFF) /* Quick power drop fudge */ From mikej at freeswitch.org Wed Jan 28 20:46:02 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 22:46:02 -0600 Subject: [Freeswitch-svn] [commit] r11549 - in freeswitch/trunk/libs/spandsp: . src Message-ID: Author: mikej Date: Wed Jan 28 22:46:02 2009 New Revision: 11549 Log: cleanup to match snapshot Removed: freeswitch/trunk/libs/spandsp/libspandsp.vcproj freeswitch/trunk/libs/spandsp/src/g722_decode.c freeswitch/trunk/libs/spandsp/src/g722_encode.c Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.sln freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.sln ============================================================================== --- freeswitch/trunk/libs/spandsp/src/libspandsp.sln (original) +++ freeswitch/trunk/libs/spandsp/src/libspandsp.sln Wed Jan 28 22:46:02 2009 @@ -1,29 +1,29 @@ -? -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspandsp", "libspandsp.vcproj", "{CF70F278-3364-4395-A2E1-23501C9B8AD2}" - ProjectSection(ProjectDependencies) = postProject - {1CED5987-A529-46DC-B30F-870D85FF9C94} = {1CED5987-A529-46DC-B30F-870D85FF9C94} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "at_dictionary_gen", "src\msvc\at_dictionary_gen.vcproj", "{1CED5987-A529-46DC-B30F-870D85FF9C94}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.ActiveCfg = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.Build.0 = Debug|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.ActiveCfg = Release|Win32 - {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.Build.0 = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.ActiveCfg = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32 - {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal +? +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspandsp", "libspandsp.vcproj", "{CF70F278-3364-4395-A2E1-23501C9B8AD2}" + ProjectSection(ProjectDependencies) = postProject + {1CED5987-A529-46DC-B30F-870D85FF9C94} = {1CED5987-A529-46DC-B30F-870D85FF9C94} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "at_dictionary_gen", "src\msvc\at_dictionary_gen.vcproj", "{1CED5987-A529-46DC-B30F-870D85FF9C94}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.ActiveCfg = Debug|Win32 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.Build.0 = Debug|Win32 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.ActiveCfg = Release|Win32 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.Build.0 = Release|Win32 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.ActiveCfg = Debug|Win32 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj ============================================================================== --- freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj (original) +++ freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj Wed Jan 28 22:46:02 2009 @@ -1,185 +1,183 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From mikej at freeswitch.org Wed Jan 28 20:54:08 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 22:54:08 -0600 Subject: [Freeswitch-svn] [commit] r11550 - freeswitch/trunk/libs/spandsp/src/msvc Message-ID: Author: mikej Date: Wed Jan 28 22:54:08 2009 New Revision: 11550 Log: cleanup project files Modified: freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.foot freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.head Modified: freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.foot ============================================================================== --- freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.foot (original) +++ freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.foot Wed Jan 28 22:54:08 2009 @@ -1,15 +1,15 @@ - - - - - - - - - + + + + + + + + + Modified: freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.head ============================================================================== --- freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.head (original) +++ freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.head Wed Jan 28 22:54:08 2009 @@ -1,182 +1,180 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From mikej at freeswitch.org Wed Jan 28 20:55:54 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 22:55:54 -0600 Subject: [Freeswitch-svn] [commit] r11551 - in freeswitch/trunk/libs/spandsp/src: . msvc Message-ID: Author: mikej Date: Wed Jan 28 22:55:54 2009 New Revision: 11551 Log: add src/msvc/config.h Added: freeswitch/trunk/libs/spandsp/src/msvc/config.h Modified: freeswitch/trunk/libs/spandsp/src/Makefile.am Modified: freeswitch/trunk/libs/spandsp/src/Makefile.am ============================================================================== --- freeswitch/trunk/libs/spandsp/src/Makefile.am (original) +++ freeswitch/trunk/libs/spandsp/src/Makefile.am Wed Jan 28 22:55:54 2009 @@ -38,6 +38,7 @@ msvc/msvcproj.foot \ msvc/vc8proj.head \ msvc/vc8proj.foot \ + msvc/config.h \ spandsp/private/README INCLUDES = -I$(top_builddir) Added: freeswitch/trunk/libs/spandsp/src/msvc/config.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/msvc/config.h Wed Jan 28 22:55:54 2009 @@ -0,0 +1,42 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * inttypes.h - a fudge for MSVC, which lacks this header + * + * Written by Steve Underwood + * + * Copyright (C) 2006 Michael Jerris + * + * + * This file is released in the public domain. + * + */ + +#if !defined(_SPANDSP_CONFIG_H_) +#define _SPANDSP_CONFIG_H_ + +#define HAVE_SINF +#define HAVE_COSF +#define HAVE_TANF +#define HAVE_ASINF +#define HAVE_ACOSF +#define HAVE_ATANF +#define HAVE_ATAN2F +#define HAVE_CEILF +#define HAVE_FLOORF +#define HAVE_POWF +#define HAVE_EXPF +#define HAVE_LOGF +#define HAVE_LOG10F +#define HAVE_MATH_H +#define HAVE_TGMATH_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif From mikej at freeswitch.org Wed Jan 28 21:03:39 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 23:03:39 -0600 Subject: [Freeswitch-svn] [commit] r11552 - freeswitch/trunk/libs/spandsp/src Message-ID: Author: mikej Date: Wed Jan 28 23:03:39 2009 New Revision: 11552 Log: svn:ignore Modified: freeswitch/trunk/libs/spandsp/src/ (props changed) From mikej at freeswitch.org Wed Jan 28 21:17:08 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 23:17:08 -0600 Subject: [Freeswitch-svn] [commit] r11553 - freeswitch/trunk/libs/spandsp/src Message-ID: Author: mikej Date: Wed Jan 28 23:17:08 2009 New Revision: 11553 Log: cleanup Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj ============================================================================== --- freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj (original) +++ freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj Wed Jan 28 23:17:08 2009 @@ -64,7 +64,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From mikej at freeswitch.org Wed Jan 28 21:17:27 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Wed, 28 Jan 2009 23:17:27 -0600 Subject: [Freeswitch-svn] [commit] r11554 - freeswitch/trunk/libs/spandsp/src Message-ID: Author: mikej Date: Wed Jan 28 23:17:27 2009 New Revision: 11554 Log: fix project file generation Modified: freeswitch/trunk/libs/spandsp/src/Makefile.am Modified: freeswitch/trunk/libs/spandsp/src/Makefile.am ============================================================================== --- freeswitch/trunk/libs/spandsp/src/Makefile.am (original) +++ freeswitch/trunk/libs/spandsp/src/Makefile.am Wed Jan 28 23:17:27 2009 @@ -395,7 +395,7 @@ DSP = libspandsp.dsp VCPROJ = libspandsp.vcproj -WIN32SOURCES = $(libspandsp_la_SOURCES) msvc/gettimeofday.c +WIN32SOURCES = $(libspandsp_la_SOURCES) .\\msvc\\gettimeofday.c WIN32HEADERS = $(nobase_include_HEADERS) spandsp.h DSPOUT = | awk '{printf("%s\r\n", $$0)}' >> $(DSP) From anthm at freeswitch.org Thu Jan 29 05:38:58 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Thu, 29 Jan 2009 07:38:58 -0600 Subject: [Freeswitch-svn] [commit] r11555 - freeswitch/trunk/src/mod/applications/mod_fifo Message-ID: Author: anthm Date: Thu Jan 29 07:38:58 2009 New Revision: 11555 Log: MODAPP-206 Modified: freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c Modified: freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c (original) +++ freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c Thu Jan 29 07:38:58 2009 @@ -208,7 +208,11 @@ args.input_callback = moh_on_dtmf; args.buf = buf; args.buflen = sizeof(buf); - switch_ivr_play_file(session, NULL, cd->list[cd->index], &args); + + if (switch_ivr_play_file(session, NULL, cd->list[cd->index], &args) != SWITCH_STATUS_SUCCESS) { + return SWITCH_STATUS_FALSE; + } + if (caller_exit_key && *buf == *caller_exit_key) { cd->abort = 1; return SWITCH_STATUS_FALSE; From mikej at freeswitch.org Thu Jan 29 09:07:18 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Thu, 29 Jan 2009 11:07:18 -0600 Subject: [Freeswitch-svn] [commit] r11556 - in freeswitch/trunk/libs/spandsp/src: . msvc Message-ID: Author: mikej Date: Thu Jan 29 11:07:18 2009 New Revision: 11556 Log: build integration Added: freeswitch/trunk/libs/spandsp/src/libtiff.vcproj Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.sln freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.head Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.sln ============================================================================== --- freeswitch/trunk/libs/spandsp/src/libspandsp.sln (original) +++ freeswitch/trunk/libs/spandsp/src/libspandsp.sln Thu Jan 29 11:07:18 2009 @@ -4,10 +4,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspandsp", "libspandsp.vcproj", "{CF70F278-3364-4395-A2E1-23501C9B8AD2}" ProjectSection(ProjectDependencies) = postProject {1CED5987-A529-46DC-B30F-870D85FF9C94} = {1CED5987-A529-46DC-B30F-870D85FF9C94} + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "at_dictionary_gen", "src\msvc\at_dictionary_gen.vcproj", "{1CED5987-A529-46DC-B30F-870D85FF9C94}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtiff", "libtiff.vcproj", "{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -22,6 +25,10 @@ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.ActiveCfg = Debug|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.Build.0 = Debug|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.ActiveCfg = Release|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj ============================================================================== --- freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj (original) +++ freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj Thu Jan 29 11:07:18 2009 @@ -41,7 +41,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Modified: freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.head ============================================================================== --- freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.head (original) +++ freeswitch/trunk/libs/spandsp/src/msvc/vc8proj.head Thu Jan 29 11:07:18 2009 @@ -41,7 +41,7 @@ Author: anthm Date: Thu Jan 29 15:52:20 2009 New Revision: 11557 Log: add all modifier to break Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c (original) +++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c Thu Jan 29 15:52:20 2009 @@ -1954,11 +1954,7 @@ } channel = switch_core_session_get_channel(psession); - if (switch_channel_test_flag(channel, CF_BROADCAST)) { - switch_channel_stop_broadcast(channel); - } else { - switch_channel_set_flag(channel, CF_BREAK); - } + switch_core_session_rwunlock(psession); return SWITCH_STATUS_SUCCESS; Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c (original) +++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c Thu Jan 29 15:52:20 2009 @@ -385,7 +385,19 @@ SWITCH_STANDARD_APP(break_function) { - switch_channel_set_flag(switch_core_session_get_channel(session), CF_BREAK); + switch_channel_t *channel; + + channel = switch_core_session_get_channel(session); + + if (data && strcasecmp(data, "all")) { + switch_core_session_flush_private_events(session); + } + + if (switch_channel_test_flag(channel, CF_BROADCAST)) { + switch_channel_stop_broadcast(channel); + } else { + switch_channel_set_flag(channel, CF_BREAK); + } } SWITCH_STANDARD_APP(queue_dtmf_function) From anthm at freeswitch.org Thu Jan 29 13:52:38 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Thu, 29 Jan 2009 15:52:38 -0600 Subject: [Freeswitch-svn] [commit] r11558 - freeswitch/trunk/src/mod/applications/mod_commands Message-ID: Author: anthm Date: Thu Jan 29 15:52:38 2009 New Revision: 11558 Log: add all modifier to break Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c (original) +++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c Thu Jan 29 15:52:38 2009 @@ -1954,7 +1954,11 @@ } channel = switch_core_session_get_channel(psession); - + if (switch_channel_test_flag(channel, CF_BROADCAST)) { + switch_channel_stop_broadcast(channel); + } else { + switch_channel_set_flag(channel, CF_BREAK); + } switch_core_session_rwunlock(psession); return SWITCH_STATUS_SUCCESS; From mcollins at freeswitch.org Thu Jan 29 15:39:47 2009 From: mcollins at freeswitch.org (FreeSWITCH SVN) Date: Thu, 29 Jan 2009 17:39:47 -0600 Subject: [Freeswitch-svn] [commit] r11559 - freeswitch/trunk/src/mod/languages/mod_lua Message-ID: Author: mcollins Date: Thu Jan 29 17:39:47 2009 New Revision: 11559 Log: Create empty argv table when no args are passed to a Lua script Modified: freeswitch/trunk/src/mod/languages/mod_lua/mod_lua.cpp Modified: freeswitch/trunk/src/mod/languages/mod_lua/mod_lua.cpp ============================================================================== --- freeswitch/trunk/src/mod/languages/mod_lua/mod_lua.cpp (original) +++ freeswitch/trunk/src/mod/languages/mod_lua/mod_lua.cpp Thu Jan 29 17:39:47 2009 @@ -156,7 +156,14 @@ error = luaL_loadbuffer(L, code, strlen(code), "line") || docall(L, 0, 1); switch_safe_free(code); } + } else { + // Force empty argv table + char *code = NULL; + code = switch_mprintf("argv = {};"); + error = luaL_loadbuffer(L, code, strlen(code), "line") || docall(L, 0, 1); + switch_safe_free(code); } + if (!error) { char *file = input_code, *fdup = NULL; From anthm at freeswitch.org Thu Jan 29 17:21:05 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Thu, 29 Jan 2009 19:21:05 -0600 Subject: [Freeswitch-svn] [commit] r11560 - freeswitch/trunk/src/mod/languages/mod_python Message-ID: Author: anthm Date: Thu Jan 29 19:21:05 2009 New Revision: 11560 Log: use global symbols in mod_python Modified: freeswitch/trunk/src/mod/languages/mod_python/mod_python.c Modified: freeswitch/trunk/src/mod/languages/mod_python/mod_python.c ============================================================================== --- freeswitch/trunk/src/mod/languages/mod_python/mod_python.c (original) +++ freeswitch/trunk/src/mod/languages/mod_python/mod_python.c Thu Jan 29 19:21:05 2009 @@ -52,7 +52,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_python_load); SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_python_shutdown); -SWITCH_MODULE_DEFINITION(mod_python, mod_python_load, mod_python_shutdown, NULL); +SWITCH_MODULE_DEFINITION_EX(mod_python, mod_python_load, mod_python_shutdown, NULL, SMODF_GLOBAL_SYMBOLS); static struct { switch_memory_pool_t *pool; From anthm at freeswitch.org Fri Jan 30 05:44:08 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 07:44:08 -0600 Subject: [Freeswitch-svn] [commit] r11561 - freeswitch/trunk/src/mod/applications/mod_fifo Message-ID: Author: anthm Date: Fri Jan 30 07:44:07 2009 New Revision: 11561 Log: MODAPP-207 Modified: freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c Modified: freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c (original) +++ freeswitch/trunk/src/mod/applications/mod_fifo/mod_fifo.c Fri Jan 30 07:44:07 2009 @@ -515,8 +515,9 @@ sql = switch_mprintf("select uuid, fifo_name, originate_string, simo_count, use_count, timeout, lag, " "next_avail, expires, static, outbound_call_count, outbound_fail_count, hostname " - "from fifo_outbound where (use_count < simo_count) and (next_avail = 0 or next_avail <= %ld) order by outbound_call_count", - (long) switch_epoch_time_now(NULL)); + "from fifo_outbound where (fifo_name = '%s') and (use_count < simo_count) and (next_avail = 0 or next_avail <= %ld) " + "order by outbound_call_count", node->name, (long) switch_epoch_time_now(NULL)); + switch_assert(sql); fifo_execute_sql_callback(globals.sql_mutex, sql, place_call_callback, &need); free(sql); From brian at freeswitch.org Fri Jan 30 08:46:38 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 10:46:38 -0600 Subject: [Freeswitch-svn] [commit] r11562 - in freeswitch/trunk: conf/sip_profiles src/mod/endpoints/mod_sofia Message-ID: Author: brian Date: Fri Jan 30 10:46:37 2009 New Revision: 11562 Log: MODENDP-179 - Support for SLA, works with Polycom and Snom(Sylantro mode). Thank you Matthew Kaufman. Might still need more work. Added: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c Modified: freeswitch/trunk/conf/sip_profiles/internal.xml freeswitch/trunk/src/mod/endpoints/mod_sofia/Makefile.am freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c Modified: freeswitch/trunk/conf/sip_profiles/internal.xml ============================================================================== --- freeswitch/trunk/conf/sip_profiles/internal.xml (original) +++ freeswitch/trunk/conf/sip_profiles/internal.xml Fri Jan 30 10:46:37 2009 @@ -62,7 +62,7 @@ - + Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/Makefile.am ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/Makefile.am (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/Makefile.am Fri Jan 30 10:46:37 2009 @@ -17,7 +17,7 @@ SOFIALA=$(SOFIAUA_DIR)/libsofia-sip-ua.la mod_LTLIBRARIES = mod_sofia.la -mod_sofia_la_SOURCES = mod_sofia.c sofia.c sofia_glue.c sofia_presence.c sofia_reg.c mod_sofia.h +mod_sofia_la_SOURCES = mod_sofia.c sofia.c sofia_glue.c sofia_presence.c sofia_reg.c sofia_sla.c mod_sofia.h mod_sofia_la_CFLAGS = $(AM_CFLAGS) mod_sofia_la_CFLAGS += -I. -I$(SOFIAUA_DIR)/bnf -I$(SOFIAUA_DIR)/features mod_sofia_la_CFLAGS += -I$(SOFIAUA_DIR)/http -I$(SOFIAUA_DIR)/ipt Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h Fri Jan 30 10:46:37 2009 @@ -375,6 +375,7 @@ char *tls_bindurl; char *tcp_contact; char *tls_contact; + char *sla_contact; char *sipdomain; char *timer_name; char *hold_music; @@ -439,6 +440,7 @@ sofia_media_options_t media_options; uint32_t force_subscription_expires; switch_rtp_bug_flag_t auto_rtp_bugs; + char manage_shared_appearance; /* pflags was all full up - MTK */ }; struct private_object { @@ -474,7 +476,6 @@ char *from_address; char *to_address; char *callid; - char *far_end_contact; char *contact_url; char *from_str; char *rpid; @@ -771,3 +772,14 @@ switch_status_t sofia_glue_tech_set_codec(private_object_t *tech_pvt, int force); void sofia_wait_for_reply(struct private_object *tech_pvt, nua_event_t event, uint32_t timeout); void sofia_glue_set_image_sdp(private_object_t *tech_pvt, switch_t38_options_t *t38_options); + +/* + * SLA (shared line appearance) entrypoints + */ + +void sofia_sla_handle_register(nua_t *nua, sofia_profile_t *profile, sip_t const *sip); +void sofia_sla_handle_sip_i_publish(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]); +void sofia_sla_handle_sip_i_subscribe(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]); +void sofia_sla_handle_sip_r_subscribe(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]); +void sofia_sla_handle_sip_i_notify(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]); + Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Fri Jan 30 10:46:37 2009 @@ -94,8 +94,33 @@ goto error; } + /* the following could be refactored back to the calling event handler here in sofia.c XXX MTK */ + /* potentially interesting note: for Linksys shared appearance, we'll probably have to set up to get bare notifies + * and pass them inward to the sla handler. we'll have to set NUTAG_APPL_METHOD("NOTIFY") when creating + * nua, and also pick them off special elsewhere here in sofia.c - MTK + * *and* for Linksys, I believe they use "sa" as their magic appearance agent name for those blind notifies, so + * we'll probably have to change to match + */ + if (profile->manage_shared_appearance) { + + if (!strncmp(sip->sip_request->rq_url->url_user, "sla-agent", sizeof("sla-agent"))) { + int sub_state; + tl_gets(tags, NUTAG_SUBSTATE_REF(sub_state), TAG_END()); + + sofia_sla_handle_sip_i_notify(nua, profile, nh, sip, tags); + + if (sub_state == nua_substate_terminated) { + nua_handle_bind(nh, NULL); + nua_handle_destroy(nh); + } + + return; + } + } + /* Automatically return a 200 OK for Event: keep-alive */ if (!strcasecmp(sip->sip_event->o_type, "keep-alive")) { + /* XXX MTK - is this right? in this case isn't sofia is already sending a 200 itself also? */ nua_respond(nh, SIP_200_OK, NUTAG_WITH_THIS(nua), TAG_END()); return; } @@ -305,6 +330,7 @@ switch_channel_t *channel = NULL; sofia_gateway_t *gateway = NULL; int locked = 0; + int check_destroy = 1; if (sofia_private && sofia_private != &mod_sofia_globals.destroy_private && sofia_private != &mod_sofia_globals.keep_private) { if ((gateway = sofia_private->gateway)) { @@ -476,8 +502,23 @@ switch (event) { case nua_i_subscribe: + case nua_r_notify: + check_destroy = 0; + break; + + case nua_i_notify: + + if (sip->sip_event && !strcmp(sip->sip_event->o_type, "dialog") && sip->sip_event->o_params && !strcmp(sip->sip_event->o_params[0], "sla")) { + check_destroy = 0; + } + break; default: + break; + } + + + if (check_destroy) { if (nh && ((sofia_private && sofia_private->destroy_nh) || !nua_handle_magic(nh))) { if (sofia_private) { nua_handle_bind(nh, NULL); @@ -485,9 +526,8 @@ nua_handle_destroy(nh); nh = NULL; } - break; } - + if (sofia_private && sofia_private->destroy_me) { if (nh) { nua_handle_bind(nh, NULL); @@ -719,9 +759,9 @@ TAG_IF(profile->pres_type, NUTAG_ALLOW("SUBSCRIBE")), TAG_IF(profile->pres_type, NUTAG_ENABLEMESSAGE(1)), TAG_IF(profile->pres_type, NUTAG_ALLOW_EVENTS("presence")), - TAG_IF(profile->pres_type, NUTAG_ALLOW_EVENTS("dialog")), + TAG_IF((profile->pres_type || profile->manage_shared_appearance), NUTAG_ALLOW_EVENTS("dialog")), TAG_IF(profile->pres_type, NUTAG_ALLOW_EVENTS("call-info")), - TAG_IF(profile->pres_type, NUTAG_ALLOW_EVENTS("sla")), + TAG_IF((profile->pres_type || profile->manage_shared_appearance), NUTAG_ALLOW_EVENTS("sla")), TAG_IF(profile->pres_type, NUTAG_ALLOW_EVENTS("include-session-description")), TAG_IF(profile->pres_type, NUTAG_ALLOW_EVENTS("presence.winfo")), TAG_IF(profile->pres_type, NUTAG_ALLOW_EVENTS("message-summary")), @@ -738,7 +778,6 @@ nua_set_params(node->nua, NUTAG_APPL_METHOD("OPTIONS"), - NUTAG_EARLY_MEDIA(1), NUTAG_AUTOANSWER(0), NUTAG_AUTOALERT(0), TAG_IF((profile->mflags & MFLAG_REGISTER), NUTAG_ALLOW("REGISTER")), @@ -1954,6 +1993,11 @@ } else if (switch_true(val)) { profile->pres_type = PRES_TYPE_FULL; } + } else if (!strcasecmp(var, "manage-shared-appearance")) { + if (switch_true(val)) { + profile->manage_shared_appearance = 1; + profile->sla_contact = switch_core_sprintf(profile->pool, "sip:sla-agent@%s", profile->sipip); + } } else if (!strcasecmp(var, "unregister-on-options-fail")) { if (switch_true(val)) { profile->pflags |= PFLAG_UNREG_OPTIONS_FAIL; @@ -4282,7 +4326,78 @@ } } + if (sip->sip_replaces) { + nua_handle_t *bnh; + if ((bnh = nua_handle_by_replaces(nua, sip->sip_replaces))) { + sofia_private_t *b_private = NULL; + if ((b_private = nua_handle_magic(bnh))) { + switch_core_session_t *b_session = NULL; + if ((b_session = switch_core_session_locate(b_private->uuid))) { + switch_channel_t *b_channel = switch_core_session_get_channel(b_session); + const char *uuid; + int one_leg = 1; + private_object_t *b_tech_pvt = NULL; + const char *app = switch_channel_get_variable(b_channel, SWITCH_CURRENT_APPLICATION_VARIABLE); + const char *data = switch_channel_get_variable(b_channel, SWITCH_CURRENT_APPLICATION_DATA_VARIABLE); + + if (app && data && !strcasecmp(app, "conference")) { + destination_number = switch_core_session_sprintf(b_session, "answer,conference:%s", data); + dialplan = "inline"; + } else { + if (switch_core_session_check_interface(b_session, sofia_endpoint_interface)) { + b_tech_pvt = switch_core_session_get_private(b_session); + } + + if ((uuid = switch_channel_get_variable(b_channel, SWITCH_SIGNAL_BOND_VARIABLE))) { + one_leg = 0; + } else { + uuid = switch_core_session_get_uuid(b_session); + } + + if (uuid) { + switch_core_session_t *c_session = NULL; + int do_conf = 0; + + uuid = switch_core_session_strdup(b_session, uuid); + + if ((c_session = switch_core_session_locate(uuid))) { + switch_channel_t *c_channel = switch_core_session_get_channel(c_session); + private_object_t *c_tech_pvt = NULL; + + if (switch_core_session_check_interface(c_session, sofia_endpoint_interface)) { + c_tech_pvt = switch_core_session_get_private(c_session); + } + + if (!one_leg && + (!b_tech_pvt || !switch_test_flag(b_tech_pvt, TFLAG_SIP_HOLD)) && + (!c_tech_pvt || !switch_test_flag(c_tech_pvt, TFLAG_SIP_HOLD))) { + char *ext = switch_core_session_sprintf(b_session, "conference:%s at sla+flags{mintwo}", uuid); + + switch_channel_set_flag(c_channel, CF_REDIRECT); + switch_ivr_session_transfer(b_session, ext, "inline", NULL); + switch_ivr_session_transfer(c_session, ext, "inline", NULL); + switch_channel_clear_flag(c_channel, CF_REDIRECT); + do_conf = 1; + } + switch_core_session_rwunlock(c_session); + } + + if (do_conf) { + destination_number = switch_core_session_sprintf(b_session, "answer,conference:%s at sla+flags{mintwo}", uuid); + } else { + destination_number = switch_core_session_sprintf(b_session, "answer,intercept:%s", uuid); + } + + dialplan = "inline"; + } + } + switch_core_session_rwunlock(b_session); + } + } + nua_handle_unref(bnh); + } + } check_decode(displayname, session); tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session), Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c Fri Jan 30 10:46:37 2009 @@ -3040,6 +3040,16 @@ " hostname VARCHAR(255)\n" ");\n"; + /* should we move this glue to sofia_sla or keep it here where all db init happens? XXX MTK */ + char shared_appearance_sql[] = + "CREATE TABLE sip_shared_appearance_subscriptions (\n" + " subscriber VARCHAR(255),\n" + " call_id VARCHAR(255),\n" + " aor VARCHAR(255),\n" + " profile_name VARCHAR(255),\n" + " hostname VARCHAR(255)\n" + ");\n"; + if (profile->odbc_dsn) { #ifdef SWITCH_HAVE_ODBC if (!(profile->master_odbc = switch_odbc_handle_new(profile->odbc_dsn, profile->odbc_user, profile->odbc_pass))) { @@ -3094,6 +3104,15 @@ } free(test_sql); + if (profile->manage_shared_appearance) { + test_sql = switch_mprintf("delete from sip_shared_appearance_subscriptions where hostname='%q'", mod_sofia_globals.hostname); + if (switch_odbc_handle_exec(profile->master_odbc, test_sql, NULL) != SWITCH_ODBC_SUCCESS) { + switch_odbc_handle_exec(profile->master_odbc, "DROP TABLE sip_shared_appearance_subscriptions", NULL); + switch_odbc_handle_exec(profile->master_odbc, shared_appearance_sql, NULL); + } + free(test_sql); + } + #else switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ODBC IS NOT AVAILABLE!\n"); #endif @@ -3125,6 +3144,16 @@ switch_core_db_test_reactive(profile->master_db, test_sql, "DROP TABLE sip_authentication", auth_sql); free(test_sql); + if(profile->manage_shared_appearance) { + test_sql = switch_mprintf("delete from sip_shared_appearance_subscriptions where hostname='%q'", mod_sofia_globals.hostname); + switch_core_db_test_reactive(profile->master_db, test_sql, "DROP TABLE sip_shared_appearance_subscriptions", shared_appearance_sql); + free(test_sql); + + switch_core_db_exec(profile->master_db, "create index if not exists ssa_hostname on sip_shared_appearance_subscriptions (hostname)", NULL, NULL, NULL); + /* XXX MTK create additional index for shared_appearance if necessary */ + } + + switch_core_db_exec(profile->master_db, "create index if not exists sr_call_id on sip_registrations (call_id)", NULL, NULL, NULL); switch_core_db_exec(profile->master_db, "create index if not exists sr_sip_user on sip_registrations (sip_user)", NULL, NULL, NULL); switch_core_db_exec(profile->master_db, "create index if not exists sr_sip_host on sip_registrations (sip_host)", NULL, NULL, NULL); Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c Fri Jan 30 10:46:37 2009 @@ -1423,6 +1423,17 @@ return; } + /* the following could be refactored back to the calling event handler in sofia.c XXX MTK */ + if (profile->manage_shared_appearance) { + if (!strncmp(sip->sip_request->rq_url->url_user, "sla-agent", sizeof("sla-agent"))) { + /* only fire this on <200 to try to avoid resubscribes. probably better ways to do this? */ + if (status < 200) { + sofia_sla_handle_sip_i_subscribe(nua, profile, nh, sip, tags); + } + return; + } + } + get_addr(network_ip, sizeof(network_ip), my_addrinfo->ai_addr, my_addrinfo->ai_addrlen); network_port = ntohs(((struct sockaddr_in *) msg_addrinfo(nua_current_request(nua))->ai_addr)->sin_port); @@ -1767,6 +1778,14 @@ return; } + /* the following could possibly be refactored back towards the calling event handler in sofia.c XXX MTK */ + if (profile->manage_shared_appearance) { + if (!strcasecmp(o->o_type, "dialog") && msg_params_find(o->o_params, "sla")) { + sofia_sla_handle_sip_r_subscribe(nua, profile, nh, sip, tags); + return; + } + } + if (!sofia_private || !sofia_private->gateway) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Gateway information missing\n"); return; @@ -1810,6 +1829,15 @@ sip_payload_t *payload = sip->sip_payload; char *event_type; + /* the following could instead be refactored back to the calling event handler in sofia.c XXX MTK */ + if (profile->manage_shared_appearance) { + /* also it probably is unsafe to dereference so many things in a row without testing XXX MTK */ + if (!strncmp(sip->sip_request->rq_url->url_user, "sla-agent", sizeof("sla-agent"))) { + sofia_sla_handle_sip_i_publish(nua, profile, nh, sip, tags); + return; + } + } + if (from) { from_user = (char *) from->a_url->url_user; from_host = (char *) from->a_url->url_host; Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c Fri Jan 30 10:46:37 2009 @@ -1102,6 +1102,10 @@ switch_event_fire(&s_event); } + if (profile->manage_shared_appearance) { + sofia_sla_handle_register(nua, profile, sip); + } + return 1; } Added: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c ============================================================================== --- (empty file) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c Fri Jan 30 10:46:37 2009 @@ -0,0 +1,241 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005/2006, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Anthony Minessale II + * Ken Rice, Asteria Solutions Group, Inc + * Paul D. Tinsley + * Bret McDanel + * + * + * sofia_sla.c -- SOFIA SIP Endpoint (support for shared line appearance) + * This file (and calls into it) developed by Matthew T Kaufman + * + */ +#include "mod_sofia.h" + + +static int sofia_sla_sub_callback(void *pArg, int argc, char **argv, char **columnNames); + + +void sofia_sla_handle_register(nua_t *nua, sofia_profile_t *profile, sip_t const *sip) +{ + nua_handle_t *nh; + + /* TODO: + * check to see if it says in the group or extension xml that we are handling SLA for this AOR + * check to see if we're already subscribed and the call-id in the subscribe matches. if so, + * we can skip this, which would keep us from re-subscribing which would also keep us from + * leaking so horribly much memory like we do now + */ + + nh = nua_handle(nua, NULL, NUTAG_URL(sip->sip_contact->m_url), TAG_NULL()); + + /* we make up and bind a sofia_private so that the existing event handler destruction code won't be confused by us */ + /* (though it isn't clear that this is sufficient... we still have break cases for nua_i_notify and nua_r_notify + * in sofia_event_callback's destruction end because if we don't, the handle gets destroyed. or maybe it is + * something else i'm doing wrong? MTK + + mod_sofia_globals.keep_private is a magic static private things can share for this purpose: ACM + */ + + nua_handle_bind(nh, &mod_sofia_globals.keep_private); + + + nua_subscribe(nh, + SIPTAG_TO(sip->sip_to), + SIPTAG_FROM(sip->sip_to), // ? + SIPTAG_CONTACT_STR(profile->sla_contact), + SIPTAG_EXPIRES_STR("3500"), /* ok, this is totally fake here XXX MTK */ + SIPTAG_EVENT_STR("dialog;sla"), /* some phones want ;include-session-description too? */ + TAG_NULL()); +} + +void sofia_sla_handle_sip_i_publish(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]) +{ + /* at present there's no SLA versions that we deal with that do publish. to be safe, we say "OK" */ + nua_respond(nh, SIP_200_OK, NUTAG_WITH_THIS(nua), TAG_END()); +} + +void sofia_sla_handle_sip_i_subscribe(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]) +{ + char *aor = NULL; + char *subscriber = NULL; + char *sql = NULL; + + /* + * XXX MTK FIXME - we don't look at the tag to see if NUTAG_SUBSTATE(nua_substate_terminated) or + * a Subscription-State header with state "terminated" and/or expiration of 0. So we never forget + * about them here. + * likewise, we also don't have a hook against nua_r_notify events, so we can't see nua_substate_terminated there. + */ + + /* + * extracting AOR is weird... + * the From is the main extension, not the third-party one... + * and the contact has the phone's own network address, not the AOR address + * so we do what openser's pua_bla does and... + */ + + aor = switch_mprintf("sip:%s@%s",sip->sip_contact->m_url->url_user, sip->sip_from->a_url->url_host); + + /* + * ok, and now that we HAVE the AOR, we REALLY should go check in the XML config and see if this particular + * extension is set up to have shared appearances managed. right now it is all-or-nothing on the profile, + * which won't be sufficient for real life. FIXME XXX MTK + */ + + /* then the subscriber is the user at their network location... this is arguably the wrong way, but works so far... */ + + subscriber = switch_mprintf("sip:%s@%s",sip->sip_from->a_url->url_user, sip->sip_contact->m_url->url_host); + + + if ((sql = + switch_mprintf("delete from sip_shared_appearance_subscriptions where subscriber='%q' and profile name='%q' and hostname='%q'", + subscriber, profile->name, mod_sofia_globals.hostname + ))) { + sofia_glue_execute_sql(profile, &sql, SWITCH_TRUE); + } + + if ((sql = + switch_mprintf("insert into sip_shared_appearance_subscriptions (subscriber, call_id, aor, profile_name, hostname) " + "values ('%q','%q','%q','%q','%q')", + subscriber, sip->sip_call_id->i_id, aor, profile->name, mod_sofia_globals.hostname))) { + sofia_glue_execute_sql(profile, &sql, SWITCH_TRUE); + } + + + + nua_respond(nh, SIP_202_ACCEPTED, SIPTAG_CONTACT_STR(profile->sla_contact), NUTAG_WITH_THIS(nua), + SIPTAG_SUBSCRIPTION_STATE_STR("active;expires=300"), /* you thought the OTHER time was fake... need delta here FIXME XXX MTK */ + SIPTAG_EXPIRES_STR("300"), /* likewise, totally fake - FIXME XXX MTK */ + /* sofia_presence says something about needing TAG_IF(sticky, NUTAG_PROXY(sticky)) for NAT stuff? */ + TAG_END()); + + switch_safe_free(aor); + switch_safe_free(subscriber); + switch_safe_free(sql); +} + +struct sla_notify_helper { + sofia_profile_t *profile; + char *payload; +}; + +void sofia_sla_handle_sip_r_subscribe(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]) +{ + /* apparently, we do nothing */ +} + +void sofia_sla_handle_sip_i_notify(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]) +{ + char *sql = NULL; + struct sla_notify_helper helper; + char *aor = NULL; + char *contact = NULL; + + /* + * things we know we don't do: + * draft-anil-sipping-bla says we should look and see if the specific appearance is in use and if it is + * return an error for the i_notify, to handle the initial line-seize for dialing out case. + * to do that we would need to really track all the appearances *and* override sofia's autoresponder for i_notify + * because at this point, it already sent the 200 for us. + * and we simply don't track all the appearance status by decoding the XML payload out and recording that in + * an SQL line appearance database yet. we'll need to do that in order to do the above, and in order to make + * interoperation possible between devices that disagree on the dialog xml payload OR don't even do it that + * way and instead use things like call-info/line-seize events like the old Broadsoft spec. + * instead we cheat and just reflect the entire payload back to the subscribers (who, because we don't + * yet check each AOR as it comes in to see if it is to be managed, is more subscribers than we probably + * should have). for the current prototype stage, this works ok anyway. + * and because we don't parse the XML, we even reflect it right back to the notifier/sender (which is called + * "target" in the payload XML, of course). + * also because we don't track on a per-appearance basis, there IS NOT a hook back from sofia_glue to add + * an appearance index to the outbound invite for the "next free appearance". this can lead to race + * conditions where a call shows up on slightly different line key numbers at different phones, making + * "pick up on line X" meaningless if such a race occurs. again, it is a prototype. we can fix it later. + */ + + + /* the dispatcher calls us just because it is aimed at us, so check to see if it is dialog;sla at the very least... */ + + if ( (!sip->sip_event) + || (strcasecmp(sip->sip_event->o_type, "dialog")) + || !msg_params_find(sip->sip_event->o_params, "sla") ) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,"sent to sla-agent but not dialog;sla\n"); + return; + } + + /* calculate the AOR we're trying to tell people about. should probably double-check before derferencing XXX MTK */ + aor = switch_mprintf("sip:%s@%s",sip->sip_to->a_url->url_user, sip->sip_to->a_url->url_host); + + /* this isn't sufficient because on things like the polycom, the subscriber is the 'main' ext number, but the + * 'main' ext number isn't in ANY of the headers they send us in the notify. of course. + * as a side effect, the subscriber<>'%q' below isn't sufficient to prevent reflecting the event back + * at a phone that has the ext # != third-party#. see above, can only fix by parsing the XML for the 'target' + * so we don't reflect it back at anyone who is the "boss" config, but we do reflect it back at the "secretary" + * config. if that breaks the phone, just set them all up as the "boss" config where ext#==third-party# + */ + contact = switch_mprintf("sip:%s@%s",sip->sip_contact->m_url->url_user, sip->sip_contact->m_url->url_host); + + if(sip->sip_payload && sip->sip_payload->pl_data) { + sql = switch_mprintf("select subscriber,call_id,aor,profile_name,hostname from sip_shared_appearance_subscriptions where " + "aor='%q' and subscriber<>'%q' and profile_name='%q' and hostname='%q'", + aor, contact, profile->name, mod_sofia_globals.hostname); + + + helper.profile = profile; + helper.payload = sip->sip_payload->pl_data; /* could just send the WHOLE payload. you'd get the type that way. */ + + /* which mutex if any is correct to hold in this callback? XXX MTK FIXME */ + sofia_glue_execute_sql_callback(profile, SWITCH_FALSE, profile->ireg_mutex, sql, sofia_sla_sub_callback, &helper); + + switch_safe_free(sql); + switch_safe_free(aor); + switch_safe_free(contact); + } +} + +static int sofia_sla_sub_callback(void *pArg, int argc, char **argv, char **columnNames) +{ + struct sla_notify_helper *helper = pArg; + /* char *subscriber = argv[0]; */ + char *call_id = argv[1]; + /* char *aor = argv[2]; */ + /* char *profile_name = argv[3]; */ + /* char *hostname = argv[4]; */ + nua_handle_t *nh; + + nh = nua_handle_by_call_id(helper->profile->nua, call_id); /* that's all you need to find the subscription's nh */ + + if(nh) + { + nua_notify(nh, + SIPTAG_SUBSCRIPTION_STATE_STR("active;expires=300"), /* XXX MTK FIXME - this is totally fake calculation */ + SIPTAG_CONTENT_TYPE_STR("application/dialog-info+xml"), /* could've just kept the type from the payload */ + SIPTAG_PAYLOAD_STR(helper->payload), + TAG_END()); + } + return 0; +} + From mikej at freeswitch.org Fri Jan 30 09:00:50 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 11:00:50 -0600 Subject: [Freeswitch-svn] [commit] r11563 - in freeswitch/trunk/libs/spandsp: src src/msvc src/spandsp src/spandsp/private tests Message-ID: Author: mikej Date: Fri Jan 30 11:00:50 2009 New Revision: 11563 Log: update to snapshot spandsp-20090130 Modified: freeswitch/trunk/libs/spandsp/src/Makefile.am freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c freeswitch/trunk/libs/spandsp/src/dtmf.c freeswitch/trunk/libs/spandsp/src/fsk.c freeswitch/trunk/libs/spandsp/src/g722.c freeswitch/trunk/libs/spandsp/src/hdlc.c freeswitch/trunk/libs/spandsp/src/libspandsp.dsp freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c freeswitch/trunk/libs/spandsp/src/msvc/config.h freeswitch/trunk/libs/spandsp/src/sig_tone.c freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h freeswitch/trunk/libs/spandsp/src/spandsp/private/fsk.h freeswitch/trunk/libs/spandsp/src/spandsp/private/g726.h freeswitch/trunk/libs/spandsp/src/spandsp/private/modem_connect_tones.h freeswitch/trunk/libs/spandsp/src/spandsp/private/sig_tone.h freeswitch/trunk/libs/spandsp/src/spandsp/private/t30.h freeswitch/trunk/libs/spandsp/src/spandsp/version.h freeswitch/trunk/libs/spandsp/src/t30.c freeswitch/trunk/libs/spandsp/src/t38_gateway.c freeswitch/trunk/libs/spandsp/src/v17rx.c freeswitch/trunk/libs/spandsp/src/v27ter_rx.c freeswitch/trunk/libs/spandsp/src/v29rx.c freeswitch/trunk/libs/spandsp/tests/Makefile.am Modified: freeswitch/trunk/libs/spandsp/src/Makefile.am ============================================================================== --- freeswitch/trunk/libs/spandsp/src/Makefile.am (original) +++ freeswitch/trunk/libs/spandsp/src/Makefile.am Fri Jan 30 11:00:50 2009 @@ -16,7 +16,7 @@ ## License along with this program; if not, write to the Free Software ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ## -## $Id: Makefile.am,v 1.116 2008/12/12 13:18:21 steveu Exp $ +## $Id: Makefile.am,v 1.118 2009/01/30 05:35:18 steveu Exp $ AM_CFLAGS = $(COMP_VENDOR_CFLAGS) AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS) @@ -28,6 +28,7 @@ libspandsp.dsp \ libspandsp.sln \ libspandsp.vcproj \ + msvc/config.h \ msvc/gettimeofday.c \ msvc/inttypes.h \ msvc/tgmath.h \ @@ -38,7 +39,6 @@ msvc/msvcproj.foot \ msvc/vc8proj.head \ msvc/vc8proj.foot \ - msvc/config.h \ spandsp/private/README INCLUDES = -I$(top_builddir) Modified: freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c (original) +++ freeswitch/trunk/libs/spandsp/src/bell_r2_mf.c Fri Jan 30 11:00:50 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: bell_r2_mf.c,v 1.34 2009/01/29 01:41:05 steveu Exp $ + * $Id: bell_r2_mf.c,v 1.35 2009/01/29 18:30:14 steveu Exp $ */ /*! \file */ @@ -312,7 +312,7 @@ if ((len = strlen(digits)) == 0) return 0; } - if ((space = queue_free_space(&s->queue.queue)) < len) + if ((space = queue_free_space(&s->queue.queue)) < (size_t) len) return len - space; if (queue_write(&s->queue.queue, (const uint8_t *) digits, len) >= 0) return 0; Modified: freeswitch/trunk/libs/spandsp/src/dtmf.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/dtmf.c (original) +++ freeswitch/trunk/libs/spandsp/src/dtmf.c Fri Jan 30 11:00:50 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: dtmf.c,v 1.47 2009/01/28 03:41:26 steveu Exp $ + * $Id: dtmf.c,v 1.48 2009/01/29 18:30:14 steveu Exp $ */ /*! \file dtmf.h */ @@ -485,7 +485,7 @@ if ((len = strlen(digits)) == 0) return 0; } - if ((space = queue_free_space(&s->queue.queue)) < len) + if ((space = queue_free_space(&s->queue.queue)) < (size_t) len) return len - space; if (queue_write(&s->queue.queue, (const uint8_t *) digits, len) >= 0) return 0; Modified: freeswitch/trunk/libs/spandsp/src/fsk.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/fsk.c (original) +++ freeswitch/trunk/libs/spandsp/src/fsk.c Fri Jan 30 11:00:50 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: fsk.c,v 1.49 2009/01/28 03:41:26 steveu Exp $ + * $Id: fsk.c,v 1.50 2009/01/29 18:30:14 steveu Exp $ */ /*! \file */ @@ -149,7 +149,7 @@ } /*- End of function --------------------------------------------------------*/ -int fsk_tx(fsk_tx_state_t *s, int16_t *amp, int len) +int fsk_tx(fsk_tx_state_t *s, int16_t amp[], int len) { int sample; int bit; Modified: freeswitch/trunk/libs/spandsp/src/g722.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/g722.c (original) +++ freeswitch/trunk/libs/spandsp/src/g722.c Fri Jan 30 11:00:50 2009 @@ -28,7 +28,7 @@ * Computer Science, Speech Group * Chengxiang Lu and Alex Hauptmann * - * $Id: g722.c,v 1.5 2009/01/28 03:41:26 steveu Exp $ + * $Id: g722.c,v 1.6 2009/01/29 18:30:14 steveu Exp $ */ /*! \file */ @@ -204,9 +204,9 @@ wd32 = ((p ^ s->p[0]) & 0x8000) ? wd1 : -wd1; if (wd32 > 32767) wd32 = 32767; - wd3 = (((p ^ s->p[1]) & 0x8000) ? -128 : 128) - + (wd32 >> 7) - + (((int32_t) s->a[1]*(int32_t) 32512) >> 15); + wd3 = (int16_t) ((((p ^ s->p[1]) & 0x8000) ? -128 : 128) + + (wd32 >> 7) + + (((int32_t) s->a[1]*(int32_t) 32512) >> 15)); if (abs(wd3) > 12288) wd3 = (wd3 < 0) ? -12288 : 12288; ap[1] = wd3; @@ -351,7 +351,7 @@ /* Block 2L, INVQAL */ wd2 = qm4[wd1]; - dlow = ((int32_t) s->band[0].det*(int32_t) wd2) >> 15; + dlow = (int16_t) (((int32_t) s->band[0].det*(int32_t) wd2) >> 15); /* Block 3L, LOGSCL */ wd2 = rl42[wd1]; @@ -361,13 +361,13 @@ wd1 = 0; else if (wd1 > 18432) wd1 = 18432; - s->band[0].nb = wd1; + s->band[0].nb = (int16_t) wd1; /* Block 3L, SCALEL */ wd1 = (s->band[0].nb >> 6) & 31; wd2 = 8 - (s->band[0].nb >> 11); wd3 = (wd2 < 0) ? (ilb[wd1] << -wd2) : (ilb[wd1] >> wd2); - s->band[0].det = wd3 << 2; + s->band[0].det = (int16_t) (wd3 << 2); block4(&s->band[0], dlow); @@ -375,7 +375,7 @@ { /* Block 2H, INVQAH */ wd2 = qm2[ihigh]; - dhigh = ((int32_t) s->band[1].det*(int32_t) wd2) >> 15; + dhigh = (int16_t) (((int32_t) s->band[1].det*(int32_t) wd2) >> 15); /* Block 5H, RECONS */ /* Block 6H, LIMIT */ rhigh = saturate15(dhigh + s->band[1].s); @@ -388,13 +388,13 @@ wd1 = 0; else if (wd1 > 22528) wd1 = 22528; - s->band[1].nb = wd1; + s->band[1].nb = (int16_t) wd1; /* Block 3H, SCALEH */ wd1 = (s->band[1].nb >> 6) & 31; wd2 = 10 - (s->band[1].nb >> 11); wd3 = (wd2 < 0) ? (ilb[wd1] << -wd2) : (ilb[wd1] >> wd2); - s->band[1].det = wd3 << 2; + s->band[1].det = (int16_t) (wd3 << 2); block4(&s->band[1], dhigh); } @@ -413,8 +413,8 @@ else { /* Apply the QMF to build the final signal */ - s->x[s->ptr] = rlow + rhigh; - s->y[s->ptr] = rlow - rhigh; + s->x[s->ptr] = (int16_t) (rlow + rhigh); + s->y[s->ptr] = (int16_t) (rlow - rhigh); if (++s->ptr >= 12) s->ptr = 0; amp[outlen++] = (int16_t) (vec_circular_dot_prodi16(s->y, qmf_coeffs_rev, 12, s->ptr) >> 12); @@ -509,8 +509,8 @@ s->ptr = 0; sumodd = vec_circular_dot_prodi16(s->x, qmf_coeffs_fwd, 12, s->ptr); sumeven = vec_circular_dot_prodi16(s->y, qmf_coeffs_rev, 12, s->ptr); - xlow = (sumeven + sumodd) >> 13; - xhigh = (sumeven - sumodd) >> 13; + xlow = (int16_t) ((sumeven + sumodd) >> 13); + xhigh = (int16_t) ((sumeven - sumodd) >> 13); } } /* Block 1L, SUBTRA */ @@ -530,12 +530,12 @@ /* Block 2L, INVQAL */ ril = ilow >> 2; wd2 = qm4[ril]; - dlow = ((int32_t) s->band[0].det*(int32_t) wd2) >> 15; + dlow = (int16_t) (((int32_t) s->band[0].det*(int32_t) wd2) >> 15); /* Block 3L, LOGSCL */ il4 = rl42[ril]; wd = ((int32_t) s->band[0].nb*(int32_t) 127) >> 7; - s->band[0].nb = wd + wl[il4]; + s->band[0].nb = (int16_t) (wd + wl[il4]); if (s->band[0].nb < 0) s->band[0].nb = 0; else if (s->band[0].nb > 18432) @@ -545,7 +545,7 @@ wd1 = (s->band[0].nb >> 6) & 31; wd2 = 8 - (s->band[0].nb >> 11); wd3 = (wd2 < 0) ? (ilb[wd1] << -wd2) : (ilb[wd1] >> wd2); - s->band[0].det = wd3 << 2; + s->band[0].det = (int16_t) (wd3 << 2); block4(&s->band[0], dlow); @@ -567,12 +567,12 @@ /* Block 2H, INVQAH */ wd2 = qm2[ihigh]; - dhigh = ((int32_t) s->band[1].det*(int32_t) wd2) >> 15; + dhigh = (int16_t) (((int32_t) s->band[1].det*(int32_t) wd2) >> 15); /* Block 3H, LOGSCH */ ih2 = rh2[ihigh]; wd = ((int32_t) s->band[1].nb*(int32_t) 127) >> 7; - s->band[1].nb = wd + wh[ih2]; + s->band[1].nb = (int16_t) (wd + wh[ih2]); if (s->band[1].nb < 0) s->band[1].nb = 0; else if (s->band[1].nb > 22528) @@ -582,7 +582,7 @@ wd1 = (s->band[1].nb >> 6) & 31; wd2 = 10 - (s->band[1].nb >> 11); wd3 = (wd2 < 0) ? (ilb[wd1] << -wd2) : (ilb[wd1] >> wd2); - s->band[1].det = wd3 << 2; + s->band[1].det = (int16_t) (wd3 << 2); block4(&s->band[1], dhigh); code = ((ihigh << 6) | ilow) >> (8 - s->bits_per_sample); Modified: freeswitch/trunk/libs/spandsp/src/hdlc.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/hdlc.c (original) +++ freeswitch/trunk/libs/spandsp/src/hdlc.c Fri Jan 30 11:00:50 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: hdlc.c,v 1.64 2009/01/05 13:48:31 steveu Exp $ + * $Id: hdlc.c,v 1.66 2009/01/30 07:19:25 steveu Exp $ */ /*! \file */ @@ -527,16 +527,16 @@ int hdlc_tx_get(hdlc_tx_state_t *s, uint8_t buf[], size_t max_len) { - int i; + size_t i; int x; for (i = 0; i < max_len; i++) { if ((x = hdlc_tx_get_byte(s)) == SIG_STATUS_END_OF_DATA) return i; - buf[i] = x; + buf[i] = (uint8_t) x; } - return i; + return (int) i; } /*- End of function --------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.dsp ============================================================================== --- freeswitch/trunk/libs/spandsp/src/libspandsp.dsp (original) +++ freeswitch/trunk/libs/spandsp/src/libspandsp.dsp Fri Jan 30 11:00:50 2009 @@ -397,7 +397,7 @@ # End Source File # Begin Source File -SOURCE=.\msvc/gettimeofday.c +SOURCE=.\.\msvc\gettimeofday.c # End Source File # End Group # Begin Group "Header Files" Modified: freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c (original) +++ freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c Fri Jan 30 11:00:50 2009 @@ -23,7 +23,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: modem_connect_tones.c,v 1.31 2009/01/28 03:41:27 steveu Exp $ + * $Id: modem_connect_tones.c,v 1.32 2009/01/29 18:30:14 steveu Exp $ */ /*! \file */ @@ -90,7 +90,7 @@ int16_t amp[], int len) { - int mod; + int16_t mod; int i; int xlen; @@ -165,7 +165,7 @@ } for ( ; i < len; i++) { - mod = s->level + dds_mod(&s->mod_phase, s->mod_phase_rate, s->mod_level, 0); + mod = (int16_t) (s->level + dds_mod(&s->mod_phase, s->mod_phase_rate, s->mod_level, 0)); amp[i] = dds_mod(&s->tone_phase, s->tone_phase_rate, mod, 0); } s->duration_timer -= len; @@ -186,7 +186,7 @@ s->hop_timer = ms_to_samples(450); s->tone_phase += 0x80000000; } - mod = s->level + dds_mod(&s->mod_phase, s->mod_phase_rate, s->mod_level, 0); + mod = (int16_t) (s->level + dds_mod(&s->mod_phase, s->mod_phase_rate, s->mod_level, 0)); amp[i] = dds_mod(&s->tone_phase, s->tone_phase_rate, mod, 0); } s->duration_timer -= len; Modified: freeswitch/trunk/libs/spandsp/src/msvc/config.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/msvc/config.h (original) +++ freeswitch/trunk/libs/spandsp/src/msvc/config.h Fri Jan 30 11:00:50 2009 @@ -10,10 +10,11 @@ * * This file is released in the public domain. * + * $Id: config.h,v 1.1 2009/01/29 18:30:14 steveu Exp $ */ -#if !defined(_SPANDSP_CONFIG_H_) -#define _SPANDSP_CONFIG_H_ +#if !defined(_MSVC_CONFIG_H_) +#define _MSVC_CONFIG_H_ #define HAVE_SINF #define HAVE_COSF Modified: freeswitch/trunk/libs/spandsp/src/sig_tone.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/sig_tone.c (original) +++ freeswitch/trunk/libs/spandsp/src/sig_tone.c Fri Jan 30 11:00:50 2009 @@ -23,7 +23,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: sig_tone.c,v 1.28 2009/01/28 03:41:27 steveu Exp $ + * $Id: sig_tone.c,v 1.29 2009/01/30 07:19:25 steveu Exp $ */ /*! \file */ @@ -457,7 +457,7 @@ this isn't used in low tone detect mode, but we must keep notch_zl rolling along. */ s->tone[j].notch_zl = ((s->tone[j].notch_zl*s->desc->notch_slugi) >> 15) - + ((abs(notched_signal)*s->desc->notch_slugp) >> 15); + + ((abs((int) notched_signal)*s->desc->notch_slugp) >> 15); /* Mow the grass to weed out the noise! */ mown_notch[j] = s->tone[0].notch_zl & s->desc->notch_threshold; } @@ -505,7 +505,7 @@ #endif /* Leaky integrate the bandpassed data */ s->broad_zl = ((s->broad_zl*s->desc->broad_slugi) >> 15) - + ((abs(bandpass_signal)*s->desc->broad_slugp) >> 15); + + ((abs((int) bandpass_signal)*s->desc->broad_slugp) >> 15); /* For the broad band receiver we use a simple linear threshold! */ if (s->tone_present) @@ -557,7 +557,7 @@ /* Modulus and leaky integrate the data */ s->broad_zl = ((s->broad_zl*s->desc->unfiltered_slugi) >> 15) - + ((abs(amp[i])*s->desc->unfiltered_slugp) >> 15); + + ((abs((int) amp[i])*s->desc->unfiltered_slugp) >> 15); /* Mow the grass to weed out the noise! */ mown_bandpass = s->broad_zl & s->desc->unfiltered_threshold; Modified: freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h Fri Jan 30 11:00:50 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: fsk.h,v 1.32 2008/10/13 13:14:00 steveu Exp $ + * $Id: fsk.h,v 1.33 2009/01/29 18:30:14 steveu Exp $ */ /*! \file */ @@ -170,7 +170,7 @@ \param len The number of samples to be generated. \return The number of samples actually generated. */ -int fsk_tx(fsk_tx_state_t *s, int16_t *amp, int len); +int fsk_tx(fsk_tx_state_t *s, int16_t amp[], int len); /*! Get the current received signal power. \param s The modem context. Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/fsk.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/private/fsk.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/fsk.h Fri Jan 30 11:00:50 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: fsk.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + * $Id: fsk.h,v 1.2 2009/01/29 18:30:14 steveu Exp $ */ #if !defined(_SPANDSP_PRIVATE_FSK_H_) @@ -46,7 +46,7 @@ void *status_user_data; int32_t phase_rates[2]; - int scaling; + int16_t scaling; int32_t current_phase_rate; uint32_t phase_acc; int baud_frac; Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/g726.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/private/g726.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/g726.h Fri Jan 30 11:00:50 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: g726.h,v 1.2 2008/11/16 12:20:57 steveu Exp $ + * $Id: g726.h,v 1.3 2009/01/29 18:30:14 steveu Exp $ */ #if !defined(_SPANDSP_PRIVATE_G726_H_) @@ -44,7 +44,7 @@ /*! The external coding, for tandem operation */ int ext_coding; /*! The number of bits per sample */ - unsigned int bits_per_sample; + int bits_per_sample; /*! One of the G.726_PACKING_xxx options */ int packing; Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/modem_connect_tones.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/private/modem_connect_tones.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/modem_connect_tones.h Fri Jan 30 11:00:50 2009 @@ -24,7 +24,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: modem_connect_tones.h,v 1.1 2008/10/13 13:14:01 steveu Exp $ + * $Id: modem_connect_tones.h,v 1.2 2009/01/29 18:30:14 steveu Exp $ */ /*! \file */ @@ -42,14 +42,14 @@ int32_t tone_phase_rate; uint32_t tone_phase; - int level; + int16_t level; /*! \brief Countdown to the next phase hop */ int hop_timer; /*! \brief Maximum duration timer */ int duration_timer; uint32_t mod_phase; int32_t mod_phase_rate; - int mod_level; + int16_t mod_level; }; /*! Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/sig_tone.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/private/sig_tone.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/sig_tone.h Fri Jan 30 11:00:50 2009 @@ -23,7 +23,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: sig_tone.h,v 1.1 2008/11/30 13:08:42 steveu Exp $ + * $Id: sig_tone.h,v 1.2 2009/01/30 07:19:25 steveu Exp $ */ #if !defined(_SPANDSP_PRIVATE_SIG_TONE_H_) @@ -121,7 +121,7 @@ sig_tone_descriptor_t *desc; /*! The scaling values for the high and low level tones */ - int32_t tone_scaling[2]; + int16_t tone_scaling[2]; /*! The sample timer, used to switch between the high and low level tones. */ int high_low_timer; Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/t30.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/private/t30.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/private/t30.h Fri Jan 30 11:00:50 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t30.h,v 1.2 2009/01/03 13:02:31 steveu Exp $ + * $Id: t30.h,v 1.3 2009/01/29 18:30:14 steveu Exp $ */ /*! \file */ @@ -236,7 +236,8 @@ partial pages still to come. */ int ecm_at_page_end; int next_tx_step; - int next_rx_step; + /* The FCF for the next receive step */ + uint8_t next_rx_step; /*! \brief Image file name for image reception. */ char rx_file[256]; /*! \brief The last page we are prepared accept for a received image file. -1 means no restriction. */ @@ -264,7 +265,7 @@ int ecm_allowed; /*! \brief the FCF2 field of the last PPS message we received. */ - int last_pps_fcf2; + uint8_t last_pps_fcf2; /*! \brief The number of the first ECM frame which we do not currently received correctly. For a partial page received correctly, this will be one greater than the number of frames it contains. */ Modified: freeswitch/trunk/libs/spandsp/src/spandsp/version.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/spandsp/version.h (original) +++ freeswitch/trunk/libs/spandsp/src/spandsp/version.h Fri Jan 30 11:00:50 2009 @@ -30,8 +30,8 @@ /* The date and time of the version are in UTC form. */ -#define SPANDSP_RELEASE_DATE 20090129 -#define SPANDSP_RELEASE_TIME 014346 +#define SPANDSP_RELEASE_DATE 20090130 +#define SPANDSP_RELEASE_TIME 102456 #endif /*- End of file ------------------------------------------------------------*/ Modified: freeswitch/trunk/libs/spandsp/src/t30.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t30.c (original) +++ freeswitch/trunk/libs/spandsp/src/t30.c Fri Jan 30 11:00:50 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t30.c,v 1.279 2009/01/29 01:41:06 steveu Exp $ + * $Id: t30.c,v 1.280 2009/01/29 18:30:14 steveu Exp $ */ /*! \file */ @@ -568,7 +568,7 @@ } /*- End of function --------------------------------------------------------*/ -static int check_next_tx_step(t30_state_t *s) +static uint8_t check_next_tx_step(t30_state_t *s) { int more; @@ -3107,7 +3107,7 @@ static void process_state_f_doc_ecm(t30_state_t *s, const uint8_t *msg, int len) { - int fcf2; + uint8_t fcf2; /* This actually handles 2 states - _DOC_ECM and _POST_DOC_ECM - as they are very similar */ switch (msg[2] & 0xFE) Modified: freeswitch/trunk/libs/spandsp/src/t38_gateway.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/t38_gateway.c (original) +++ freeswitch/trunk/libs/spandsp/src/t38_gateway.c Fri Jan 30 11:00:50 2009 @@ -23,7 +23,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: t38_gateway.c,v 1.151 2009/01/28 03:41:27 steveu Exp $ + * $Id: t38_gateway.c,v 1.152 2009/01/29 18:30:14 steveu Exp $ */ /*! \file */ @@ -1605,7 +1605,7 @@ if (s->bit_no) { /* There is a fractional octet in progress. We might as well send every last bit we can. */ - s->data[s->data_ptr++] = s->bit_stream << (8 - s->bit_no); + s->data[s->data_ptr++] = (uint8_t) (s->bit_stream << (8 - s->bit_no)); } t38_core_send_data(&t->t38x.t38, t->t38x.current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, s->data, s->data_ptr, t->t38x.t38.data_end_tx_count); s->out_octets += s->data_ptr; Modified: freeswitch/trunk/libs/spandsp/src/v17rx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v17rx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v17rx.c Fri Jan 30 11:00:50 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v17rx.c,v 1.130 2009/01/29 01:41:06 steveu Exp $ + * $Id: v17rx.c,v 1.131 2009/01/30 10:22:23 steveu Exp $ */ /*! \file */ @@ -960,7 +960,7 @@ int i; int step; int16_t x; - int32_t diff; + int16_t diff; complexf_t z; complexf_t zz; complexf_t sample; @@ -984,7 +984,8 @@ We need to measure the power with the DC blocked, but not using a slow to respond DC blocker. Use the most elementary HPF. */ x = amp[i] >> 1; - diff = (int32_t) x - s->last_sample; + /* There could be oveflow here, but it isn't a problem in practice */ + diff = x - s->last_sample; power = power_meter_update(&(s->power), diff); #if defined(IAXMODEM_STUFF) /* Quick power drop fudge */ Modified: freeswitch/trunk/libs/spandsp/src/v27ter_rx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v27ter_rx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v27ter_rx.c Fri Jan 30 11:00:50 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v27ter_rx.c,v 1.114 2009/01/29 01:41:06 steveu Exp $ + * $Id: v27ter_rx.c,v 1.115 2009/01/30 10:22:23 steveu Exp $ */ /*! \file */ @@ -746,7 +746,7 @@ int i; int step; int16_t x; - int32_t diff; + int16_t diff; #if defined(SPANDSP_USE_FIXED_POINT) complexi16_t z; complexi16_t zz; @@ -772,7 +772,8 @@ We need to measure the power with the DC blocked, but not using a slow to respond DC blocker. Use the most elementary HPF. */ x = amp[i] >> 1; - diff = (int32_t) x - s->last_sample; + /* There could be oveflow here, but it isn't a problem in practice */ + diff = x - s->last_sample; power = power_meter_update(&(s->power), diff); #if defined(IAXMODEM_STUFF) /* Quick power drop fudge */ @@ -893,6 +894,7 @@ We need to measure the power with the DC blocked, but not using a slow to respond DC blocker. Use the most elementary HPF. */ x = amp[i] >> 1; + /* There could be oveflow here, but it isn't a problem in practice */ diff = x - s->last_sample; power = power_meter_update(&(s->power), diff); #if defined(IAXMODEM_STUFF) Modified: freeswitch/trunk/libs/spandsp/src/v29rx.c ============================================================================== --- freeswitch/trunk/libs/spandsp/src/v29rx.c (original) +++ freeswitch/trunk/libs/spandsp/src/v29rx.c Fri Jan 30 11:00:50 2009 @@ -22,7 +22,7 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: v29rx.c,v 1.151 2009/01/29 01:41:06 steveu Exp $ + * $Id: v29rx.c,v 1.152 2009/01/30 10:22:23 steveu Exp $ */ /*! \file */ @@ -834,7 +834,7 @@ int i; int step; int16_t x; - int32_t diff; + int16_t diff; #if defined(SPANDSP_USE_FIXED_POINT) complexi16_t z; complexi16_t zz; @@ -858,7 +858,8 @@ We need to measure the power with the DC blocked, but not using a slow to respond DC blocker. Use the most elementary HPF. */ x = amp[i] >> 1; - diff = (int32_t) x - s->last_sample; + /* There could be oveflow here, but it isn't a problem in practice */ + diff = x - s->last_sample; power = power_meter_update(&(s->power), diff); #if defined(IAXMODEM_STUFF) /* Quick power drop fudge */ Modified: freeswitch/trunk/libs/spandsp/tests/Makefile.am ============================================================================== --- freeswitch/trunk/libs/spandsp/tests/Makefile.am (original) +++ freeswitch/trunk/libs/spandsp/tests/Makefile.am Fri Jan 30 11:00:50 2009 @@ -16,7 +16,7 @@ ## along with this program; if not, write to the Free Software ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ## -## $Id: Makefile.am,v 1.108 2008/11/30 10:17:31 steveu Exp $ +## $Id: Makefile.am,v 1.109 2009/01/30 05:35:18 steveu Exp $ AM_CFLAGS = $(COMP_VENDOR_CFLAGS) AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS) @@ -64,9 +64,9 @@ line_model_tests \ logging_tests \ lpc10_tests \ + make_g168_css \ modem_connect_tones_tests \ modem_echo_tests \ - make_g168_css \ noise_tests \ oki_adpcm_tests \ playout_tests \ From mikej at freeswitch.org Fri Jan 30 10:10:34 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 12:10:34 -0600 Subject: [Freeswitch-svn] [commit] r11564 - freeswitch/trunk/src/mod/endpoints/mod_sofia Message-ID: Author: mikej Date: Fri Jan 30 12:10:33 2009 New Revision: 11564 Log: add sofia_sla.c to windows build Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.2008.vcproj freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.vcproj Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.2008.vcproj ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.2008.vcproj (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.2008.vcproj Fri Jan 30 12:10:33 2009 @@ -176,6 +176,10 @@ RelativePath=".\sofia_reg.c" > + + Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.vcproj ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.vcproj (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.vcproj Fri Jan 30 12:10:33 2009 @@ -178,6 +178,10 @@ RelativePath=".\sofia_reg.c" > + + From mikej at freeswitch.org Fri Jan 30 10:11:10 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 12:11:10 -0600 Subject: [Freeswitch-svn] [commit] r11565 - freeswitch/trunk/libs Message-ID: Author: mikej Date: Fri Jan 30 12:11:10 2009 New Revision: 11565 Log: svn:ignore Modified: freeswitch/trunk/libs/ (props changed) From mikej at freeswitch.org Fri Jan 30 10:11:32 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 12:11:32 -0600 Subject: [Freeswitch-svn] [commit] r11566 - freeswitch/trunk/src Message-ID: Author: mikej Date: Fri Jan 30 12:11:32 2009 New Revision: 11566 Log: fix windows build Modified: freeswitch/trunk/src/switch.c Modified: freeswitch/trunk/src/switch.c ============================================================================== --- freeswitch/trunk/src/switch.c (original) +++ freeswitch/trunk/src/switch.c Fri Jan 30 12:11:32 2009 @@ -660,6 +660,7 @@ char buf[1024] = ""; int i = 0; + switch_assert(argv[0]); switch_sleep(1000000); ret = (int)execv(argv[0], argv); fprintf(stderr, "Restart Failed [%s] resorting to plan b\n", strerror(errno)); From mikej at freeswitch.org Fri Jan 30 11:15:06 2009 From: mikej at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 13:15:06 -0600 Subject: [Freeswitch-svn] [commit] r11567 - in freeswitch/trunk: . libs libs/spandsp/src libs/spandsp/src/msvc libs/win32 src/mod/applications/mod_fax Message-ID: Author: mikej Date: Fri Jan 30 13:15:06 2009 New Revision: 11567 Log: add mod_fax to the windows build Added: freeswitch/trunk/libs/spandsp/src/msvc/spandsp.h freeswitch/trunk/libs/win32/Download TIFF.2008.vcproj freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.2008.vcproj Modified: freeswitch/trunk/Freeswitch.2008.express.sln freeswitch/trunk/Freeswitch.2008.sln freeswitch/trunk/libs/ (props changed) freeswitch/trunk/libs/spandsp/src/ (props changed) freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj freeswitch/trunk/libs/spandsp/src/libtiff.vcproj freeswitch/trunk/libs/spandsp/src/msvc/inttypes.h freeswitch/trunk/libs/spandsp/src/msvc/spandsp.def freeswitch/trunk/src/mod/applications/mod_fax/ (props changed) freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c Modified: freeswitch/trunk/Freeswitch.2008.express.sln ============================================================================== --- freeswitch/trunk/Freeswitch.2008.express.sln (original) +++ freeswitch/trunk/Freeswitch.2008.express.sln Fri Jan 30 13:15:06 2009 @@ -575,6 +575,25 @@ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download TIFF", "libs\win32\Download TIFF.2008.vcproj", "{2B8A45C9-FEB4-4734-AB37-8DB9DB899917}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspandsp", "libs\spandsp\src\libspandsp.vcproj", "{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}" + ProjectSection(ProjectDependencies) = postProject + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtiff", "libs\spandsp\src\libtiff.vcproj", "{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}" + ProjectSection(ProjectDependencies) = postProject + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917} = {2B8A45C9-FEB4-4734-AB37-8DB9DB899917} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fax", "src\mod\applications\mod_fax\mod_fax.2008.vcproj", "{7877EFC8-4807-484B-B573-D7B7FD058FAA}" + ProjectSection(ProjectDependencies) = postProject + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -1290,6 +1309,30 @@ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.ActiveCfg = Release|Win32 {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.Build.0 = Release|Win32 {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.ActiveCfg = Release|Win32 + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}.Debug|Win32.ActiveCfg = Debug|Win32 + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}.Debug|Win32.Build.0 = Debug|Win32 + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}.Debug|x64.ActiveCfg = Debug|Win32 + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}.Release|Win32.ActiveCfg = Release|Win32 + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}.Release|Win32.Build.0 = Release|Win32 + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}.Release|x64.ActiveCfg = Release|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.ActiveCfg = Debug|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.Build.0 = Debug|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64.ActiveCfg = Debug|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.ActiveCfg = Release|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.Build.0 = Release|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.ActiveCfg = Release|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.ActiveCfg = Debug|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.Build.0 = Debug|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64.ActiveCfg = Debug|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.ActiveCfg = Release|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.Build.0 = Release|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64.ActiveCfg = Release|Win32 + {7877EFC8-4807-484B-B573-D7B7FD058FAA}.Debug|Win32.ActiveCfg = Debug|Win32 + {7877EFC8-4807-484B-B573-D7B7FD058FAA}.Debug|Win32.Build.0 = Debug|Win32 + {7877EFC8-4807-484B-B573-D7B7FD058FAA}.Debug|x64.ActiveCfg = Debug|Win32 + {7877EFC8-4807-484B-B573-D7B7FD058FAA}.Release|Win32.ActiveCfg = Release|Win32 + {7877EFC8-4807-484B-B573-D7B7FD058FAA}.Release|Win32.Build.0 = Release|Win32 + {7877EFC8-4807-484B-B573-D7B7FD058FAA}.Release|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Modified: freeswitch/trunk/Freeswitch.2008.sln ============================================================================== --- freeswitch/trunk/Freeswitch.2008.sln (original) +++ freeswitch/trunk/Freeswitch.2008.sln Fri Jan 30 13:15:06 2009 @@ -953,6 +953,25 @@ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download TIFF", "libs\win32\Download TIFF.2008.vcproj", "{2B8A45C9-FEB4-4734-AB37-8DB9DB899917}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtiff", "libs\spandsp\src\libtiff.vcproj", "{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}" + ProjectSection(ProjectDependencies) = postProject + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917} = {2B8A45C9-FEB4-4734-AB37-8DB9DB899917} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspandsp", "libs\spandsp\src\libspandsp.vcproj", "{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}" + ProjectSection(ProjectDependencies) = postProject + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fax", "src\mod\applications\mod_fax\mod_fax.2008.vcproj", "{7877EFC8-4807-484B-B573-D7B7FD058FAA}" + ProjectSection(ProjectDependencies) = postProject + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -1674,6 +1693,30 @@ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.ActiveCfg = Release|Win32 {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.Build.0 = Release|Win32 {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.ActiveCfg = Release|Win32 + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}.Debug|Win32.ActiveCfg = Debug|Win32 + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}.Debug|Win32.Build.0 = Debug|Win32 + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}.Debug|x64.ActiveCfg = Debug|Win32 + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}.Release|Win32.ActiveCfg = Release|Win32 + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}.Release|Win32.Build.0 = Release|Win32 + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}.Release|x64.ActiveCfg = Release|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.ActiveCfg = Debug|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.Build.0 = Debug|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64.ActiveCfg = Debug|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.ActiveCfg = Release|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.Build.0 = Release|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64.ActiveCfg = Release|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.ActiveCfg = Debug|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.Build.0 = Debug|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64.ActiveCfg = Debug|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.ActiveCfg = Release|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.Build.0 = Release|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.ActiveCfg = Release|Win32 + {7877EFC8-4807-484B-B573-D7B7FD058FAA}.Debug|Win32.ActiveCfg = Debug|Win32 + {7877EFC8-4807-484B-B573-D7B7FD058FAA}.Debug|Win32.Build.0 = Debug|Win32 + {7877EFC8-4807-484B-B573-D7B7FD058FAA}.Debug|x64.ActiveCfg = Debug|Win32 + {7877EFC8-4807-484B-B573-D7B7FD058FAA}.Release|Win32.ActiveCfg = Release|Win32 + {7877EFC8-4807-484B-B573-D7B7FD058FAA}.Release|Win32.Build.0 = Release|Win32 + {7877EFC8-4807-484B-B573-D7B7FD058FAA}.Release|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1707,6 +1750,7 @@ {14E4A972-9CFB-436D-B0A5-4943F3F80D47} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {329FD5B0-EF28-4606-86D0-F6EA21CF8E36} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {7877EFC8-4807-484B-B573-D7B7FD058FAA} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {07113B25-D3AF-4E04-BA77-4CD1171F022C} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4} {A27CCA23-1541-4337-81A4-F0A6413078A0} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4} {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4} @@ -1773,6 +1817,8 @@ {419C8F80-D858-4B48-A25C-AF4007608137} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {5927104D-C14C-4AC8-925C-4AB681762E75} = {C120A020-773F-4EA3-923F-B67AF28B750D} {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {C120A020-773F-4EA3-923F-B67AF28B750D} {4F92B672-DADB-4047-8D6A-4BB3796733FD} = {C120A020-773F-4EA3-923F-B67AF28B750D} @@ -1786,6 +1832,7 @@ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D} {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D} {E796E337-DE78-4303-8614-9A590862EE95} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {2B8A45C9-FEB4-4734-AB37-8DB9DB899917} = {C120A020-773F-4EA3-923F-B67AF28B750D} {988CACF7-3FCB-4992-BE69-77872AE67DC8} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} {5BC072DB-3826-48EA-AF34-FE32AA01E83B} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} {FA429E98-8B03-45E6-A096-A4BC5E821DE4} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj ============================================================================== --- freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj (original) +++ freeswitch/trunk/libs/spandsp/src/libspandsp.vcproj Fri Jan 30 13:15:06 2009 @@ -3,7 +3,7 @@ ProjectType="Visual C++" Version="9.00" Name="libspandsp" - ProjectGUID="{CF70F278-3364-4395-A2E1-23501C9B8AD2}" + ProjectGUID="{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}" RootNamespace="libspandsp" Keyword="Win32Proj" TargetFrameworkVersion="131072" @@ -41,7 +41,7 @@ @@ -320,47 +320,47 @@ Name="Header Files" > Modified: freeswitch/trunk/libs/spandsp/src/msvc/inttypes.h ============================================================================== --- freeswitch/trunk/libs/spandsp/src/msvc/inttypes.h (original) +++ freeswitch/trunk/libs/spandsp/src/msvc/inttypes.h Fri Jan 30 13:15:06 2009 @@ -55,9 +55,15 @@ #pragma comment(lib, "ws2_32.lib") +#ifndef strncasecmp #define strncasecmp _strnicmp +#endif +#ifndef strcasecmp #define strcasecmp _stricmp +#endif +#ifndef snprintf #define snprintf _snprintf +#endif #if !defined(INFINITY) #define INFINITY 0x7fffffff Modified: freeswitch/trunk/libs/spandsp/src/msvc/spandsp.def ============================================================================== --- freeswitch/trunk/libs/spandsp/src/msvc/spandsp.def (original) +++ freeswitch/trunk/libs/spandsp/src/msvc/spandsp.def Fri Jan 30 13:15:06 2009 @@ -274,4 +274,23 @@ v8_tx v8_rx v8_log_supported_modulations +t30_set_ecm_capability +t30_set_supported_compressions +t30_set_supported_modems +t30_set_supported_resolutions +t30_set_supported_image_sizes +t30_set_tx_page_header_info +t30_set_tx_ident +span_log_set_level +span_log_set_message_handler +fax_set_transmit_on_idle +fax_get_t30_state +t30_get_rx_model +t30_get_rx_vendor +t30_get_rx_country +t30_get_rx_ident +t30_get_tx_ident +t38_terminal_release +t38_terminal_get_t30_state +t30_terminate Added: freeswitch/trunk/libs/spandsp/src/msvc/spandsp.h ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/spandsp/src/msvc/spandsp.h Fri Jan 30 13:15:06 2009 @@ -0,0 +1,123 @@ +/* + * SpanDSP - a series of DSP components for telephony + * + * spandsp.h - The head guy amongst the headers + * + * Written by Steve Underwood + * + * Copyright (C) 2003 Steve Underwood + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id: spandsp.h.in,v 1.14 2009/01/07 13:31:53 steveu Exp $ + */ + +/*! \file */ + +#if !defined(_SPANDSP_H_) +#define _SPANDSP_H_ + +#undef SPANDSP_USE_FIXED_POINT +#undef SPANDSP_MISALIGNED_ACCESS_FAILS + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif + +#if defined(SPANDSP_EXPOSE_INTERNAL_STRUCTURES) +#include +#endif +/*- End of file ------------------------------------------------------------*/ Added: freeswitch/trunk/libs/win32/Download TIFF.2008.vcproj ============================================================================== --- (empty file) +++ freeswitch/trunk/libs/win32/Download TIFF.2008.vcproj Fri Jan 30 13:15:06 2009 @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Added: freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.2008.vcproj ============================================================================== --- (empty file) +++ freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.2008.vcproj Fri Jan 30 13:15:06 2009 @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Modified: freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c (original) +++ freeswitch/trunk/src/mod/applications/mod_fax/mod_fax.c Fri Jan 30 13:15:06 2009 @@ -34,6 +34,26 @@ #include +#ifdef WIN32 + __inline float rintf(float flt) + { + _asm + { fld flt + frndint + } + } + + __inline double rint(double dbl) + { + __asm + { + fld dbl + frndint + } + } + +#endif + #define SPANDSP_EXPOSE_INTERNAL_STRUCTURES #include #include From mrene at freeswitch.org Fri Jan 30 14:48:44 2009 From: mrene at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 16:48:44 -0600 Subject: [Freeswitch-svn] [commit] r11568 - freeswitch/trunk/src Message-ID: Author: mrene Date: Fri Jan 30 16:48:44 2009 New Revision: 11568 Log: Don't double-clear state handlers when uuid_bridging Modified: freeswitch/trunk/src/switch_ivr_bridge.c Modified: freeswitch/trunk/src/switch_ivr_bridge.c ============================================================================== --- freeswitch/trunk/src/switch_ivr_bridge.c (original) +++ freeswitch/trunk/src/switch_ivr_bridge.c Fri Jan 30 16:48:44 2009 @@ -523,6 +523,22 @@ /*.on_consume_media */ audio_bridge_on_consume_media, }; +static switch_status_t uuid_bridge_on_reset(switch_core_session_t *session); +static switch_status_t uuid_bridge_on_hibernate(switch_core_session_t *session); +static switch_status_t uuid_bridge_on_soft_execute(switch_core_session_t *session); + +static const switch_state_handler_table_t uuid_bridge_state_handlers = { + /*.on_init */ NULL, + /*.on_routing */ NULL, + /*.on_execute */ NULL, + /*.on_hangup */ NULL, + /*.on_exchange_media */ NULL, + /*.on_soft_execute */ uuid_bridge_on_soft_execute, + /*.on_consume_media */ uuid_bridge_on_hibernate, + /*.on_hibernate */ uuid_bridge_on_hibernate, + /*.on_reset */ uuid_bridge_on_reset +}; + static switch_status_t uuid_bridge_on_reset(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); @@ -551,7 +567,7 @@ const char *other_uuid = NULL; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CUSTOM SOFT_EXECUTE\n", switch_channel_get_name(channel)); - switch_channel_clear_state_handler(channel, NULL); + switch_channel_clear_state_handler(channel, &uuid_bridge_state_handlers); if (!switch_channel_test_flag(channel, CF_ORIGINATOR)) { return SWITCH_STATUS_SUCCESS; @@ -637,18 +653,6 @@ return SWITCH_STATUS_FALSE; } -static const switch_state_handler_table_t uuid_bridge_state_handlers = { - /*.on_init */ NULL, - /*.on_routing */ NULL, - /*.on_execute */ NULL, - /*.on_hangup */ NULL, - /*.on_exchange_media */ NULL, - /*.on_soft_execute */ uuid_bridge_on_soft_execute, - /*.on_consume_media */ uuid_bridge_on_hibernate, - /*.on_hibernate */ uuid_bridge_on_hibernate, - /*.on_reset */ uuid_bridge_on_reset -}; - static switch_status_t signal_bridge_on_hibernate(switch_core_session_t *session) { switch_channel_t *channel = NULL; From anthm at freeswitch.org Fri Jan 30 15:08:55 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 17:08:55 -0600 Subject: [Freeswitch-svn] [commit] r11569 - freeswitch/trunk/src Message-ID: Author: anthm Date: Fri Jan 30 17:08:55 2009 New Revision: 11569 Log: move var expansion deeper into the core for executing app Modified: freeswitch/trunk/src/switch_core_session.c Modified: freeswitch/trunk/src/switch_core_session.c ============================================================================== --- freeswitch/trunk/src/switch_core_session.c (original) +++ freeswitch/trunk/src/switch_core_session.c Fri Jan 30 17:08:55 2009 @@ -1225,7 +1225,6 @@ { switch_application_interface_t *application_interface; char *expanded = NULL; - const char *var; if ((application_interface = switch_loadable_module_get_application_interface(app)) == 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Application %s\n", app); @@ -1253,6 +1252,27 @@ } } + switch_core_session_exec(session, application_interface, expanded); + + UNPROTECT_INTERFACE(application_interface); + + return SWITCH_STATUS_SUCCESS; +} + +SWITCH_DECLARE(switch_status_t) switch_core_session_exec(switch_core_session_t *session, + const switch_application_interface_t *application_interface, const char *arg) +{ + switch_app_log_t *log, *lp; + switch_event_t *event; + const char *var; + switch_channel_t *channel = switch_core_session_get_channel(session); + char *expanded = NULL; + const char *app; + + switch_assert(application_interface); + + app = application_interface->interface_name; + if (arg && (expanded = switch_channel_expand_variables(session->channel, arg)) != arg) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Expanded String %s(%s)\n", switch_channel_get_name(session->channel), app, expanded); } @@ -1272,25 +1292,6 @@ } } - switch_core_session_exec(session, application_interface, expanded); - - if (expanded != arg) { - switch_safe_free(expanded); - } - - UNPROTECT_INTERFACE(application_interface); - - return SWITCH_STATUS_SUCCESS; -} - -SWITCH_DECLARE(switch_status_t) switch_core_session_exec(switch_core_session_t *session, - const switch_application_interface_t *application_interface, const char *arg) -{ - switch_app_log_t *log, *lp; - switch_event_t *event; - const char *var; - switch_channel_t *channel = switch_core_session_get_channel(session); - if (!arg) { arg = ""; } @@ -1327,7 +1328,7 @@ switch_channel_set_variable(session->channel, SWITCH_CURRENT_APPLICATION_VARIABLE, application_interface->interface_name); - application_interface->application_function(session, arg); + application_interface->application_function(session, expanded); if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_EXECUTE_COMPLETE) == SWITCH_STATUS_SUCCESS) { const char *resp = switch_channel_get_variable(session->channel, SWITCH_CURRENT_APPLICATION_RESPONSE_VARIABLE); @@ -1338,6 +1339,10 @@ switch_event_fire(&event); } + if (expanded != arg) { + switch_safe_free(expanded); + } + return SWITCH_STATUS_SUCCESS; } From anthm at freeswitch.org Fri Jan 30 15:19:38 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 17:19:38 -0600 Subject: [Freeswitch-svn] [commit] r11570 - in freeswitch/trunk/src: . include mod/languages/mod_java mod/languages/mod_lua mod/languages/mod_managed mod/languages/mod_perl mod/languages/mod_python Message-ID: Author: anthm Date: Fri Jan 30 17:19:38 2009 New Revision: 11570 Log: FSCORE-282 Modified: freeswitch/trunk/src/include/switch_cpp.h freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp freeswitch/trunk/src/switch_cpp.cpp Modified: freeswitch/trunk/src/include/switch_cpp.h ============================================================================== --- freeswitch/trunk/src/include/switch_cpp.h (original) +++ freeswitch/trunk/src/include/switch_cpp.h Fri Jan 30 17:19:38 2009 @@ -337,7 +337,7 @@ SWITCH_DECLARE(void) waitForAnswer(CoreSession *calling_session); - SWITCH_DECLARE(void) execute(char *app, char *data = NULL); + SWITCH_DECLARE(void) execute(const char *app, const char *data = NULL); SWITCH_DECLARE(void) sendEvent(Event * sendME); Modified: freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp ============================================================================== --- freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp (original) +++ freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp Fri Jan 30 17:19:38 2009 @@ -2906,7 +2906,7 @@ arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0); if (!arg3) return ; } - (arg1)->execute(arg2,arg3); + (arg1)->execute((char const *)arg2,(char const *)arg3); if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3); } @@ -2925,7 +2925,7 @@ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); if (!arg2) return ; } - (arg1)->execute(arg2); + (arg1)->execute((char const *)arg2); if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); } Modified: freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp ============================================================================== --- freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp (original) +++ freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp Fri Jan 30 17:19:38 2009 @@ -6589,8 +6589,8 @@ SWIG_check_num_args("execute",3,3) if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("execute",1,"CoreSession *"); - if(!lua_isstring(L,2)) SWIG_fail_arg("execute",2,"char *"); - if(!lua_isstring(L,3)) SWIG_fail_arg("execute",3,"char *"); + if(!lua_isstring(L,2)) SWIG_fail_arg("execute",2,"char const *"); + if(!lua_isstring(L,3)) SWIG_fail_arg("execute",3,"char const *"); if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_CoreSession,0))){ SWIG_fail_ptr("CoreSession_execute",1,SWIGTYPE_p_CoreSession); @@ -6598,7 +6598,7 @@ arg2 = (char *)lua_tostring(L, 2); arg3 = (char *)lua_tostring(L, 3); - (arg1)->execute(arg2,arg3); + (arg1)->execute((char const *)arg2,(char const *)arg3); SWIG_arg=0; return SWIG_arg; @@ -6618,14 +6618,14 @@ SWIG_check_num_args("execute",2,2) if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("execute",1,"CoreSession *"); - if(!lua_isstring(L,2)) SWIG_fail_arg("execute",2,"char *"); + if(!lua_isstring(L,2)) SWIG_fail_arg("execute",2,"char const *"); if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_CoreSession,0))){ SWIG_fail_ptr("CoreSession_execute",1,SWIGTYPE_p_CoreSession); } arg2 = (char *)lua_tostring(L, 2); - (arg1)->execute(arg2); + (arg1)->execute((char const *)arg2); SWIG_arg=0; return SWIG_arg; Modified: freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx ============================================================================== --- freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx (original) +++ freeswitch/trunk/src/mod/languages/mod_managed/freeswitch_wrap.cxx Fri Jan 30 17:19:38 2009 @@ -21517,7 +21517,7 @@ arg2 = (char *)jarg2; arg3 = (char *)jarg3; arg4 = (switch_media_flag_t)jarg4; - result = (uint32_t)switch_ivr_schedule_broadcast(arg1,arg2,arg3,arg4); + result = (uint32_t)switch_ivr_schedule_broadcast(arg1,(char const *)arg2,(char const *)arg3,arg4); jresult = (unsigned long)result; return jresult; } @@ -27643,7 +27643,7 @@ arg1 = (CoreSession *)jarg1; arg2 = (char *)jarg2; arg3 = (char *)jarg3; - (arg1)->execute(arg2,arg3); + (arg1)->execute((char const *)arg2,(char const *)arg3); } Modified: freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp ============================================================================== --- freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp (original) +++ freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp Fri Jan 30 17:19:38 2009 @@ -8937,15 +8937,15 @@ arg1 = reinterpret_cast< CoreSession * >(argp1); res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_execute" "', argument " "2"" of type '" "char *""'"); + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_execute" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); if (!SWIG_IsOK(res3)) { - SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "CoreSession_execute" "', argument " "3"" of type '" "char *""'"); + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "CoreSession_execute" "', argument " "3"" of type '" "char const *""'"); } arg3 = reinterpret_cast< char * >(buf3); - (arg1)->execute(arg2,arg3); + (arg1)->execute((char const *)arg2,(char const *)arg3); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; @@ -8982,10 +8982,10 @@ arg1 = reinterpret_cast< CoreSession * >(argp1); res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_execute" "', argument " "2"" of type '" "char *""'"); + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_execute" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); - (arg1)->execute(arg2); + (arg1)->execute((char const *)arg2); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; @@ -11483,17 +11483,17 @@ SWIG_TypeClientData(SWIGTYPE_p_IVRMenu, (void*) "freeswitch::IVRMenu"); SWIG_TypeClientData(SWIGTYPE_p_API, (void*) "freeswitch::API"); SWIG_TypeClientData(SWIGTYPE_p_input_callback_state, (void*) "freeswitch::input_callback_state_t"); - /*@SWIG:/usr/local/share/swig/1.3.35/perl5/perltypemaps.swg,64,%set_constant@*/ do { + /*@SWIG:/usr/share/swig/1.3.35/perl5/perltypemaps.swg,64,%set_constant@*/ do { SV *sv = get_sv((char*) SWIG_prefix "S_HUP", TRUE | 0x2 | GV_ADDMULTI); sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(S_HUP))); SvREADONLY_on(sv); } while(0) /*@SWIG@*/; - /*@SWIG:/usr/local/share/swig/1.3.35/perl5/perltypemaps.swg,64,%set_constant@*/ do { + /*@SWIG:/usr/share/swig/1.3.35/perl5/perltypemaps.swg,64,%set_constant@*/ do { SV *sv = get_sv((char*) SWIG_prefix "S_FREE", TRUE | 0x2 | GV_ADDMULTI); sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(S_FREE))); SvREADONLY_on(sv); } while(0) /*@SWIG@*/; - /*@SWIG:/usr/local/share/swig/1.3.35/perl5/perltypemaps.swg,64,%set_constant@*/ do { + /*@SWIG:/usr/share/swig/1.3.35/perl5/perltypemaps.swg,64,%set_constant@*/ do { SV *sv = get_sv((char*) SWIG_prefix "S_RDLOCK", TRUE | 0x2 | GV_ADDMULTI); sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(S_RDLOCK))); SvREADONLY_on(sv); Modified: freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp ============================================================================== --- freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp (original) +++ freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp Fri Jan 30 17:19:38 2009 @@ -8609,15 +8609,15 @@ arg1 = reinterpret_cast< CoreSession * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_execute" "', argument " "2"" of type '" "char *""'"); + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_execute" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); if (!SWIG_IsOK(res3)) { - SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "CoreSession_execute" "', argument " "3"" of type '" "char *""'"); + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "CoreSession_execute" "', argument " "3"" of type '" "char const *""'"); } arg3 = reinterpret_cast< char * >(buf3); - (arg1)->execute(arg2,arg3); + (arg1)->execute((char const *)arg2,(char const *)arg3); resultobj = SWIG_Py_Void(); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; if (alloc3 == SWIG_NEWOBJ) delete[] buf3; @@ -8649,10 +8649,10 @@ arg1 = reinterpret_cast< CoreSession * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_execute" "', argument " "2"" of type '" "char *""'"); + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_execute" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); - (arg1)->execute(arg2); + (arg1)->execute((char const *)arg2); resultobj = SWIG_Py_Void(); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; @@ -8706,8 +8706,8 @@ fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'CoreSession_execute'.\n" " Possible C/C++ prototypes are:\n" - " execute(CoreSession *,char *,char *)\n" - " execute(CoreSession *,char *)\n"); + " execute(CoreSession *,char const *,char const *)\n" + " execute(CoreSession *,char const *)\n"); return NULL; } Modified: freeswitch/trunk/src/switch_cpp.cpp ============================================================================== --- freeswitch/trunk/src/switch_cpp.cpp (original) +++ freeswitch/trunk/src/switch_cpp.cpp Fri Jan 30 17:19:38 2009 @@ -580,18 +580,15 @@ return switch_channel_get_variable(channel, var); } -SWITCH_DECLARE(void) CoreSession::execute(char *app, char *data) +SWITCH_DECLARE(void) CoreSession::execute(const char *app, const char *data) { const switch_application_interface_t *application_interface; this_check_void(); sanity_check_noreturn; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CoreSession::execute. app: %s data:%s\n", app, data); - if ((application_interface = switch_loadable_module_get_application_interface(app))) { - begin_allow_threads(); - switch_core_session_exec(session, application_interface, data); - end_allow_threads(); - } + begin_allow_threads(); + switch_core_session_execute_application(session, app, data); + end_allow_threads(); } SWITCH_DECLARE(void) CoreSession::setDTMFCallback(void *cbfunc, char *funcargs) { From brian at freeswitch.org Fri Jan 30 15:33:53 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 17:33:53 -0600 Subject: [Freeswitch-svn] [commit] r11571 - freeswitch/trunk/conf/autoload_configs Message-ID: Author: brian Date: Fri Jan 30 17:33:53 2009 New Revision: 11571 Log: forgot to add sla conference profile Modified: freeswitch/trunk/conf/autoload_configs/conference.conf.xml Modified: freeswitch/trunk/conf/autoload_configs/conference.conf.xml ============================================================================== --- freeswitch/trunk/conf/autoload_configs/conference.conf.xml (original) +++ freeswitch/trunk/conf/autoload_configs/conference.conf.xml Fri Jan 30 17:33:53 2009 @@ -174,5 +174,15 @@ + + + + + + + + + + From anthm at freeswitch.org Fri Jan 30 15:43:13 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 17:43:13 -0600 Subject: [Freeswitch-svn] [commit] r11572 - freeswitch/trunk/src Message-ID: Author: anthm Date: Fri Jan 30 17:43:12 2009 New Revision: 11572 Log: revert silence gen code for comparison Modified: freeswitch/trunk/src/switch_resample.c Modified: freeswitch/trunk/src/switch_resample.c ============================================================================== --- freeswitch/trunk/src/switch_resample.c (original) +++ freeswitch/trunk/src/switch_resample.c Fri Jan 30 17:43:12 2009 @@ -201,6 +201,7 @@ } } +#if SILENCE_METHOD_ONE SWITCH_DECLARE(void) switch_generate_sln_silence(int16_t *data, uint32_t samples, uint32_t divisor) { int16_t x; @@ -223,6 +224,31 @@ data++; } } +#else + +SWITCH_DECLARE(void) switch_generate_sln_silence(int16_t *data, uint32_t samples, uint32_t divisor) +{ + int16_t rnd = 0, rnd2, x; + uint32_t i; + int sum_rnd = 0; + + assert(divisor); + + rnd2 = (int16_t) (intptr_t) &data + switch_epoch_time_now(NULL); + + for (i = 0; i < samples; i++, sum_rnd = 0) { + for (x = 0; x < 10; x++) { + rnd += ((x + i) * rnd2); + sum_rnd += rnd; + } + switch_normalize_to_16bit(sum_rnd); + *data = (int16_t) ((int16_t) sum_rnd / (int) divisor); + + data++; + } +} + +#endif SWITCH_DECLARE(uint32_t) switch_merge_sln(int16_t *data, uint32_t samples, int16_t *other_data, uint32_t other_samples) { From anthm at freeswitch.org Fri Jan 30 15:46:00 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 17:46:00 -0600 Subject: [Freeswitch-svn] [commit] r11573 - freeswitch/trunk/src Message-ID: Author: anthm Date: Fri Jan 30 17:46:00 2009 New Revision: 11573 Log: doh Modified: freeswitch/trunk/src/switch_core_session.c Modified: freeswitch/trunk/src/switch_core_session.c ============================================================================== --- freeswitch/trunk/src/switch_core_session.c (original) +++ freeswitch/trunk/src/switch_core_session.c Fri Jan 30 17:46:00 2009 @@ -1224,7 +1224,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_execute_application(switch_core_session_t *session, const char *app, const char *arg) { switch_application_interface_t *application_interface; - char *expanded = NULL; if ((application_interface = switch_loadable_module_get_application_interface(app)) == 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Application %s\n", app); @@ -1252,7 +1251,7 @@ } } - switch_core_session_exec(session, application_interface, expanded); + switch_core_session_exec(session, application_interface, arg); UNPROTECT_INTERFACE(application_interface); From brian at freeswitch.org Fri Jan 30 16:16:27 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 18:16:27 -0600 Subject: [Freeswitch-svn] [commit] r11574 - freeswitch/trunk/src Message-ID: Author: brian Date: Fri Jan 30 18:16:27 2009 New Revision: 11574 Log: clean up arg vs expanded Modified: freeswitch/trunk/src/switch_channel.c freeswitch/trunk/src/switch_core_session.c Modified: freeswitch/trunk/src/switch_channel.c ============================================================================== --- freeswitch/trunk/src/switch_channel.c (original) +++ freeswitch/trunk/src/switch_channel.c Fri Jan 30 18:16:27 2009 @@ -1,3 +1,4 @@ + /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application * Copyright (C) 2005/2006, Anthony Minessale II @@ -592,7 +593,8 @@ if (ok) { switch_event_add_header_string(channel->variables, SWITCH_STACK_BOTTOM, varname, value); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Invalid data (contains a variable)\n"); + abort(); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Invalid data (${%s} contains a variable)\n", varname); } } switch_mutex_unlock(channel->profile_mutex); Modified: freeswitch/trunk/src/switch_core_session.c ============================================================================== --- freeswitch/trunk/src/switch_core_session.c (original) +++ freeswitch/trunk/src/switch_core_session.c Fri Jan 30 18:16:27 2009 @@ -1299,7 +1299,7 @@ log = switch_core_session_alloc(session, sizeof(*log)); log->app = switch_core_session_strdup(session, application_interface->interface_name); - log->arg = switch_core_session_strdup(session, arg); + log->arg = switch_core_session_strdup(session, expanded); for (lp = session->app_log; lp && lp->next; lp = lp->next); @@ -1311,13 +1311,13 @@ } switch_channel_set_variable(channel, SWITCH_CURRENT_APPLICATION_VARIABLE, application_interface->interface_name); - switch_channel_set_variable(channel, SWITCH_CURRENT_APPLICATION_DATA_VARIABLE, arg); + switch_channel_set_variable(channel, SWITCH_CURRENT_APPLICATION_DATA_VARIABLE, expanded); switch_channel_set_variable(channel, SWITCH_CURRENT_APPLICATION_RESPONSE_VARIABLE, NULL); if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_EXECUTE) == SWITCH_STATUS_SUCCESS) { switch_channel_event_set_data(session->channel, event); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application", application_interface->interface_name); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-Data", arg); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-Data", expanded); switch_event_fire(&event); } @@ -1333,7 +1333,7 @@ const char *resp = switch_channel_get_variable(session->channel, SWITCH_CURRENT_APPLICATION_RESPONSE_VARIABLE); switch_channel_event_set_data(session->channel, event); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application", application_interface->interface_name); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-Data", arg); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-Data", expanded); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-Response", resp ? resp : "_none_"); switch_event_fire(&event); } From mrene at freeswitch.org Fri Jan 30 18:48:35 2009 From: mrene at freeswitch.org (FreeSWITCH SVN) Date: Fri, 30 Jan 2009 20:48:35 -0600 Subject: [Freeswitch-svn] [commit] r11575 - freeswitch/trunk/src/include Message-ID: Author: mrene Date: Fri Jan 30 20:48:35 2009 New Revision: 11575 Log: add \remark to switch_ivr_uuid_bridge Modified: freeswitch/trunk/src/include/switch_ivr.h Modified: freeswitch/trunk/src/include/switch_ivr.h ============================================================================== --- freeswitch/trunk/src/include/switch_ivr.h (original) +++ freeswitch/trunk/src/include/switch_ivr.h Fri Jan 30 20:48:35 2009 @@ -466,6 +466,7 @@ \brief Bridge two existing sessions \param originator_uuid the uuid of the originator \param originatee_uuid the uuid of the originator + \remark Any custom state handlers on both channels will be deleted \return SWITCH_STATUS_SUCCESS if all is well */ SWITCH_DECLARE(switch_status_t) switch_ivr_uuid_bridge(const char *originator_uuid, const char *originatee_uuid); From gmaruzz at freeswitch.org Sat Jan 31 01:25:47 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Sat, 31 Jan 2009 03:25:47 -0600 Subject: [Freeswitch-svn] [commit] r11576 - freeswitch/branches/gmaruzz/mod_skypiax Message-ID: Author: gmaruzz Date: Sat Jan 31 03:25:47 2009 New Revision: 11576 Log: skypiax: moving switch specific things out of skypiax_protocol.c, and cosmetics Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/mod_skypiax.c Sat Jan 31 03:25:47 2009 @@ -706,6 +706,8 @@ uint32_t interface_id = 0, to = 0, max = 0; + tech_pvt = NULL; + for (param = switch_xml_child(myinterface, "param"); param; param = param->next) { char *var = (char *) switch_xml_attr_soft(param, "name"); char *val = (char *) switch_xml_attr_soft(param, "value"); @@ -808,13 +810,16 @@ memset(&newconf, '\0', sizeof(newconf)); globals.SKYPIAX_INTERFACES[interface_id] = newconf; - DEBUGA_SKYPE("CONFIGURING interface_id=%d\n", SKYPIAX_P_LOG, interface_id); + + tech_pvt=&globals.SKYPIAX_INTERFACES[interface_id]; + switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].interface_id, id); if (name) { switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].name, name); } else { switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].name, "N/A"); } + DEBUGA_SKYPE("CONFIGURING interface_id=%d\n", SKYPIAX_P_LOG, interface_id); #ifdef WIN32 globals.SKYPIAX_INTERFACES[interface_id].tcp_cli_port = (unsigned short) atoi(tcp_cli_port); @@ -915,6 +920,8 @@ for (i = 0; i < SKYPIAX_MAX_INTERFACES; i++) { if (strlen(globals.SKYPIAX_INTERFACES[i].name)) { + tech_pvt = &globals.SKYPIAX_INTERFACES[i]; + DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].interface_id=%s\n", SKYPIAX_P_LOG, i, i, globals.SKYPIAX_INTERFACES[i].interface_id); DEBUGA_SKYPE("i=%d globals.SKYPIAX_INTERFACES[%d].X11_display=%s\n", @@ -1082,7 +1089,7 @@ skypiax_do_tcp_cli_thread, tech_pvt, skypiax_module_pool); DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG); - skypiax_sleep(100000); + switch_sleep(100000); return 0; Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax.h Sat Jan 31 03:25:47 2009 @@ -245,7 +245,6 @@ int skypiax_skype_call(private_t * tech_pvt, char *idest, int timeout); int skypiax_skype_senddigit(private_t * tech_pvt, char digit); -#define skypiax_sleep switch_sleep void * skypiax_do_tcp_srv_thread_func(void *obj); void *SWITCH_THREAD_FUNC skypiax_do_tcp_srv_thread(switch_thread_t * thread, void *obj); Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Sat Jan 31 03:25:47 2009 @@ -1,5 +1,9 @@ #include "skypiax.h" +#define skypiax_sleep switch_sleep +#define skypiax_file_write switch_file_write +#define skypiax_file_read switch_file_read + extern switch_memory_pool_t *skypiax_module_pool; extern int option_debug; extern switch_endpoint_interface_t *skypiax_endpoint_interface; @@ -145,7 +149,7 @@ howmany = len; #ifdef WIN32 - switch_file_write(tech_pvt->audiopipe[1], totalbuf, &howmany); + skypiax_file_write(tech_pvt->audiopipe[1], totalbuf, &howmany); #else /* WIN32 */ howmany = write(tech_pvt->audiopipe[1], totalbuf, howmany); #endif /* WIN32 */ @@ -170,7 +174,7 @@ unsigned int howmany; howmany = len; - switch_file_write(tech_pvt->audiopipe[1], srv_in, &howmany); + skypiax_file_write(tech_pvt->audiopipe[1], srv_in, &howmany); #else /* WIN32 */ len = write(tech_pvt->audiopipe[1], srv_in, len); #endif /* WIN32 */ @@ -191,7 +195,7 @@ } #ifdef WIN32 - switch_file_write(tech_pvt->audiopipe[1], totalbuf, &howmany); + skypiax_file_write(tech_pvt->audiopipe[1], totalbuf, &howmany); #else /* WIN32 */ howmany = write(tech_pvt->audiopipe[1], totalbuf, howmany); #endif /* WIN32 */ @@ -222,14 +226,14 @@ } #ifdef WIN32 kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); - switch_file_write(tech_pvt->audiopipe[1], kill_cli_buff, &kill_cli_size); + skypiax_file_write(tech_pvt->audiopipe[1], kill_cli_buff, &kill_cli_size); kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); - switch_file_write(tech_pvt->audioskypepipe[1], kill_cli_buff, &kill_cli_size); + skypiax_file_write(tech_pvt->audioskypepipe[1], kill_cli_buff, &kill_cli_size); tech_pvt->interface_state = SKYPIAX_STATE_DOWN; kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); - switch_file_write(tech_pvt->audiopipe[1], kill_cli_buff, &kill_cli_size); + skypiax_file_write(tech_pvt->audiopipe[1], kill_cli_buff, &kill_cli_size); kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); - switch_file_write(tech_pvt->audioskypepipe[1], kill_cli_buff, &kill_cli_size); + skypiax_file_write(tech_pvt->audioskypepipe[1], kill_cli_buff, &kill_cli_size); #else /* WIN32 */ kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); len = write(tech_pvt->audiopipe[1], kill_cli_buff, kill_cli_size); @@ -357,7 +361,7 @@ if ((SAMPLERATE_SKYPIAX - 8000) == 0) { got = SAMPLES_PER_FRAME * sizeof(short); #ifdef WIN32 - switch_file_read(tech_pvt->audioskypepipe[0], cli_in, &got); + skypiax_file_read(tech_pvt->audioskypepipe[0], cli_in, &got); #else /* WIN32 */ got = read(tech_pvt->audioskypepipe[0], cli_in, got); #endif /* WIN32 */ @@ -387,7 +391,7 @@ } else if (SAMPLERATE_SKYPIAX == 16000) { got = SAMPLES_PER_FRAME * sizeof(short); #ifdef WIN32 - switch_file_read(tech_pvt->audioskypepipe[0], cli_in, &got); + skypiax_file_read(tech_pvt->audioskypepipe[0], cli_in, &got); #else /* WIN32 */ got = read(tech_pvt->audioskypepipe[0], cli_in, got); #endif /* WIN32 */ @@ -495,7 +499,7 @@ if (rt > 0) { samples = SAMPLES_PER_FRAME * sizeof(short); #ifdef WIN32 - switch_file_read(tech_pvt->audiopipe[0], tech_pvt->read_frame.data, &samples); + skypiax_file_read(tech_pvt->audiopipe[0], tech_pvt->read_frame.data, &samples); #else /* WIN32 */ samples = read(tech_pvt->audiopipe[0], tech_pvt->read_frame.data, samples); #endif /* WIN32 */ @@ -596,7 +600,7 @@ sizeof(msg_from_skype) - 2); howmany = strlen(msg_from_skype) + 1; - switch_file_write(tech_pvt->SkypiaxHandles.fdesc[1], msg_from_skype, &howmany); + skypiax_file_write(tech_pvt->SkypiaxHandles.fdesc[1], msg_from_skype, &howmany); //NOTICA("From Skype API: %s\n", SKYPIAX_P_LOG, (const char *) poCopyData->lpData); lReturnCode = 1; } @@ -778,8 +782,6 @@ } } - //switch_thread_exit(thread, SWITCH_STATUS_SUCCESS); - return NULL; } @@ -1134,7 +1136,7 @@ if (tech_pvt->SkypiaxHandles.fdesc[0]) { howmany = sizeof(read_from_pipe); #ifdef WIN32 - switch_file_read(tech_pvt->SkypiaxHandles.fdesc[0], read_from_pipe, &howmany); + skypiax_file_read(tech_pvt->SkypiaxHandles.fdesc[0], read_from_pipe, &howmany); #else /* WIN32 */ howmany = read(tech_pvt->SkypiaxHandles.fdesc[0], read_from_pipe, sizeof(read_from_pipe)); From gmaruzz at freeswitch.org Sat Jan 31 05:51:01 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Sat, 31 Jan 2009 07:51:01 -0600 Subject: [Freeswitch-svn] [commit] r11577 - freeswitch/branches/gmaruzz/mod_skypiax/asterisk Message-ID: Author: gmaruzz Date: Sat Jan 31 07:51:01 2009 New Revision: 11577 Log: skypiax: compiles and run on asterisk (at least 1.2 series). Does nothing Added: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/Makefile freeswitch/branches/gmaruzz/mod_skypiax/asterisk/chan_skypiax.c freeswitch/branches/gmaruzz/mod_skypiax/asterisk/cyg_no_pthread_kill.c freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax.conf freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax.h freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax_protocol.c Added: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/Makefile ============================================================================== --- (empty file) +++ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/Makefile Sat Jan 31 07:51:01 2009 @@ -0,0 +1,89 @@ +# +# Asterisk -- A telephony toolkit for Linux. +# +# Makefile for channel drivers +# +# Copyright (C) 1999-2005, Mark Spencer +# +# Mark Spencer +# +# Edited By Belgarath <> Aug 28 2004 +# Added bare bones ultrasparc-linux support. +# +# This program is free software, distributed under the terms of +# the GNU General Public License +# + +#ASTERISK INCLUDE FILES +#The directory that contains the Asterisk include files (eg: /usr/include or /usr/include/asterisk or /usr/src/asterisk/include or ...) +#AST_INCLUDE_DIR=/usr/src/asterisk/include +#AST_INCLUDE_DIR=/home/maruzz/devel/svn_asterisk_trunk/include +#AST_INCLUDE_DIR=/home/maruzz/devel/svn_asterisk_branches_160/include +#AST_INCLUDE_DIR=/home/maruzz/devel/svn_asterisk_branches_12/include +#AST_INCLUDE_DIR=/home/maruzz/devel/svn_asterisk_branches_14/include +AST_INCLUDE_DIR=/home/maruzz/devel/svn_celliax_trunk/asterisk-1.2.rev137401/include + +#ASTERISK VERSION +#Uncomment one of the following lines to match your Asterisk series +#CFLAGS+=-DASTERISK_VERSION_1_4 +#CFLAGS+=-DASTERISK_VERSION_1_6 +CFLAGS+=-DASTERISK_VERSION_1_2 + +#LINUX SKYPE SUPPORT (Celliax for Cygwin always supports Skype) +SKYPE_LIB=-L/usr/X11R6/lib -lX11 + +CFLAGS+=-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations +CFLAGS+=-g3 + + + +CFLAGS+=-I$(AST_INCLUDE_DIR) -I. +CFLAGS+=-D_REENTRANT -D_GNU_SOURCE +#CFLAGS+=-O6 +CFLAGS+=-march=i686 +CFLAGS+=-fomit-frame-pointer +ifeq ($(shell uname -m),x86_64) +CFLAGS+=-fPIC +endif + +SVNDEF := -D'SKYPIAX_SVN_VERSION="$(shell svnversion -n .)"' +CFLAGS += $(SVNDEF) + + +SOLINK=-shared -Xlinker -x +CHANNEL_LIBS=chan_skypiax.so +CC=gcc + +OSARCH=$(shell uname -s) + +ifeq ($(findstring CYGWIN,$(OSARCH)),CYGWIN) +# definition of pthread_kill as a printf (or as a noop) is required for Asterisk (and skypiax) to run on Cygwin +# without it, each time (often) pthread_kill is called (by any thread, with any signal, URG included), bad things happen +CC=gcc -D pthread_kill=cyg_no_pthreadkill +AST_DLL_DIR=/home/maruzz/devel/svn_asterisk_branches_12 +CYGSOLINK=-Wl,--out-implib=lib$@.a -Wl,--export-all-symbols cyg_no_pthread_kill.o +CYGSOLIB=-L/usr/lib/w32api -lrpcrt4 -L/lib/mingw -lwinmm -L$(AST_DLL_DIR) -lasterisk.dll -L$(AST_DLL_DIR)/res -lres_features.so +SKYPE_LIB= +CHANNEL_LIBS=cyg_no_pthread_kill.o chan_skypiax.so +endif + +all: $(CHANNEL_LIBS) + +clean: + rm -f *.so *.o *.so.a + + +#chan_skypiax section begins + +#to debug threads and lock on 1.4 uncomment the following +#CFLAGS+=-include /usr/src/asterisk/include/asterisk/autoconfig.h + + +cyg_no_pthread_kill.o: cyg_no_pthread_kill.c + $(CC) $(CFLAGS) -c -o cyg_no_pthread_kill.o cyg_no_pthread_kill.c +chan_skypiax.o: chan_skypiax.c + $(CC) $(CFLAGS) -c -o chan_skypiax.o chan_skypiax.c +chan_skypiax.so: chan_skypiax.o skypiax_protocol.o + $(CC) $(SOLINK) -o $@ ${CYGSOLINK} chan_skypiax.o skypiax_protocol.o -lm -ldl $(SKYPE_LIB) ${CYGSOLIB} +#chan_skypiax section ends + Added: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/chan_skypiax.c ============================================================================== --- (empty file) +++ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/chan_skypiax.c Sat Jan 31 07:51:01 2009 @@ -0,0 +1,2161 @@ +//indent -gnu -ts4 -br -brs -cdw -lp -ce -nbfda -npcs -nprs -npsl -nbbo -saf -sai -saw -cs -bbo -nhnl -nut -sob -l90 +#include "skypiax.h" + +/* LOCKS */ +/*! \brief Protect the skypiax_usecnt */ +AST_MUTEX_DEFINE_STATIC(skypiax_usecnt_lock); +/*! \brief Protect the monitoring thread, so only one process can kill or start it, and not + * when it's doing something critical. */ +AST_MUTEX_DEFINE_STATIC(skypiax_monlock); +/*! \brief Protect the interfaces list */ +AST_MUTEX_DEFINE_STATIC(skypiax_iflock); + +/* GLOBAL VARIABLES */ +int running = 1; +char skypiax_console_active_array[50] = ""; +char *skypiax_console_active = skypiax_console_active_array; +/*! \brief Count of active channels for this module */ +int skypiax_usecnt = 0; +int skypiax_debug = 0; +/*! \brief This is the thread for the monitor which checks for input on the channels + * which are not currently in use. */ +pthread_t skypiax_monitor_thread = AST_PTHREADT_NULL; +pthread_t skypiax_monitor_audio_thread = AST_PTHREADT_NULL; + +/* CONSTANTS */ +/*! \brief Textual description for this module */ +const char skypiax_desc[] = "Skypiax, Skype Driver"; +/*! \brief Textual type for this module */ +const char skypiax_type[] = "Skypiax"; +/*! \brief Name of configuration file for this module */ +const char skypiax_config[] = "skypiax.conf"; + +char skypiax_console_skypiax_usage[] = + " \n" "chan_skypiax commands info\n" " \n" + " chan_skypiax adds to Asterisk the following CLI commands:\n" " \n" + " CLI COMMANDS:\n" " skypiax_hangup\n" " skypiax_dial\n" + " skypiax_console\n" " skypiax_playback_boost\n" + " skypiax_capture_boost\n" " skypiax_skype\n" + " skypiax_dir_import\n" "\n" + " You can type 'help [command]' to obtain more specific info on usage.\n" + " \n"; +char skypiax_console_hangup_usage[] = + "Usage: skypiax_hangup\n" + " Hangs up any call currently placed on the \"current\" skypiax_console (Skypiax) channel.\n" + " Enter 'help skypiax_console' on how to change the \"current\" skypiax_console\n"; +char skypiax_console_playback_boost_usage[] = + "Usage: skypiax_playback_boost [value]\n" + " Shows or set the value of boost applied to the outgoing sound (voice). Possible values are: 0 (no boost applied), -40 to 40 (negative to positive range, in db). Without specifying a value, it just shows the current value. The value is for the \"current\" skypiax_console (Skypiax) channel.\n" + " Enter 'help skypiax_console' on how to change the \"current\" skypiax_console\n"; +char skypiax_console_capture_boost_usage[] = + "Usage: skypiax_capture_boost [value]\n" + " Shows or set the value of boost applied to the incoming sound (voice). Possible values are: 0 (no boost applied), -40 to 40 (negative to positive range, in db). Without specifying a value, it just shows the current value. The value is for the \"current\" skypiax_console (Skypiax) channel.\n" + " Enter 'help skypiax_console' on how to change the \"current\" skypiax_console\n"; + +char skypiax_console_dial_usage[] = + "Usage: skypiax_dial [DTMFs]\n" + " Dials a given DTMF string in the call currently placed on the\n" + " \"current\" skypiax_console (Skypiax) channel.\n" + " Enter 'help skypiax_console' on how to change the \"current\" skypiax_console\n"; + +char skypiax_console_skypiax_console_usage[] = + "Usage: skypiax_console [interface] | [show]\n" + " If used without a parameter, displays which interface is the \"current\"\n" + " skypiax_console. If a device is specified, the \"current\" skypiax_console is changed to\n" + " the interface specified.\n" + " If the parameter is \"show\", the available interfaces are listed\n"; + +char skypiax_console_skype_usage[] = + "Usage: skypiax_skype [command string]\n" + " Send the 'command string' skype_msg to the Skype client connected to the \"current\" skypiax_console (Skypiax) channel.\n" + " Enter 'help skypiax_console' on how to change the \"current\" skypiax_console\n"; + +char skypiax_console_skypiax_dir_import_usage[] = + "Usage: skypiax_dir_import [add | replace]\n" + " Write in the directoriax.conf config file all the entries found in 'Contacts' list of the Skype client connected to the \"current\" skypiax_console.\n" + " You can choose between 'add' to the end of the directoriax.conf file, or 'replace' the whole file with this new content.\n" + " Enter 'help skypiax_console' on how to change the \"current\" skypiax_console\n"; + +/*! \brief Definition of this channel for PBX channel registration */ +const struct ast_channel_tech skypiax_tech = { + .type = skypiax_type, + .description = skypiax_desc, + .capabilities = AST_FORMAT_SLINEAR, + .requester = skypiax_request, + .hangup = skypiax_hangup, + .answer = skypiax_answer, + .read = skypiax_read, + .call = skypiax_call, + .write = skypiax_write, + .indicate = skypiax_indicate, + .fixup = skypiax_fixup, + .devicestate = skypiax_devicestate, +#ifdef ASTERISK_VERSION_1_4 + .send_digit_begin = skypiax_senddigit_begin, + .send_digit_end = skypiax_senddigit_end, +#else /* ASTERISK_VERSION_1_4 */ + .send_digit = skypiax_senddigit, +#endif /* ASTERISK_VERSION_1_4 */ +}; + +/*! \brief fake skypiax_pvt structure values, + * just for logging purposes */ +struct skypiax_pvt skypiax_log_struct = { + .name = "none", +}; + +/*! \brief Default skypiax_pvt structure values, + * used by skypiax_mkif to initialize the interfaces */ +struct skypiax_pvt skypiax_default = { + .interface_state = AST_STATE_DOWN, + .skype_callflow = 0, + .context = "default", + .language = "en", + .exten = "s", + .next = NULL, + .owner = NULL, + .controldev_thread = AST_PTHREADT_NULL, + .skypiax_sound_rate = 8000, + .skypiax_sound_capt_fd = -1, + .capture_boost = 0, + .playback_boost = 0, + .stripmsd = 0, + .skype = 0, + .skypiax_dir_entry_extension_prefix = 6, +}; + +/*! + * \brief PVT structure for a skypiax interface (channel), created by skypiax_mkif + */ +struct skypiax_pvt *skypiax_iflist = NULL; + +struct ast_cli_entry myclis[] = { + {{"skypiax_hangup", NULL}, skypiax_console_hangup, + "Hangup a call on the skypiax_console", + skypiax_console_hangup_usage}, + {{"skypiax_playback_boost", NULL}, skypiax_console_playback_boost, "playback boost", + skypiax_console_playback_boost_usage}, + {{"skypiax_capture_boost", NULL}, skypiax_console_capture_boost, "capture boost", + skypiax_console_capture_boost_usage}, + {{"skypiax_usage", NULL}, skypiax_console_skypiax, "chan_skypiax commands info", + skypiax_console_skypiax_usage}, + {{"skypiax_skype", NULL}, skypiax_console_skype, "Skype msg", + skypiax_console_skype_usage}, + {{"skypiax_dial", NULL}, skypiax_console_dial, + "Dial an extension on the skypiax_console", + skypiax_console_dial_usage}, + {{"skypiax_console", NULL}, skypiax_console_set_active, + "Sets/displays active skypiax_console", + skypiax_console_skypiax_console_usage}, + {{"skypiax_dir_import", NULL}, skypiax_console_skypiax_dir_import, + "Write the directoriax.conf file, used by directoriax app", + skypiax_console_skypiax_dir_import_usage}, +}; + +/* IMPLEMENTATION */ + +void skypiax_unlocka_log(void *x) +{ + ast_mutex_t *y; + y = x; + int i; + + for (i = 0; i < 5; i++) { //let's be generous + + ast_log(LOG_DEBUG, + SKYPIAX_SVN_VERSION + "[%-7lx] I'm a dying thread, and I'm to go unlocking mutex %p for the %dth time\n", + (unsigned long int) pthread_self(), y, i); + + ast_mutex_unlock(y); + } + ast_log(LOG_DEBUG, + SKYPIAX_SVN_VERSION + "[%-7lx] I'm a dying thread, I've finished unlocking mutex %p\n", + (unsigned long int) pthread_self(), y); +} + +int skypiax_queue_control(struct ast_channel *c, int control) +{ + struct skypiax_pvt *p = c->tech_pvt; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } +/* queue the frame */ + if (p) + p->control_to_send = control; + else { + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; + } + DEBUGA_PBX("Queued CONTROL FRAME %d\n", SKYPIAX_P_LOG, control); + +/* wait for the frame to be sent */ + while (p->control_to_send) + usleep(1); + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + +int skypiax_devicestate(void *data) +{ + struct skypiax_pvt *p = NULL; + char *name = data; + int res = AST_DEVICE_INVALID; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (!data) { + ERRORA("Devicestate requested with no data\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return res; + } + + /* lock the interfaces' list */ + LOKKA(&skypiax_iflock); + /* make a pointer to the first interface in the interfaces list */ + p = skypiax_iflist; + /* Search for the requested interface and verify if is unowned */ + while (p) { + size_t length = strlen(p->name); + /* is this the requested interface? */ + if (strncmp(name, p->name, length) == 0) { + /* is this interface unowned? */ + if (!p->owner) { + res = AST_DEVICE_NOT_INUSE; + DEBUGA_PBX("Interface is NOT OWNED by a channel\n", SKYPIAX_P_LOG); + } else { + /* interface owned by a channel */ + res = AST_DEVICE_INUSE; + DEBUGA_PBX("Interface is OWNED by a channel\n", SKYPIAX_P_LOG); + } + + /* we found the requested interface, bail out from the while loop */ + break; + } + /* not yet found, next please */ + p = p->next; + } + /* unlock the interfaces' list */ + UNLOCKA(&skypiax_iflock); + + if (res == AST_DEVICE_INVALID) { + ERRORA("Checking device state for interface [%s] returning AST_DEVICE_INVALID\n", + SKYPIAX_P_LOG, name); + } + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return res; +} + +#ifndef ASTERISK_VERSION_1_4 +int skypiax_indicate(struct ast_channel *c, int cond) +#else +int skypiax_indicate(struct ast_channel *c, int cond, const void *data, size_t datalen) +#endif +{ + struct skypiax_pvt *p = c->tech_pvt; + int res = 0; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + NOTICA("Let's INDICATE %d\n", SKYPIAX_P_LOG, cond); + + switch (cond) { + case AST_CONTROL_BUSY: + case AST_CONTROL_CONGESTION: + case AST_CONTROL_RINGING: + case -1: + res = -1; /* Ask for inband indications */ + break; + case AST_CONTROL_PROGRESS: + case AST_CONTROL_PROCEEDING: + case AST_CONTROL_VIDUPDATE: + case AST_CONTROL_HOLD: + case AST_CONTROL_UNHOLD: +#ifdef ASTERISK_VERSION_1_4 + case AST_CONTROL_SRCUPDATE: +#endif /* ASTERISK_VERSION_1_4 */ + break; + default: + WARNINGA("Don't know how to display condition %d on %s\n", SKYPIAX_P_LOG, cond, + c->name); + /* The core will play inband indications for us if appropriate */ + res = -1; + } + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return res; +} + +/*! \brief PBX interface function -build skypiax pvt structure + * skypiax calls initiated by the PBX arrive here */ +struct ast_channel *skypiax_request(const char *type, int format, void *data, int *cause) +{ + struct skypiax_pvt *p = NULL; + struct ast_channel *tmp = NULL; + char *name = data; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + + DEBUGA_PBX("Try to request type: %s, name: %s, cause: %d," " format: %d\n", + SKYPIAX_P_LOG, type, name, *cause, format); + + if (!data) { + ERRORA("Channel requested with no data\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; + } + + /* lock the interfaces' list */ + LOKKA(&skypiax_iflock); + /* make a pointer to the first interface in the interfaces list */ + p = skypiax_iflist; + /* Search for the requested interface and verify if is unowned and format compatible */ + //TODO implement groups a la chan_zap + while (p) { + size_t length = strlen(p->name); + /* is this the requested interface? */ + if (strncmp(name, p->name, length) == 0) { + /* is the requested format supported by this interface? */ + if ((format & AST_FORMAT_SLINEAR) != 0) { + /* is this interface unowned? */ + if (!p->owner) { + DEBUGA_PBX("Requesting: %s, name: %s, format: %d\n", SKYPIAX_P_LOG, type, name, + format); + /* create a new channel owning this interface */ + tmp = skypiax_new(p, AST_STATE_DOWN, p->context); + if (!tmp) { + /* the channel was not created, probable memory allocation error */ + *cause = AST_CAUSE_SWITCH_CONGESTION; + } + } else { + /* interface owned by another channel */ + WARNINGA("owned by another channel\n", SKYPIAX_P_LOG); + *cause = AST_CAUSE_REQUESTED_CHAN_UNAVAIL; + } + } else { + /* requested format not supported */ + WARNINGA("format %d not supported\n", SKYPIAX_P_LOG, format); + *cause = AST_CAUSE_BEARERCAPABILITY_NOTAVAIL; + } + /* we found the requested interface, bail out from the while loop */ + break; + } + /* not yet found, next please */ + p = p->next; + } + /* unlock the interfaces' list */ + UNLOCKA(&skypiax_iflock); + /* restart the monitor so it will watch only the remaining unowned interfaces */ + skypiax_restart_monitor(); + if (tmp == NULL) { + /* new channel was not created */ + WARNINGA("Unable to create new Skypiax channel %s\n", SKYPIAX_P_LOG, name); + } + /* return the newly created channel */ + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return tmp; +} + +/*! \brief Hangup skypiax call + * Part of PBX interface, called from ast_hangup */ + +int skypiax_hangup(struct ast_channel *c) +{ + struct skypiax_pvt *p; + + /* get our skypiax pvt interface from channel */ + p = c->tech_pvt; + /* if there is not skypiax pvt why we are here ? */ + if (!p) { + ERRORA("Asked to hangup channel not connected\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; + } + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (p->skype && p->interface_state != AST_STATE_DOWN) { + char msg_to_skype[1024]; + p->interface_state = AST_STATE_HANGUP_REQUESTED; + DEBUGA_SKYPE("hanging up skype call: %s\n", SKYPIAX_P_LOG, p->skype_call_id); + //sprintf(msg_to_skype, "SET CALL %s STATUS FINISHED", p->skype_call_id); + sprintf(msg_to_skype, "ALTER CALL %s HANGUP", p->skype_call_id); + skypiax_skype_write(p, msg_to_skype); + } + + while (p->interface_state != AST_STATE_DOWN) { + usleep(10000); + } + DEBUGA_SKYPE("Now is really DOWN\n", SKYPIAX_P_LOG); + /* shutdown the serial monitoring thread */ + if (p->controldev_thread && (p->controldev_thread != AST_PTHREADT_NULL) + && (p->controldev_thread != AST_PTHREADT_STOP)) { + if (pthread_cancel(p->controldev_thread)) { + ERRORA("controldev_thread pthread_cancel failed, maybe he killed himself?\n", + SKYPIAX_P_LOG); + } + /* push it, maybe is stuck in a select or so */ + if (pthread_kill(p->controldev_thread, SIGURG)) { + DEBUGA_SERIAL("controldev_thread pthread_kill failed, no problem\n", SKYPIAX_P_LOG); + } +#ifndef __CYGWIN__ /* under cygwin, this seems to be not reliable, get stuck at times */ + /* wait for it to die */ + if (pthread_join(p->controldev_thread, NULL)) { + ERRORA("controldev_thread pthread_join failed, BAD\n", SKYPIAX_P_LOG); + } +#else /* __CYGWIN__ */ +/* allow the serial thread to die */ + usleep(300000); //300msecs +#endif /* __CYGWIN__ */ + } + p->controldev_thread = AST_PTHREADT_NULL; + + p->interface_state = AST_STATE_DOWN; + p->skype_callflow = CALLFLOW_CALL_IDLE; + + DEBUGA_PBX("I'll send AST_CONTROL_HANGUP\n", SKYPIAX_P_LOG); + ast_queue_control(p->owner, AST_CONTROL_HANGUP); + DEBUGA_PBX("I've sent AST_CONTROL_HANGUP\n", SKYPIAX_P_LOG); + + /* subtract one to the usage count of Skypiax-type channels */ + LOKKA(&skypiax_usecnt_lock); + skypiax_usecnt--; + if (skypiax_usecnt < 0) + ERRORA("Usecnt < 0???\n", SKYPIAX_P_LOG); + UNLOCKA(&skypiax_usecnt_lock); + ast_update_use_count(); + + /* our skypiax pvt interface is no more part of a channel */ + p->owner = NULL; + /* our channel has no more this skypiax pvt interface to manage */ + c->tech_pvt = NULL; + /* set the channel state to DOWN, eg. available, not in active use */ + if (ast_setstate(c, AST_STATE_DOWN)) { + ERRORA("ast_setstate failed, BAD\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + + if (option_debug) + DEBUGA_PBX("Hanged Up\n", SKYPIAX_P_LOG); + /* restart the monitor thread, so it can recheck which interfaces it have to watch during its loop (the interfaces that are not owned by channels) */ + if (skypiax_restart_monitor()) { + ERRORA("skypiax_restart_monitor failed, BAD\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + +/*! \brief Answer incoming call, + * Part of PBX interface */ +int skypiax_answer(struct ast_channel *c) +{ + struct skypiax_pvt *p = c->tech_pvt; + int res; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + /* whle ringing, we just wait, the skype thread will answer */ + while (p->interface_state == AST_STATE_RING) { + usleep(10000); //10msec + } + if (p->interface_state != AST_STATE_UP) { + ERRORA("call answering failed\n", SKYPIAX_P_LOG); + res = -1; + } else { + if (option_debug) + DEBUGA_PBX("call answered\n", SKYPIAX_P_LOG); + res = 0; + } + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return res; +} + +#ifdef ASTERISK_VERSION_1_4 +int skypiax_senddigit_begin(struct ast_channel *c, char digit) +{ + struct skypiax_pvt *p = c->tech_pvt; + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + + DEBUGA_PBX("DIGIT BEGIN received: %c\n", SKYPIAX_P_LOG, digit); + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + +int skypiax_senddigit_end(struct ast_channel *c, char digit, unsigned int duration) +{ + struct skypiax_pvt *p = c->tech_pvt; + char msg_to_skype[1024]; + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + + NOTICA("DIGIT END received: %c %d\n", SKYPIAX_P_LOG, digit, duration); + + sprintf(msg_to_skype, "SET CALL %s DTMF %c", p->skype_call_id, digit); + + skypiax_skype_write(p, msg_to_skype); + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} +#else /* ASTERISK_VERSION_1_4 */ +int skypiax_senddigit(struct ast_channel *c, char digit) +{ + struct skypiax_pvt *p = c->tech_pvt; + char msg_to_skype[1024]; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + NOTICA("DIGIT received: %c\n", SKYPIAX_P_LOG, digit); + + sprintf(msg_to_skype, "SET CALL %s DTMF %c", p->skype_call_id, digit); + + skypiax_skype_write(p, msg_to_skype); + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + +#endif /* ASTERISK_VERSION_1_4 */ +//struct ast_frame *skypiax_skypeaudio_read(struct skypiax_pvt *p) +//#define SAMPLES_PER_FRAME 160 +/*! \brief Read audio frames from channel */ +struct ast_frame *skypiax_read(struct ast_channel *c) +{ + struct skypiax_pvt *p = c->tech_pvt; + static struct ast_frame f; + static short __buf[SKYPIAX_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2]; + short *buf; + int samples; + + if (option_debug > 100) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + +/* if there are control frames queued to be sent by skypiax_queue_control, send it the first */ +//TODO maybe better a real queue? + if (p && p->owner && p->control_to_send) { + ast_queue_control(p->owner, p->control_to_send); + DEBUGA_PBX("Sent CONTROL FRAME %d\n", SKYPIAX_P_LOG, p->control_to_send); + p->control_to_send = 0; + } + + memset(__buf, '\0', (SKYPIAX_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2)); + + buf = __buf + AST_FRIENDLY_OFFSET / 2; + + f.frametype = AST_FRAME_NULL; + f.subclass = 0; + f.samples = 0; + f.datalen = 0; + f.data = NULL; + f.offset = 0; + f.src = skypiax_type; + f.mallocd = 0; + f.delivery.tv_sec = 0; + f.delivery.tv_usec = 0; + +/* if the call is not active (ie: answered), do not send audio frames, they would pile up in a lag queue */ + if (p->owner && p->owner->_state != AST_STATE_UP) { + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return &f; + } + + if ((samples = read(p->audiopipe[0], buf, SAMPLES_PER_FRAME * sizeof(short))) != 320) { + DEBUGA_SOUND("read=====> NOT GOOD samples=%d expected=%d\n", SKYPIAX_P_LOG, samples, + SAMPLES_PER_FRAME * sizeof(short)); + usleep(100); + //do nothing + } else { + //DEBUGA_SOUND("read=====> GOOD samples=%d\n", SKYPIAX_P_LOG, samples); + /* A real frame */ + f.frametype = AST_FRAME_VOICE; + f.subclass = AST_FORMAT_SLINEAR; + f.samples = SKYPIAX_FRAME_SIZE; + f.datalen = SKYPIAX_FRAME_SIZE * 2; + f.data = buf; + f.offset = AST_FRIENDLY_OFFSET; + f.src = skypiax_type; + f.mallocd = 0; + + if (p->capture_boost) + skypiax_sound_boost(&f, p->capture_boost); + } + + if (option_debug > 100) { + DEBUGA_SOUND("samples=%d\n", SKYPIAX_P_LOG, samples); + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return &f; +} + +/*! \brief Initiate skypiax call from PBX + * used from the dial() application + */ +int skypiax_call(struct ast_channel *c, char *idest, int timeout) +{ + struct skypiax_pvt *p = NULL; + p = c->tech_pvt; + char rdest[80], *where, dstr[100] = ""; + char *stringp = NULL; + int status; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if ((c->_state != AST_STATE_DOWN) + && (c->_state != AST_STATE_RESERVED)) { + ERRORA("skypiax_call called on %s, neither down nor reserved\n", SKYPIAX_P_LOG, + c->name); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + + if (option_debug > 1) + DEBUGA_PBX("skypiax_call to call idest: %s, timeout: %d!\n", SKYPIAX_P_LOG, idest, + timeout); + + strncpy(rdest, idest, sizeof(rdest) - 1); + stringp = rdest; + strsep(&stringp, "/"); + where = strsep(&stringp, "/"); + if (!where) { + ERRORA("Destination %s requires an actual destination (Skypiax/device/destination)\n", + SKYPIAX_P_LOG, idest); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + + strncpy(dstr, where + p->stripmsd, sizeof(dstr) - 1); + if (option_debug > 1) + DEBUGA_PBX("skypiax_call dialing idest: %s, timeout: %d, dstr: %s!\n", SKYPIAX_P_LOG, + idest, timeout, dstr); + + status = skypiax_skype_call(p, dstr, timeout); + if (status) { + WARNINGA("skypiax_call dialing failed: %d!\n", SKYPIAX_P_LOG, status); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + + if (option_debug > 1) + DEBUGA_PBX("skypiax_call dialed idest: %s, timeout: %d, dstr: %s!\n", SKYPIAX_P_LOG, + idest, timeout, dstr); + + ast_setstate(p->owner, AST_STATE_DIALING); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + +int skypiax_sound_boost(struct ast_frame *f, double boost) +{ +/* LUIGI RIZZO's magic */ + if (boost != 0) { /* scale and clip values */ + int i, x; + int16_t *ptr = (int16_t *) f->data; + for (i = 0; i < f->samples; i++) { + x = (ptr[i] * boost) / BOOST_SCALE; + if (x > 32767) { + x = 32767; + } else if (x < -32768) { + x = -32768; + } + ptr[i] = x; + } + } + return 0; +} + +/*! \brief Send audio frame to channel */ +int skypiax_write(struct ast_channel *c, struct ast_frame *f) +{ + struct skypiax_pvt *p = c->tech_pvt; + int sent; + + if (option_debug > 100) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (p->owner && p->owner->_state != AST_STATE_UP) { + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; + } + if (p->playback_boost) + skypiax_sound_boost(f, p->playback_boost); + + sent = write(p->audioskypepipe[1], (short *) f->data, f->datalen); + //skypiax_sound_write(p, f); + + if (option_debug > 100) { + DEBUGA_SOUND("sent=%d\n", SKYPIAX_P_LOG, sent); + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + +/*! \brief Fix up a channel: If a channel is consumed, this is called. + * Basically update any ->owner links */ +int skypiax_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) +{ + struct skypiax_pvt *p = newchan->tech_pvt; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (!p) { + ERRORA("No pvt after masquerade. Strange things may happen\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + + if (p->owner != oldchan) { + ERRORA("old channel wasn't %p but was %p\n", SKYPIAX_P_LOG, oldchan, p->owner); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + + p->owner = newchan; + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + +struct ast_channel *skypiax_new(struct skypiax_pvt *p, int state, char *context) +{ + struct ast_channel *tmp; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + /* alloc a generic channel struct */ +#ifndef ASTERISK_VERSION_1_4 + tmp = ast_channel_alloc(1); +#else + //tmp = ast_channel_alloc(1, state, 0, 0, "", p->exten, p->context, 0, ""); + //tmp = ast_channel_alloc(1, state, i->cid_num, i->cid_name, i->accountcode, i->exten, i->context, i->amaflags, "Skypiax/%s", p->name); + tmp = + ast_channel_alloc(1, state, 0, 0, "", p->exten, p->context, 0, "Skypiax/%s", p->name); + +#endif /* ASTERISK_VERSION_1_4 */ + if (tmp) { + + /* give a name to the newly created channel */ +#ifndef ASTERISK_VERSION_1_4 + snprintf(tmp->name, sizeof(tmp->name), "Skypiax/%s", p->name); + tmp->type = skypiax_type; +#else /* ASTERISK_VERSION_1_4 */ + ast_string_field_build(tmp, name, "Skypiax/%s", p->name); +#endif /* ASTERISK_VERSION_1_4 */ + + DEBUGA_PBX("new channel: name=%s requested_state=%d\n", SKYPIAX_P_LOG, tmp->name, + state); + + /* fd for the channel to poll for incoming audio */ + tmp->fds[0] = p->skypiax_sound_capt_fd; + + /* audio formats managed */ + tmp->nativeformats = AST_FORMAT_SLINEAR; + tmp->readformat = AST_FORMAT_SLINEAR; + tmp->writeformat = AST_FORMAT_SLINEAR; + /* the technology description (eg. the interface type) of the newly created channel is the Skypiax's one */ + tmp->tech = &skypiax_tech; + /* the technology pvt (eg. the interface) of the newly created channel is this interface pvt */ + tmp->tech_pvt = p; + + /* copy this interface default context, extension, language to the newly created channel */ + if (strlen(p->context)) + strncpy(tmp->context, p->context, sizeof(tmp->context) - 1); + if (strlen(p->exten)) + strncpy(tmp->exten, p->exten, sizeof(tmp->exten) - 1); +#ifndef ASTERISK_VERSION_1_4 + if (strlen(p->language)) + strncpy(tmp->language, p->language, sizeof(tmp->language) - 1); +#else + if (strlen(p->language)) + ast_string_field_set(tmp, language, p->language); +#endif /* ASTERISK_VERSION_1_4 */ + /* copy the requested context (not necessarily the interface default) to the newly created channel */ + if (strlen(context)) + strncpy(tmp->context, context, sizeof(tmp->context) - 1); + + /* copy this interface default callerid in the newly created channel */ + ast_set_callerid(tmp, !ast_strlen_zero(p->callid_number) ? p->callid_number : NULL, + !ast_strlen_zero(p->callid_name) ? p->callid_name : NULL, + !ast_strlen_zero(p->callid_number) ? p->callid_number : NULL); + + DEBUGA_PBX("callid_number=%s, callid_name=%s\n", SKYPIAX_P_LOG, p->callid_number, + p->callid_name); + + /* the owner of this interface pvt is the newly created channel */ + p->owner = tmp; + /* set the newly created channel state to the requested state */ + if (ast_setstate(tmp, state)) { + ERRORA("ast_setstate failed, BAD\n", SKYPIAX_P_LOG); + //ast_dsp_free(p->dsp); + ast_channel_free(tmp); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; + } + /* if the requested state is different from DOWN, let the pbx manage this interface (now part of the newly created channel) */ + if (state != AST_STATE_DOWN) { + DEBUGA_PBX("Try to start PBX on %s, state=%d\n", SKYPIAX_P_LOG, tmp->name, state); + if (ast_pbx_start(tmp)) { + ERRORA("Unable to start PBX on %s\n", SKYPIAX_P_LOG, tmp->name); + ast_channel_free(tmp); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; + } + } + /* let's start the serial monitoring thread too, so we can have serial signaling */ + if (ast_pthread_create(&p->controldev_thread, NULL, skypiax_do_controldev_thread, p) < + 0) { + ERRORA("Unable to start controldev thread.\n", SKYPIAX_P_LOG); + ast_channel_free(tmp); + tmp = NULL; + } + DEBUGA_SERIAL("STARTED controldev_thread=%lu STOP=%lu NULL=%lu\n", SKYPIAX_P_LOG, + (unsigned long) p->controldev_thread, (unsigned long) AST_PTHREADT_STOP, + (unsigned long) AST_PTHREADT_NULL); + + /* add one to the usage count of Skypiax-type channels */ + LOKKA(&skypiax_usecnt_lock); + skypiax_usecnt++; + UNLOCKA(&skypiax_usecnt_lock); + ast_update_use_count(); + + /* return the newly created channel */ + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return tmp; + } + ERRORA("failed memory allocation for Skypiax channel\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; +} + +/*! + * \brief Load the module into Asterisk and start its threads + * + * This function register the module into Asterisk, + * create the interfaces for the channels, + * start the auxiliary threads for the interfaces, + * then start a monitor thread. The monitor thread + * will signal Asterisk when an interface receive a call. + * + * + * \return zero on success, -1 on error. + */ +int load_module(void) +{ + int i; + struct ast_config *cfg; + struct skypiax_pvt *tmp; + struct skypiax_pvt *p = NULL; +#ifdef ASTERISK_VERSION_1_6 + struct ast_flags config_flags = { 0 }; +#endif /* ASTERISK_VERSION_1_6 */ + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + ast_log(LOG_DEBUG, "ENTERING FUNC\n"); + } +#if defined(WANT_SKYPE_X11) || defined(__CYGWIN__) +#ifndef __CYGWIN__ + if (!XInitThreads()) + ast_log(LOG_ERROR, "Not initialized XInitThreads!\n"); +#endif /* __CYGWIN__ */ +#if 0 + ast_register_atexit(skypiax_skype_disconnect); + ast_register_application(skype2skypiaxapp, skype2skypiax, skype2skypiaxsynopsis, + skype2skypiaxdescrip); + ast_register_application(skypiax2skypeapp, skypiax2skype, skypiax2skypesynopsis, + skypiax2skypedescrip); +#endif +#endif /* defined(WANT_SKYPE_X11) || defined(__CYGWIN__) */ + + /* make sure we can register our channel type with Asterisk */ + i = ast_channel_register(&skypiax_tech); + if (i < 0) { + ERRORA("Unable to register channel type '%s'\n", SKYPIAX_P_LOG, skypiax_type); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + /* load skypiax.conf config file */ +#ifdef ASTERISK_VERSION_1_6 + cfg = ast_config_load(skypiax_config, config_flags); +#else + cfg = ast_config_load(skypiax_config); +#endif /* ASTERISK_VERSION_1_6 */ + if (cfg != NULL) { + char *ctg = NULL; + int is_first_category = 1; + while ((ctg = ast_category_browse(cfg, ctg)) != NULL) { + /* create one interface for each category in skypiax.conf config file, first one set the defaults */ + tmp = skypiax_mkif(cfg, ctg, is_first_category); + if (tmp) { + DEBUGA_PBX + ("Created channel Skypiax: skypiax.conf category '[%s]', channel name '%s'" + "\n", SKYPIAX_P_LOG, ctg, tmp->name); + /* add interface to skypiax_iflist */ + tmp->next = skypiax_iflist; + skypiax_iflist = tmp; + /* next one will not be the first ;) */ + if (is_first_category == 1) { + is_first_category = 0; + skypiax_console_active = tmp->name; + } + } else { + ERRORA("Unable to create channel Skypiax from skypiax.conf category '[%s]'\n", + SKYPIAX_P_LOG, ctg); + /* if error, unload config from memory and return */ + ast_config_destroy(cfg); + ast_channel_unregister(&skypiax_tech); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + /* do it for each category described in config */ + } + + /* we finished, unload config from memory */ + ast_config_destroy(cfg); + } else { + ERRORA("Unable to load skypiax_config skypiax.conf\n", SKYPIAX_P_LOG); + ast_channel_unregister(&skypiax_tech); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } +#ifndef ASTERISK_VERSION_1_6 + ast_cli_register_multiple(myclis, sizeof(myclis) / sizeof(struct ast_cli_entry)); +#endif /* ASTERISK_VERSION_1_6 */ + /* start to monitor the interfaces (skypiax_iflist) for the first time */ + if (skypiax_restart_monitor()) { + ERRORA("skypiax_restart_monitor failed, BAD\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + +/*! + * \brief Unload the module from Asterisk and shutdown its threads + * + * This function unregister the module from Asterisk, + * destroy the interfaces for the channels, + * shutdown the auxiliary threads for the interfaces, + * then shutdown its monitor thread. + * + * \return zero on success, -1 on error. + */ +int unload_module(void) +{ + struct skypiax_pvt *p = NULL, *p2 = NULL; + int res; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + + /* unregister our channel type with Asterisk */ + ast_channel_unregister(&skypiax_tech); + ast_cli_unregister_multiple(myclis, sizeof(myclis) / sizeof(struct ast_cli_entry)); + +#if defined(WANT_SKYPE_X11) || defined(__CYGWIN__) +#ifndef __CYGWIN__ + //FIXME what to do? if (!XInitThreads()) + //FIXME what to do? ast_log(LOG_ERROR, "Not initialized XInitThreads!\n"); +#endif /* __CYGWIN__ */ +#if 0 + ast_unregister_atexit(skypiax_skype_disconnect); + ast_unregister_application(skype2skypiaxapp); + ast_unregister_application(skypiax2skypeapp); +#endif +#endif /* defined(WANT_SKYPE_X11) || defined(__CYGWIN__) */ + + /* lock the skypiax_monlock, kill the monitor thread, unlock the skypiax_monlock */ + LOKKA(&skypiax_monlock); + if (skypiax_monitor_thread && (skypiax_monitor_thread != AST_PTHREADT_NULL) + && (skypiax_monitor_thread != AST_PTHREADT_STOP)) { + if (pthread_cancel(skypiax_monitor_thread)) { + ERRORA("pthread_cancel failed, BAD\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + if (pthread_kill(skypiax_monitor_thread, SIGURG)) { + DEBUGA_PBX("pthread_kill failed\n", SKYPIAX_P_LOG); //maybe it just died + } +#ifndef __CYGWIN__ /* under cygwin, this seems to be not reliable, get stuck at times */ + if (pthread_join(skypiax_monitor_thread, NULL)) { + ERRORA("pthread_join failed, BAD\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } +#endif /* __CYGWIN__ */ + } + skypiax_monitor_thread = AST_PTHREADT_STOP; + UNLOCKA(&skypiax_monlock); + + if (skypiax_monitor_audio_thread && (skypiax_monitor_audio_thread != AST_PTHREADT_NULL) + && (skypiax_monitor_audio_thread != AST_PTHREADT_STOP)) { + + if (pthread_cancel(skypiax_monitor_audio_thread)) { + ERRORA("pthread_cancel skypiax_monitor_audio_thread failed, BAD\n", SKYPIAX_P_LOG); + } + if (pthread_kill(skypiax_monitor_audio_thread, SIGURG)) { + DEBUGA_PBX("pthread_kill skypiax_monitor_audio_thread failed, no problem\n", SKYPIAX_P_LOG); //maybe it just died + } + + if (pthread_join(skypiax_monitor_audio_thread, NULL)) { + ERRORA("pthread_join failed, BAD\n", SKYPIAX_P_LOG); + } + } + /* lock the skypiax_iflock, and go through the interfaces list (skypiax_iflist) */ + LOKKA(&skypiax_iflock); + p = skypiax_iflist; + while (p) { + /* for each interface in list */ + p2 = p->next; + /* shutdown the sound system, close sound fds, and if exist shutdown the sound managing threads */ + DEBUGA_SOUND("shutting down sound\n", SKYPIAX_P_LOG); + res = skypiax_sound_shutdown(p); + if (res == -1) { + ERRORA("Failed to shutdown sound\n", SKYPIAX_P_LOG); + } +#if 0 + /* if a dsp struct has been allocated, free it */ + if (p->dsp) { + ast_dsp_free(p->dsp); + p->dsp = NULL; + } +#endif + DEBUGA_PBX("freeing PVT\n", SKYPIAX_P_LOG); + /* free the pvt allocated memory */ + free(p); + /* next one, please */ + p = p2; + } + /* finished with the interfaces list, unlock the skypiax_iflock */ + UNLOCKA(&skypiax_iflock); + +#ifdef __CYGWIN__ + NOTICA("Sleping 5 secs, please wait...\n", SKYPIAX_P_LOG); + sleep(5); /* without this pause, for some unknown (to me) reason it crashes on cygwin */ +#endif /* __CYGWIN__ */ + NOTICA("Unloaded Skypiax Module\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + +/*! + * \brief Return the count of active channels for this module + * + * \return the count of active channels for this module + */ +int usecount() +{ + int res; + static struct skypiax_pvt *p = &skypiax_log_struct; + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } +/* lock the skypiax_usecnt lock */ + LOKKA(&skypiax_usecnt_lock); + /* retrieve the skypiax_usecnt */ + res = skypiax_usecnt; +/* unlock the skypiax_usecnt lock */ + UNLOCKA(&skypiax_usecnt_lock); + /* return the skypiax_usecnt */ + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return res; +} + +/*! + * \brief Return the textual description of the module + * + * \return the textual description of the module + */ +char *description() +{ + static struct skypiax_pvt *p = &skypiax_log_struct; + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return (char *) skypiax_desc; +} + +/*! + * \brief Return the ASTERISK_GPL_KEY + * + * \return the ASTERISK_GPL_KEY + */ +char *key() +{ + struct skypiax_pvt *p = NULL; + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + + if (option_debug) + NOTICA("Returning Key\n", SKYPIAX_P_LOG); + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return ASTERISK_GPL_KEY; +} + +/*! + * \brief Create and initialize one interface for the module + * \param cfg pointer to configuration data from skypiax.conf + * \param ctg pointer to a category name to be found in cfg + * \param is_first_category is this the first category in cfg + * + * This function create and initialize one interface for the module + * + * \return a pointer to the PVT structure of interface on success, NULL on error. + */ +struct skypiax_pvt *skypiax_mkif(struct ast_config *cfg, char *ctg, int is_first_category) +{ + struct skypiax_pvt *tmp; + struct ast_variable *v; + int res; + + int debug_all = 0; + int debug_at = 0; + int debug_fbus2 = 0; + int debug_serial = 0; + int debug_sound = 0; + int debug_pbx = 0; + int debug_skype = 0; + int debug_call = 0; + int debug_locks = 0; + int debug_monitorlocks = 0; + + ast_log(LOG_DEBUG, "ENTERING FUNC\n"); + /* alloc memory for PVT */ + tmp = malloc(sizeof(struct skypiax_pvt)); + if (tmp == NULL) { /* fail */ + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_TMP_LOG); + ast_log(LOG_DEBUG, "EXITING FUNC\n"); + } + return NULL; + } + /* clear memory for PVT */ + memset(tmp, 0, sizeof(struct skypiax_pvt)); + + /* if we are reading the "first" category of the config file, take SELECTED values as defaults, overriding the values in skypiax_default */ + if (is_first_category == 1) { + /* for each variable in category, copy it in the skypiax_default struct */ + for (v = ast_variable_browse(cfg, ctg); v; v = v->next) { + M_START(v->name, v->value); + + M_STR("context", skypiax_default.context) + M_STR("language", skypiax_default.language) + M_STR("extension", skypiax_default.exten) + M_F("playback_boost", + skypiax_store_boost(v->value, &skypiax_default.playback_boost)) + M_F("capture_boost", + skypiax_store_boost(v->value, &skypiax_default.capture_boost)) + M_UINT("skypiax_dir_entry_extension_prefix", + skypiax_default.skypiax_dir_entry_extension_prefix) + M_END(;); + } + } + + /* initialize the newly created PVT from the skypiax_default values */ + *tmp = skypiax_default; + + /* the category name becomes the interface name */ + tmp->name = strdup(ctg); + + /* for each category in config file, "first" included, read in ALL the values */ + for (v = ast_variable_browse(cfg, ctg); v; v = v->next) { + M_START(v->name, v->value); + + M_BOOL("debug_all", debug_all) + M_BOOL("debug_at", debug_at) + M_BOOL("debug_fbus2", debug_fbus2) + M_BOOL("debug_serial", debug_serial) + M_BOOL("debug_sound", debug_sound) + M_BOOL("debug_pbx", debug_pbx) + M_BOOL("debug_skype", debug_skype) + M_BOOL("debug_call", debug_call) + M_BOOL("debug_locks", debug_locks) + M_BOOL("debug_monitorlocks", debug_monitorlocks) + M_BOOL("skype", tmp->skype) + M_STR("context", tmp->context) + M_STR("language", tmp->language) + M_STR("extension", tmp->exten) + M_F("playback_boost", skypiax_store_boost(v->value, &tmp->playback_boost)) + M_F("capture_boost", skypiax_store_boost(v->value, &tmp->capture_boost)) + M_UINT("skypiax_dir_entry_extension_prefix", + tmp->skypiax_dir_entry_extension_prefix) + M_END(;); + } + + if (debug_all) { + skypiax_debug = skypiax_debug | DEBUG_ALL; + if (!option_debug) { + WARNINGA + ("DEBUG_ALL activated, but option_debug is 0. You have to set debug level higher than zero to see some debugging output. Please use the command \"set debug 10\" or start Asterisk with \"-dddddddddd\" option for full DEBUG_ALL debugging output.\n", + SKYPIAX_TMP_LOG); + } else { + NOTICA("DEBUG_ALL activated. \n", SKYPIAX_TMP_LOG); + } + } + + if (debug_fbus2) { + skypiax_debug = skypiax_debug | DEBUG_FBUS2; + if (!option_debug) { + WARNINGA + ("DEBUG_FBUS2 activated, but option_debug is 0. You have to set debug level higher than zero to see some debugging output. Please use the command \"set debug 10\" or start Asterisk with \"-dddddddddd\" option for full DEBUG_FBUS2 debugging output.\n", + SKYPIAX_TMP_LOG); + } else { + NOTICA("DEBUG_FBUS2 activated. \n", SKYPIAX_TMP_LOG); + } + } + + if (debug_serial) { + skypiax_debug = skypiax_debug | DEBUG_SERIAL; + if (!option_debug) { + WARNINGA + ("DEBUG_SERIAL activated, but option_debug is 0. You have to set debug level higher than zero to see some debugging output. Please use the command \"set debug 10\" or start Asterisk with \"-dddddddddd\" option for full DEBUG_SERIAL debugging output.\n", + SKYPIAX_TMP_LOG); + } else { + NOTICA("DEBUG_SERIAL activated. \n", SKYPIAX_TMP_LOG); + } + } + + if (debug_sound) { + skypiax_debug = skypiax_debug | DEBUG_SOUND; + if (!option_debug) { + WARNINGA + ("DEBUG_SOUND activated, but option_debug is 0. You have to set debug level higher than zero to see some debugging output. Please use the command \"set debug 10\" or start Asterisk with \"-dddddddddd\" option for full DEBUG_SOUND debugging output.\n", + SKYPIAX_TMP_LOG); + } else { + NOTICA("DEBUG_SOUND activated. \n", SKYPIAX_TMP_LOG); + } + } + + if (debug_pbx) { + skypiax_debug = skypiax_debug | DEBUG_PBX; + if (!option_debug) { + WARNINGA + ("DEBUG_PBX activated, but option_debug is 0. You have to set debug level higher than zero to see some debugging output. Please use the command \"set debug 10\" or start Asterisk with \"-dddddddddd\" option for full DEBUG_PBX debugging output.\n", + SKYPIAX_TMP_LOG); + } else { + NOTICA("DEBUG_PBX activated. \n", SKYPIAX_TMP_LOG); + } + } + + if (debug_skype) { + skypiax_debug = skypiax_debug | DEBUG_SKYPE; + if (!option_debug) { + WARNINGA + ("DEBUG_SKYPE activated, but option_debug is 0. You have to set debug level higher than zero to see some debugging output. Please use the command \"set debug 10\" or start Asterisk with \"-dddddddddd\" option for full DEBUG_SKYPE debugging output.\n", + SKYPIAX_TMP_LOG); + } else { + NOTICA("DEBUG_SKYPE activated. \n", SKYPIAX_TMP_LOG); + } + } + + if (debug_call) { + skypiax_debug = skypiax_debug | DEBUG_CALL; + if (!option_debug) { + WARNINGA + ("DEBUG_CALL activated, but option_debug is 0. You have to set debug level higher than zero to see some debugging output. Please use the command \"set debug 10\" or start Asterisk with \"-dddddddddd\" option for full DEBUG_CALL debugging output.\n", + SKYPIAX_TMP_LOG); + } else { + NOTICA("DEBUG_CALL activated. \n", SKYPIAX_TMP_LOG); + } + } + + if (debug_locks) { + skypiax_debug = skypiax_debug | DEBUG_LOCKS; + if (!option_debug) { + WARNINGA + ("DEBUG_LOCKS activated, but option_debug is 0. You have to set debug level higher than zero to see some debugging output. Please use the command \"set debug 10\" or start Asterisk with \"-dddddddddd\" option for full DEBUG_LOCKS debugging output.\n", + SKYPIAX_TMP_LOG); + } else { + NOTICA("DEBUG_LOCKS activated. \n", SKYPIAX_TMP_LOG); + } + } + + if (debug_monitorlocks) { + skypiax_debug = skypiax_debug | DEBUG_MONITORLOCKS; + if (!option_debug) { + WARNINGA + ("DEBUG_MONITORLOCKS activated, but option_debug is 0. You have to set debug level higher than zero to see some debugging output. Please use the command \"set debug 10\" or start Asterisk with \"-dddddddddd\" option for full DEBUG_MONITORLOCKS debugging output.\n", + SKYPIAX_TMP_LOG); + } else { + NOTICA("DEBUG_MONITORLOCKS activated. \n", SKYPIAX_TMP_LOG); + } + } + + if (option_debug > 1) { + DEBUGA_SOUND("playback_boost is %f\n", SKYPIAX_TMP_LOG, tmp->playback_boost); + DEBUGA_SOUND("capture_boost is %f\n", SKYPIAX_TMP_LOG, tmp->capture_boost); + } + /* if skype is true for this interface, let's check if another interface has skype true */ + if (tmp->skype) { + struct skypiax_pvt *p = NULL, *p2 = NULL; + /* lock the skypiax_iflock, maybe unneeded */ + LOKKA(&skypiax_iflock); + p = skypiax_iflist; + /* for each pvt in the interfaces list (skypiax_iflist) */ + while (p) { + p2 = p->next; + /* if another interface has skype true */ + if (p->skype) { + ERRORA + ("This interface (category '[%s]') has 'skype=yes' in config, but up in skypiax.conf config file the interface category '[%s]' has yet 'skype=yes'. Only one interface at time can support skype. I'm sure, I wrote it ;). Setting 'skype=no' for interface category '[%s] and continuing\n", + SKYPIAX_P_LOG, tmp->name, p->name, tmp->name); + /* set this interface's skype to false */ + tmp->skype = 0; + } + /* next interface, please */ + p = p2; + } + /* unlock the skypiax_iflock */ + UNLOCKA(&skypiax_iflock); + } +/* initialize the soundcard channels (input and output) used by this interface (a multichannel soundcard can be used by multiple interfaces), optionally starting the sound managing threads */ + res = skypiax_sound_init(tmp); + if (res == -1) { + ERRORA("Failed initializing sound device\n", SKYPIAX_TMP_LOG); + /* we failed, free the PVT */ + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_TMP_LOG); + } + free(tmp); + return NULL; + } + res = pipe(tmp->AsteriskHandlesAst.fdesc); + if (res) { + ast_log(LOG_ERROR, "Unable to create skype pipe\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_TMP_LOG); + } + free(tmp); + return NULL; + } + fcntl(tmp->AsteriskHandlesAst.fdesc[0], F_SETFL, O_NONBLOCK); + fcntl(tmp->AsteriskHandlesAst.fdesc[1], F_SETFL, O_NONBLOCK); + tmp->skype_thread = AST_PTHREADT_NULL; + if (tmp->skype) { + if (option_debug > 1) + ast_log(LOG_DEBUG, "TO BE started skype_thread=%lu STOP=%lu NULL=%lu\n", + (unsigned long) tmp->skype_thread, (unsigned long) AST_PTHREADT_STOP, + (unsigned long) AST_PTHREADT_NULL); +#ifdef __CYGWIN__ + if (ast_pthread_create + (&tmp->skype_thread, NULL, do_skypeapi_thread, &tmp->AsteriskHandlesAst) < 0) { + ast_log(LOG_ERROR, "Unable to start skype_main thread.\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_TMP_LOG); + } + free(tmp); + return NULL; + } +#else /* __CYGWIN__ */ +#ifdef WANT_SKYPE_X11 + if (option_debug > 1) + ast_log(LOG_DEBUG, "AsteriskHandlesfd: %d\n", tmp->AsteriskHandlesAst.fdesc[1]); + if (ast_pthread_create(&tmp->skype_thread, NULL, do_skypeapi_thread, tmp) < 0) { + ast_log(LOG_ERROR, "Unable to start skype_main thread.\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_TMP_LOG); + } + free(tmp); + return NULL; + } +#endif /* WANT_SKYPE_X11 */ +#endif /* __CYGWIN__ */ + usleep(100000); //0.1 sec + if( tmp->skype_thread == AST_PTHREADT_NULL){ + ast_log(LOG_ERROR, "Unable to start skype_main thread.\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_TMP_LOG); + } + free(tmp); + return NULL; + } + if (option_debug > 1) + ast_log(LOG_DEBUG, "STARTED skype_thread=%lu STOP=%lu NULL=%lu\n", + (unsigned long) tmp->skype_thread, (unsigned long) AST_PTHREADT_STOP, + (unsigned long) AST_PTHREADT_NULL); + } + + /* return the newly created skypiax_pvt */ + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_TMP_LOG); + } + return tmp; +} + +/*! \brief (Re)Start the module main monitor thread, watching for incoming calls on the interfaces */ +int skypiax_restart_monitor(void) +{ + static struct skypiax_pvt *p = &skypiax_log_struct; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + /* If we're supposed to be stopped -- stay stopped */ + if (skypiax_monitor_thread == AST_PTHREADT_STOP) { + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; + } + LOKKA(&skypiax_monlock); + /* Do not seems possible to me that this function can be called by the very same monitor thread, but let's be paranoid */ + if (skypiax_monitor_thread == pthread_self()) { + UNLOCKA(&skypiax_monlock); + ERRORA("Cannot kill myself\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + /* if the monitor thread exists */ + if (skypiax_monitor_thread != AST_PTHREADT_NULL) { + /* Wake up the thread, it can be stuck waiting in a select or so */ + pthread_kill(skypiax_monitor_thread, SIGURG); + } else { + /* the monitor thread does not exists, start a new monitor */ + if (ast_pthread_create(&skypiax_monitor_thread, NULL, skypiax_do_monitor, NULL) < 0) { + UNLOCKA(&skypiax_monlock); + ERRORA("Unable to start monitor thread.\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + } + UNLOCKA(&skypiax_monlock); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + +/*! \brief The skypiax monitoring thread + * \note This thread monitors all the skypiax interfaces that are not in a call + * (and thus do not have a separate thread) indefinitely + * */ +void *skypiax_do_monitor(void *data) +{ + fd_set rfds; + int res; + struct skypiax_pvt *p = NULL; + int max = -1; + struct timeval to; + time_t now_timestamp; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL)) { + ERRORA("Unable to set cancel type to deferred\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; + } + + for (;;) { + pthread_testcancel(); + /* Don't let anybody kill us right away. Nobody should lock the interface list + and wait for the monitor list, but the other way around is okay. */ + PUSHA_UNLOCKA(&skypiax_monlock); + MONITORLOKKA(&skypiax_monlock); + /* Lock the interface list */ + PUSHA_UNLOCKA(&skypiax_iflock); + MONITORLOKKA(&skypiax_iflock); + /* Build the stuff we're going to select on, that is the skypiax_serial_fd of every + skypiax_pvt that does not have an associated owner channel. In the case of FBUS2 3310 + and in the case of PROTOCOL_NO_SERIAL we add the audio_fd as well, because there is not serial signaling of incoming calls */ + FD_ZERO(&rfds); + + time(&now_timestamp); + p = skypiax_iflist; + while (p) { + if (!p->owner) { + /* This interface needs to be watched, as it lacks an owner */ + + if (p->skype) { + if (FD_ISSET(p->AsteriskHandlesAst.fdesc[0], &rfds)) + ERRORA("Descriptor %d (AsteriskHandlesAst.fdesc[0]) appears twice ?\n", + SKYPIAX_P_LOG, p->AsteriskHandlesAst.fdesc[0]); + + if (p->AsteriskHandlesAst.fdesc[0] > 0) { + FD_SET(p->AsteriskHandlesAst.fdesc[0], &rfds); + if (p->AsteriskHandlesAst.fdesc[0] > max) + max = p->AsteriskHandlesAst.fdesc[0]; + + } + } + + } + /* next interface, please */ + p = p->next; + } + /* Okay, now that we know what to do, release the interface lock */ + MONITORUNLOCKA(&skypiax_iflock); + POPPA_UNLOCKA(&skypiax_iflock); + /* And from now on, we're okay to be killed, so release the monitor lock as well */ + MONITORUNLOCKA(&skypiax_monlock); + POPPA_UNLOCKA(&skypiax_monlock); + + /* you want me to die? */ + pthread_testcancel(); + + /* Wait for something to happen */ + to.tv_sec = 0; + to.tv_usec = 500000; /* we select with this timeout because under cygwin we avoid the signal usage, so there is no way to end the thread if it is stuck waiting for select */ + res = ast_select(max + 1, &rfds, NULL, NULL, &to); + + /* you want me to die? */ + pthread_testcancel(); + + /* Okay, select has finished. Let's see what happened. */ + + /* If there are errors... */ + if (res < 0) { + if (errno == EINTR) /* EINTR is just the select + being interrupted by a SIGURG, or so */ + continue; + else { + ERRORA("select returned %d: %s\n", SKYPIAX_P_LOG, res, strerror(errno)); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; + } + } + + /* must not be killed while skypiax_iflist is locked */ + PUSHA_UNLOCKA(&skypiax_monlock); + MONITORLOKKA(&skypiax_monlock); + /* Alright, lock the interface list again, and let's look and see what has + happened */ + PUSHA_UNLOCKA(&skypiax_iflock); + MONITORLOKKA(&skypiax_iflock); + + p = skypiax_iflist; + for (; p; p = p->next) { + + if (p->skype) { + if (FD_ISSET(p->AsteriskHandlesAst.fdesc[0], &rfds)) { + res = skypiax_skype_read(p); + if (res == CALLFLOW_INCOMING_CALLID || res == CALLFLOW_INCOMING_RING) { + //ast_log(LOG_NOTICE, "CALLFLOW_INCOMING_RING SKYPE\n"); + DEBUGA_SKYPE("CALLFLOW_INCOMING_RING\n", SKYPIAX_P_LOG); + skypiax_new(p, AST_STATE_RING, p->context /* p->context */ ); + } + } + } + + } + MONITORUNLOCKA(&skypiax_iflock); + POPPA_UNLOCKA(&skypiax_iflock); + MONITORUNLOCKA(&skypiax_monlock); + POPPA_UNLOCKA(&skypiax_monlock); + pthread_testcancel(); + } +/* Never reached */ + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; + +} + +/*! + * \brief Initialize the soundcard channels (input and output) used by one interface (a multichannel soundcard can be used by multiple interfaces) + * \param p the skypiax_pvt of the interface + * + * This function initialize the soundcard channels (input and output) used by one interface (a multichannel soundcard can be used by multiple interfaces). It simply pass its parameters to the right function for the sound system for which has been compiled, eg. alsa_init for ALSA, oss_init for OSS, winmm_init for Windows Multimedia, etc and return the result + * + * \return zero on success, -1 on error. + */ + +int skypiax_sound_init(struct skypiax_pvt *p) +{ + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return skypiax_skypeaudio_init(p); +} + +/*! + * \brief Shutdown the soundcard channels (input and output) used by one interface (a multichannel soundcard can be used by multiple interfaces) + * \param p the skypiax_pvt of the interface + * + * This function shutdown the soundcard channels (input and output) used by one interface (a multichannel soundcard can be used by multiple interfaces). It simply pass its parameters to the right function for the sound system for which has been compiled, eg. alsa_shutdown for ALSA, oss_shutdown for OSS, winmm_shutdown for Windows Multimedia, etc and return the result + * + * \return zero on success, -1 on error. + */ + +int skypiax_sound_shutdown(struct skypiax_pvt *p) +{ + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + //return skypiax_portaudio_shutdown(p); + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; +} + +/*! \brief Read audio frames from interface */ +struct ast_frame *skypiax_sound_read(struct skypiax_pvt *p) +{ + struct ast_frame *f = NULL; + int res; + + if (option_debug > 100) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + res = skypiax_skypeaudio_read(p); + f = &p->read_frame; + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return f; +} + +/*! \brief Send audio frame to interface */ +int skypiax_sound_write(struct skypiax_pvt *p, struct ast_frame *f) +{ + int ret = -1; + + if (option_debug > 100) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + ret = skypiax_skypeaudio_write(p, f); + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return ret; +} + +/*! + * \brief This thread runs during a call, and monitor the interface serial port for signaling, like hangup, caller id, etc + * + */ +void *skypiax_do_controldev_thread(void *data) +{ + struct skypiax_pvt *p = data; + int res; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + DEBUGA_SERIAL("In skypiax_do_controldev_thread: started, p=%p\n", SKYPIAX_P_LOG, p); + + if (pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL)) { + ERRORA("Unable to set cancel type to deferred\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; + } + + while (1) { + usleep(1000); + pthread_testcancel(); + if (p->skype) { + res = skypiax_skype_read(p); + if (res == CALLFLOW_INCOMING_HANGUP) { + if (option_debug) + DEBUGA_SKYPE("skype call ended\n", SKYPIAX_P_LOG); + if (p->owner) { + pthread_testcancel(); + ast_queue_control(p->owner, AST_CONTROL_HANGUP); + } + } + } + } + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; + +} + +/************************************************/ + +/* LUIGI RIZZO's magic */ +/* + * store the boost factor + */ +#ifdef ASTERISK_VERSION_1_6 +void skypiax_store_boost(const char *s, double *boost) +#else +void skypiax_store_boost(char *s, double *boost) +#endif /* ASTERISK_VERSION_1_6 */ +{ + struct skypiax_pvt *p = NULL; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (sscanf(s, "%lf", boost) != 1) { + ERRORA("invalid boost <%s>\n", SKYPIAX_P_LOG, s); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return; + } + if (*boost < -BOOST_MAX) { + WARNINGA("boost %s too small, using %d\n", SKYPIAX_P_LOG, s, -BOOST_MAX); + *boost = -BOOST_MAX; + } else if (*boost > BOOST_MAX) { + WARNINGA("boost %s too large, using %d\n", SKYPIAX_P_LOG, s, BOOST_MAX); + *boost = BOOST_MAX; + } + *boost = exp(log(10) * *boost / 20) * BOOST_SCALE; + if (option_debug > 1) + DEBUGA_SOUND("setting boost %s to %f\n", SKYPIAX_P_LOG, s, *boost); +} + +/* + * returns a pointer to the descriptor with the given name + */ +struct skypiax_pvt *skypiax_console_find_desc(char *dev) +{ + struct skypiax_pvt *p = NULL; + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + + for (p = skypiax_iflist; p && strcmp(p->name, dev) != 0; p = p->next); + if (p == NULL) + WARNINGA("could not find <%s>\n", SKYPIAX_P_LOG, dev); + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return p; +} +int skypiax_console_playback_boost(int fd, int argc, char *argv[]) +{ + struct skypiax_pvt *p = skypiax_console_find_desc(skypiax_console_active); + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (argc > 2) { + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SHOWUSAGE; + } + if (!p) { + ast_cli(fd, + "No \"current\" skypiax_console for playback_boost, please enter 'help skypiax_console'\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; + } + + if (argc == 1) { + ast_cli(fd, "playback_boost on the active skypiax_console, that is [%s], is: %5.1f\n", + skypiax_console_active, + 20 * log10(((double) p->playback_boost / (double) BOOST_SCALE))); + } else if (argc == 2) { + skypiax_store_boost(argv[1], &p->playback_boost); + + ast_cli(fd, + "playback_boost on the active skypiax_console, that is [%s], is now: %5.1f\n", + skypiax_console_active, + 20 * log10(((double) p->playback_boost / (double) BOOST_SCALE))); + } + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; +} +int skypiax_console_capture_boost(int fd, int argc, char *argv[]) +{ + struct skypiax_pvt *p = skypiax_console_find_desc(skypiax_console_active); + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (argc > 2) { + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SHOWUSAGE; + } + if (!p) { + ast_cli(fd, + "No \"current\" skypiax_console for capture_boost, please enter 'help skypiax_console'\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; + } + + if (argc == 1) { + ast_cli(fd, "capture_boost on the active skypiax_console, that is [%s], is: %5.1f\n", + skypiax_console_active, + 20 * log10(((double) p->capture_boost / (double) BOOST_SCALE))); + } else if (argc == 2) { + skypiax_store_boost(argv[1], &p->capture_boost); + + ast_cli(fd, + "capture_boost on the active skypiax_console, that is [%s], is now: %5.1f\n", + skypiax_console_active, + 20 * log10(((double) p->capture_boost / (double) BOOST_SCALE))); + } + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; +} + +int skypiax_console_hangup(int fd, int argc, char *argv[]) +{ + struct skypiax_pvt *p = skypiax_console_find_desc(skypiax_console_active); + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (argc != 1) { + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SHOWUSAGE; + } + if (!p) { + ast_cli(fd, + "No \"current\" skypiax_console for hanging up, please enter 'help skypiax_console'\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; + } + if (!p->owner) { + ast_cli(fd, "No call to hangup on the active skypiax_console, that is [%s]\n", + skypiax_console_active); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_FAILURE; + } + if (p->owner) + ast_queue_hangup(p->owner); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; +} + +int skypiax_console_dial(int fd, int argc, char *argv[]) +{ + char *s = NULL; + struct skypiax_pvt *p = skypiax_console_find_desc(skypiax_console_active); + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (argc != 2) { + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SHOWUSAGE; + } + if (!p) { + ast_cli(fd, + "No \"current\" skypiax_console for dialing, please enter 'help skypiax_console'\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; + } + + if (p->owner) { /* already in a call */ + int i; + struct ast_frame f = { AST_FRAME_DTMF, 0 }; + + s = argv[1]; + /* send the string one char at a time */ + for (i = 0; i < strlen(s); i++) { + f.subclass = s[i]; + ast_queue_frame(p->owner, &f); + } + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; + } else + ast_cli(fd, + "No call in which to dial on the \"current\" skypiax_console, that is [%s]\n", + skypiax_console_active); + if (s) + free(s); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; +} +int skypiax_console_set_active(int fd, int argc, char *argv[]) +{ + if (argc == 1) + ast_cli(fd, + "\"current\" skypiax_console is [%s]\n Enter 'skypiax_console show' to see the available interfaces.\n Enter 'skypiax_console interfacename' to change the \"current\" skypiax_console.\n", + skypiax_console_active); + else if (argc != 2) { + return RESULT_SHOWUSAGE; + } else { + struct skypiax_pvt *p; + if (strcmp(argv[1], "show") == 0) { + ast_cli(fd, "Available interfaces:\n"); + for (p = skypiax_iflist; p; p = p->next) + ast_cli(fd, " [%s]\n", p->name); + return RESULT_SUCCESS; + } + p = skypiax_console_find_desc(argv[1]); + if (p == NULL) + ast_cli(fd, "Interface [%s] do not exists!\n", argv[1]); + else { + skypiax_console_active = p->name; + ast_cli(fd, "\"current\" skypiax_console is now: [%s]\n", argv[1]); + } + } + return RESULT_SUCCESS; +} + +int skypiax_console_skypiax(int fd, int argc, char *argv[]) +{ + return RESULT_SHOWUSAGE; +} + +void *do_skypeapi_thread(void *obj) +{ + return skypiax_do_skypeapi_thread_func(obj); +} + +int dtmf_received(private_t *p, char *value){ + + struct ast_frame f2 = { AST_FRAME_DTMF, value[0], }; + DEBUGA_SKYPE("Received DTMF: %s\n", SKYPIAX_P_LOG, value); + ast_queue_frame(p->owner, &f2); + + return 0; + +} +int start_audio_threads(private_t *tech_pvt) { +#ifdef NOTDEF + switch_threadattr_t *thd_attr = NULL; + + switch_threadattr_create(&thd_attr, skypiax_module_pool); + switch_threadattr_detach_set(thd_attr, 1); + switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); + switch_thread_create(&tech_pvt->tcp_srv_thread, thd_attr, + skypiax_do_tcp_srv_thread, tech_pvt, + skypiax_module_pool); + DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPIAX_P_LOG); + + switch_threadattr_create(&thd_attr, skypiax_module_pool); + switch_threadattr_detach_set(thd_attr, 1); + switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); + switch_thread_create(&tech_pvt->tcp_cli_thread, thd_attr, + skypiax_do_tcp_cli_thread, tech_pvt, + skypiax_module_pool); + DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG); + switch_sleep(100000); + +#endif + + return 0; +} + +int new_inbound_channel(private_t *tech_pvt) { +#ifdef NOTDEF + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + if ((session = + switch_core_session_request(skypiax_endpoint_interface, + NULL)) != 0) { + switch_core_session_add_stream(session, NULL); + channel = switch_core_session_get_channel(session); + skypiax_tech_init(tech_pvt, session); + + if ((tech_pvt->caller_profile = + switch_caller_profile_new(switch_core_session_get_pool(session), + "skypiax", tech_pvt->dialplan, + tech_pvt->callid_name, + tech_pvt->callid_number, NULL, NULL, + NULL, NULL, "mod_skypiax", + tech_pvt->context, + tech_pvt->destination)) != 0) { + char name[128]; + //switch_snprintf(name, sizeof(name), "skypiax/%s/%s", tech_pvt->name, tech_pvt->caller_profile->destination_number); + switch_snprintf(name, sizeof(name), "skypiax/%s", tech_pvt->name); + switch_channel_set_name(channel, name); + switch_channel_set_caller_profile(channel, + tech_pvt->caller_profile); + } + switch_channel_set_state(channel, CS_INIT); + if (switch_core_session_thread_launch(session) != + SWITCH_STATUS_SUCCESS) { + ERRORA("Error spawning thread\n", SKYPIAX_P_LOG); + switch_core_session_destroy(&session); + } + } + switch_channel_mark_answered(channel); + + DEBUGA_SKYPE("Here\n", SKYPIAX_P_LOG); + +#endif + return 0; +} +int outbound_channel_answered(private_t *tech_pvt) { +#ifdef NOTDEF + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + + if (strlen(tech_pvt->session_uuid_str)) { + session = switch_core_session_locate(tech_pvt->session_uuid_str); + } else { + ERRORA("No session???\n", SKYPIAX_P_LOG); + } + if (session) { + channel = switch_core_session_get_channel(session); + } else { + ERRORA("No session???\n", SKYPIAX_P_LOG); + } + if (channel) { + switch_channel_mark_answered(channel); + //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id); + } else { + ERRORA("No channel???\n", SKYPIAX_P_LOG); + } + + switch_core_session_rwunlock(session); + DEBUGA_SKYPE("HERE!\n", SKYPIAX_P_LOG); + +#endif + + return 0; +} + +/************************************************/ +#ifdef ASTERISK_VERSION_1_4 +#ifndef AST_MODULE +#define AST_MODULE "chan_skypiax" +#endif +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Skypiax, Audio-Serial Driver"); +#endif /* ASTERISK_VERSION_1_4 */ + +/* rewriting end */ +/*******************************************************************************/ Added: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/cyg_no_pthread_kill.c ============================================================================== --- (empty file) +++ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/cyg_no_pthread_kill.c Sat Jan 31 07:51:01 2009 @@ -0,0 +1,14 @@ +#include +#define PRINTMSGCYG + +extern int option_debug; +int cyg_no_pthreadkill(int thread, int sig); + +int cyg_no_pthreadkill(int thread, int sig){ +#ifdef PRINTMSGCYG + if(option_debug){ + printf("\n\nHere there would have been a pthread_kill() on thread [%-7lx], with sig=%d, but it has been substituted by this printf in file cyg_no_pthread_kill.c because CYGWIN does not support sending a signal to a one only thread :-(\n\n", (unsigned long int)thread, sig); + } +#endif// PRINTMSGCYG + return 0; + } Added: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax.conf ============================================================================== --- (empty file) +++ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax.conf Sat Jan 31 07:51:01 2009 @@ -0,0 +1,63 @@ +;; +;; +; Skypiax Asterisk Driver +; +; Configuration file +; lines beginning with semicolon (" are ignored (commented out) +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; The first interface (named skypeclient) +[skypeclient] +;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;; +; general settings, valid on all platforms +; +; +; Default language +; +language=en +; +; Default context (in extensions.conf, can be overridden with @context syntax) +; +context=default +; +; Default extension (in extensions.conf) where incoming calls land +; +extension=s +; +;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;; +; Debugging settings, valid globally for all interfaces on all platforms +; +; the debug values are global for all the interfaces. +; +; default is no skypiax debugging output, you **have** to activate debugging here to obtain debugging from skypiax +; +; To see the debugging output you have to "set debug 100" from the Asterisk CLI or launch +; Asterisk with -ddddddddddd option, and have the logger.conf file activating debug info for console and messages +; +; You can activate each of the following separately, but you can't disactivate. Eg: debug_at=no does not subtract debug_at from debug_all +; debug_all activate all possible debugging info +; +;debug_all=yes +debug_skype=yes +debug_pbx=yes +;debug_sound=yes +;debug_locks=yes +;debug_monitorlocks=yes + +skype=yes ; legacy setting, leave it to yes +;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;; +; audio boost settings, valid for all platforms, to compensate for different input/output audio signal levels +; tweak it if you get horrible (or not hearable) sound +; +;boost can be positive or negative (-40 to +40) in db +;experiment to find which values are best for your computer +playback_boost=0 ; +capture_boost=0 ; + + Added: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax.h ============================================================================== --- (empty file) +++ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax.h Sat Jan 31 07:51:01 2009 @@ -0,0 +1,412 @@ +//indent -gnu -ts4 -br -brs -cdw -lp -ce -nbfda -npcs -nprs -npsl -nbbo -saf -sai -saw -cs -bbo -nhnl -nut -sob -l90 +#ifndef _SKYPIAX_H_ +#define _SKYPIAX_H_ + +#ifndef SKYPIAX_SVN_VERSION +#define SKYPIAX_SVN_VERSION "????NO_REVISION???" +#endif + +#include /* needed here for conditional compilation on version.h */ + /* the following #defs are for LINUX */ +#ifndef __CYGWIN__ +#ifndef ASTERISK_VERSION_1_6 +#ifndef ASTERISK_VERSION_1_4 +#ifndef ASTERISK_VERSION_1_2 +#define ASTERISK_VERSION_1_4 +#if(ASTERISK_VERSION_NUM == 999999) +#undef ASTERISK_VERSION_1_4 +#elif(ASTERISK_VERSION_NUM < 10400) +#undef ASTERISK_VERSION_1_4 +#endif /* ASTERISK_VERSION_NUM == 999999 || ASTERISK_VERSION_NUM < 10400 */ +#endif /* ASTERISK_VERSION_1_2 */ +#endif /* ASTERISK_VERSION_1_4 */ +#endif /* ASTERISK_VERSION_1_6 */ +#ifdef ASTERISK_VERSION_1_2 +#undef ASTERISK_VERSION_1_4 +#endif /* ASTERISK_VERSION_1_2 */ +#ifdef ASTERISK_VERSION_1_6 +#define ASTERISK_VERSION_1_4 +#endif /* ASTERISK_VERSION_1_6 */ +#define SKYPIAX_SKYPE +#define WANT_SKYPE_X11 +#endif /* NOT __CYGWIN__ */ + /* the following #defs are for WINDOWS */ +#ifdef __CYGWIN__ +#undef ASTERISK_VERSION_1_4 +#undef ASTERISK_VERSION_1_6 +#define SKYPIAX_SKYPE +#undef WANT_SKYPE_X11 +#endif /* __CYGWIN__ */ + +/* INCLUDES */ +#ifdef ASTERISK_VERSION_1_6 +#include /* some asterisk-devel package do not contains asterisk.h, but seems that is needed for the 1.6 series, at least from trunk */ +#endif /* ASTERISK_VERSION_1_6 */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef ASTERISK_VERSION_1_4 +#include +#include +#endif /* ASTERISK_VERSION_1_4 */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef ASTERISK_VERSION_1_6 +#include +#include +#endif /* ASTERISK_VERSION_1_6 */ +#ifdef ASTERISK_VERSION_1_4 +#include +#include +#include +#include +#endif /* ASTERISK_VERSION_1_4 */ +#ifdef ASTERISK_VERSION_1_2 +#include +#include +#endif /* ASTERISK_VERSION_1_2 */ +#ifdef HAVE_CONFIG_H +#include +#endif +//#include "skypiax_spandsp.h" +#ifdef __CYGWIN__ +#include +#endif /* __CYGWIN__ */ +#ifdef WANT_SKYPE_X11 +#include +#include +#include +#endif /* WANT_SKYPE_X11 */ +#ifndef AST_DIGIT_ANYDIG +#define AST_DIGIT_ANYDIG "0123456789*#" +#else +#warning Please review Skypiax AST_DIGIT_ANYDIG +#endif +#ifndef _ASTERISK_H +#define AST_CONFIG_MAX_PATH 255 /* defined in asterisk.h, but some asterisk-devel package do not contains asterisk.h */ +extern char ast_config_AST_CONFIG_DIR[AST_CONFIG_MAX_PATH]; +int ast_register_atexit(void (*func) (void)); /* in asterisk.h, but some asterisk-devel package do not contains asterisk.h */ +void ast_unregister_atexit(void (*func) (void)); /* in asterisk.h, but some asterisk-devel package do not contains asterisk.h */ +#endif + +/* DEFINITIONS */ +#define SAMPLERATE_SKYPIAX 8000 +#define SAMPLES_PER_FRAME SAMPLERATE_SKYPIAX/50 + +/* LUIGI RIZZO's magic */ +/* boost support. BOOST_SCALE * 10 ^(BOOST_MAX/20) must + * be representable in 16 bits to avoid overflows. + */ +#define BOOST_SCALE (1<<9) +#define BOOST_MAX 40 /* slightly less than 7 bits */ +/* call flow from the device */ +#define CALLFLOW_CALL_IDLE AST_STATE_DOWN +#define CALLFLOW_INCOMING_RING AST_STATE_RING +#define CALLFLOW_CALL_DIALING AST_STATE_DIALING +#define CALLFLOW_CALL_LINEBUSY AST_STATE_BUSY +#define CALLFLOW_CALL_ACTIVE 300 +#define CALLFLOW_INCOMING_HANGUP 100 +#define CALLFLOW_CALL_RELEASED 101 +#define CALLFLOW_CALL_NOCARRIER 102 +#define CALLFLOW_CALL_INFLUX 103 +#define CALLFLOW_CALL_INCOMING 104 +#define CALLFLOW_CALL_FAILED 105 +#define CALLFLOW_CALL_NOSERVICE 106 +#define CALLFLOW_CALL_OUTGOINGRESTRICTED 107 +#define CALLFLOW_CALL_SECURITYFAIL 108 +#define CALLFLOW_CALL_NOANSWER 109 +#define CALLFLOW_STATUS_FINISHED 110 +#define CALLFLOW_STATUS_CANCELLED 111 +#define CALLFLOW_STATUS_FAILED 112 +#define CALLFLOW_STATUS_REFUSED 113 +#define CALLFLOW_STATUS_RINGING 114 +#define CALLFLOW_STATUS_INPROGRESS 115 +#define CALLFLOW_STATUS_UNPLACED 116 +#define CALLFLOW_STATUS_ROUTING 117 +#define CALLFLOW_STATUS_EARLYMEDIA 118 +#define AST_STATE_HANGUP_REQUESTED 200 + //FIXME CALLFLOW_INCOMING_CALLID to be removed +#define CALLFLOW_INCOMING_CALLID 1019 +/* debugging bitmask */ +#define DEBUG_SOUND 1 +#define DEBUG_SERIAL 2 +#define DEBUG_SKYPE 4 +#define DEBUG_AT 8 +#define DEBUG_FBUS2 16 +#define DEBUG_CALL 32 +#define DEBUG_LOCKS 64 +#define DEBUG_PBX 128 +#define DEBUG_MONITORLOCKS 256 +#define DEBUG_ALL DEBUG_SOUND|DEBUG_SERIAL|DEBUG_SKYPE|DEBUG_AT|DEBUG_FBUS2|DEBUG_CALL|DEBUG_PBX|DEBUG_LOCKS|DEBUG_MONITORLOCKS +/* wrappers for ast_log */ +#define DEBUGA_SOUND(...) if (skypiax_debug & DEBUG_SOUND) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_SOUND %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define DEBUGA_SERIAL(...) if (skypiax_debug & DEBUG_SERIAL) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_SERIAL %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define DEBUGA_SKYPE(...) if (skypiax_debug & DEBUG_SKYPE) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_SKYPE %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define DEBUGA_AT(...) if (skypiax_debug & DEBUG_AT) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_AT %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define DEBUGA_FBUS2(...) if (skypiax_debug & DEBUG_FBUS2) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_FBUS2 %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define DEBUGA_CALL(...) if (skypiax_debug & DEBUG_CALL) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_CALL %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define DEBUGA_PBX(...) if (skypiax_debug & DEBUG_PBX) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_PBX %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define ERRORA(...) ast_log(LOG_ERROR, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][ERROR %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define NOTICA(...) ast_log(LOG_NOTICE, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][NOTICE %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define WARNINGA(...) ast_log(LOG_WARNING, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][WARNING %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +/* macros for logging */ +#define SKYPIAX_P_LOG p ? p->owner : NULL, (unsigned long)pthread_self(), __LINE__, p ? p->name ? p->name : "none" : "none", p ? p->owner ? p->owner->_state : -1 : -1, p ? p->interface_state : -1, p ? p->skype_callflow : -1 +#define SKYPIAX_TMP_LOG tmp ? tmp->owner : NULL, (unsigned long)pthread_self(), __LINE__, tmp ? tmp->name ? tmp->name : "none" : "none", tmp ? tmp->owner ? tmp->owner->_state : -1 : -1, tmp ? tmp->interface_state : -1, tmp ? tmp->skype_callflow : -1 +/* logging wrappers for ast_mutex_lock and ast_mutex_unlock */ +#define LOKKA(x) if (skypiax_debug & DEBUG_LOCKS) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_LOCKS %-5d][%-10s][%2d,%2d,%2d] going to lock %p (%s)\n", SKYPIAX_P_LOG, x, x == &skypiax_monlock ? "MONLOCK" : x == &skypiax_iflock ? "IFLOCK" : x == &skypiax_usecnt_lock ? "USECNT_LOCK" : "?????"); if (ast_mutex_lock(x)) ast_log(LOG_ERROR, "ast_mutex_lock failed, BAD\n"); if (skypiax_debug & DEBUG_LOCKS) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_LOCKS %-5d][%-10s][%2d,%2d,%2d] locked %p (%s)\n", SKYPIAX_P_LOG, x, x == &skypiax_monlock ? "MONLOCK" : x == &skypiax_iflock ? "IFLOCK" : x == &skypiax_usecnt_lock ? "USECNT_LOCK" : "?????"); +#define UNLOCKA(x) if (skypiax_debug & DEBUG_LOCKS) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_LOCKS %-5d][%-10s][%2d,%2d,%2d] going to unlock %p (%s)\n", SKYPIAX_P_LOG, x, x == &skypiax_monlock ? "MONLOCK" : x == &skypiax_iflock ? "IFLOCK" : x == &skypiax_usecnt_lock ? "USECNT_LOCK" : "?????"); if (ast_mutex_unlock(x)) ast_log(LOG_ERROR, "ast_mutex_lock failed, BAD\n"); if (skypiax_debug & DEBUG_LOCKS) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_LOCKS %-5d][%-10s][%2d,%2d,%2d] unlocked %p (%s)\n", SKYPIAX_P_LOG, x, x == &skypiax_monlock ? "MONLOCK" : x == &skypiax_iflock ? "IFLOCK" : x == &skypiax_usecnt_lock ? "USECNT_LOCK" : "?????"); +#define PUSHA_UNLOCKA(x) pthread_cleanup_push(skypiax_unlocka_log, (void *) x); +#define POPPA_UNLOCKA(x) pthread_cleanup_pop(0); +#define MONITORLOKKA(x) if (skypiax_debug & DEBUG_MONITORLOCKS) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_MONITORLOCKS %-5d][%-10s][%2d,%2d,%2d] going to lock %p (%s)\n", SKYPIAX_P_LOG, x, x == &skypiax_monlock ? "MONLOCK" : x == &skypiax_iflock ? "IFLOCK" : x == &skypiax_usecnt_lock ? "USECNT_LOCK" : "?????"); if (ast_mutex_lock(x)) ast_log(LOG_ERROR, "ast_mutex_lock failed, BAD\n"); if (skypiax_debug & DEBUG_MONITORLOCKS) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_MONITORLOCKS %-5d][%-10s][%2d,%2d,%2d] locked %p (%s)\n", SKYPIAX_P_LOG, x, x == &skypiax_monlock ? "MONLOCK" : x == &skypiax_iflock ? "IFLOCK" : x == &skypiax_usecnt_lock ? "USECNT_LOCK" : "?????"); +#define MONITORUNLOCKA(x) if (skypiax_debug & DEBUG_MONITORLOCKS) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_MONITORLOCKS %-5d][%-10s][%2d,%2d,%2d] going to unlock %p (%s)\n", SKYPIAX_P_LOG, x, x == &skypiax_monlock ? "MONLOCK" : x == &skypiax_iflock ? "IFLOCK" : x == &skypiax_usecnt_lock ? "USECNT_LOCK" : "?????"); if (ast_mutex_unlock(x)) ast_log(LOG_ERROR, "ast_mutex_lock failed, BAD\n"); if (skypiax_debug & DEBUG_MONITORLOCKS) ast_log(LOG_DEBUG, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][DEBUG_MONITORLOCKS %-5d][%-10s][%2d,%2d,%2d] unlocked %p (%s)\n", SKYPIAX_P_LOG, x, x == &skypiax_monlock ? "MONLOCK" : x == &skypiax_iflock ? "IFLOCK" : x == &skypiax_usecnt_lock ? "USECNT_LOCK" : "?????"); +/* macros used for config file parsing (luigi rizzo)*/ +#define M_BOOL(tag, dst) M_F(tag, (dst) = ast_true(__val) ) +#define M_END(x) x; +#define M_F(tag, f) if (!strcasecmp((__s), tag)) { f; } else +#ifdef ASTERISK_VERSION_1_6 +#define M_START(var, val) const char *__s = var; const char *__val = val; +#else +#define M_START(var, val) char *__s = var; char *__val = val; +#endif /* ASTERISK_VERSION_1_6 */ +#define M_STR(tag, dst) M_F(tag, ast_copy_string(dst, __val, sizeof(dst))) +#define M_UINT(tag, dst) M_F(tag, (dst) = strtoul(__val, NULL, 0) ) + +#define SKYPIAX_FRAME_SIZE 160 + +/* SKYPIAX INTERNAL STRUCTS */ +/*! + * \brief structure for exchanging messages with the skype client + */ +#ifdef WANT_SKYPE_X11 +struct AsteriskHandles { + Window skype_win; + Display *disp; + Window win; + int fdesc[2]; +}; +#else /* WANT_SKYPE_X11 */ +struct AsteriskHandles { + HWND win32_hInit_MainWindowHandle; + HWND win32_hGlobal_SkypeAPIWindowHandle; + int fdesc[2]; +}; +#endif /* WANT_SKYPE_X11 */ + +#ifndef WIN32 +struct SkypiaxHandles { + Window skype_win; + Display *disp; + Window win; + int api_connected; + int fdesc[2]; +}; +#else //WIN32 + +struct SkypiaxHandles { + HWND win32_hInit_MainWindowHandle; + HWND win32_hGlobal_SkypeAPIWindowHandle; + HINSTANCE win32_hInit_ProcessHandle; + char win32_acInit_WindowClassName[128]; + UINT win32_uiGlobal_MsgID_SkypeControlAPIAttach; + UINT win32_uiGlobal_MsgID_SkypeControlAPIDiscover; + int api_connected; + switch_file_t *fdesc[2]; +}; + +#endif //WIN32 + + +/*! + * \brief PVT structure for a skypiax interface (channel), created by skypiax_mkif + */ +struct skypiax_pvt { + char *name; /*!< \brief 'name' of the interface (channel) */ + int interface_state; /*!< \brief 'state' of the interface (channel) */ + struct ast_channel *owner; /*!< \brief channel we belong to, possibly NULL */ + struct skypiax_pvt *next; /*!< \brief Next interface (channel) in list */ + char context[AST_MAX_EXTENSION]; /*!< \brief default Asterisk dialplan context for this interface */ + char language[MAX_LANGUAGE]; /*!< \brief default Asterisk dialplan language for this interface */ + char exten[AST_MAX_EXTENSION]; /*!< \brief default Asterisk dialplan extension for this interface */ + int skypiax_sound_rate; /*!< \brief rate of the sound device, in Hz, eg: 8000 */ + int skypiax_sound_capt_fd; /*!< \brief file descriptor for sound capture dev */ + char callid_name[50]; + char callid_number[50]; + pthread_t controldev_thread; /*!< \brief serial control thread for this interface, running during the call */ + double playback_boost; + double capture_boost; + int stripmsd; + pthread_t skype_thread; + struct AsteriskHandles AsteriskHandlesAst; + struct SkypiaxHandles SkypiaxHandles; + char skype_call_id[512]; + int skype_call_ongoing; + char skype_friends[4096]; + char skype_fullname[512]; + char skype_displayname[512]; + int skype_callflow; /*!< \brief 'callflow' of the skype interface (as opposed to phone interface) */ + int skype; /*!< \brief config flag, bool, Skype support on this interface (0 if false, -1 if true) */ + int control_to_send; + int audiopipe[2]; + int audioskypepipe[2]; + pthread_t tcp_srv_thread; + pthread_t tcp_cli_thread; + short audiobuf[160]; + int audiobuf_is_loaded; + + //int phonebook_listing; + //int phonebook_querying; + //int phonebook_listing_received_calls; + + //int phonebook_first_entry; + //int phonebook_last_entry; + //int phonebook_number_lenght; + //int phonebook_text_lenght; + FILE *phonebook_writing_fp; + int skypiax_dir_entry_extension_prefix; +#ifdef WIN32 + unsigned short tcp_cli_port; + unsigned short tcp_srv_port; +#else + int tcp_cli_port; + int tcp_srv_port; +#endif + char X11_display[256]; + + struct ast_frame read_frame; + + char skype_user[256]; + char skype_password[256]; + char destination[256]; + char session_uuid_str[512 + 1]; +}; + +typedef struct skypiax_pvt private_t; +/* FUNCTIONS */ + +/* module helpers functions */ +int load_module(void); +int unload_module(void); +int usecount(void); +char *description(void); +char *key(void); + +/* chan_skypiax internal functions */ +void skypiax_unlocka_log(void *x); + +void *do_skypeapi_thread(void *data); +//int skypiax2skype(struct ast_channel *c, void *data); +//int skype2skypiax(struct ast_channel *c, void *data); +//void skypiax_skype_disconnect(void); +int skypiax_skype_write(struct skypiax_pvt *p, char *msg_to_skype); +int skypiax_skype_read(struct skypiax_pvt *p); +int skypiax_console_skype(int fd, int argc, char *argv[]); +#ifdef WANT_SKYPE_X11 +int X11_errors_handler(Display * dpy, XErrorEvent * err); +int skypiax_skype_send_message(struct SkypiaxHandles *SkypiaxHandles, + const char *message_P); +int skypiax_skype_present(struct SkypiaxHandles *SkypiaxHandles); +void skypiax_skype_clean_disp(void *data); +#endif /* WANT_SKYPE_X11 */ +#ifdef __CYGWIN__ +int win32_Initialize_CreateWindowClass(void); +void win32_DeInitialize_DestroyWindowClass(void); +int win32_Initialize_CreateMainWindow(void); +void win32_DeInitialize_DestroyMainWindow(void); +#endif /* __CYGWIN__ */ + +/* CHAN_SKYPIAX.C */ +int skypiax_queue_control(struct ast_channel *chan, int control); +struct skypiax_pvt *skypiax_console_find_desc(char *dev); +int skypiax_serial_call(struct skypiax_pvt *p, char *dstr); + +/* FUNCTIONS */ +/* PBX interface functions */ +struct ast_channel *skypiax_request(const char *type, int format, void *data, int *cause); +int skypiax_answer(struct ast_channel *c); +int skypiax_hangup(struct ast_channel *c); +int skypiax_call(struct ast_channel *c, char *idest, int timeout); +struct ast_frame *skypiax_read(struct ast_channel *chan); +int skypiax_write(struct ast_channel *c, struct ast_frame *f); +int skypiax_fixup(struct ast_channel *oldchan, struct ast_channel *newchan); +#ifndef ASTERISK_VERSION_1_4 +int skypiax_indicate(struct ast_channel *c, int cond); +#else +int skypiax_indicate(struct ast_channel *c, int cond, const void *data, size_t datalen); +#endif +int skypiax_devicestate(void *data); +#ifdef ASTERISK_VERSION_1_4 +int skypiax_senddigit_begin(struct ast_channel *ast, char digit); +int skypiax_senddigit_end(struct ast_channel *ast, char digit, unsigned int duration); +#else /* ASTERISK_VERSION_1_4 */ +int skypiax_senddigit(struct ast_channel *ast, char digit); +#endif /* ASTERISK_VERSION_1_4 */ + +/* chan_skypiax internal functions */ + +struct skypiax_pvt *skypiax_mkif(struct ast_config *cfg, char *ctg, + int is_first_category); +struct ast_channel *skypiax_new(struct skypiax_pvt *p, int state, char *context); +int skypiax_restart_monitor(void); +void *skypiax_do_monitor(void *data); +int skypiax_sound_boost(struct ast_frame *f, double boost); +int skypiax_sound_init(struct skypiax_pvt *p); +int skypiax_sound_shutdown(struct skypiax_pvt *p); +struct ast_frame *skypiax_sound_read(struct skypiax_pvt *p); +int skypiax_sound_write(struct skypiax_pvt *p, struct ast_frame *f); +void *skypiax_do_controldev_thread(void *data); +#ifdef ASTERISK_VERSION_1_6 +void skypiax_store_boost(const char *s, double *boost); +#else +void skypiax_store_boost(char *s, double *boost); +#endif /* ASTERISK_VERSION_1_6 */ +int skypiax_console_set_active(int fd, int argc, char *argv[]); +int skypiax_console_hangup(int fd, int argc, char *argv[]); +int skypiax_console_playback_boost(int fd, int argc, char *argv[]); +int skypiax_console_capture_boost(int fd, int argc, char *argv[]); +int skypiax_console_skypiax(int fd, int argc, char *argv[]); +int skypiax_console_dial(int fd, int argc, char *argv[]); +int skypiax_skypeaudio_init(struct skypiax_pvt *p); +//struct ast_frame *skypiax_skypeaudio_read(struct skypiax_pvt *p); +int skypiax_skypeaudio_read(struct skypiax_pvt *p); +void *skypiax_do_tcp_srv_thread(void *data); +int skypiax_skypeaudio_write(struct skypiax_pvt *p, struct ast_frame *f); +void *skypiax_do_tcp_cli_thread(void *data); +int skypiax_skype_call(struct skypiax_pvt *p, char *idest, int timeout); +int skypiax_console_skypiax_dir_import(int fd, int argc, char *argv[]); + +void * skypiax_do_tcp_srv_thread_func(void *obj); +void * skypiax_do_tcp_cli_thread_func(void *obj); +void * skypiax_do_skypeapi_thread_func(void *obj); +int dtmf_received(private_t *tech_pvt, char *value); +int start_audio_threads(private_t *tech_pvt); +int new_inbound_channel(private_t *tech_pvt); +int outbound_channel_answered(private_t *tech_pvt); +int skypiax_skype_senddigit(struct skypiax_pvt *p, char digit); +#define SKYPIAX_STATE_DOWN 1 +#define SKYPIAX_STATE_RING 2 +#define SKYPIAX_STATE_DIALING 3 +#define SKYPIAX_STATE_BUSY 4 +#define SKYPIAX_STATE_UP 5 +#define SKYPIAX_STATE_RINGING 6 +#define SKYPIAX_STATE_PRERING 7 +#define SKYPIAX_STATE_HANGUP_REQUESTED 200 +#endif /* _SKYPIAX_H_ */ Added: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax_protocol.c ============================================================================== --- (empty file) +++ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax_protocol.c Sat Jan 31 07:51:01 2009 @@ -0,0 +1,2099 @@ +#include "skypiax.h" + +#define skypiax_sleep usleep +#define skypiax_file_write switch_file_write +#define skypiax_file_read switch_file_read + +#define tech_pvt p + +#define SKYPIAX_DIR_CONFIG "directoriax.conf" + +extern int skypiax_debug; +//extern switch_memory_pool_t *skypiax_module_pool; +extern int option_debug; +//extern switch_endpoint_interface_t *skypiax_endpoint_interface; +extern int running; +extern char *skypiax_console_active; + +/* GLOBALS */ +int skypiax_dir_entry_extension=1; +/*************************************/ +#ifndef WIN32 +XErrorHandler old_handler = 0; +int xerror = 0; +#endif /* WIN32 */ +/*************************************/ + +void * skypiax_do_tcp_srv_thread_func(void *obj) +{ + private_t *tech_pvt = obj; + int s; +#ifdef WIN32 + unsigned int len; + unsigned int i; + unsigned int a; + int sin_size; + unsigned int fd; + short srv_in[SAMPLES_PER_FRAME]; + short srv_out[SAMPLES_PER_FRAME / 2]; +#else + int len; + int i; + int a; + unsigned int sin_size; + int fd; + short srv_in[SAMPLES_PER_FRAME]; + short srv_out[SAMPLES_PER_FRAME / 2]; +#endif /* WIN32 */ + struct sockaddr_in my_addr; + struct sockaddr_in remote_addr; + int exit = 0; + unsigned int kill_cli_size; + short kill_cli_buff[SAMPLES_PER_FRAME]; + short totalbuf[SAMPLES_PER_FRAME]; + + if (option_debug > 100) { + DEBUGA_SKYPE("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + memset(&my_addr, 0, sizeof(my_addr)); + my_addr.sin_family = AF_INET; + my_addr.sin_addr.s_addr = htonl(0x7f000001); /* use the localhost */ + my_addr.sin_port = htons(tech_pvt->tcp_srv_port); + + if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) { + ERRORA("socket Error\n", SKYPIAX_P_LOG); + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; + } + + if (bind(s, (struct sockaddr *) &my_addr, sizeof(struct sockaddr)) < 0) { + ERRORA("bind Error\n", SKYPIAX_P_LOG); + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; + } + DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPIAX_P_LOG); + + listen(s, 6); + + sin_size = sizeof(remote_addr); + while ((fd = accept(s, (struct sockaddr *) &remote_addr, &sin_size)) > 0) { + DEBUGA_SKYPE("ACCEPTED\n", SKYPIAX_P_LOG); + if (!running) + break; + while (tech_pvt->interface_state != SKYPIAX_STATE_DOWN + && (tech_pvt->skype_callflow == CALLFLOW_STATUS_INPROGRESS + || tech_pvt->skype_callflow == SKYPIAX_STATE_UP)) { + +#ifdef WIN32 + unsigned int fdselect; +#else + int received = 0; + int fdselect; +#endif /* WIN32 */ + int rt; + fd_set fs; + struct timeval to; + + if (!running) + break; + exit = 1; + + fdselect = fd; + FD_ZERO(&fs); + FD_SET(fdselect, &fs); + to.tv_usec = 2000000; //2000 msec + to.tv_sec = 0; + + rt = select(fdselect + 1, &fs, NULL, NULL, &to); + if (rt > 0) { + +#ifdef WIN32 + len = recv(fd, (char *) srv_in, 320, 0); //seems that Skype only sends 320 bytes at time +#else /* WIN32 */ + while (received < SAMPLES_PER_FRAME * sizeof(short)) { + len = recv(fd, srv_in + (received / sizeof(short)), (SAMPLES_PER_FRAME * sizeof(short)) - received, 0); //seems that Skype only sends 320 bytes at time + received += len; + if (len == 0) + break; + } + if (len) + len = received; +#endif /* WIN32 */ + + if ((SAMPLERATE_SKYPIAX - 8000) == 0) { + + ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]); + ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]); + if (len > 0) { + a = 0; + for (i = 0; i < len / sizeof(short); i++) { + srv_out[a] = srv_in[i]; + i++; + a++; + } + + if (!tech_pvt->audiobuf_is_loaded) { + for (i = 0; i < (len / sizeof(short)) / 2; i++) { + tech_pvt->audiobuf[i] = srv_out[i]; + } + tech_pvt->audiobuf_is_loaded = 1; + } else { + unsigned int howmany; + + howmany = len / 2 / 2; + for (i = 0; i < howmany; i++) + totalbuf[i] = tech_pvt->audiobuf[i]; + + howmany = len / 2 / 2; + for (a = 0; a < howmany; a++) { + totalbuf[i] = srv_out[a]; + i++; + } + + howmany = len; + +#ifdef WIN32 + skypiax_file_write(tech_pvt->audiopipe[1], totalbuf, &howmany); +#else /* WIN32 */ + howmany = write(tech_pvt->audiopipe[1], totalbuf, howmany); +#endif /* WIN32 */ + tech_pvt->audiobuf_is_loaded = 0; + } + + } else if (len == 0) { + DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG); + skypiax_sleep(1000); + } else { + ERRORA("len=%d\n", SKYPIAX_P_LOG, len); + exit = 1; + break; + } + } else if (SAMPLERATE_SKYPIAX == 16000) { + + //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]); + //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]); + if (len > 0) { + if (len == SAMPLES_PER_FRAME * sizeof(short)) { +#ifdef WIN32 + unsigned int howmany; + + howmany = len; + skypiax_file_write(tech_pvt->audiopipe[1], srv_in, &howmany); +#else /* WIN32 */ + len = write(tech_pvt->audiopipe[1], srv_in, len); +#endif /* WIN32 */ + } else if (len == SAMPLES_PER_FRAME * sizeof(short) / 2) { + if (!tech_pvt->audiobuf_is_loaded) { + for (i = 0; i < (len / sizeof(short)); i++) { + tech_pvt->audiobuf[i] = srv_in[i]; + } + tech_pvt->audiobuf_is_loaded = 1; + } else { + unsigned int howmany = SAMPLES_PER_FRAME * sizeof(short); + + for (i = 0; i < (len / sizeof(short)); i++) + totalbuf[i] = tech_pvt->audiobuf[i]; + for (a = 0; a < (len / sizeof(short)); a++) { + totalbuf[i] = srv_in[a]; + i++; + } + +#ifdef WIN32 + skypiax_file_write(tech_pvt->audiopipe[1], totalbuf, &howmany); +#else /* WIN32 */ + howmany = write(tech_pvt->audiopipe[1], totalbuf, howmany); +#endif /* WIN32 */ + tech_pvt->audiobuf_is_loaded = 0; + } + + } else { + ERRORA("SRV len=%d\n", SKYPIAX_P_LOG, len); + } + + } else if (len == 0) { + DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG); + skypiax_sleep(1000); + } else { + ERRORA("SRV len=%d\n", SKYPIAX_P_LOG, len); + exit = 1; + break; + } + + } else { + ERRORA("SAMPLERATE_SKYPIAX can only be 8000 or 16000\n", SKYPIAX_P_LOG); + } + } else { + if (rt) + ERRORA("SRV rt=%d\n", SKYPIAX_P_LOG, rt); + skypiax_sleep(10000); + } + } +#ifdef WIN32 + kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); + skypiax_file_write(tech_pvt->audiopipe[1], kill_cli_buff, &kill_cli_size); + kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); + skypiax_file_write(tech_pvt->audioskypepipe[1], kill_cli_buff, &kill_cli_size); + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); + skypiax_file_write(tech_pvt->audiopipe[1], kill_cli_buff, &kill_cli_size); + kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); + skypiax_file_write(tech_pvt->audioskypepipe[1], kill_cli_buff, &kill_cli_size); +#else /* WIN32 */ + kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); + len = write(tech_pvt->audiopipe[1], kill_cli_buff, kill_cli_size); + kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); + len = write(tech_pvt->audioskypepipe[1], kill_cli_buff, kill_cli_size); + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); + len = write(tech_pvt->audiopipe[1], kill_cli_buff, kill_cli_size); + kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); + len = write(tech_pvt->audioskypepipe[1], kill_cli_buff, kill_cli_size); +#endif /* WIN32 */ + DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG); +#ifndef WIN32 + close(fd); +#else + closesocket(fd); +#endif + if (exit) + break; + } + + DEBUGA_SKYPE("server (I am it) GONE\n", SKYPIAX_P_LOG); +#ifndef WIN32 + close(s); +#else + closesocket(s); +#endif + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; +} +void * skypiax_do_tcp_cli_thread_func(void *obj) +{ + private_t *tech_pvt = obj; + int s; + struct sockaddr_in my_addr; + struct sockaddr_in remote_addr; + unsigned int got; +#ifdef WIN32 + unsigned int len; + unsigned int i; + unsigned int a; + int sin_size; + unsigned int fd; + short cli_out[SAMPLES_PER_FRAME * 2]; + short cli_in[SAMPLES_PER_FRAME]; +#else + int len; + int i; + int a; + unsigned int sin_size; + int fd; + short cli_out[SAMPLES_PER_FRAME * 2]; + short cli_in[SAMPLES_PER_FRAME]; +#endif /* WIN32 */ + + if (option_debug > 100) { + DEBUGA_SKYPE("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + memset(&my_addr, 0, sizeof(my_addr)); + my_addr.sin_family = AF_INET; + my_addr.sin_addr.s_addr = htonl(0x7f000001); /* use the localhost */ + my_addr.sin_port = htons(tech_pvt->tcp_cli_port); //FIXME configurable! + + if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) { + ERRORA("socket Error\n", SKYPIAX_P_LOG); + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; + } + + if (bind(s, (struct sockaddr *) &my_addr, sizeof(struct sockaddr)) < 0) { + ERRORA("bind Error\n", SKYPIAX_P_LOG); + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } +#ifndef WIN32 + close(s); +#else + closesocket(s); +#endif + return NULL; + } + DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG); + + listen(s, 6); + + sin_size = sizeof(remote_addr); + while ((fd = accept(s, (struct sockaddr *) &remote_addr, &sin_size)) > 0) { + DEBUGA_SKYPE("ACCEPTED\n", SKYPIAX_P_LOG); + if (!running) + break; + while (tech_pvt->interface_state != SKYPIAX_STATE_DOWN + && (tech_pvt->skype_callflow == CALLFLOW_STATUS_INPROGRESS + || tech_pvt->skype_callflow == SKYPIAX_STATE_UP)) { +#ifdef WIN32 + unsigned int fdselect; +#else + int fdselect; +#endif /* WIN32 */ + int rt; + fd_set fs; + struct timeval to; + + if (!running) + break; +#ifdef WIN32 + fdselect = fd; //cannot select on audioskypepipe, let's select on socket write +#else /* WIN32 */ + fdselect = tech_pvt->audioskypepipe[0]; +#endif /* WIN32 */ + FD_ZERO(&fs); + FD_SET(fdselect, &fs); + to.tv_usec = 2000000; //2000 msec + to.tv_sec = 0; + +#ifdef WIN32 + rt = select(fdselect + 1, NULL, &fs, NULL, &to); //cannot select on audioskypepipe, let's select on socket write +#else /* WIN32 */ + rt = select(fdselect + 1, &fs, NULL, NULL, &to); +#endif /* WIN32 */ + if (rt > 0) { + if ((SAMPLERATE_SKYPIAX - 8000) == 0) { + got = SAMPLES_PER_FRAME * sizeof(short); +#ifdef WIN32 + skypiax_file_read(tech_pvt->audioskypepipe[0], cli_in, &got); +#else /* WIN32 */ + got = read(tech_pvt->audioskypepipe[0], cli_in, got); +#endif /* WIN32 */ + + if (got > 0) { + a = 0; + for (i = 0; i < got / sizeof(short); i++) { + cli_out[a] = cli_in[i]; + a++; + cli_out[a] = cli_in[i]; + a++; + } + +#ifdef WIN32 + len = send(fd, (char *) cli_out, got * 2, 0); +#else /* WIN32 */ + len = send(fd, cli_out, got * 2, 0); +#endif /* WIN32 */ + if (len == 0) { + ERRORA("Skype server GONE\n", SKYPIAX_P_LOG); + break; + } + } else { + skypiax_sleep(1000); + ERRORA("CLI PIPE give us: %u\n", SKYPIAX_P_LOG, got); + } + } else if (SAMPLERATE_SKYPIAX == 16000) { + got = SAMPLES_PER_FRAME * sizeof(short); +#ifdef WIN32 + skypiax_file_read(tech_pvt->audioskypepipe[0], cli_in, &got); +#else /* WIN32 */ + got = read(tech_pvt->audioskypepipe[0], cli_in, got); +#endif /* WIN32 */ + + if (got > 0) { + if (got != SAMPLES_PER_FRAME * sizeof(short)) + ERRORA("CLI PIPE read %d\n", SKYPIAX_P_LOG, got); + +#ifdef WIN32 + len = send(fd, (char *) cli_in, got, 0); +#else /* WIN32 */ + len = send(fd, cli_in, got, 0); +#endif /* WIN32 */ + + if (len != got && len != -1) + DEBUGA_SKYPE("CLI PIPE send %d\n", SKYPIAX_P_LOG, len); + + if (len == 0) { + ERRORA("Skype server GONE\n", SKYPIAX_P_LOG); + break; + } + } else { + skypiax_sleep(1000); + ERRORA("CLI PIPE give us: %u\n", SKYPIAX_P_LOG, got); + } + } + + } else { + skypiax_sleep(1000); + if (rt) + ERRORA("select give us: %u\n", SKYPIAX_P_LOG, rt); + } + + } + DEBUGA_SKYPE("Skype server GONE\n", SKYPIAX_P_LOG); +#ifndef WIN32 + close(fd); +#else + closesocket(fd); +#endif + break; + } + + DEBUGA_SKYPE("client (I am it) GONE\n", SKYPIAX_P_LOG); +#ifndef WIN32 + close(s); +#else + closesocket(s); +#endif + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return NULL; +} + +int skypiax_skypeaudio_init(private_t * tech_pvt) +{ + +#ifdef WIN32 + switch_status_t rv; + rv = + switch_file_pipe_create(&tech_pvt->audiopipe[0], &tech_pvt->audiopipe[1], + skypiax_module_pool); + rv = + switch_file_pipe_create(&tech_pvt->audioskypepipe[0], &tech_pvt->audioskypepipe[1], + skypiax_module_pool); +#else /* WIN32 */ + if (pipe(tech_pvt->audiopipe)) { + fcntl(tech_pvt->audiopipe[0], F_SETFL, O_NONBLOCK); + fcntl(tech_pvt->audiopipe[1], F_SETFL, O_NONBLOCK); + } + if (pipe(tech_pvt->audioskypepipe)) { + fcntl(tech_pvt->audioskypepipe[0], F_SETFL, O_NONBLOCK); + fcntl(tech_pvt->audioskypepipe[1], F_SETFL, O_NONBLOCK); + } +#endif /* WIN32 */ + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + +int skypiax_skypeaudio_read(private_t * tech_pvt) +{ + //private_t *p; + unsigned int samples; + int rt; +#ifndef WIN32 + int fdselect; + fd_set fs; + struct timeval to; +#endif /* WIN32 */ + +#ifdef WIN32 + rt = 1; +#else /* WIN32 */ + fdselect = tech_pvt->audiopipe[0]; + FD_ZERO(&fs); + FD_SET(fdselect, &fs); + to.tv_usec = 2000000; //2000 msec + to.tv_sec = 0; + rt = select(fdselect + 1, &fs, NULL, NULL, &to); +#endif /* WIN32 */ + if (rt > 0) { + samples = SAMPLES_PER_FRAME * sizeof(short); +#ifdef WIN32 + skypiax_file_read(tech_pvt->audiopipe[0], tech_pvt->read_frame.data, &samples); +#else /* WIN32 */ + samples = read(tech_pvt->audiopipe[0], tech_pvt->read_frame.data, samples); +#endif /* WIN32 */ + + //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]); + //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]); + if (samples != SAMPLES_PER_FRAME * sizeof(short)) { + //if (samples) + //ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG, samples, SAMPLES_PER_FRAME * sizeof(short)); + //assert(samples == SAMPLES_PER_FRAME * sizeof(short)); //do a crash, please + return 0; + } else { + /* A real frame */ + tech_pvt->read_frame.datalen = samples; + } + } else { + if (rt) + DEBUGA_SKYPE("select returned %d\n", SKYPIAX_P_LOG, rt); + //do nothing + } + return 1; +} + +#ifdef WIN32 + +enum { + SKYPECONTROLAPI_ATTACH_SUCCESS = 0, /* Client is successfully + attached and API window handle can be found + in wParam parameter */ + SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION = 1, /* Skype has acknowledged + connection request and is waiting + for confirmation from the user. */ + /* The client is not yet attached + * and should wait for SKYPECONTROLAPI_ATTACH_SUCCESS message */ + SKYPECONTROLAPI_ATTACH_REFUSED = 2, /* User has explicitly + denied access to client */ + SKYPECONTROLAPI_ATTACH_NOT_AVAILABLE = 3, /* API is not available + at the moment. + For example, this happens when no user + is currently logged in. */ + /* Client should wait for + * SKYPECONTROLAPI_ATTACH_API_AVAILABLE + * broadcast before making any further */ + /* connection attempts. */ + SKYPECONTROLAPI_ATTACH_API_AVAILABLE = 0x8001 +}; + +char + *strsep(char **stringp, const char *delim) +{ + char *res; + + if (!stringp || !*stringp || !**stringp) + return (char *) 0; + + res = *stringp; + while (**stringp && !strchr(delim, **stringp)) + ++(*stringp); + + if (**stringp) { + **stringp = '\0'; + ++(*stringp); + } + + return res; +} + +LRESULT APIENTRY skypiax_skype_present(HWND hWindow, UINT uiMessage, WPARAM uiParam, + LPARAM ulParam) +{ + LRESULT lReturnCode; + int fIssueDefProc; + private_t *tech_pvt = NULL; + + lReturnCode = 0; + fIssueDefProc = 0; + tech_pvt = (private_t *) GetWindowLong(hWindow, GWL_USERDATA); + switch (uiMessage) { + case WM_CREATE: + tech_pvt = (private_t *) ((LPCREATESTRUCT) ulParam)->lpCreateParams; + SetWindowLong(hWindow, GWL_USERDATA, (LONG) tech_pvt); + DEBUGA_SKYPE("got CREATE\n", SKYPIAX_P_LOG); + break; + case WM_DESTROY: + NOTICA("got DESTROY\n", SKYPIAX_P_LOG); + tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle = NULL; + PostQuitMessage(0); + break; + case WM_COPYDATA: + if (tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle == (HWND) uiParam) { + unsigned int howmany; + char msg_from_skype[2048]; + + PCOPYDATASTRUCT poCopyData = (PCOPYDATASTRUCT) ulParam; + + memset(msg_from_skype, '\0', sizeof(msg_from_skype)); + strncpy(msg_from_skype, (const char *) poCopyData->lpData, + sizeof(msg_from_skype) - 2); + + howmany = strlen(msg_from_skype) + 1; + skypiax_file_write(tech_pvt->SkypiaxHandles.fdesc[1], msg_from_skype, &howmany); + //NOTICA("From Skype API: %s\n", SKYPIAX_P_LOG, (const char *) poCopyData->lpData); + lReturnCode = 1; + } + break; + default: + if (tech_pvt && tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) { + if (uiMessage == + tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) { + switch (ulParam) { + case SKYPECONTROLAPI_ATTACH_SUCCESS: + if (!tech_pvt->SkypiaxHandles.api_connected) { + DEBUGA_SKYPE("\n\n\tConnected to Skype API!\n", SKYPIAX_P_LOG); + tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam; + tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle = + tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle; + } + break; + case SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION: + DEBUGA_SKYPE + ("\n\n\tIf I do not (almost) immediately connect to Skype API,\n\tplease give the Skype client authorization to be connected \n\tby Asterisk and to not ask you again.\n\n", + SKYPIAX_P_LOG); + skypiax_sleep(5000); + if (!tech_pvt->SkypiaxHandles.api_connected) { + SendMessage(HWND_BROADCAST, + tech_pvt->SkypiaxHandles. + win32_uiGlobal_MsgID_SkypeControlAPIDiscover, + (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, + 0); + } + break; + case SKYPECONTROLAPI_ATTACH_REFUSED: + ERRORA("Skype client refused to be connected by Skypiax!\n", SKYPIAX_P_LOG); + break; + case SKYPECONTROLAPI_ATTACH_NOT_AVAILABLE: + ERRORA("Skype API not (yet?) available\n", SKYPIAX_P_LOG); + break; + case SKYPECONTROLAPI_ATTACH_API_AVAILABLE: + DEBUGA_SKYPE("Skype API available\n", SKYPIAX_P_LOG); + skypiax_sleep(5000); + if (!tech_pvt->SkypiaxHandles.api_connected) { + SendMessage(HWND_BROADCAST, + tech_pvt->SkypiaxHandles. + win32_uiGlobal_MsgID_SkypeControlAPIDiscover, + (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, + 0); + } + break; + default: + WARNINGA("GOT AN UNKNOWN SKYPE WINDOWS MSG\n", SKYPIAX_P_LOG); + } + lReturnCode = 1; + break; + } + } + fIssueDefProc = 1; + break; + } + if (fIssueDefProc) + lReturnCode = DefWindowProc(hWindow, uiMessage, uiParam, ulParam); + return (lReturnCode); +} + +int win32_Initialize_CreateWindowClass(private_t * tech_pvt) +{ + unsigned char *paucUUIDString; + RPC_STATUS lUUIDResult; + int fReturnStatus; + UUID oUUID; + + fReturnStatus = 0; + lUUIDResult = UuidCreate(&oUUID); + tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle = + (HINSTANCE) OpenProcess(PROCESS_DUP_HANDLE, FALSE, GetCurrentProcessId()); + if (tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle != NULL + && (lUUIDResult == RPC_S_OK || lUUIDResult == RPC_S_UUID_LOCAL_ONLY)) { + if (UuidToString(&oUUID, &paucUUIDString) == RPC_S_OK) { + WNDCLASS oWindowClass; + + strcpy(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, "Skype-API-Skypiax-"); + strcat(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, + (char *) paucUUIDString); + + oWindowClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; + oWindowClass.lpfnWndProc = (WNDPROC) & skypiax_skype_present; + oWindowClass.cbClsExtra = 0; + oWindowClass.cbWndExtra = 0; + oWindowClass.hInstance = tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle; + oWindowClass.hIcon = NULL; + oWindowClass.hCursor = NULL; + oWindowClass.hbrBackground = NULL; + oWindowClass.lpszMenuName = NULL; + oWindowClass.lpszClassName = tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName; + + if (RegisterClass(&oWindowClass) != 0) + fReturnStatus = 1; + + RpcStringFree(&paucUUIDString); + } + } + if (fReturnStatus == 0) + CloseHandle(tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle), + tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle = NULL; + return (fReturnStatus); +} + +void win32_DeInitialize_DestroyWindowClass(private_t * tech_pvt) +{ + UnregisterClass(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, + tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle); + CloseHandle(tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle), + tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle = NULL; +} + +int win32_Initialize_CreateMainWindow(private_t * tech_pvt) +{ + tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle = + CreateWindowEx(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, + tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, "", + WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, + 128, 128, NULL, 0, tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle, + tech_pvt); + return (tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL ? 1 : 0); +} + +void win32_DeInitialize_DestroyMainWindow(private_t * tech_pvt) +{ + if (tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL) + DestroyWindow(tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle), + tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle = NULL; +} + +DWORD win32_dwThreadId; + +void * skypiax_do_skypeapi_thread_func(void *obj) +{ + /* create window class */ + /* create dummy/hidden window for processing messages */ + /* run message loop thread */ + /* do application control until exit */ + /* exit: send QUIT message to our own window */ + /* wait until thred terminates */ + /* destroy main window */ + /* destroy window class */ + + private_t *tech_pvt = obj; + + switch_file_pipe_create(&tech_pvt->SkypiaxHandles.fdesc[0], + &tech_pvt->SkypiaxHandles.fdesc[1], skypiax_module_pool); + tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach = + RegisterWindowMessage("SkypeControlAPIAttach"); + tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover = + RegisterWindowMessage("SkypeControlAPIDiscover"); + + skypiax_sleep(2000000); + + if (tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0 + && tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) { + if (win32_Initialize_CreateWindowClass(tech_pvt)) { + if (win32_Initialize_CreateMainWindow(tech_pvt)) { + if (SendMessage + (HWND_BROADCAST, + tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover, + (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, 0) != 0) { + tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle = + tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle; + while (1) { + MSG oMessage; + if (!running) + break; + while (GetMessage(&oMessage, 0, 0, 0)) { + TranslateMessage(&oMessage); + DispatchMessage(&oMessage); + } + } + } + win32_DeInitialize_DestroyMainWindow(tech_pvt); + } + win32_DeInitialize_DestroyWindowClass(tech_pvt); + } + } + + return NULL; +} + +#else /* NOT WIN32 */ + +int X11_errors_handler(Display * dpy, XErrorEvent * err) +{ + (void) dpy; + private_t *tech_pvt = NULL; + + xerror = err->error_code; + ERRORA("Received error code %d from X Server\n\n", SKYPIAX_P_LOG, xerror); + return 0; /* ignore the error */ +} + +static void X11_errors_trap(void) +{ + xerror = 0; + old_handler = XSetErrorHandler(X11_errors_handler); +} + +static int X11_errors_untrap(void) +{ + XSetErrorHandler(old_handler); + return (xerror != BadValue) && (xerror != BadWindow); +} + +int skypiax_skype_send_message(struct SkypiaxHandles *SkypiaxHandles, + const char *message_P) +{ + + Window w_P; + Display *disp; + Window handle_P; + int ok; + private_t *tech_pvt = NULL; + + w_P = SkypiaxHandles->skype_win; + disp = SkypiaxHandles->disp; + handle_P = SkypiaxHandles->win; + + Atom atom1 = XInternAtom(disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False); + Atom atom2 = XInternAtom(disp, "SKYPECONTROLAPI_MESSAGE", False); + unsigned int pos = 0; + unsigned int len = strlen(message_P); + XEvent e; + + memset(&e, 0, sizeof(e)); + e.xclient.type = ClientMessage; + e.xclient.message_type = atom1; /* leading message */ + e.xclient.display = disp; + e.xclient.window = handle_P; + e.xclient.format = 8; + + X11_errors_trap(); + //XLockDisplay(disp); + do { + unsigned int i; + for (i = 0; i < 20 && i + pos <= len; ++i) + e.xclient.data.b[i] = message_P[i + pos]; + XSendEvent(disp, w_P, False, 0, &e); + + e.xclient.message_type = atom2; /* following messages */ + pos += i; + } while (pos <= len); + + XSync(disp, False); + ok = X11_errors_untrap(); + + if (!ok) + ERRORA("Sending message failed with status %d\n", SKYPIAX_P_LOG, xerror); + //XUnlockDisplay(disp); + + return 1; +} + +int skypiax_skype_present(struct SkypiaxHandles *SkypiaxHandles) +{ + Atom skype_inst = XInternAtom(SkypiaxHandles->disp, "_SKYPE_INSTANCE", True); + + Atom type_ret; + int format_ret; + unsigned long nitems_ret; + unsigned long bytes_after_ret; + unsigned char *prop; + int status; + private_t *tech_pvt = NULL; + + X11_errors_trap(); + //XLockDisplay(disp); + status = + XGetWindowProperty(SkypiaxHandles->disp, DefaultRootWindow(SkypiaxHandles->disp), + skype_inst, 0, 1, False, XA_WINDOW, &type_ret, &format_ret, + &nitems_ret, &bytes_after_ret, &prop); + //XUnlockDisplay(disp); + X11_errors_untrap(); + + /* sanity check */ + if (status != Success || format_ret != 32 || nitems_ret != 1) { + SkypiaxHandles->skype_win = (Window) - 1; + DEBUGA_SKYPE("Skype instance not found\n", SKYPIAX_P_LOG); + return 0; + } + + SkypiaxHandles->skype_win = *(const unsigned long *) prop & 0xffffffff; + DEBUGA_SKYPE("Skype instance found with id #%d\n", SKYPIAX_P_LOG, + (unsigned int) SkypiaxHandles->skype_win); + return 1; +} + +void skypiax_skype_clean_disp(void *data) +{ + + int *dispptr; + int disp; + private_t *tech_pvt = NULL; + + dispptr = data; + disp = *dispptr; + + if (disp) { + DEBUGA_SKYPE("to be destroyed disp %d\n", SKYPIAX_P_LOG, disp); + close(disp); + DEBUGA_SKYPE("destroyed disp\n", SKYPIAX_P_LOG); + } else { + DEBUGA_SKYPE("NOT destroyed disp\n", SKYPIAX_P_LOG); + } + DEBUGA_SKYPE("OUT destroyed disp\n", SKYPIAX_P_LOG); + skypiax_sleep(1000); +} + +void * skypiax_do_skypeapi_thread_func(void *obj) +{ + + private_t *tech_pvt = obj; + struct SkypiaxHandles *SkypiaxHandles; + char buf[512]; + Display *disp = NULL; + Window root = -1; + Window win = -1; + + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + + if (pipe(tech_pvt->SkypiaxHandles.fdesc)) { + fcntl(tech_pvt->SkypiaxHandles.fdesc[0], F_SETFL, O_NONBLOCK); + fcntl(tech_pvt->SkypiaxHandles.fdesc[1], F_SETFL, O_NONBLOCK); + } + SkypiaxHandles = &tech_pvt->SkypiaxHandles; + disp = XOpenDisplay(tech_pvt->X11_display); + if (!disp) { + ERRORA("Cannot open X Display '%s', exiting skype thread\n", SKYPIAX_P_LOG, + tech_pvt->X11_display); + running=0; + return NULL; + } else { + DEBUGA_SKYPE("X Display '%s' opened\n", SKYPIAX_P_LOG, tech_pvt->X11_display); + } + + int xfd; + xfd = XConnectionNumber(disp); + fcntl(xfd, F_SETFD, FD_CLOEXEC); + + //FIXME pthread_cleanup_push(skypiax_skype_clean_disp, &xfd); + + SkypiaxHandles->disp = disp; + + if (skypiax_skype_present(SkypiaxHandles)) { + root = DefaultRootWindow(disp); + win = + XCreateSimpleWindow(disp, root, 0, 0, 1, 1, 0, + BlackPixel(disp, DefaultScreen(disp)), BlackPixel(disp, + DefaultScreen + (disp))); + + SkypiaxHandles->win = win; + + snprintf(buf, 512, "NAME skypiax"); + + if (!skypiax_skype_send_message(SkypiaxHandles, buf)) { + ERRORA + ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n", + SKYPIAX_P_LOG); + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + running=0; + return NULL; + } + + snprintf(buf, 512, "PROTOCOL 6"); + if (!skypiax_skype_send_message(SkypiaxHandles, buf)) { + ERRORA + ("Sending message failed - probably Skype crashed. Please run/restart Skype manually and launch Skypiax again\n", + SKYPIAX_P_LOG); + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + running=0; + return NULL; + } + + /* perform an events loop */ + XEvent an_event; + char buf[21]; /* can't be longer */ + char buffer[17000]; + char *b; + int i; + + b = buffer; + + while (1) { + XNextEvent(disp, &an_event); + if (!running) + break; + switch (an_event.type) { + case ClientMessage: + + if (an_event.xclient.format != 8) + break; + + for (i = 0; i < 20 && an_event.xclient.data.b[i] != '\0'; ++i) + buf[i] = an_event.xclient.data.b[i]; + + buf[i] = '\0'; + + strcat(buffer, buf); + + if (i < 20) { /* last fragment */ + unsigned int howmany; + + howmany = strlen(b) + 1; + + howmany = write(SkypiaxHandles->fdesc[1], b, howmany); + memset(buffer, '\0', 17000); + } + + break; + default: + break; + } + } + } else { + ERRORA + ("Skype is not running, maybe crashed. Please run/restart Skype and relaunch Skypiax\n", + SKYPIAX_P_LOG); + running=0; + return NULL; + } + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + running=0; + return NULL; + +} +#endif // WIN32 + +int skypiax_skype_write(private_t * tech_pvt, char *msg_to_skype) +{ +#ifdef WIN32 + static char acInputRow[1024]; + COPYDATASTRUCT oCopyData; +#else /* WIN32 */ + struct SkypiaxHandles *SkypiaxHandles; +#endif /* WIN32 */ + + DEBUGA_SKYPE("SENDING: |||%s||||\n", SKYPIAX_P_LOG, msg_to_skype); + +#ifdef WIN32 + + if (option_debug > 100) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + sprintf(acInputRow, "%s", msg_to_skype); + if (option_debug > 100) + DEBUGA_SKYPE("acInputRow: |||%s||||\n", SKYPIAX_P_LOG, acInputRow); + /* send command to skype */ + oCopyData.dwData = 0; + oCopyData.lpData = acInputRow; + oCopyData.cbData = strlen(acInputRow) + 1; + if (oCopyData.cbData != 1) { + if (SendMessage + (tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle, WM_COPYDATA, + (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, + (LPARAM) & oCopyData) == FALSE) { + ERRORA + ("Sending message failed - probably Skype crashed.\n\nPlease shutdown Skypiax (Asterisk), then restart Skype from the menu, then launch Skypiax and try again.\n", + SKYPIAX_P_LOG); + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + } +#else /* WIN32 */ + + if (option_debug > 100) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + SkypiaxHandles = &tech_pvt->SkypiaxHandles; + + if (!skypiax_skype_send_message(SkypiaxHandles, msg_to_skype)) { + ERRORA + ("Sending message failed - probably Skype crashed.\n\nPlease shutdown Skypiax (Asterisk), then restart Skype from the menu, then launch Skypiax and try again.\n", + SKYPIAX_P_LOG); + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } +#endif /* WIN32 */ + + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; + +} + +int skypiax_skype_read(private_t * tech_pvt) +{ + + char read_from_pipe[4096]; + char messaggio[4096]; + char messaggio_2[4096]; + char *buf, obj[512] = "", id[512] = "", prop[512] = "", value[512] = "", *where; + char **stringp = NULL; + int rt; + int a; + unsigned int howmany; + unsigned int i; +#ifndef WIN32 + int fdselect; + fd_set fs; + struct timeval to; +#endif /* WIN32 */ + + if (option_debug > 100) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + + memset(read_from_pipe, 0, 4096); + memset(messaggio, 0, 4096); + memset(messaggio_2, 0, 4096); + +#ifdef WIN32 + rt = 1; +#else /* WIN32 */ + fdselect = tech_pvt->SkypiaxHandles.fdesc[0]; + FD_ZERO(&fs); + FD_SET(fdselect, &fs); + to.tv_usec = 2000000; //500 msec + to.tv_sec = 0; + rt = select(fdselect + 1, &fs, NULL, NULL, &to); +#endif /* WIN32 */ + + if (rt > 0) { + if (tech_pvt->SkypiaxHandles.fdesc[0]) { + howmany = sizeof(read_from_pipe); +#ifdef WIN32 + skypiax_file_read(tech_pvt->SkypiaxHandles.fdesc[0], read_from_pipe, &howmany); +#else /* WIN32 */ + howmany = + read(tech_pvt->SkypiaxHandles.fdesc[0], read_from_pipe, sizeof(read_from_pipe)); +#endif /* WIN32 */ + + a = 0; + for (i = 0; i < howmany; i++) { + messaggio[a] = read_from_pipe[i]; + a++; + + if (read_from_pipe[i] == '\0') { + + //DEBUGA_SKYPE("read_skype: howmany=%d, i=%d, a=%d, |||%s||| \n", SKYPIAX_P_LOG, howmany, i, a, messaggio); + DEBUGA_SKYPE("READING: |||%s||| \n", SKYPIAX_P_LOG, messaggio); + + if (!strcasecmp(messaggio, "ERROR 68")) { /* not yet protocol specified, + just authorized */ + DEBUGA_SKYPE + ("If I don't connect immediately, please give the Skype client authorization to be connected by Skypiax (and to not ask you again)\n", + SKYPIAX_P_LOG); + skypiax_sleep(1000000); + skypiax_skype_write(tech_pvt, "PROTOCOL 6"); + skypiax_sleep(10000); + return 0; + } + + if (!strncasecmp(messaggio, "ERROR 92 CALL", 12)) { + ERRORA("Skype got ERROR: |||%s|||, the number we called was not recognized\n", + SKYPIAX_P_LOG, messaggio); + tech_pvt->skype_callflow = CALLFLOW_STATUS_FINISHED; + if (option_debug) + DEBUGA_SKYPE("skype_call now is DOWN\n", SKYPIAX_P_LOG); + tech_pvt->skype_call_id[0] = '\0'; + + if (tech_pvt->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + return CALLFLOW_INCOMING_HANGUP; + } else { + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + } + } + + strncpy(messaggio_2, messaggio, sizeof(messaggio) - 1); + + buf = messaggio; + stringp = &buf; + where = strsep(stringp, " "); + if (!where) { + WARNINGA("Skype MSG without spaces: %s\n", SKYPIAX_P_LOG, messaggio); + } + + if (!strcasecmp(messaggio, "#333")) { + /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[11]: %s\n", SKYPIAX_P_LOG, + * messaggio_2, &messaggio_2[11]); */ + memset(tech_pvt->skype_friends, 0, 4096); + strncpy(tech_pvt->skype_friends, &messaggio_2[11], 4095); + } + if (!strcasecmp(messaggio, "#222")) { + /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[10]: %s\n", SKYPIAX_P_LOG, + * messaggio_2, &messaggio_2[10]); */ + memset(tech_pvt->skype_fullname, 0, 512); + strncpy(tech_pvt->skype_fullname, &messaggio_2[10], 511); + } + if (!strcasecmp(messaggio, "#765")) { + /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[10]: %s\n", SKYPIAX_P_LOG, + * messaggio_2, &messaggio_2[10]); */ + memset(tech_pvt->skype_displayname, 0, 512); + strncpy(tech_pvt->skype_displayname, &messaggio_2[10], 511); + } + if (!strcasecmp(messaggio, "ERROR")) { + ERRORA("Skype got ERROR: |||%s|||\n", SKYPIAX_P_LOG, messaggio); + tech_pvt->skype_callflow = CALLFLOW_STATUS_FINISHED; + if (option_debug) + DEBUGA_SKYPE("skype_call now is DOWN\n", SKYPIAX_P_LOG); + tech_pvt->skype_call_id[0] = '\0'; + + if (tech_pvt->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + return CALLFLOW_INCOMING_HANGUP; + } else { + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + } + } + if (!strcasecmp(messaggio, "CURRENTUSERHANDLE")) { + strncpy(obj, where, sizeof(obj) - 1); + + where = strsep(stringp, " "); + + strncpy(id, where, sizeof(id) - 1); + + if (!strcasecmp(id, tech_pvt->skype_user)) { + tech_pvt->SkypiaxHandles.api_connected = 1; + //DEBUGA_SKYPE ("Skype MSG: messaggio: %s, currentuserhandle: %s, cuh: %s, skype_user: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, tech_pvt->skype_user); + } + } + + if (!strcasecmp(messaggio, "USER")) { + strncpy(obj, where, sizeof(obj) - 1); + + where = strsep(stringp, " "); + + strncpy(id, where, sizeof(id) - 1); + + where = strsep(stringp, " "); + + strncpy(prop, where, sizeof(prop) - 1); + + if (!strcasecmp(prop, "RECEIVEDAUTHREQUEST")) { + char msg_to_skype[256]; + DEBUGA_SKYPE("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s!\n", + SKYPIAX_P_LOG, messaggio, obj, id, prop); + + //FIXME: TODO: allow authorization based on config param + sprintf(msg_to_skype, "SET USER %s ISAUTHORIZED TRUE", id); + skypiax_skype_write(tech_pvt, msg_to_skype); + } + } + + if (!strcasecmp(messaggio, "MESSAGE")) { + strncpy(obj, where, sizeof(obj) - 1); + + where = strsep(stringp, " "); + + strncpy(id, where, sizeof(id) - 1); + + where = strsep(stringp, " "); + + strncpy(prop, where, sizeof(prop) - 1); + + if (!strcasecmp(prop, "STATUS")) { + + where = strsep(stringp, " "); + + strncpy(value, where, sizeof(value) - 1); + + if (!strcasecmp(value, "RECEIVED")) { + char msg_to_skype[256]; + DEBUGA_SKYPE + ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s value: %s!\n", + SKYPIAX_P_LOG, messaggio, obj, id, prop, value); + + //FIXME: TODO: allow authorization based on config param + sprintf(msg_to_skype, "SET MESSAGE %s SEEN", id); + skypiax_skype_write(tech_pvt, msg_to_skype); + } + } else if (!strcasecmp(prop, "BODY")) { + char msg_to_skype[256]; + + DEBUGA_SKYPE("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s!\n", + SKYPIAX_P_LOG, messaggio, obj, id, prop); + + //FIXME: TODO: on config param ??? + sprintf(msg_to_skype, "SET MESSAGE %s SEEN", id); + skypiax_skype_write(tech_pvt, msg_to_skype); + } + + } + + if (!strcasecmp(messaggio, "CALL")) { + + strncpy(obj, where, sizeof(obj) - 1); + + where = strsep(stringp, " "); + + strncpy(id, where, sizeof(id) - 1); + + where = strsep(stringp, " "); + + strncpy(prop, where, sizeof(prop) - 1); + + where = strsep(stringp, " "); + + strncpy(value, where, sizeof(value) - 1); + + where = strsep(stringp, " "); + + if (option_debug > 101) + DEBUGA_SKYPE + ("Skype MSG: messaggio: %s, obj: %s, id: %s, prop: %s, value: %s,where: %s!\n", + SKYPIAX_P_LOG, messaggio, obj, id, prop, value, where ? where : "NULL"); + + if (!strcasecmp(prop, "PARTNER_HANDLE")) { + strncpy(tech_pvt->callid_number, value, + sizeof(tech_pvt->callid_number) - 1); + DEBUGA_SKYPE + ("the skype_call %s caller PARTNER_HANDLE (tech_pvt->callid_number) is: %s\n", + SKYPIAX_P_LOG, id, tech_pvt->callid_number); + return CALLFLOW_INCOMING_RING; + } + if (!strcasecmp(prop, "PARTNER_DISPNAME")) { + snprintf(tech_pvt->callid_name, sizeof(tech_pvt->callid_name) - 1, "%s%s%s", + value, where ? " " : "", where ? where : ""); + DEBUGA_SKYPE + ("the skype_call %s caller PARTNER_DISPNAME (tech_pvt->callid_name) is: %s\n", + SKYPIAX_P_LOG, id, tech_pvt->callid_name); + } + if (!strcasecmp(prop, "CONF_ID") && !strcasecmp(value, "0")) { + DEBUGA_SKYPE("the skype_call %s is NOT a conference call\n", SKYPIAX_P_LOG, + id); + if (tech_pvt->interface_state == SKYPIAX_STATE_DOWN) + tech_pvt->interface_state = SKYPIAX_STATE_PRERING; + } + if (!strcasecmp(prop, "CONF_ID") && strcasecmp(value, "0")) { + DEBUGA_SKYPE("the skype_call %s is a conference call\n", SKYPIAX_P_LOG, id); + if (tech_pvt->interface_state == SKYPIAX_STATE_DOWN) + tech_pvt->interface_state = SKYPIAX_STATE_PRERING; + } + + if (!strcasecmp(prop, "DTMF")) { + + DEBUGA_SKYPE("Call %s received a DTMF: %s\n", SKYPIAX_P_LOG, id, value); + + dtmf_received(tech_pvt, value); + } + + if (!strcasecmp(prop, "FAILUREREASON")) { + DEBUGA_SKYPE + ("Skype has FAILED on skype_call %s. Let's wait for the FAILED message.\n", + SKYPIAX_P_LOG, id); + } + if (!strcasecmp(prop, "DURATION") && (!strcasecmp(value, "1"))) { + if (strcasecmp(id, tech_pvt->skype_call_id)) { + strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); + if (option_debug > 1) + DEBUGA_SKYPE + ("We called a Skype contact and he answered us on skype_call: %s.\n", + SKYPIAX_P_LOG, id); + } + } + + if (!strcasecmp(prop, "STATUS")) { + + if (!strcasecmp(value, "RINGING")) { + char msg_to_skype[1024]; + if (tech_pvt->interface_state != SKYPIAX_STATE_DIALING) { + /* we are not calling out */ + + if (!strlen(tech_pvt->skype_call_id)) { //FIXME + /* we are not inside an active call */ + tech_pvt->skype_callflow = CALLFLOW_STATUS_RINGING; + tech_pvt->interface_state = SKYPIAX_STATE_RING; + /* no owner, no active call, let's answer */ + skypiax_skype_write(tech_pvt, "SET AGC OFF"); + skypiax_sleep(10000); + skypiax_skype_write(tech_pvt, "SET AEC OFF"); + skypiax_sleep(10000); + sprintf(msg_to_skype, "GET CALL %s PARTNER_DISPNAME", id); + skypiax_skype_write(tech_pvt, msg_to_skype); + skypiax_sleep(10000); + sprintf(msg_to_skype, "GET CALL %s PARTNER_HANDLE", id); + skypiax_skype_write(tech_pvt, msg_to_skype); + skypiax_sleep(10000); + sprintf(msg_to_skype, "ALTER CALL %s ANSWER", id); + skypiax_skype_write(tech_pvt, msg_to_skype); + if (option_debug) + DEBUGA_SKYPE("We answered a Skype RING on skype_call %s\n", + SKYPIAX_P_LOG, id); + strncpy(tech_pvt->skype_call_id, id, + sizeof(tech_pvt->skype_call_id) - 1); + } else { + /* we're owned, we're in a call, let's refuse */ + sprintf(msg_to_skype, "ALTER CALL %s END HANGUP", id); + skypiax_skype_write(tech_pvt, msg_to_skype); + skypiax_sleep(10000); + DEBUGA_SKYPE + ("We have NOT answered a Skype RING on skype_call %s, because we are already in a skypiax call\n", + SKYPIAX_P_LOG, id); + + } + } else { + /* we are calling out */ + tech_pvt->skype_callflow = CALLFLOW_STATUS_RINGING; + tech_pvt->interface_state = SKYPIAX_STATE_RINGING; + //FIXME ast_queue_control(tech_pvt->owner, SKYPIAX_CONTROL_RINGING); + strncpy(tech_pvt->skype_call_id, id, + sizeof(tech_pvt->skype_call_id) - 1); + DEBUGA_SKYPE("Our remote party in skype_call %s is RINGING\n", + SKYPIAX_P_LOG, id); + } + } else if (!strcasecmp(value, "EARLYMEDIA")) { + tech_pvt->skype_callflow = CALLFLOW_STATUS_EARLYMEDIA; + tech_pvt->interface_state = SKYPIAX_STATE_DIALING; + //FIXME ast_queue_control(tech_pvt->owner, SKYPIAX_CONTROL_RINGING); + DEBUGA_SKYPE("Our remote party in skype_call %s is EARLYMEDIA\n", + SKYPIAX_P_LOG, id); + } else if (!strcasecmp(value, "MISSED")) { + DEBUGA_SKYPE("We missed skype_call %s\n", SKYPIAX_P_LOG, id); + + } else if (!strcasecmp(value, "FINISHED")) { + //tech_pvt->skype_callflow = CALLFLOW_STATUS_FINISHED; + if (option_debug) + DEBUGA_SKYPE("skype_call %s now is DOWN\n", SKYPIAX_P_LOG, id); + tech_pvt->skype_call_id[0] = '\0'; + + if (tech_pvt->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + //tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + return CALLFLOW_INCOMING_HANGUP; + } else { + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + } + + } else if (!strcasecmp(value, "CANCELLED")) { + tech_pvt->skype_callflow = CALLFLOW_STATUS_CANCELLED; + if (option_debug) + DEBUGA_SKYPE + ("we tried to call Skype on skype_call %s and Skype has now CANCELLED\n", + SKYPIAX_P_LOG, id); + tech_pvt->skype_call_id[0] = '\0'; + + if (tech_pvt->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + return CALLFLOW_INCOMING_HANGUP; + } else { + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + } + } else if (!strcasecmp(value, "FAILED")) { + tech_pvt->skype_callflow = CALLFLOW_STATUS_FAILED; + if (option_debug) + DEBUGA_SKYPE + ("we tried to call Skype on skype_call %s and Skype has now FAILED\n", + SKYPIAX_P_LOG, id); + tech_pvt->skype_call_id[0] = '\0'; + strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return CALLFLOW_INCOMING_HANGUP; + } else if (!strcasecmp(value, "REFUSED")) { + if (!strcasecmp(id, tech_pvt->skype_call_id)) { + /* this is the id of the call we are in, probably we generated it */ + tech_pvt->skype_callflow = CALLFLOW_STATUS_REFUSED; + if (option_debug) + DEBUGA_SKYPE + ("we tried to call Skype on skype_call %s and Skype has now REFUSED\n", + SKYPIAX_P_LOG, id); + strncpy(tech_pvt->skype_call_id, id, + sizeof(tech_pvt->skype_call_id) - 1); + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + tech_pvt->skype_call_id[0] = '\0'; + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return CALLFLOW_INCOMING_HANGUP; + } else { + /* we're here because were us that refused an incoming call */ + DEBUGA_SKYPE("we REFUSED skype_call %s\n", SKYPIAX_P_LOG, id); + + } + } else if (!strcasecmp(value, "ROUTING")) { + tech_pvt->skype_callflow = CALLFLOW_STATUS_ROUTING; + tech_pvt->interface_state = SKYPIAX_STATE_DIALING; + strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); + DEBUGA_SKYPE("skype_call: %s is now ROUTING\n", SKYPIAX_P_LOG, id); + } else if (!strcasecmp(value, "UNPLACED")) { + tech_pvt->skype_callflow = CALLFLOW_STATUS_UNPLACED; + tech_pvt->interface_state = SKYPIAX_STATE_DIALING; + strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); + DEBUGA_SKYPE("skype_call: %s is now UNPLACED\n", SKYPIAX_P_LOG, id); + } else if (!strcasecmp(value, "INPROGRESS")) { + char msg_to_skype[1024]; + tech_pvt->skype_callflow = CALLFLOW_STATUS_INPROGRESS; + strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); + tech_pvt->interface_state = SKYPIAX_STATE_UP; + if (option_debug > 1) + DEBUGA_SKYPE("skype_call: %s is now active\n", SKYPIAX_P_LOG, id); + + if (option_debug > 1) + DEBUGA_SKYPE("skype_call: %s SKYPIAX_CONTROL_ANSWER sent\n", + SKYPIAX_P_LOG, id); + + start_audio_threads(tech_pvt); + + sprintf(msg_to_skype, "ALTER CALL %s SET_OUTPUT PORT=\"%d\"", id, + tech_pvt->tcp_srv_port); + skypiax_skype_write(tech_pvt, msg_to_skype); + skypiax_sleep(100000); + sprintf(msg_to_skype, "ALTER CALL %s SET_INPUT PORT=\"%d\"", id, + tech_pvt->tcp_cli_port); + skypiax_skype_write(tech_pvt, msg_to_skype); + skypiax_sleep(100000); + + tech_pvt->skype_callflow = SKYPIAX_STATE_UP; + + if (!strlen(tech_pvt->session_uuid_str)) { + + DEBUGA_SKYPE("New Inbound Channel!\n", SKYPIAX_P_LOG); + + new_inbound_channel(tech_pvt); + } else { + + DEBUGA_SKYPE("Outbound Channel Answered!\n", SKYPIAX_P_LOG); + + outbound_channel_answered(tech_pvt); + } + + } else { + WARNINGA("skype_call: %s, STATUS: %s is not recognized\n", SKYPIAX_P_LOG, + id, value); + + } + } //STATUS + + } //CALL + + a = 0; + } //message end + } //read_from_pipe + + } + } + + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + //DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + return 0; +} + +int skypiax_skype_senddigit(private_t * tech_pvt, char digit) +{ + char msg_to_skype[1024]; + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + + DEBUGA_SKYPE("DIGIT received: %c\n", SKYPIAX_P_LOG, digit); + + sprintf(msg_to_skype, "SET CALL %s DTMF %c", tech_pvt->skype_call_id, digit); + + skypiax_skype_write(tech_pvt, msg_to_skype); + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + +int skypiax_skype_call(private_t * tech_pvt, char *rdest, int timeout) +{ + char msg_to_skype[1024]; + + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + skypiax_sleep(5000); + DEBUGA_SKYPE("Calling Skype, rdest is: %s\n", SKYPIAX_P_LOG, rdest); + skypiax_skype_write(tech_pvt, "SET AGC OFF"); + skypiax_sleep(10000); + skypiax_skype_write(tech_pvt, "SET AEC OFF"); + skypiax_sleep(10000); + + sprintf(msg_to_skype, "CALL %s", rdest); + if (skypiax_skype_write(tech_pvt, msg_to_skype) < 0) { + + ERRORA("failed to communicate with Skype client, now exit\n", SKYPIAX_P_LOG); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } + //FIXME ast_queue_control(tech_pvt->owner, SKYPIAX_CONTROL_RINGING); + return 0; +} + +#if 0 +static switch_status_t channel_write_frame(switch_core_session_t * session, + switch_frame_t * frame, switch_io_flag_t flags, + int stream_id) +{ + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; + unsigned int sent; + + channel = switch_core_session_get_channel(session); + assert(channel != NULL); + + tech_pvt = switch_core_session_get_private(session); + assert(tech_pvt != NULL); + + if (!switch_test_flag(tech_pvt, TFLAG_IO)) { + ERRORA("CIAPA \n", SKYPIAX_P_LOG); + return SWITCH_STATUS_FALSE; + } +#ifdef BIGENDIAN + if (switch_test_flag(tech_pvt, TFLAG_LINEAR)) { + switch_swap_linear(frame->data, (int) frame->datalen / 2); + } +#endif + + sent = frame->datalen; +#ifdef WIN32 + switch_file_write(tech_pvt->audioskypepipe[1], frame->data, &sent); +#else /* WIN32 */ + sent = write(tech_pvt->audioskypepipe[1], frame->data, sent); +#endif /* WIN32 */ + if (sent != frame->datalen && sent != -1) { + DEBUGA_SKYPE("CLI PIPE write %d\n", SKYPIAX_P_LOG, sent); + } + + return SWITCH_STATUS_SUCCESS; +} +#endif + + +int skypiax_skypeaudio_write(struct skypiax_pvt *p, struct ast_frame *f) +{ + int sent; + + if (option_debug > 100) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + sent = write(p->audioskypepipe[1], (short *) f->data, f->datalen); + + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} +int skypiax_console_skype(int fd, int argc, char *argv[]) +{ + struct skypiax_pvt *p = skypiax_console_find_desc(skypiax_console_active); + char skype_msg[1024]; + int i, a, c; + + if (argc == 1) { + return RESULT_SHOWUSAGE; + } + if (!p) { + ast_cli(fd, + "No \"current\" console for skypiax_skype, please enter 'help console'\n"); + return RESULT_SUCCESS; + } + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (!p->skype) { + ast_cli(fd, "The \"current\" console is not connected to a Skype client'\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; + } + + memset(skype_msg, 0, sizeof(skype_msg)); + c = 0; + for (i = 1; i < argc; i++) { + for (a = 0; a < strlen(argv[i]); a++) { + skype_msg[c] = argv[i][a]; + c++; + if (c == 1022) + break; + } + if (i != argc - 1) { + skype_msg[c] = ' '; + c++; + } + if (c == 1023) + break; + } + skypiax_skype_write(p, skype_msg); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; +} +int skypiax_console_skypiax_dir_import(int fd, int argc, char *argv[]) +{ + //int res; + struct skypiax_pvt *p = skypiax_console_find_desc(skypiax_console_active); + //char list_command[64]; + char fn[256]; + char date[256] = ""; + time_t t; + char *configfile = SKYPIAX_DIR_CONFIG; + int add_to_skypiax_dir_conf = 1; + //int fromskype = 0; + //int fromcell = 0; + +#if 0 + if(directoriax_entry_extension){ + skypiax_dir_entry_extension=directoriax_entry_extension; + }else{ + ast_cli(fd, "No 'directoriax_entry_extension', you MUST have loaded directoriax.so\n"); + return RESULT_SUCCESS; + } +#endif + + if (argc != 2) + return RESULT_SHOWUSAGE; + if (!p) { + ast_cli(fd, "No \"current\" console ???, please enter 'help skypiax_console'\n"); + return RESULT_SUCCESS; + } + + if (!strcasecmp(argv[1], "add")) + add_to_skypiax_dir_conf = 1; + else if (!strcasecmp(argv[1], "replace")) + add_to_skypiax_dir_conf = 0; + else { + ast_cli(fd, "\n\nYou have neither specified 'add' nor 'replace'\n\n"); + return RESULT_SHOWUSAGE; + } + +#if 0 + if (!strcasecmp(argv[2], "fromskype")) + fromskype = 1; + else if (!strcasecmp(argv[2], "fromcell")) + fromcell = 1; + else { + ast_cli(fd, "\n\nYou have neither specified 'fromskype' nor 'fromcell'\n\n"); + return RESULT_SHOWUSAGE; + } + + if (fromcell) { + ast_cli(fd, + "Importing from cellphone is currently supported only on \"AT\" cellphones :( !\n"); + //fclose(p->phonebook_writing_fp); + //skypiax_dir_create_extensions(); + return RESULT_SUCCESS; + } + + if (fromskype) + if (!p->skype) { + ast_cli(fd, "Importing from skype is supported by skypiax_dir on chan_skypiax!\n"); + //fclose(p->phonebook_writing_fp); + //skypiax_dir_create_extensions(); + return RESULT_SUCCESS; + } + + if (fromcell || fromskype) + if (argc != 3) { + ast_cli(fd, + "\n\nYou don't have to specify a filename with 'fromcell' or with 'fromskype'\n\n"); + return RESULT_SHOWUSAGE; + } +#endif + + /*******************************************************************************************/ + + if (configfile[0] == '/') { + ast_copy_string(fn, configfile, sizeof(fn)); + } else { + snprintf(fn, sizeof(fn), "%s/%s", ast_config_AST_CONFIG_DIR, configfile); + } + if (option_debug) + NOTICA("Opening '%s'\n", SKYPIAX_P_LOG, fn); + time(&t); + ast_copy_string(date, ctime(&t), sizeof(date)); + + if (add_to_skypiax_dir_conf) + p->phonebook_writing_fp = fopen(fn, "a+"); + else + p->phonebook_writing_fp = fopen(fn, "w+"); + + if (p->phonebook_writing_fp) { + if (add_to_skypiax_dir_conf) { + if (option_debug) + NOTICA("Opened '%s' for appending \n", SKYPIAX_P_LOG, fn); + fprintf(p->phonebook_writing_fp, ";!\n"); + fprintf(p->phonebook_writing_fp, ";! Update Date: %s", date); + fprintf(p->phonebook_writing_fp, ";! Updated by: %s, %d\n", __FILE__, __LINE__); + fprintf(p->phonebook_writing_fp, ";!\n"); + } else { + if (option_debug) + NOTICA("Opened '%s' for writing \n", SKYPIAX_P_LOG, fn); + fprintf(p->phonebook_writing_fp, ";!\n"); + fprintf(p->phonebook_writing_fp, ";! Automatically generated configuration file\n"); + fprintf(p->phonebook_writing_fp, ";! Filename: %s (%s)\n", configfile, fn); + fprintf(p->phonebook_writing_fp, ";! Creation Date: %s", date); + fprintf(p->phonebook_writing_fp, ";! Generated by: %s, %d\n", __FILE__, __LINE__); + fprintf(p->phonebook_writing_fp, ";!\n"); + fprintf(p->phonebook_writing_fp, "[general]\n\n"); + fprintf(p->phonebook_writing_fp, "[default]\n"); + } + + /*******************************************************************************************/ + //if (fromskype) { + if (p->skype) { + WARNINGA + ("About to querying the Skype client 'Contacts', it may take some moments... Don't worry.\n", + SKYPIAX_P_LOG); + if (p->skype_thread != AST_PTHREADT_NULL) { + char msg_to_skype[1024]; + + p->skype_friends[0] = '\0'; + sprintf(msg_to_skype, "#333 SEARCH FRIENDS"); + if (skypiax_skype_write(p, msg_to_skype) < 0) { + return -1; + } + + int friends_count = 0; + while (p->skype_friends[0] == '\0') { + /* FIXME needs a timeout, can't wait forever! + * eg. when skype is running but not connected! */ + usleep(100); + friends_count++; + if (friends_count > 20000) { + return -1; /* FIXME */ + } + } + + } + + if (p->skype_thread != AST_PTHREADT_NULL) { + char msg_to_skype[1024]; + + if (p->skype_friends[0] != '\0') { + char *buf, *where; + char **stringp; + int skype_dir_file_written = 0; + + buf = p->skype_friends; + stringp = &buf; + where = strsep(stringp, ", "); + while (where) { + if (where[0] != '\0') { + /* + * So, we have the Skype username (the HANDLE, I think is called). + * But we want to call the names we see in the Skype contact list + * So, let's check the DISPLAYNAME (the end user modified contact name) + * Then, we check the FULLNAME (that appears as it was the DISPLAYNAME + * if the end user has not modify it) + * If we still have neither DISPLAYNAME nor FULLNAME, we'll use the + * Skipe username (the HANDLE) + */ + + p->skype_displayname[0] = '\0'; + sprintf(msg_to_skype, "#765 GET USER %s DISPLAYNAME", where); + skypiax_skype_write(p, msg_to_skype); + int displayname_count = 0; + while (p->skype_displayname[0] == '\0') { + /* FIXME needs a timeout, can't wait forever! + * eg. when skype is running but not connected! */ + usleep(100); + displayname_count++; + if (displayname_count > 20000) + return -1; /* FIXME */ + } + if (p->skype_displayname[0] != '\0') { + char *where2; + char sanitized[300]; + + sanitized[0] = '\0'; + + where2 = strstr(p->skype_displayname, "DISPLAYNAME "); + if (where2) { + + /* there can be some *smart* that makes a displayname + * that is different than firstlast, */ + /* maybe initials, simbols, slashes, + * something smartish... let's check */ + + if (where2[12] != '\0') { + int i = 12; + int x = 0; + int spaces = 0; + int last_char_was_space = 0; + + for (i = 12; i < strlen(where2) && x < 299; i++) { + if (!isalnum(where2[i])) { + if (!isblank(where2[i])) { + /* bad char */ + continue; + } + /* is a space */ + if (last_char_was_space == 1) /* do not write 2 consecutive spaces */ + continue; + last_char_was_space = 1; + sanitized[x] = ' '; + x++; + continue; + } + /* is alphanum */ + last_char_was_space = 0; + sanitized[x] = where2[i]; + x++; + continue; + } + + sanitized[x] = '\0'; + if (spaces == 0) { + } + DEBUGA_SKYPE("sanitized=|%s|, where=|%s|, where2=|%s|\n", + SKYPIAX_P_LOG, sanitized, where, &where2[12]); + } + + if (where2[12] != '\0') { + skypiax_dir_entry_extension++; + if (where[0] == '+' || isdigit(where[0])) { /* is a skypeout number */ + fprintf(p->phonebook_writing_fp, + "%s => ,%sSKO,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromskype=%s|phonebook_entry_owner=%s\n", + where, sanitized, "no", + p->skypiax_dir_entry_extension_prefix, "2", + skypiax_dir_entry_extension, "yes", "not_specified"); + } else { /* is a skype name */ + fprintf(p->phonebook_writing_fp, + "%s => ,%sSKY,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromskype=%s|phonebook_entry_owner=%s\n", + where, sanitized, "no", + p->skypiax_dir_entry_extension_prefix, "1", + skypiax_dir_entry_extension, "yes", "not_specified"); + } + skype_dir_file_written = 1; + + } + } + } + p->skype_displayname[0] = '\0'; + + p->skype_fullname[0] = '\0'; + sprintf(msg_to_skype, "#222 GET USER %s FULLNAME", where); + skypiax_skype_write(p, msg_to_skype); + int fullname_count = 0; + while (p->skype_fullname[0] == '\0') { + /* FIXME needs a timeout, can't wait forever! + * eg. when skype is running but not connected! */ + usleep(100); + fullname_count++; + if (fullname_count > 20000) + return -1; /* FIXME */ + } + if (p->skype_fullname[0] != '\0') { + char *where2; + char sanitized[300]; + + where2 = strstr(p->skype_fullname, "FULLNAME "); + if (where2) { + + /* there can be some *smart* that makes a fullname + * that is different than firstlast, */ + /* maybe initials, simbols, slashes, + * something smartish... let's check */ + + if (where2[9] != '\0') { + int i = 9; + int x = 0; + int spaces = 0; + int last_char_was_space = 0; + + for (i = 9; i < strlen(where2) && x < 299; i++) { + if (!isalnum(where2[i])) { + if (!isblank(where2[i])) { + /* bad char */ + continue; + } + /* is a space */ + if (last_char_was_space == 1) /* do not write 2 consecutive spaces */ + continue; + last_char_was_space = 1; + sanitized[x] = ' '; + x++; + continue; + } + /* alphanum */ + last_char_was_space = 0; + sanitized[x] = where2[i]; + x++; + continue; + } + + sanitized[x] = '\0'; + if (spaces == 0) { + } + DEBUGA_SKYPE("sanitized=|%s|, where=|%s|, where2=|%s|\n", + SKYPIAX_P_LOG, sanitized, where, &where2[9]); + } + + if (skype_dir_file_written == 0) { + skypiax_dir_entry_extension++; + if (where2[9] != '\0') { + if (where[0] == '+' || isdigit(where[0])) { /* is a skypeout number */ + fprintf(p->phonebook_writing_fp, + "%s => ,%sSKO,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromskype=%s|phonebook_entry_owner=%s\n", + where, sanitized, "no", + p->skypiax_dir_entry_extension_prefix, "2", + skypiax_dir_entry_extension, "yes", "not_specified"); + } else { /* is a skype name */ + fprintf(p->phonebook_writing_fp, + "%s => ,%sSKY,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromskype=%s|phonebook_entry_owner=%s\n", + where, sanitized, "no", + p->skypiax_dir_entry_extension_prefix, "1", + skypiax_dir_entry_extension, "yes", "not_specified"); + + } + + } else { + if (where[0] == '+' || isdigit(where[0])) { /* is a skypeout number */ + fprintf(p->phonebook_writing_fp, + "%s => ,%sSKO,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromskype=%s|phonebook_entry_owner=%s\n", + where, where, "no", + p->skypiax_dir_entry_extension_prefix, "2", + skypiax_dir_entry_extension, "yes", "not_specified"); + } else { /* is a skype name */ + fprintf(p->phonebook_writing_fp, + "%s => ,%sSKY,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromskype=%s|phonebook_entry_owner=%s\n", + where, where, "no", + p->skypiax_dir_entry_extension_prefix, "1", + skypiax_dir_entry_extension, "yes", "not_specified"); + + } + } + } + + skype_dir_file_written = 0; + + } + + } + p->skype_fullname[0] = '\0'; + + } + where = strsep(stringp, ", "); + } + + p->skype_friends[0] = '\0'; + } + } + } else { + + ast_cli(fd, + "Skype not configured on the 'current' console, not importing from Skype client!\n"); + } + //} + /*******************************************************************************************/ + /*******************************************************************************************/ + } else { + ast_cli(fd, "\n\nfailed to open the skypiax_dir.conf configuration file: %s\n", fn); + ERRORA("failed to open the skypiax_dir.conf configuration file: %s\n", SKYPIAX_P_LOG, + fn); + return RESULT_FAILURE; + } + + fclose(p->phonebook_writing_fp); + //skypiax_dir_create_extensions(); + + return RESULT_SUCCESS; +} From gmaruzz at freeswitch.org Sat Jan 31 08:07:53 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Sat, 31 Jan 2009 10:07:53 -0600 Subject: [Freeswitch-svn] [commit] r11578 - freeswitch/branches/gmaruzz/mod_skypiax/asterisk Message-ID: Author: gmaruzz Date: Sat Jan 31 10:07:53 2009 New Revision: 11578 Log: skypiax: has answered first call on asterisk, DTMF incoming works (eg. IVR), outbound audio works, incoming audio not yet Modified: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/chan_skypiax.c freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax.h freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/chan_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/asterisk/chan_skypiax.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/chan_skypiax.c Sat Jan 31 10:07:53 2009 @@ -107,7 +107,7 @@ /*! \brief Default skypiax_pvt structure values, * used by skypiax_mkif to initialize the interfaces */ struct skypiax_pvt skypiax_default = { - .interface_state = AST_STATE_DOWN, + .interface_state = SKYPIAX_STATE_DOWN, .skype_callflow = 0, .context = "default", .language = "en", @@ -341,7 +341,7 @@ DEBUGA_PBX("Requesting: %s, name: %s, format: %d\n", SKYPIAX_P_LOG, type, name, format); /* create a new channel owning this interface */ - tmp = skypiax_new(p, AST_STATE_DOWN, p->context); + tmp = skypiax_new(p, SKYPIAX_STATE_DOWN, p->context); if (!tmp) { /* the channel was not created, probable memory allocation error */ *cause = AST_CAUSE_SWITCH_CONGESTION; @@ -398,16 +398,16 @@ if (option_debug > 10) { DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); } - if (p->skype && p->interface_state != AST_STATE_DOWN) { + if (p->skype && p->interface_state != SKYPIAX_STATE_DOWN) { char msg_to_skype[1024]; - p->interface_state = AST_STATE_HANGUP_REQUESTED; + p->interface_state = SKYPIAX_STATE_HANGUP_REQUESTED; DEBUGA_SKYPE("hanging up skype call: %s\n", SKYPIAX_P_LOG, p->skype_call_id); //sprintf(msg_to_skype, "SET CALL %s STATUS FINISHED", p->skype_call_id); sprintf(msg_to_skype, "ALTER CALL %s HANGUP", p->skype_call_id); skypiax_skype_write(p, msg_to_skype); } - while (p->interface_state != AST_STATE_DOWN) { + while (p->interface_state != SKYPIAX_STATE_DOWN) { usleep(10000); } DEBUGA_SKYPE("Now is really DOWN\n", SKYPIAX_P_LOG); @@ -434,7 +434,7 @@ } p->controldev_thread = AST_PTHREADT_NULL; - p->interface_state = AST_STATE_DOWN; + p->interface_state = SKYPIAX_STATE_DOWN; p->skype_callflow = CALLFLOW_CALL_IDLE; DEBUGA_PBX("I'll send AST_CONTROL_HANGUP\n", SKYPIAX_P_LOG); @@ -454,7 +454,7 @@ /* our channel has no more this skypiax pvt interface to manage */ c->tech_pvt = NULL; /* set the channel state to DOWN, eg. available, not in active use */ - if (ast_setstate(c, AST_STATE_DOWN)) { + if (ast_setstate(c, SKYPIAX_STATE_DOWN)) { ERRORA("ast_setstate failed, BAD\n", SKYPIAX_P_LOG); if (option_debug > 10) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); @@ -490,11 +490,11 @@ DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); } /* whle ringing, we just wait, the skype thread will answer */ - while (p->interface_state == AST_STATE_RING) { + while (p->interface_state == SKYPIAX_STATE_RING) { usleep(10000); //10msec } - if (p->interface_state != AST_STATE_UP) { - ERRORA("call answering failed\n", SKYPIAX_P_LOG); + if (p->interface_state != SKYPIAX_STATE_UP) { + ERRORA("call answering failed, we want it to be into interface_state=%d, got %d\n", SKYPIAX_P_LOG, SKYPIAX_STATE_UP, p->interface_state); res = -1; } else { if (option_debug) @@ -603,7 +603,7 @@ f.delivery.tv_usec = 0; /* if the call is not active (ie: answered), do not send audio frames, they would pile up in a lag queue */ - if (p->owner && p->owner->_state != AST_STATE_UP) { + if (p->owner && p->owner->_state != SKYPIAX_STATE_UP) { if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } @@ -652,8 +652,8 @@ if (option_debug > 10) { DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); } - if ((c->_state != AST_STATE_DOWN) - && (c->_state != AST_STATE_RESERVED)) { + if ((c->_state != SKYPIAX_STATE_DOWN) + && (c->_state != SKYPIAX_STATE_RESERVED)) { ERRORA("skypiax_call called on %s, neither down nor reserved\n", SKYPIAX_P_LOG, c->name); if (option_debug > 10) { @@ -697,7 +697,7 @@ DEBUGA_PBX("skypiax_call dialed idest: %s, timeout: %d, dstr: %s!\n", SKYPIAX_P_LOG, idest, timeout, dstr); - ast_setstate(p->owner, AST_STATE_DIALING); + ast_setstate(p->owner, SKYPIAX_STATE_DIALING); if (option_debug > 10) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } @@ -732,7 +732,7 @@ if (option_debug > 100) { DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); } - if (p->owner && p->owner->_state != AST_STATE_UP) { + if (p->owner && p->owner->_state != SKYPIAX_STATE_UP) { if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } @@ -862,7 +862,7 @@ return NULL; } /* if the requested state is different from DOWN, let the pbx manage this interface (now part of the newly created channel) */ - if (state != AST_STATE_DOWN) { + if (state != SKYPIAX_STATE_DOWN) { DEBUGA_PBX("Try to start PBX on %s, state=%d\n", SKYPIAX_P_LOG, tmp->name, state); if (ast_pbx_start(tmp)) { ERRORA("Unable to start PBX on %s\n", SKYPIAX_P_LOG, tmp->name); @@ -1422,7 +1422,7 @@ free(tmp); return NULL; } - res = pipe(tmp->AsteriskHandlesAst.fdesc); + res = pipe(tmp->SkypiaxHandles.fdesc); if (res) { ast_log(LOG_ERROR, "Unable to create skype pipe\n"); if (option_debug > 10) { @@ -1431,9 +1431,10 @@ free(tmp); return NULL; } - fcntl(tmp->AsteriskHandlesAst.fdesc[0], F_SETFL, O_NONBLOCK); - fcntl(tmp->AsteriskHandlesAst.fdesc[1], F_SETFL, O_NONBLOCK); + fcntl(tmp->SkypiaxHandles.fdesc[0], F_SETFL, O_NONBLOCK); + fcntl(tmp->SkypiaxHandles.fdesc[1], F_SETFL, O_NONBLOCK); tmp->skype_thread = AST_PTHREADT_NULL; + if (tmp->skype) { if (option_debug > 1) ast_log(LOG_DEBUG, "TO BE started skype_thread=%lu STOP=%lu NULL=%lu\n", @@ -1441,7 +1442,7 @@ (unsigned long) AST_PTHREADT_NULL); #ifdef __CYGWIN__ if (ast_pthread_create - (&tmp->skype_thread, NULL, do_skypeapi_thread, &tmp->AsteriskHandlesAst) < 0) { + (&tmp->skype_thread, NULL, do_skypeapi_thread, &tmp->SkypiaxHandles) < 0) { ast_log(LOG_ERROR, "Unable to start skype_main thread.\n"); if (option_debug > 10) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_TMP_LOG); @@ -1452,7 +1453,7 @@ #else /* __CYGWIN__ */ #ifdef WANT_SKYPE_X11 if (option_debug > 1) - ast_log(LOG_DEBUG, "AsteriskHandlesfd: %d\n", tmp->AsteriskHandlesAst.fdesc[1]); + ast_log(LOG_DEBUG, "AsteriskHandlesfd: %d\n", tmp->SkypiaxHandles.fdesc[1]); if (ast_pthread_create(&tmp->skype_thread, NULL, do_skypeapi_thread, tmp) < 0) { ast_log(LOG_ERROR, "Unable to start skype_main thread.\n"); if (option_debug > 10) { @@ -1478,6 +1479,57 @@ (unsigned long) AST_PTHREADT_NULL); } + +#if 0 + if (tmp->skype) { +#if 0 + if (option_debug > 1) + ast_log(LOG_DEBUG, "TO BE started skype_thread=%lu STOP=%lu NULL=%lu\n", + (unsigned long) tmp->skype_thread, (unsigned long) AST_PTHREADT_STOP, + (unsigned long) AST_PTHREADT_NULL); +#endif +#ifdef __CYGWIN__ + if (ast_pthread_create + (&tmp->skype_thread, NULL, do_skypeapi_thread, &tmp->SkypiaxHandles) < 0) { + ast_log(LOG_ERROR, "Unable to start skype_main thread.\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_TMP_LOG); + } + free(tmp); + return NULL; + } +#else /* __CYGWIN__ */ +#ifdef WANT_SKYPE_X11 + if (ast_pthread_create(&tmp->signaling_thread, NULL, do_signaling_thread_fnc, tmp) < 0) { + ast_log(LOG_ERROR, "Unable to start skype_main thread.\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_TMP_LOG); + } + free(tmp); + return NULL; + } +#endif /* WANT_SKYPE_X11 */ +#endif /* __CYGWIN__ */ + usleep(100000); //0.1 sec + if( tmp->skype_thread == AST_PTHREADT_NULL){ + ast_log(LOG_ERROR, "Unable to start skype_main thread.\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_TMP_LOG); + } + free(tmp); + return NULL; + } + if (option_debug > 1) + ast_log(LOG_DEBUG, "STARTED signaling_thread=%lu STOP=%lu NULL=%lu\n", + (unsigned long) tmp->signaling_thread, (unsigned long) AST_PTHREADT_STOP, + (unsigned long) AST_PTHREADT_NULL); + } + +#endif + + + + /* return the newly created skypiax_pvt */ if (option_debug > 10) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_TMP_LOG); @@ -1577,14 +1629,14 @@ /* This interface needs to be watched, as it lacks an owner */ if (p->skype) { - if (FD_ISSET(p->AsteriskHandlesAst.fdesc[0], &rfds)) - ERRORA("Descriptor %d (AsteriskHandlesAst.fdesc[0]) appears twice ?\n", - SKYPIAX_P_LOG, p->AsteriskHandlesAst.fdesc[0]); - - if (p->AsteriskHandlesAst.fdesc[0] > 0) { - FD_SET(p->AsteriskHandlesAst.fdesc[0], &rfds); - if (p->AsteriskHandlesAst.fdesc[0] > max) - max = p->AsteriskHandlesAst.fdesc[0]; + if (FD_ISSET(p->SkypiaxHandles.fdesc[0], &rfds)) + ERRORA("Descriptor %d (SkypiaxHandles.fdesc[0]) appears twice ?\n", + SKYPIAX_P_LOG, p->SkypiaxHandles.fdesc[0]); + + if (p->SkypiaxHandles.fdesc[0] > 0) { + FD_SET(p->SkypiaxHandles.fdesc[0], &rfds); + if (p->SkypiaxHandles.fdesc[0] > max) + max = p->SkypiaxHandles.fdesc[0]; } } @@ -1639,12 +1691,12 @@ for (; p; p = p->next) { if (p->skype) { - if (FD_ISSET(p->AsteriskHandlesAst.fdesc[0], &rfds)) { + if (FD_ISSET(p->SkypiaxHandles.fdesc[0], &rfds)) { res = skypiax_skype_read(p); if (res == CALLFLOW_INCOMING_CALLID || res == CALLFLOW_INCOMING_RING) { //ast_log(LOG_NOTICE, "CALLFLOW_INCOMING_RING SKYPE\n"); DEBUGA_SKYPE("CALLFLOW_INCOMING_RING\n", SKYPIAX_P_LOG); - skypiax_new(p, AST_STATE_RING, p->context /* p->context */ ); + skypiax_new(p, SKYPIAX_STATE_RING, p->context /* p->context */ ); } } } @@ -2051,7 +2103,33 @@ return 0; } -int start_audio_threads(private_t *tech_pvt) { +int start_audio_threads(private_t *p) { + if (!p->tcp_srv_thread) { + if (ast_pthread_create + (&p->tcp_srv_thread, NULL, skypiax_do_tcp_srv_thread, p) < 0) { + ERRORA("Unable to start tcp_srv_thread thread.\n", SKYPIAX_P_LOG); + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } else { + DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPIAX_P_LOG); + } + } + if (!p->tcp_cli_thread) { + if (ast_pthread_create + (&p->tcp_cli_thread, NULL, skypiax_do_tcp_cli_thread, p) < 0) { + ERRORA("Unable to start tcp_cli_thread thread.\n", SKYPIAX_P_LOG); + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return -1; + } else { + DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG); + } + } + + #ifdef NOTDEF switch_threadattr_t *thd_attr = NULL; @@ -2077,7 +2155,8 @@ return 0; } -int new_inbound_channel(private_t *tech_pvt) { +int new_inbound_channel(private_t *p) { + #ifdef NOTDEF switch_core_session_t *session = NULL; switch_channel_t *channel = NULL; @@ -2113,12 +2192,12 @@ } switch_channel_mark_answered(channel); - DEBUGA_SKYPE("Here\n", SKYPIAX_P_LOG); #endif + NOTICA("Here\n", SKYPIAX_P_LOG); return 0; } -int outbound_channel_answered(private_t *tech_pvt) { +int outbound_channel_answered(private_t *p) { #ifdef NOTDEF switch_core_session_t *session = NULL; switch_channel_t *channel = NULL; @@ -2142,12 +2221,20 @@ } switch_core_session_rwunlock(session); - DEBUGA_SKYPE("HERE!\n", SKYPIAX_P_LOG); #endif + NOTICA("HERE!\n", SKYPIAX_P_LOG); return 0; } +void * skypiax_do_tcp_srv_thread(void *obj) +{ + return skypiax_do_tcp_srv_thread_func(obj); +} +void * skypiax_do_tcp_cli_thread(void *obj) +{ + return skypiax_do_tcp_cli_thread_func(obj); +} /************************************************/ #ifdef ASTERISK_VERSION_1_4 Modified: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax.h ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax.h (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax.h Sat Jan 31 10:07:53 2009 @@ -297,6 +297,7 @@ char skype_password[256]; char destination[256]; char session_uuid_str[512 + 1]; + pthread_t signaling_thread; }; typedef struct skypiax_pvt private_t; @@ -401,12 +402,13 @@ int new_inbound_channel(private_t *tech_pvt); int outbound_channel_answered(private_t *tech_pvt); int skypiax_skype_senddigit(struct skypiax_pvt *p, char digit); -#define SKYPIAX_STATE_DOWN 1 -#define SKYPIAX_STATE_RING 2 -#define SKYPIAX_STATE_DIALING 3 -#define SKYPIAX_STATE_BUSY 4 -#define SKYPIAX_STATE_UP 5 -#define SKYPIAX_STATE_RINGING 6 -#define SKYPIAX_STATE_PRERING 7 +#define SKYPIAX_STATE_DOWN AST_STATE_DOWN +#define SKYPIAX_STATE_RING AST_STATE_RING +#define SKYPIAX_STATE_DIALING AST_STATE_DIALING +#define SKYPIAX_STATE_BUSY AST_STATE_BUSY +#define SKYPIAX_STATE_UP AST_STATE_UP +#define SKYPIAX_STATE_RINGING AST_STATE_RINGING +#define SKYPIAX_STATE_PRERING AST_STATE_PRERING +#define SKYPIAX_STATE_RESERVED AST_STATE_RESERVED #define SKYPIAX_STATE_HANGUP_REQUESTED 200 #endif /* _SKYPIAX_H_ */ Modified: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax_protocol.c Sat Jan 31 10:07:53 2009 @@ -126,8 +126,8 @@ if ((SAMPLERATE_SKYPIAX - 8000) == 0) { - ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]); - ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]); + //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]); + //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]); if (len > 0) { a = 0; for (i = 0; i < len / sizeof(short); i++) { @@ -933,6 +933,15 @@ DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + if(!strlen(tech_pvt->X11_display)) + strcpy(tech_pvt->X11_display, getenv("DISPLAY")); + + if(!tech_pvt->tcp_srv_port) + tech_pvt->tcp_srv_port = 10160; + + if(!tech_pvt->tcp_cli_port) + tech_pvt->tcp_cli_port = 10161; + if (pipe(tech_pvt->SkypiaxHandles.fdesc)) { fcntl(tech_pvt->SkypiaxHandles.fdesc[0], F_SETFL, O_NONBLOCK); fcntl(tech_pvt->SkypiaxHandles.fdesc[1], F_SETFL, O_NONBLOCK); @@ -1019,6 +1028,7 @@ howmany = strlen(b) + 1; howmany = write(SkypiaxHandles->fdesc[1], b, howmany); + //DEBUGA_PBX("HERE: %s\n", SKYPIAX_P_LOG, b); memset(buffer, '\0', 17000); } From gmaruzz at freeswitch.org Sat Jan 31 08:48:15 2009 From: gmaruzz at freeswitch.org (FreeSWITCH SVN) Date: Sat, 31 Jan 2009 10:48:15 -0600 Subject: [Freeswitch-svn] [commit] r11579 - in freeswitch/branches/gmaruzz/mod_skypiax: . asterisk Message-ID: Author: gmaruzz Date: Sat Jan 31 10:48:15 2009 New Revision: 11579 Log: skypiax: same skyiax_protocol.c for FS and *. FS: works as before. Incoming audio not yet working on *, outgoing audio, incoming dtmf, IVR, works Modified: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/Makefile freeswitch/branches/gmaruzz/mod_skypiax/asterisk/chan_skypiax.c freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax_protocol.c freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/Makefile ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/asterisk/Makefile (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/Makefile Sat Jan 31 10:48:15 2009 @@ -23,6 +23,9 @@ #AST_INCLUDE_DIR=/home/maruzz/devel/svn_asterisk_branches_14/include AST_INCLUDE_DIR=/home/maruzz/devel/svn_celliax_trunk/asterisk-1.2.rev137401/include +#ASTERISK +CFLAGS+=-DASTERISK + #ASTERISK VERSION #Uncomment one of the following lines to match your Asterisk series #CFLAGS+=-DASTERISK_VERSION_1_4 Modified: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/chan_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/asterisk/chan_skypiax.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/chan_skypiax.c Sat Jan 31 10:48:15 2009 @@ -2236,6 +2236,71 @@ return skypiax_do_tcp_cli_thread_func(obj); } +int skypiax_skypeaudio_write(struct skypiax_pvt *p, struct ast_frame *f) +{ + int sent; + + if (option_debug > 100) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + sent = write(p->audioskypepipe[1], (short *) f->data, f->datalen); + + if (option_debug > 100) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} +int skypiax_console_skype(int fd, int argc, char *argv[]) +{ + struct skypiax_pvt *p = skypiax_console_find_desc(skypiax_console_active); + char skype_msg[1024]; + int i, a, c; + + if (argc == 1) { + return RESULT_SHOWUSAGE; + } + if (!p) { + ast_cli(fd, + "No \"current\" console for skypiax_skype, please enter 'help console'\n"); + return RESULT_SUCCESS; + } + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + if (!p->skype) { + ast_cli(fd, "The \"current\" console is not connected to a Skype client'\n"); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; + } + + memset(skype_msg, 0, sizeof(skype_msg)); + c = 0; + for (i = 1; i < argc; i++) { + for (a = 0; a < strlen(argv[i]); a++) { + skype_msg[c] = argv[i][a]; + c++; + if (c == 1022) + break; + } + if (i != argc - 1) { + skype_msg[c] = ' '; + c++; + } + if (c == 1023) + break; + } + skypiax_skype_write(p, skype_msg); + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return RESULT_SUCCESS; +} + /************************************************/ #ifdef ASTERISK_VERSION_1_4 #ifndef AST_MODULE Modified: freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/asterisk/skypiax_protocol.c Sat Jan 31 10:48:15 2009 @@ -1,19 +1,23 @@ #include "skypiax.h" +#ifdef ASTERISK #define skypiax_sleep usleep -#define skypiax_file_write switch_file_write -#define skypiax_file_read switch_file_read - #define tech_pvt p - #define SKYPIAX_DIR_CONFIG "directoriax.conf" - extern int skypiax_debug; -//extern switch_memory_pool_t *skypiax_module_pool; +#define skypiax_file_write switch_file_write +#define skypiax_file_read switch_file_read +extern char *skypiax_console_active; +#else /* FREESWITCH */ +#define skypiax_sleep switch_sleep +extern switch_memory_pool_t *skypiax_module_pool; +extern switch_endpoint_interface_t *skypiax_endpoint_interface; +#define skypiax_file_write switch_file_write +#define skypiax_file_read switch_file_read +#endif /* ASTERISK */ + extern int option_debug; -//extern switch_endpoint_interface_t *skypiax_endpoint_interface; extern int running; -extern char *skypiax_console_active; /* GLOBALS */ int skypiax_dir_entry_extension=1; @@ -1028,7 +1032,6 @@ howmany = strlen(b) + 1; howmany = write(SkypiaxHandles->fdesc[1], b, howmany); - //DEBUGA_PBX("HERE: %s\n", SKYPIAX_P_LOG, b); memset(buffer, '\0', 17000); } @@ -1632,110 +1635,7 @@ return 0; } -#if 0 -static switch_status_t channel_write_frame(switch_core_session_t * session, - switch_frame_t * frame, switch_io_flag_t flags, - int stream_id) -{ - switch_channel_t *channel = NULL; - private_t *tech_pvt = NULL; - unsigned int sent; - - channel = switch_core_session_get_channel(session); - assert(channel != NULL); - - tech_pvt = switch_core_session_get_private(session); - assert(tech_pvt != NULL); - - if (!switch_test_flag(tech_pvt, TFLAG_IO)) { - ERRORA("CIAPA \n", SKYPIAX_P_LOG); - return SWITCH_STATUS_FALSE; - } -#ifdef BIGENDIAN - if (switch_test_flag(tech_pvt, TFLAG_LINEAR)) { - switch_swap_linear(frame->data, (int) frame->datalen / 2); - } -#endif - - sent = frame->datalen; -#ifdef WIN32 - switch_file_write(tech_pvt->audioskypepipe[1], frame->data, &sent); -#else /* WIN32 */ - sent = write(tech_pvt->audioskypepipe[1], frame->data, sent); -#endif /* WIN32 */ - if (sent != frame->datalen && sent != -1) { - DEBUGA_SKYPE("CLI PIPE write %d\n", SKYPIAX_P_LOG, sent); - } - - return SWITCH_STATUS_SUCCESS; -} -#endif - - -int skypiax_skypeaudio_write(struct skypiax_pvt *p, struct ast_frame *f) -{ - int sent; - - if (option_debug > 100) { - DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); - } - sent = write(p->audioskypepipe[1], (short *) f->data, f->datalen); - - if (option_debug > 100) { - DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); - } - return 0; -} -int skypiax_console_skype(int fd, int argc, char *argv[]) -{ - struct skypiax_pvt *p = skypiax_console_find_desc(skypiax_console_active); - char skype_msg[1024]; - int i, a, c; - - if (argc == 1) { - return RESULT_SHOWUSAGE; - } - if (!p) { - ast_cli(fd, - "No \"current\" console for skypiax_skype, please enter 'help console'\n"); - return RESULT_SUCCESS; - } - if (option_debug > 10) { - DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); - } - if (!p->skype) { - ast_cli(fd, "The \"current\" console is not connected to a Skype client'\n"); - if (option_debug > 10) { - DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); - } - if (option_debug > 10) { - DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); - } - return RESULT_SUCCESS; - } - - memset(skype_msg, 0, sizeof(skype_msg)); - c = 0; - for (i = 1; i < argc; i++) { - for (a = 0; a < strlen(argv[i]); a++) { - skype_msg[c] = argv[i][a]; - c++; - if (c == 1022) - break; - } - if (i != argc - 1) { - skype_msg[c] = ' '; - c++; - } - if (c == 1023) - break; - } - skypiax_skype_write(p, skype_msg); - if (option_debug > 10) { - DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); - } - return RESULT_SUCCESS; -} +#ifdef ASTERISK int skypiax_console_skypiax_dir_import(int fd, int argc, char *argv[]) { //int res; @@ -2107,3 +2007,4 @@ return RESULT_SUCCESS; } +#endif /* ASTERISK */ Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Sat Jan 31 10:48:15 2009 @@ -1,14 +1,26 @@ #include "skypiax.h" +#ifdef ASTERISK +#define skypiax_sleep usleep +#define tech_pvt p +#define SKYPIAX_DIR_CONFIG "directoriax.conf" +extern int skypiax_debug; +#define skypiax_file_write switch_file_write +#define skypiax_file_read switch_file_read +extern char *skypiax_console_active; +#else /* FREESWITCH */ #define skypiax_sleep switch_sleep +extern switch_memory_pool_t *skypiax_module_pool; +extern switch_endpoint_interface_t *skypiax_endpoint_interface; #define skypiax_file_write switch_file_write #define skypiax_file_read switch_file_read +#endif /* ASTERISK */ -extern switch_memory_pool_t *skypiax_module_pool; extern int option_debug; -extern switch_endpoint_interface_t *skypiax_endpoint_interface; extern int running; +/* GLOBALS */ +int skypiax_dir_entry_extension=1; /*************************************/ #ifndef WIN32 XErrorHandler old_handler = 0; @@ -118,8 +130,8 @@ if ((SAMPLERATE_SKYPIAX - 8000) == 0) { - ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]); - ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]); + //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]); + //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]); if (len > 0) { a = 0; for (i = 0; i < len / sizeof(short); i++) { @@ -509,7 +521,7 @@ if (samples != SAMPLES_PER_FRAME * sizeof(short)) { //if (samples) //ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG, samples, SAMPLES_PER_FRAME * sizeof(short)); - assert(samples == SAMPLES_PER_FRAME * sizeof(short)); //do a crash, please + //assert(samples == SAMPLES_PER_FRAME * sizeof(short)); //do a crash, please return 0; } else { /* A real frame */ @@ -925,6 +937,15 @@ DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + if(!strlen(tech_pvt->X11_display)) + strcpy(tech_pvt->X11_display, getenv("DISPLAY")); + + if(!tech_pvt->tcp_srv_port) + tech_pvt->tcp_srv_port = 10160; + + if(!tech_pvt->tcp_cli_port) + tech_pvt->tcp_cli_port = 10161; + if (pipe(tech_pvt->SkypiaxHandles.fdesc)) { fcntl(tech_pvt->SkypiaxHandles.fdesc[0], F_SETFL, O_NONBLOCK); fcntl(tech_pvt->SkypiaxHandles.fdesc[1], F_SETFL, O_NONBLOCK); @@ -1613,3 +1634,377 @@ //FIXME ast_queue_control(tech_pvt->owner, SKYPIAX_CONTROL_RINGING); return 0; } + +#ifdef ASTERISK +int skypiax_console_skypiax_dir_import(int fd, int argc, char *argv[]) +{ + //int res; + struct skypiax_pvt *p = skypiax_console_find_desc(skypiax_console_active); + //char list_command[64]; + char fn[256]; + char date[256] = ""; + time_t t; + char *configfile = SKYPIAX_DIR_CONFIG; + int add_to_skypiax_dir_conf = 1; + //int fromskype = 0; + //int fromcell = 0; + +#if 0 + if(directoriax_entry_extension){ + skypiax_dir_entry_extension=directoriax_entry_extension; + }else{ + ast_cli(fd, "No 'directoriax_entry_extension', you MUST have loaded directoriax.so\n"); + return RESULT_SUCCESS; + } +#endif + + if (argc != 2) + return RESULT_SHOWUSAGE; + if (!p) { + ast_cli(fd, "No \"current\" console ???, please enter 'help skypiax_console'\n"); + return RESULT_SUCCESS; + } + + if (!strcasecmp(argv[1], "add")) + add_to_skypiax_dir_conf = 1; + else if (!strcasecmp(argv[1], "replace")) + add_to_skypiax_dir_conf = 0; + else { + ast_cli(fd, "\n\nYou have neither specified 'add' nor 'replace'\n\n"); + return RESULT_SHOWUSAGE; + } + +#if 0 + if (!strcasecmp(argv[2], "fromskype")) + fromskype = 1; + else if (!strcasecmp(argv[2], "fromcell")) + fromcell = 1; + else { + ast_cli(fd, "\n\nYou have neither specified 'fromskype' nor 'fromcell'\n\n"); + return RESULT_SHOWUSAGE; + } + + if (fromcell) { + ast_cli(fd, + "Importing from cellphone is currently supported only on \"AT\" cellphones :( !\n"); + //fclose(p->phonebook_writing_fp); + //skypiax_dir_create_extensions(); + return RESULT_SUCCESS; + } + + if (fromskype) + if (!p->skype) { + ast_cli(fd, "Importing from skype is supported by skypiax_dir on chan_skypiax!\n"); + //fclose(p->phonebook_writing_fp); + //skypiax_dir_create_extensions(); + return RESULT_SUCCESS; + } + + if (fromcell || fromskype) + if (argc != 3) { + ast_cli(fd, + "\n\nYou don't have to specify a filename with 'fromcell' or with 'fromskype'\n\n"); + return RESULT_SHOWUSAGE; + } +#endif + + /*******************************************************************************************/ + + if (configfile[0] == '/') { + ast_copy_string(fn, configfile, sizeof(fn)); + } else { + snprintf(fn, sizeof(fn), "%s/%s", ast_config_AST_CONFIG_DIR, configfile); + } + if (option_debug) + NOTICA("Opening '%s'\n", SKYPIAX_P_LOG, fn); + time(&t); + ast_copy_string(date, ctime(&t), sizeof(date)); + + if (add_to_skypiax_dir_conf) + p->phonebook_writing_fp = fopen(fn, "a+"); + else + p->phonebook_writing_fp = fopen(fn, "w+"); + + if (p->phonebook_writing_fp) { + if (add_to_skypiax_dir_conf) { + if (option_debug) + NOTICA("Opened '%s' for appending \n", SKYPIAX_P_LOG, fn); + fprintf(p->phonebook_writing_fp, ";!\n"); + fprintf(p->phonebook_writing_fp, ";! Update Date: %s", date); + fprintf(p->phonebook_writing_fp, ";! Updated by: %s, %d\n", __FILE__, __LINE__); + fprintf(p->phonebook_writing_fp, ";!\n"); + } else { + if (option_debug) + NOTICA("Opened '%s' for writing \n", SKYPIAX_P_LOG, fn); + fprintf(p->phonebook_writing_fp, ";!\n"); + fprintf(p->phonebook_writing_fp, ";! Automatically generated configuration file\n"); + fprintf(p->phonebook_writing_fp, ";! Filename: %s (%s)\n", configfile, fn); + fprintf(p->phonebook_writing_fp, ";! Creation Date: %s", date); + fprintf(p->phonebook_writing_fp, ";! Generated by: %s, %d\n", __FILE__, __LINE__); + fprintf(p->phonebook_writing_fp, ";!\n"); + fprintf(p->phonebook_writing_fp, "[general]\n\n"); + fprintf(p->phonebook_writing_fp, "[default]\n"); + } + + /*******************************************************************************************/ + //if (fromskype) { + if (p->skype) { + WARNINGA + ("About to querying the Skype client 'Contacts', it may take some moments... Don't worry.\n", + SKYPIAX_P_LOG); + if (p->skype_thread != AST_PTHREADT_NULL) { + char msg_to_skype[1024]; + + p->skype_friends[0] = '\0'; + sprintf(msg_to_skype, "#333 SEARCH FRIENDS"); + if (skypiax_skype_write(p, msg_to_skype) < 0) { + return -1; + } + + int friends_count = 0; + while (p->skype_friends[0] == '\0') { + /* FIXME needs a timeout, can't wait forever! + * eg. when skype is running but not connected! */ + usleep(100); + friends_count++; + if (friends_count > 20000) { + return -1; /* FIXME */ + } + } + + } + + if (p->skype_thread != AST_PTHREADT_NULL) { + char msg_to_skype[1024]; + + if (p->skype_friends[0] != '\0') { + char *buf, *where; + char **stringp; + int skype_dir_file_written = 0; + + buf = p->skype_friends; + stringp = &buf; + where = strsep(stringp, ", "); + while (where) { + if (where[0] != '\0') { + /* + * So, we have the Skype username (the HANDLE, I think is called). + * But we want to call the names we see in the Skype contact list + * So, let's check the DISPLAYNAME (the end user modified contact name) + * Then, we check the FULLNAME (that appears as it was the DISPLAYNAME + * if the end user has not modify it) + * If we still have neither DISPLAYNAME nor FULLNAME, we'll use the + * Skipe username (the HANDLE) + */ + + p->skype_displayname[0] = '\0'; + sprintf(msg_to_skype, "#765 GET USER %s DISPLAYNAME", where); + skypiax_skype_write(p, msg_to_skype); + int displayname_count = 0; + while (p->skype_displayname[0] == '\0') { + /* FIXME needs a timeout, can't wait forever! + * eg. when skype is running but not connected! */ + usleep(100); + displayname_count++; + if (displayname_count > 20000) + return -1; /* FIXME */ + } + if (p->skype_displayname[0] != '\0') { + char *where2; + char sanitized[300]; + + sanitized[0] = '\0'; + + where2 = strstr(p->skype_displayname, "DISPLAYNAME "); + if (where2) { + + /* there can be some *smart* that makes a displayname + * that is different than firstlast, */ + /* maybe initials, simbols, slashes, + * something smartish... let's check */ + + if (where2[12] != '\0') { + int i = 12; + int x = 0; + int spaces = 0; + int last_char_was_space = 0; + + for (i = 12; i < strlen(where2) && x < 299; i++) { + if (!isalnum(where2[i])) { + if (!isblank(where2[i])) { + /* bad char */ + continue; + } + /* is a space */ + if (last_char_was_space == 1) /* do not write 2 consecutive spaces */ + continue; + last_char_was_space = 1; + sanitized[x] = ' '; + x++; + continue; + } + /* is alphanum */ + last_char_was_space = 0; + sanitized[x] = where2[i]; + x++; + continue; + } + + sanitized[x] = '\0'; + if (spaces == 0) { + } + DEBUGA_SKYPE("sanitized=|%s|, where=|%s|, where2=|%s|\n", + SKYPIAX_P_LOG, sanitized, where, &where2[12]); + } + + if (where2[12] != '\0') { + skypiax_dir_entry_extension++; + if (where[0] == '+' || isdigit(where[0])) { /* is a skypeout number */ + fprintf(p->phonebook_writing_fp, + "%s => ,%sSKO,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromskype=%s|phonebook_entry_owner=%s\n", + where, sanitized, "no", + p->skypiax_dir_entry_extension_prefix, "2", + skypiax_dir_entry_extension, "yes", "not_specified"); + } else { /* is a skype name */ + fprintf(p->phonebook_writing_fp, + "%s => ,%sSKY,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromskype=%s|phonebook_entry_owner=%s\n", + where, sanitized, "no", + p->skypiax_dir_entry_extension_prefix, "1", + skypiax_dir_entry_extension, "yes", "not_specified"); + } + skype_dir_file_written = 1; + + } + } + } + p->skype_displayname[0] = '\0'; + + p->skype_fullname[0] = '\0'; + sprintf(msg_to_skype, "#222 GET USER %s FULLNAME", where); + skypiax_skype_write(p, msg_to_skype); + int fullname_count = 0; + while (p->skype_fullname[0] == '\0') { + /* FIXME needs a timeout, can't wait forever! + * eg. when skype is running but not connected! */ + usleep(100); + fullname_count++; + if (fullname_count > 20000) + return -1; /* FIXME */ + } + if (p->skype_fullname[0] != '\0') { + char *where2; + char sanitized[300]; + + where2 = strstr(p->skype_fullname, "FULLNAME "); + if (where2) { + + /* there can be some *smart* that makes a fullname + * that is different than firstlast, */ + /* maybe initials, simbols, slashes, + * something smartish... let's check */ + + if (where2[9] != '\0') { + int i = 9; + int x = 0; + int spaces = 0; + int last_char_was_space = 0; + + for (i = 9; i < strlen(where2) && x < 299; i++) { + if (!isalnum(where2[i])) { + if (!isblank(where2[i])) { + /* bad char */ + continue; + } + /* is a space */ + if (last_char_was_space == 1) /* do not write 2 consecutive spaces */ + continue; + last_char_was_space = 1; + sanitized[x] = ' '; + x++; + continue; + } + /* alphanum */ + last_char_was_space = 0; + sanitized[x] = where2[i]; + x++; + continue; + } + + sanitized[x] = '\0'; + if (spaces == 0) { + } + DEBUGA_SKYPE("sanitized=|%s|, where=|%s|, where2=|%s|\n", + SKYPIAX_P_LOG, sanitized, where, &where2[9]); + } + + if (skype_dir_file_written == 0) { + skypiax_dir_entry_extension++; + if (where2[9] != '\0') { + if (where[0] == '+' || isdigit(where[0])) { /* is a skypeout number */ + fprintf(p->phonebook_writing_fp, + "%s => ,%sSKO,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromskype=%s|phonebook_entry_owner=%s\n", + where, sanitized, "no", + p->skypiax_dir_entry_extension_prefix, "2", + skypiax_dir_entry_extension, "yes", "not_specified"); + } else { /* is a skype name */ + fprintf(p->phonebook_writing_fp, + "%s => ,%sSKY,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromskype=%s|phonebook_entry_owner=%s\n", + where, sanitized, "no", + p->skypiax_dir_entry_extension_prefix, "1", + skypiax_dir_entry_extension, "yes", "not_specified"); + + } + + } else { + if (where[0] == '+' || isdigit(where[0])) { /* is a skypeout number */ + fprintf(p->phonebook_writing_fp, + "%s => ,%sSKO,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromskype=%s|phonebook_entry_owner=%s\n", + where, where, "no", + p->skypiax_dir_entry_extension_prefix, "2", + skypiax_dir_entry_extension, "yes", "not_specified"); + } else { /* is a skype name */ + fprintf(p->phonebook_writing_fp, + "%s => ,%sSKY,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromskype=%s|phonebook_entry_owner=%s\n", + where, where, "no", + p->skypiax_dir_entry_extension_prefix, "1", + skypiax_dir_entry_extension, "yes", "not_specified"); + + } + } + } + + skype_dir_file_written = 0; + + } + + } + p->skype_fullname[0] = '\0'; + + } + where = strsep(stringp, ", "); + } + + p->skype_friends[0] = '\0'; + } + } + } else { + + ast_cli(fd, + "Skype not configured on the 'current' console, not importing from Skype client!\n"); + } + //} + /*******************************************************************************************/ + /*******************************************************************************************/ + } else { + ast_cli(fd, "\n\nfailed to open the skypiax_dir.conf configuration file: %s\n", fn); + ERRORA("failed to open the skypiax_dir.conf configuration file: %s\n", SKYPIAX_P_LOG, + fn); + return RESULT_FAILURE; + } + + fclose(p->phonebook_writing_fp); + //skypiax_dir_create_extensions(); + + return RESULT_SUCCESS; +} +#endif /* ASTERISK */ From brian at freeswitch.org Sat Jan 31 11:42:40 2009 From: brian at freeswitch.org (FreeSWITCH SVN) Date: Sat, 31 Jan 2009 13:42:40 -0600 Subject: [Freeswitch-svn] [commit] r11580 - freeswitch/trunk/src Message-ID: Author: brian Date: Sat Jan 31 13:42:40 2009 New Revision: 11580 Log: doh Modified: freeswitch/trunk/src/switch_channel.c Modified: freeswitch/trunk/src/switch_channel.c ============================================================================== --- freeswitch/trunk/src/switch_channel.c (original) +++ freeswitch/trunk/src/switch_channel.c Sat Jan 31 13:42:40 2009 @@ -593,7 +593,6 @@ if (ok) { switch_event_add_header_string(channel->variables, SWITCH_STACK_BOTTOM, varname, value); } else { - abort(); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Invalid data (${%s} contains a variable)\n", varname); } } From anthm at freeswitch.org Sat Jan 31 16:06:46 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Sat, 31 Jan 2009 18:06:46 -0600 Subject: [Freeswitch-svn] [commit] r11581 - freeswitch/trunk/src/mod/endpoints/mod_sofia Message-ID: Author: anthm Date: Sat Jan 31 18:06:46 2009 New Revision: 11581 Log: probably make nat work on sla Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h Sat Jan 31 18:06:46 2009 @@ -779,7 +779,7 @@ void sofia_sla_handle_register(nua_t *nua, sofia_profile_t *profile, sip_t const *sip); void sofia_sla_handle_sip_i_publish(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]); -void sofia_sla_handle_sip_i_subscribe(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]); +void sofia_sla_handle_sip_i_subscribe(nua_t *nua, const char *contact_str, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]); void sofia_sla_handle_sip_r_subscribe(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]); void sofia_sla_handle_sip_i_notify(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]); Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c Sat Jan 31 18:06:46 2009 @@ -3047,7 +3047,8 @@ " call_id VARCHAR(255),\n" " aor VARCHAR(255),\n" " profile_name VARCHAR(255),\n" - " hostname VARCHAR(255)\n" + " hostname VARCHAR(255),\n" + " contact_str VARCHAR(255)\n" ");\n"; if (profile->odbc_dsn) { @@ -3105,7 +3106,7 @@ free(test_sql); if (profile->manage_shared_appearance) { - test_sql = switch_mprintf("delete from sip_shared_appearance_subscriptions where hostname='%q'", mod_sofia_globals.hostname); + test_sql = switch_mprintf("delete from sip_shared_appearance_subscriptions where contact_str='' or hostname='%q'", mod_sofia_globals.hostname); if (switch_odbc_handle_exec(profile->master_odbc, test_sql, NULL) != SWITCH_ODBC_SUCCESS) { switch_odbc_handle_exec(profile->master_odbc, "DROP TABLE sip_shared_appearance_subscriptions", NULL); switch_odbc_handle_exec(profile->master_odbc, shared_appearance_sql, NULL); @@ -3145,7 +3146,7 @@ free(test_sql); if(profile->manage_shared_appearance) { - test_sql = switch_mprintf("delete from sip_shared_appearance_subscriptions where hostname='%q'", mod_sofia_globals.hostname); + test_sql = switch_mprintf("delete from sip_shared_appearance_subscriptions where contact_str = '' or hostname='%q'", mod_sofia_globals.hostname); switch_core_db_test_reactive(profile->master_db, test_sql, "DROP TABLE sip_shared_appearance_subscriptions", shared_appearance_sql); free(test_sql); Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c Sat Jan 31 18:06:46 2009 @@ -1423,17 +1423,6 @@ return; } - /* the following could be refactored back to the calling event handler in sofia.c XXX MTK */ - if (profile->manage_shared_appearance) { - if (!strncmp(sip->sip_request->rq_url->url_user, "sla-agent", sizeof("sla-agent"))) { - /* only fire this on <200 to try to avoid resubscribes. probably better ways to do this? */ - if (status < 200) { - sofia_sla_handle_sip_i_subscribe(nua, profile, nh, sip, tags); - } - return; - } - } - get_addr(network_ip, sizeof(network_ip), my_addrinfo->ai_addr, my_addrinfo->ai_addrlen); network_port = ntohs(((struct sockaddr_in *) msg_addrinfo(nua_current_request(nua))->ai_addr)->sin_port); @@ -1524,6 +1513,22 @@ is_nat ? ";nat" : ""); } + + + /* the following could be refactored back to the calling event handler in sofia.c XXX MTK */ + if (profile->manage_shared_appearance) { + if (!strncmp(sip->sip_request->rq_url->url_user, "sla-agent", sizeof("sla-agent"))) { + /* only fire this on <200 to try to avoid resubscribes. probably better ways to do this? */ + if (status < 200) { + sofia_sla_handle_sip_i_subscribe(nua, contact_str, profile, nh, sip, tags); + } + switch_safe_free(contact_str); + return; + } + } + + + if (to) { to_str = switch_mprintf("sip:%s@%s", to->a_url->url_user, to->a_url->url_host); } Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c Sat Jan 31 18:06:46 2009 @@ -78,12 +78,13 @@ nua_respond(nh, SIP_200_OK, NUTAG_WITH_THIS(nua), TAG_END()); } -void sofia_sla_handle_sip_i_subscribe(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]) +void sofia_sla_handle_sip_i_subscribe(nua_t *nua, const char *contact_str, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, tagi_t tags[]) { char *aor = NULL; char *subscriber = NULL; char *sql = NULL; - + char *route_uri = NULL; + /* * XXX MTK FIXME - we don't look at the tag to see if NUTAG_SUBSTATE(nua_substate_terminated) or * a Subscription-State header with state "terminated" and/or expiration of 0. So we never forget @@ -119,22 +120,43 @@ } if ((sql = - switch_mprintf("insert into sip_shared_appearance_subscriptions (subscriber, call_id, aor, profile_name, hostname) " - "values ('%q','%q','%q','%q','%q')", - subscriber, sip->sip_call_id->i_id, aor, profile->name, mod_sofia_globals.hostname))) { + switch_mprintf("insert into sip_shared_appearance_subscriptions (subscriber, call_id, aor, profile_name, hostname, contact_str) " + "values ('%q','%q','%q','%q','%q','%q')", + subscriber, sip->sip_call_id->i_id, aor, profile->name, mod_sofia_globals.hostname, contact_str))) { sofia_glue_execute_sql(profile, &sql, SWITCH_TRUE); } + if (strstr(contact_str, ";fs_nat")) { + char *p; + route_uri = strdup(contact_str); + if ((p = strstr(contact_str, ";fs_"))) { + *p = '\0'; + } + } + + + if (route_uri) { + char *p; + + while (route_uri && *route_uri && (*route_uri == '<' || *route_uri == ' ')) { + route_uri++; + } + if ((p = strchr(route_uri, '>'))) { + *p++ = '\0'; + } + } nua_respond(nh, SIP_202_ACCEPTED, SIPTAG_CONTACT_STR(profile->sla_contact), NUTAG_WITH_THIS(nua), - SIPTAG_SUBSCRIPTION_STATE_STR("active;expires=300"), /* you thought the OTHER time was fake... need delta here FIXME XXX MTK */ - SIPTAG_EXPIRES_STR("300"), /* likewise, totally fake - FIXME XXX MTK */ + TAG_IF(route_uri, NUTAG_PROXY(route_uri)), + SIPTAG_SUBSCRIPTION_STATE_STR("active;expires=300"), /* you thought the OTHER time was fake... need delta here FIXME XXX MTK */ + SIPTAG_EXPIRES_STR("300"), /* likewise, totally fake - FIXME XXX MTK */ /* sofia_presence says something about needing TAG_IF(sticky, NUTAG_PROXY(sticky)) for NAT stuff? */ TAG_END()); switch_safe_free(aor); switch_safe_free(subscriber); + switch_safe_free(route_uri); switch_safe_free(sql); } @@ -199,7 +221,7 @@ contact = switch_mprintf("sip:%s@%s",sip->sip_contact->m_url->url_user, sip->sip_contact->m_url->url_host); if(sip->sip_payload && sip->sip_payload->pl_data) { - sql = switch_mprintf("select subscriber,call_id,aor,profile_name,hostname from sip_shared_appearance_subscriptions where " + sql = switch_mprintf("select subscriber,call_id,aor,profile_name,hostname,route_uri from sip_shared_appearance_subscriptions where " "aor='%q' and subscriber<>'%q' and profile_name='%q' and hostname='%q'", aor, contact, profile->name, mod_sofia_globals.hostname); @@ -224,17 +246,41 @@ /* char *aor = argv[2]; */ /* char *profile_name = argv[3]; */ /* char *hostname = argv[4]; */ + char *contact_str = argv[5]; nua_handle_t *nh; + char *route_uri = NULL; + nh = nua_handle_by_call_id(helper->profile->nua, call_id); /* that's all you need to find the subscription's nh */ - if(nh) - { + if(nh) { + + if (strstr(contact_str, ";fs_nat")) { + char *p; + route_uri = strdup(contact_str); + if ((p = strstr(contact_str, ";fs_"))) { + *p = '\0'; + } + } + + if (route_uri) { + char *p; + + while (route_uri && *route_uri && (*route_uri == '<' || *route_uri == ' ')) { + route_uri++; + } + if ((p = strchr(route_uri, '>'))) { + *p++ = '\0'; + } + } + nua_notify(nh, - SIPTAG_SUBSCRIPTION_STATE_STR("active;expires=300"), /* XXX MTK FIXME - this is totally fake calculation */ - SIPTAG_CONTENT_TYPE_STR("application/dialog-info+xml"), /* could've just kept the type from the payload */ - SIPTAG_PAYLOAD_STR(helper->payload), - TAG_END()); + SIPTAG_SUBSCRIPTION_STATE_STR("active;expires=300"), /* XXX MTK FIXME - this is totally fake calculation */ + TAG_IF(route_uri, NUTAG_PROXY(route_uri)), + SIPTAG_CONTENT_TYPE_STR("application/dialog-info+xml"), /* could've just kept the type from the payload */ + SIPTAG_PAYLOAD_STR(helper->payload), + TAG_END()); + switch_safe_free(route_uri); } return 0; } From anthm at freeswitch.org Sat Jan 31 16:21:29 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Sat, 31 Jan 2009 18:21:29 -0600 Subject: [Freeswitch-svn] [commit] r11582 - freeswitch/trunk/src/mod/endpoints/mod_sofia Message-ID: Author: anthm Date: Sat Jan 31 18:21:29 2009 New Revision: 11582 Log: doh Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c Sat Jan 31 18:21:29 2009 @@ -221,7 +221,7 @@ contact = switch_mprintf("sip:%s@%s",sip->sip_contact->m_url->url_user, sip->sip_contact->m_url->url_host); if(sip->sip_payload && sip->sip_payload->pl_data) { - sql = switch_mprintf("select subscriber,call_id,aor,profile_name,hostname,route_uri from sip_shared_appearance_subscriptions where " + sql = switch_mprintf("select subscriber,call_id,aor,profile_name,hostname,contact_str from sip_shared_appearance_subscriptions where " "aor='%q' and subscriber<>'%q' and profile_name='%q' and hostname='%q'", aor, contact, profile->name, mod_sofia_globals.hostname); From anthm at freeswitch.org Sat Jan 31 16:29:14 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Sat, 31 Jan 2009 18:29:14 -0600 Subject: [Freeswitch-svn] [commit] r11583 - freeswitch/trunk/src/mod/endpoints/mod_sofia Message-ID: Author: anthm Date: Sat Jan 31 18:29:14 2009 New Revision: 11583 Log: double doh Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c Sat Jan 31 18:29:14 2009 @@ -1501,7 +1501,7 @@ ipv6 ? "]" : "", new_port, contact->m_url->url_params, - is_nat ? ";nat" : ""); + is_nat ? ";fs_nat" : ""); } else { contact_str = switch_mprintf("%s %s", display, @@ -1510,7 +1510,7 @@ contact_host, ipv6 ? "]" : "", new_port, - is_nat ? ";nat" : ""); + is_nat ? ";fs_nat" : ""); } From anthm at freeswitch.org Sat Jan 31 16:49:06 2009 From: anthm at freeswitch.org (FreeSWITCH SVN) Date: Sat, 31 Jan 2009 18:49:06 -0600 Subject: [Freeswitch-svn] [commit] r11584 - freeswitch/trunk/src/mod/endpoints/mod_sofia Message-ID: Author: anthm Date: Sat Jan 31 18:49:06 2009 New Revision: 11584 Log: 12th time's a charm Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_sla.c Sat Jan 31 18:49:06 2009 @@ -129,7 +129,7 @@ if (strstr(contact_str, ";fs_nat")) { char *p; - route_uri = strdup(contact_str); + route_uri = sofia_glue_get_url_from_contact((char *)contact_str, 1); if ((p = strstr(contact_str, ";fs_"))) { *p = '\0'; } @@ -257,7 +257,7 @@ if (strstr(contact_str, ";fs_nat")) { char *p; - route_uri = strdup(contact_str); + route_uri = sofia_glue_get_url_from_contact(contact_str, 1); if ((p = strstr(contact_str, ";fs_"))) { *p = '\0'; }