[Freeswitch-branches] [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
FreeSWITCH SVN
gmaruzz at freeswitch.org
Wed Jan 7 08:17:00 PST 2009
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 @@
<!--<param name="tts-engine" value="flite"/>-->
<!--<param name="tts-voice" value="kal16"/>-->
</profile>
- <!--
+
<profile name="cdquality">
<param name="domain" value="$${domain}"/>
<param name="rate" value="48000"/>
@@ -173,6 +173,6 @@
<param name="caller-id-number" value="$${outbound_caller_id}"/>
<param name="comfort-noise" value="true"/>
</profile>
- -->
+
</profiles>
</configuration>
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 @@
</extension>
<extension name="extension-intercom">
- <!-- <condition field="${sip_to_params}" expression="intercom\=true"/> -->
<condition field="destination_number" expression="^8(10[01][0-9])$">
<action application="set" data="dialed_extension=$1"/>
- <!-- This Alert-Info seems to be a case for Intercom for Polycom which sip_auto_answer=true covers already. -->
- <!--<action application="export"><![CDATA[alert_info=<sip:${domain_name}>;Ring;Answer]]></action>-->
- <action application="export"><![CDATA[sip_h_Call-Info=<sip:${domain_name}>;answer-after=0]]></action>
- <action application="export" data="sip_invite_params=intercom=true"/>
<action application="export" data="sip_auto_answer=true"/>
<action application="bridge" data="user/${dialed_extension}@${domain_name}"/>
</condition>
@@ -240,6 +235,24 @@
</condition>
</extension>
+ <extension name="group_dial_sales">
+ <condition field="destination_number" expression="^2000$">
+ <action application="bridge" data="${group_call(sales@${domain_name})}"/>
+ </condition>
+ </extension>
+
+ <extension name="group_dial_support">
+ <condition field="destination_number" expression="^2001$">
+ <action application="bridge" data="group/support@${domain_name}"/>
+ </condition>
+ </extension>
+
+ <extension name="group_dial_billing">
+ <condition field="destination_number" expression="^2002$">
+ <action application="bridge" data="group/billing@${domain_name}"/>
+ </condition>
+ </extension>
+
<!-- voicemail operator extension -->
<extension name="operator">
<condition field="destination_number" expression="^operator$|^0$">
@@ -287,30 +300,69 @@
<action application="conference" data="$1-${domain_name}@ultrawideband"/>
</condition>
</extension>
+ <!-- MONO 48kHz conferences -->
+ <extension name="cdquality_conferences">
+ <condition field="destination_number" expression="^(33\d{2})$">
+ <action application="answer"/>
+ <action application="conference" data="$1-${domain_name}@cdquality"/>
+ </condition>
+ </extension>
<!-- dial the freeswitch conference via SIP-->
<extension name="freeswitch_public_conf_via_sip">
- <condition field="destination_number" expression="^9(888|1616)$">
+ <condition field="destination_number" expression="^9(888|1616|3232)$">
<action application="bridge" data="sofia/${use_profile}/$1 at conference.freeswitch.org"/>
</condition>
</extension>
- <!--This extension will start a conference and invite several people upon entering -->
- <extension name="mad_boss">
+ <!--
+ This extension will start a conference and invite a group.
+ At anytime the participant can dial *2 to bridge directly to the boss.
+ All other callers are then hung up on.
+ -->
+ <extension name="mad_boss_intercom">
<condition field="destination_number" expression="^0911$">
+ <action application="set" data="conference_auto_outcall_caller_id_name=Mad Boss1"/>
+ <action application="set" data="conference_auto_outcall_caller_id_number=0911"/>
+ <action application="set" data="conference_auto_outcall_timeout=60"/>
+ <action application="set" data="conference_auto_outcall_flags=mute"/>
+ <action application="set" data="conference_auto_outcall_prefix={sip_auto_answer=true,execute_on_answer='bind_meta_app 2 a s1 intercept::${uuid}'}"/>
+ <action application="set" data="sip_exclude_contact=${network_addr}"/>
+ <action application="conference_set_auto_outcall" data="${group_call(sales)}"/>
+ <action application="conference" data="madboss_intercom1 at default+flags{endconf|deaf}"/>
+ </condition>
+ </extension>
+ <!--
+ This extension will start a conference and invite a few of people.
+ At anytime the participant can dial *2 to bridge directly to the boss.
+ All other callers are then hung up on.
+ -->
+ <extension name="mad_boss_intercom">
+ <condition field="destination_number" expression="^0912$">
+ <action application="set" data="conference_auto_outcall_caller_id_name=Mad Boss2"/>
+ <action application="set" data="conference_auto_outcall_caller_id_number=0912"/>
+ <action application="set" data="conference_auto_outcall_timeout=60"/>
+ <action application="set" data="conference_auto_outcall_flags=mute"/>
+ <action application="set" data="conference_auto_outcall_prefix={sip_auto_answer=true,execute_on_answer='bind_meta_app 2 a s1 intercept::${uuid}'}"/>
+ <action application="set" data="sip_exclude_contact=${network_addr}"/>
+ <action application="conference_set_auto_outcall" data="loopback/9999"/>
+ <action application="conference" data="madboss_intercom2 at default+flags{endconf|deaf}"/>
+ </condition>
+ </extension>
+
+ <!--This extension will start a conference and invite several people upon entering -->
+ <extension name="mad_boss">
+ <condition field="destination_number" expression="^0913$">
<!--These params effect the outcalls made once you join-->
<action application="set" data="conference_auto_outcall_caller_id_name=Mad Boss"/>
<action application="set" data="conference_auto_outcall_caller_id_number=0911"/>
<action application="set" data="conference_auto_outcall_timeout=60"/>
<action application="set" data="conference_auto_outcall_flags=none"/>
<!--<action application="set" data="conference_auto_outcall_announce=say:You have been called into an emergency conference"/>-->
-
<!--Add as many of these as you need, These are the people you are going to call-->
- <action application="conference_set_auto_outcall" data="sofia/gateway/$${default_provider}/19184238080"/>
- <action application="conference_set_auto_outcall" data="sofia/default/888 at conference.freeswitch.org"/>
-
- <action application="conference" data="cool at default"/>
+ <action application="conference_set_auto_outcall" data="loopback/9999"/>
+ <action application="conference" data="madboss3 at default"/>
</condition>
</extension>
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 @@
<variable name="transfer_fallback_extension" value="operator"/>
</variables>
- <X-PRE-PROCESS cmd="include" data="default/*.xml"/>
+ <groups>
+ <group name="default">
+ <users>
+ <X-PRE-PROCESS cmd="include" data="default/*.xml"/>
+ </users>
+ </group>
+
+ <group name="sales">
+ <users>
+ <!--
+ type="pointer" is a pointer so you can have the
+ same user in multiple groups. It basically means
+ to keep searching for the user in the directory.
+ -->
+ <user id="1000" type="pointer"/>
+ <user id="1001" type="pointer"/>
+ <user id="1002" type="pointer"/>
+ <user id="1003" type="pointer"/>
+ <user id="1004" type="pointer"/>
+ </users>
+ </group>
+
+ <group name="billing">
+ <users>
+ <user id="1005" type="pointer"/>
+ <user id="1006" type="pointer"/>
+ <user id="1007" type="pointer"/>
+ <user id="1008" type="pointer"/>
+ <user id="1009" type="pointer"/>
+ </users>
+ </group>
+
+ <group name="support">
+ <users>
+ <user id="1010" type="pointer"/>
+ <user id="1011" type="pointer"/>
+ <user id="1012" type="pointer"/>
+ <user id="1013" type="pointer"/>
+ <user id="1014" type="pointer"/>
+ </users>
+ </group>
+ </groups>
</domain>
</include>
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 @@
<include>
<!-- ipauth if you have an ip= in the user attributes ie ip="1.2.3.4" -->
<!-- <user id="brian" ip="1.2.3.4"> -->
- <user id="brian" mailbox="9999" cidr="1.2.3.4/24">
+ <user id="brian" mailbox="9999" cidr="192.0.2.0/24">
<!-- Outbound Registrations Related to this user -->
<gateways>
<!--<gateway name="asterlink.com">-->
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 @@
<!-- set to true to have the profile determine stun is not useful and turn it off globally-->
<!--<param name="stun-auto-disable" value="true"/>-->
- <!-- TLS: disabled by default, set to "true" to enable -->
- <param name="tls" value="$${internal_ssl_enable}"/>
- <!-- additional bind parameters for TLS -->
- <param name="tls-bind-params" value="transport=tls"/>
- <!-- Port to listen on for TLS requests. (5061 will be used if unspecified) -->
- <param name="tls-sip-port" value="$${internal_tls_port}"/>
- <!-- Location of the agent.pem and cafile.pem ssl certificates (needed for TLS server) -->
- <param name="tls-cert-dir" value="$${internal_ssl_dir}"/>
- <!-- TLS version ("sslv23" (default), "tlsv1"). NOTE: Phones may not work with TLSv1 -->
- <param name="tls-version" value="$${sip_tls_version}"/>
-
</settings>
</profile>
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 @@
-->
<X-PRE-PROCESS cmd="set" data="bind_server_ip=auto"/>
+ <!-- NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
+
+ If you're going to load test FreeSWITCH please input real IP addresses
+ for external_rtp_ip and external_sip_ip
+ -->
+
<!-- external_rtp_ip
Used as the public IP address for SDP.
Can be an ip address or a string like "stun:stun.server.com"
Modified: freeswitch/branches/gmaruzz/debian/changelog
==============================================================================
--- freeswitch/branches/gmaruzz/debian/changelog (original)
+++ freeswitch/branches/gmaruzz/debian/changelog Wed Jan 7 10:17:00 2009
@@ -1,3 +1,296 @@
+freeswitch (1.0.2-1) unstable; urgency=low
+
+ * all: don't add module interfaces before returning from error conditions in module load functions (MDXMLINT-36)
+ * all: fixed multiple memory leaks
+ * all: improved module unloading/reloading support
+ * build: add support for --switchconfdir (FSBUILD-84)
+ * build: fixed netbsd build
+ * build: make freeswitch stop graceflly with /etc/init.d/freeswitch stop on debian add working dir to start-stop-dir so freeswitch dumps core in workdir
+ * build: multiple packaging fixes
+ * build: user freeswitch not added to audio group on deb install (FSBUILD-95)
+ * Configuration: many updates to default configuration
+ * core: Add ability to choose uuid from originate string, originate_uuid var (use at your own risk)
+ * core: add bridge_generate_comfort_noise option for bridge to generate comfort noise to the A leg when there is no audio on the B leg
+ * core: add chan vars to param event during hangup hook
+ * core: add exec directive to xml preprocessor (not available on windows)
+ * core: add force_transfer_dialplan and force_transfer_context variables
+ * core: add hashing to event header lookup
+ * core: add hits to tone_detect
+ * core: add last_dtmf_duration variable
+ * core: add msleep function to swigged languages
+ * core: add park_after_bridge variable
+ * core: add per leg timeouts and specific cause codes in reject_on_single_fail
+ * core: add runtime selection of the module dir (FSCORE-198)
+ * core: add scheduler support for heartbeat
+ * core: add session heartbeat feature
+ * core: add session.destroy psuedo method to sort of destroy a session at least for the sake of FS
+ * core: add session.unsetInputCallback
+ * core: add strftime format string validation for user supplied values
+ * core: add vars param to switch_ivr_originate for recursion (MODAPP-175)
+ * core: added a "group" concept to the user directory
+ * core: added ability to do dns lookup to find ip with host: like stun: (FSCORE-219)
+ * core: added better locking for codec changes during a call
+ * core: added current_application and current_application_data variables
+ * core: added error/ magic endpoint so modules can return error causes in situations like sofia_contact
+ * core: added read_result channel variable
+ * core: added support for "F" to indicate flash in dtmf (FSCORE-213)
+ * core: allow calls to be stolen from originate
+ * core: allow you to get the privacy bits in the caller_profile
+ * core: change dso code to load symbols local
+ * core: changes core flags to be array based so we have more
+ * core: eavesdrop causes the people being eavesdropped on to not hear ach other (MODAPP-140)
+ * core: expose time table to variable interface via caller field lookup
+ * core: fix 100% cpu when sending parked call to moh (FSCORE-234)
+ * core: fix bridge app to make sure both channels are ready for media when one is only in ringing state
+ * core: fix buffer overflow (FSCORE-188)
+ * core: fix conference dial by allowing multiple braces in originate, fix bad pointer op (FSCORE-208)
+ * core: fix double detection of DTMF in IVR (FSCORE-221)
+ * core: fix hangup_after_bridge is false on a bridge started with the intercept app
+ * core: fix issue where pid file is accidentally truncated
+ * core: fix ivr timeout (FSCORE-181)
+ * core: fix memory leak in alias tab completion code
+ * core: fix min digits in read app
+ * core: fix out-of-bounds pointer in variable expansion (FSCORE-171)
+ * core: fix segfault in media bugs when in bypass media (FSCORE-193)
+ * core: fix segfault on gtalk to sip calls (FSCORE-212)
+ * core: fix segfault on reloadxml (FSCORE-176)
+ * core: fix segfault on trasfering eavesdopping party (FSCORE-210)
+ * core: fix segfault using switch_system function (FSCORE-196)
+ * core: fix session.bridge
+ * core: fix setting effective_caller_id_name / effective_caller_id_number on bridge dialstring (MODAPP-122)
+ * core: fix stream_raw_write (MODAPP-145)
+ * core: fix using resampling on ringback file
+ * core: fixed performance bottleneck in sqlite db's
+ * core: fixed race in reloadxml
+ * core: increment app before execute in case it returns to execute it will go to the next item in the list and not the same
+ * core: ivr menu max_failures and max_timeouts now default to 3 if not specified or invalid (less than 1) values are specified (FSCORE-244)
+ * core: ivr_menu max-timeouts option, result in ivr_menu_status var (FSCORE-183)
+ * core: let b legs use park_after_bridge too
+ * core: make events less verbose unless verbose_events is set
+ * core: parse private events during originate
+ * core: pass pdd data to a leg on oubound calls using bridge
+ * core: prevent crash in crazy situation with xml interface lookup failures (FSCORE-169)
+ * core: reduce cpu requirement for generated comfort noise
+ * core: remove interface names from core db on unload
+ * core: reworked timing resulting in significant performance increase and better rtp timing
+ * core: rewrite switch_play_and_get_digits (MODAPP-166)
+ * core: session.recordFile never terminates (MODLANG-79)
+ * core: session.transfer make dialplan and context optional
+ * core: set_user app now sets domain vars as well as user vars
+ * core: tone_detect not triggering app after tone detection (MODAPP-182)
+ * core: unprivileged user setting bigger stack for switch_system thread failure (FSCORE-197)
+ * core: user_exists returns false when fetching a user from XML Curl or other xml interfaces
+ * libesl: added c event socket library and fs_cli
+ * libsndfile: fix autoconf 2.62 support (LBSNDF-5)
+ * mod commands: add "all" modifier to "break" command
+ * mod_celt: added new module
+ * mod_commands: Add support for more than 2 variables to uuid_setvar_multi (MODAPP-171)
+ * mod_commands: Add support for passing the cause of hangup to the uuid_kill command (FSCORE-217)
+ * mod_commands: add attr lookup to user_data
+ * mod_commands: add domain_exists fsapi command
+ * mod_commands: add eval fsapi command
+ * mod_commands: add flush_dtmf app and uuid_flush_dtmf api command
+ * mod_commands: add fsctl send_sighup, fsctl shutdown asap, unsched_api commands
+ * mod_commands: add fsctl shutdown [elegant|restart|cancel]
+ * mod_commands: add new syntax to uuid_setvar to allow you to unset a var. <uuid> <var> [value] (MODAPP-167)
+ * mod_commands: add reload fsapi command to reload a module
+ * mod_commands: add system fsapi and application (MODAPP-138)
+ * mod_commands: added hupall fsapi command
+ * mod_commands: added strftime_tz api command
+ * mod_commands: break all now stops broadcast too
+ * mod_commands: fix api command sent through sched_api was getting the last char lopped off
+ * mod_commands: fix race on transfer with -both
+ * mod_commands: fix system dialplan app problems (MODAPP-86)
+ * mod_commands: only send content-type on status when it really is http.
+ * mod_conference: add fsapi to stop async playback too
+ * mod_conference: add video caps to mod_conference with video follow audio
+ * mod_conference: better sound prefix handling when using say: and allow say: on kick sounds.
+ * mod_conference: fix race in record
+ * mod_conference: fix runaway thread when floor holder has no video and other people do have video
+ * mod_conference: fix seg when kicking many members quickly (MODAPP-129)
+ * mod_conference: fix segfault on invalid chat event
+ * mod_conference: perpetual sound does not auto-mute, you can do that yourself if you want it
+ * mod_dialplan_xml: add Hunt- vars in dialplan lookup after transfer
+ * mod_dialplan_xml: fail call on extensions with nested conditions
+ * mod_dingaling: (LBDING-7) fix segfault on os x
+ * mod_dingaling: end call on ice timeout
+ * mod_dingaling: fix presence on jabber to be less protocol ambiguous
+ * mod_dingaling: fix segfault (LBDING-10)
+ * mod_dingaling: update to support latest client from google
+ * mod_dptools: add a mechanism to tell if a file played from sendmsg over event socket
+ * mod_dptools: add playback_terminator support to phrase and say app
+ * mod_dptools: add playback_terminator_used variable (MODAPP-132)
+ * mod_dptools: add presence application
+ * mod_dptools: fix originate api not parsing users properly (FSCORE-246)
+ * mod_dptools: fix record and record_session to create directory if it does not exist (FSCORE-250)
+ * mod_dptools: fixed limit and + parsing bug in record_session app (MODAPP-148)
+ * mod_dptools: remove_bugs added to remove all media bugs on a session
+ * mod_erlang_event: add new module
+ * mod_event_socket: missing : after Content-Length in event socket (MODEVENT-33)
+ * mod_event_socket: add event socket listener filters
+ * mod_event_socket: add stateful listener fsapi commands for ajax-y type event interface over http
+ * mod_event_socket: fix arg parsing errors (MODEVENT-34)
+ * mod_event_socket: fix shutdown segfault race (MODEVENT-32)
+ * mod_event_socket: inbound connection to event_socket can now take over an existing channel with 'myevents <uuid>' to take on the behaviour of an outbound socket
+ * mod_event_socket: let any channel get messages
+ * mod_event_socket: make event socket wait for hangup on outbound mode and send disconnect message
+ * mod_expr: fix endless loop
+ * mod_fax: new module
+ * mod_fifo: add fifo_consumer_wrapup_time var (MODAPP-117)
+ * mod_fifo: added callback agents
+ * mod_fifo: honor keyword silence (MODAPP-118)
+ * mod_flite: added windows build
+ * mod_fsv: fix in a windows enviroment opening the record file in text mode. (MODAPP-169)
+ * mod_http: added new module
+ * mod_java: updated to new module api to support read/write locks on interface
+ * mod_limit: accept dialplan context for transfer (MODAPP-161)
+ * mod_limit: added hashtable based limit functions
+ * mod_limit: prevent empty error log message (MODAPP-134)
+ * mod_local_stream: add start_local_stream and stop_local_stream fsapi commands to start/stop dynamically (MODFORM-13)
+ * mod_local_stream: fix leak and improve error checking
+ * mod_local_stream: fix seg when no timer name specified in config file. (MODFORM-16)
+ * mod_loopback: add new module
+ * mod_lua: add local scripts directory support (MODLANG-86)
+ * mod_lua: don't eval blank string
+ * mod_lua: fix originate
+ * mod_lua: fix segfault (MODLANG-77)
+ * mod_lua: update to lua 5.1.4 (MODLANG-87)
+ * mod_lumenvox: removed
+ * mod_managed: new module replaces mod_mono now supports native .net runtime on windows as well
+ * mod_opal: added to trunk (still very beta)
+ * mod_perl: fix segfault (MODLANG-77)
+ * mod_pocketsphinx: fix rpm build
+ * mod_portaudio: fix cpu race on inbound call to pa when no ring file is set
+ * mod_radius_cdr: dictionary update for cause code changes (MODEVENT-27)
+ * mod_radius_cdr: fix unload (MODEVENT-29)
+ * mod_shout: add stereo recording broadcast support
+ * mod_shout: added windows build
+ * mod_shout: fix segfault when recording mp3's (MODFORM-12)
+ * mod_shout: improved stability of mp3 decoding
+ * mod_siren: added new module
+ * mod_sndfile added support to record 16bit for the various rates including 48kHz
+ * mod_sofia: Add filter to "sofia status profile XXX" (MODENDP-138)
+ * mod_sofia: Add force-register-db-domain which works in conjunction with force-register-domain.
+ * mod_sofia: Add optional <variables> and <params> tag to <gateway> tag.
+ * mod_sofia: Challenge the right realm when to_host is outside the users domain. (MODENDP-136)
+ * mod_sofia: Improve notify messages through a proxy (MODENDP-147)
+ * mod_sofia: MWI for multiple domains (MODAPP-126)
+ * mod_sofia: Move "a=sendrecv" from session to media section of SDP (MODENDP-148)
+ * mod_sofia: add 200 OK re-invite without sdp
+ * mod_sofia: add custom sofia::gateway_state event (MODENDP-112)
+ * mod_sofia: add fire events for the refer SIP NOTIFY event package (MODENDP-152)
+ * mod_sofia: add more params for xml_curl directory lookup
+ * mod_sofia: add new auto vals for challenge-realm param <param name="challenge-realm" value="auto_from|auto_to|<hardcoded_val>"/>
+ * mod_sofia: add option to turn of auto_restart of sofia profiles on ip change
+ * mod_sofia: add params to use sip callid as uuid on inbound calls and uuid as sip callid on outbound calls
+ * mod_sofia: add parsing of Privacy header for privacy info (MODENDP-133)
+ * mod_sofia: add proto_specific_hangup_cause to both legs
+ * mod_sofia: add proxy 3pcc mode
+ * mod_sofia: add redirect variable to channel as well as partner channe (MODENDP-135)
+ * mod_sofia: add sip-forbid-register to user params to refuse to let a certian user register
+ * mod_sofia: add sip: into register-proxy when it's not specified
+ * mod_sofia: add sip_history_info var for inbound invites.
+ * mod_sofia: add sip_via_protocol variable
+ * mod_sofia: add sofia xmlstatus (MODENDP-156)
+ * mod_sofia: add support for params other than Replaces in Refer-To (MODENDP-143)
+ * mod_sofia: add support for profiles sharing databases so that you can have a domain that uses multiple profiles for split dns type setups
+ * mod_sofia: add support for refer transfer involving multiple machines
+ * mod_sofia: add support to send a notify in the invite dialog by specifying the uuid of the call. (SFSIP-92)
+ * mod_sofia: add suppress_from_cidname var to not have display name in from header (MODENDP-153)
+ * mod_sofia: added sip_hangup_disposition variable
+ * mod_sofia: allow send_message and notify events to send a message/notify without a body if needed.
+ * mod_sofia: append -1 .. -N postfix after any X-headers as vars that have the same name
+ * mod_sofia: cache auth_gateway_name in sofia for challenged bye
+ * mod_sofia: cancel proxy or no-media mode if you purposely answer or pre_answer
+ * mod_sofia: correct result code mapping for Unallocated Number (MODENDP-124)
+ * mod_sofia: disable 100rel by default
+ * mod_sofia: don't accept crypto in the RTP/AVP (MODENDP-126)
+ * mod_sofia: don't put CN in sdp answer if it was not in the offer.
+ * mod_sofia: fix Incorrect IP address shows up in SDP "o" field when multiple external IPs available and FS not bound to first (MODENDP-132)
+ * mod_sofia: fix Wrong RTP media port destination after reinvite/UNHOLD (SFSIP-82)
+ * mod_sofia: fix bug on linksys where they lie about the ptime and handle linksys transfer problem
+ * mod_sofia: fix chat (send an IM) assumes that the user's profile is the same as their domain, which isn't necessarily so (SFSIP-83)
+ * mod_sofia: fix dtmf handling of broken info dtmf endpoints
+ * mod_sofia: fix eyebeam presence to be RFC compliant (MODENDP-144)
+ * mod_sofia: fix ip change detection when in proxy mode
+ * mod_sofia: fix register_proxy ignoring the paramaters (MODENDP-121)
+ * mod_sofia: fix remote session refresh triggers request glare (MODENDP-131)
+ * mod_sofia: fix rtp auto adjust running when it should not
+ * mod_sofia: fix rtp sent to wrong port after some re-INVITE scenarios (MODENDP-141)
+ * mod_sofia: fix sending of cn packets across bridge when we shouldn't
+ * mod_sofia: fix sqlite issue with select of the sip contact
+ * mod_sofia: fixed segfault on invalid presence payload
+ * mod_sofia: gateway ping needs to look for 501 (SFSIP-78)
+ * mod_sofia: handle multi contact register responses and register timeout better
+ * mod_sofia: improve gateway resilience
+ * mod_sofia: log ip and port you get reply to invite from
+ * mod_sofia: make multiple-registations=true use the contact method and call-id option to do it the old way
+ * mod_sofia: make proxy mode pull the port from m=image as well
+ * mod_sofia: make register-proxy preserve the url composed from proxy but target the packets to desired address (MODENDP-121)
+ * mod_sofia: many fixes for sonus rtp issues silence_when_idle=400 chanvar to send generated silence duing sleeps etc
+ * mod_sofia: many fixes in presence handling
+ * mod_sofia: passthrough t.38 fixes
+ * mod_sofia: pick ipv4 or ipv6 based on sipip instead of having mixed in sdp
+ * mod_sofia: send NOTIFY on TCP/UDP depending on the SUBSCRIBE (SFSIP-104)
+ * mod_sofia: setting profile option multiple-registrations=contact key multi reg off the contact string
+ * mod_sofia: wait for a reply on refer
+ * mod_soundtouch: fixes and improvements, many options changed (MODAPP-149)
+ * mod_soundtouch: updated to new module api
+ * mod_spidermonkey: Segmentation fault in check_hangup_hook at mod_spidermonkey.c:1589 (MODLANG-74)
+ * mod_spidermonkey: fix bug in apiExecute
+ * mod_spidermonkey: fix memory pool handling and leaks
+ * mod_spidermonkey: limit recursion busting through the stack (FSCORE-202)
+ * mod_spidermonkey: make session.getVariable return blank string not the word false
+ * mod_spidermonkey_curl: add optional content-type arg
+ * mod_spidermonkey_odbc: fix numRows and add numCols
+ * mod_spidermonkey_odbc: fix segfault (MODLANG-75)
+ * mod_stress: new module for voice stress analysis
+ * mod_syslog: don't log blank lines (FSCORE-163)
+ * mod_tone_stream: let silence_stream://0 indicate perpetual silence
+ * mod_vmd: add new module to detect voicemail "beep"
+ * mod_voicemail: Add vm_alternate_greet_id param to directory entry (MODAPP-174)
+ * mod_voicemail: Patch to add voicemail preference controlling date announcement new param 'play-date-announcement' to values 'first' 'last' or 'never' defaults to first to retain previous behavior (MODAPP-121)
+ * mod_voicemail: Update mwi light after delete vm via web. (MODAPP-124)
+ * mod_voicemail: add ability to get to options without listening to every saved message (MODAPP-115)
+ * mod_voicemail: add ability to skip greeting when leaving a voicemail. (MODAPP-181)
+ * mod_voicemail: add change-pass-key config file option
+ * mod_voicemail: add forwarding support
+ * mod_voicemail: add local dtmf driven alternat vm pass
+ * mod_voicemail: add proper notification of a vm message being too short
+ * mod_voicemail: add support for auth via a1-hash
+ * mod_voicemail: add the "storage-dir" parameter to be set on a per-user basis (MODAPP-133)
+ * mod_voicemail: add voicemail_greeting_path variable
+ * mod_voicemail: added voicemail_alternate_greet_id variable
+ * mod_voicemail: allow changing of password from voicemail to update user directory if using non-static config (MODAPP-156)
+ * mod_voicemail: created email date (int overflow) (MODAPP-125)
+ * mod_voicemail: don't try to deliver vm when no file was recorded. (MODAPP-133)
+ * mod_voicemail: fix MWI with xml_curl used for directory (MODAPP-176)
+ * mod_voicemail: fix Voicemail messages occasionally lost / stranded (MODAPP-178)
+ * mod_voicemail: fix invalid event after message deleted (MODAPP-170)
+ * mod_voicemail: fix mwi for phones with multiple registrations problem (MODAPP-153)
+ * mod_voicemail: fix voicemail segfault on incorrect password (FSCORE-187)
+ * mod_voicemail: fix voicemail_inject error handling (MODAPP-133)
+ * mod_voicemail: fix voicemail_inject usage api call
+ * mod_voicemail: improve error checking (MODAPP-142)
+ * mod_voicemail: localize notification emails (MODAPP-139)
+ * mod_voicemail: make more multi-domain friendly (MODAPP-162)
+ * mod_voicemail: make playback created file macros optional (MODAPP-150)
+ * mod_voicemail: recognize operator key in more places (MODAPP-159)
+ * mod_voicemail: web interface displays incorrect created / last heard dates (MODAPP-123)
+ * mod_wanpipe: removed
+ * mod_xml_cdr: add https support
+ * mod_xml_cdr: add optional a-leg prefix to xml cdr filenames (MDXMLINT-39)
+ * mod_xml_cdr: add support for fallback webserver for cdr posting (FSCORE-238)
+ * mod_xml_curl: Allow specification of HTTP method, and dynamic expansion of variables in URI. (MDXMLINT-41)
+ * mod_xml_curl: added redirect following (max 10)
+ * mod_xml_ldap: almost a complete rewrite of this module
+ * mod_xml_rpc: allow setting of global realm without a global user (MDXMLINT-45)
+ * mod_xml_rpc: fix multiple segfaults
+ * mod_xml_rpc: fix segfault on originate via http
+ * sofia-sip: updated to 1.12.10 (plus a few patches)
+
+ -- Mike Jerris <mike at jerris.com> Mon, 29 Dec 2008 14:46:00 -0500
+
freeswitch (1.0.1-1) unstable; urgency=low
* FIX: prevent intercept race condition that can also be solved with continue_on_fail=originator_cancel
@@ -295,7 +588,7 @@
Fixed mod_iax race conditions
Fixed ptime negotiation issues when re-packetizing
Added ip based acl lists
-
+ *
-- Michael Jerris <mike at jerris.com> Wed, 9 Apr 2008 12:58:22 -0400
freeswitch (1.0~rc1-1) unstable; urgency=low
Modified: freeswitch/branches/gmaruzz/debian/freeswitch.install
==============================================================================
--- freeswitch/branches/gmaruzz/debian/freeswitch.install (original)
+++ freeswitch/branches/gmaruzz/debian/freeswitch.install Wed Jan 7 10:17:00 2009
@@ -1,5 +1,6 @@
opt/freeswitch/htdocs/*
opt/freeswitch/bin/freeswitch
+opt/freeswitch/bin/fs_cli
opt/freeswitch/bin/scripts/*
opt/freeswitch/lib/libfreeswitch*.so*
opt/freeswitch/lib/libopenzap*.so*
Modified: freeswitch/branches/gmaruzz/docs/ChangeLog
==============================================================================
--- freeswitch/branches/gmaruzz/docs/ChangeLog (original)
+++ freeswitch/branches/gmaruzz/docs/ChangeLog Wed Jan 7 10:17:00 2009
@@ -1,3 +1,294 @@
+freeswitch (1.0.2)
+
+ all: don't add module interfaces before returning from error conditions in module load functions (MDXMLINT-36)
+ all: fixed multiple memory leaks
+ all: improved module unloading/reloading support
+ build: add support for --switchconfdir (FSBUILD-84)
+ build: fixed netbsd build
+ build: make freeswitch stop graceflly with /etc/init.d/freeswitch stop on debian add working dir to start-stop-dir so freeswitch dumps core in workdir
+ build: multiple packaging fixes
+ build: user freeswitch not added to audio group on deb install (FSBUILD-95)
+ Configuration: many updates to default configuration
+ core: Add ability to choose uuid from originate string, originate_uuid var (use at your own risk)
+ core: add bridge_generate_comfort_noise option for bridge to generate comfort noise to the A leg when there is no audio on the B leg
+ core: add chan vars to param event during hangup hook
+ core: add exec directive to xml preprocessor (not available on windows)
+ core: add force_transfer_dialplan and force_transfer_context variables
+ core: add hashing to event header lookup
+ core: add hits to tone_detect
+ core: add last_dtmf_duration variable
+ core: add msleep function to swigged languages
+ core: add park_after_bridge variable
+ core: add per leg timeouts and specific cause codes in reject_on_single_fail
+ core: add runtime selection of the module dir (FSCORE-198)
+ core: add scheduler support for heartbeat
+ core: add session heartbeat feature
+ core: add session.destroy psuedo method to sort of destroy a session at least for the sake of FS
+ core: add session.unsetInputCallback
+ core: add strftime format string validation for user supplied values
+ core: add vars param to switch_ivr_originate for recursion (MODAPP-175)
+ core: added a "group" concept to the user directory
+ core: added ability to do dns lookup to find ip with host: like stun: (FSCORE-219)
+ core: added better locking for codec changes during a call
+ core: added current_application and current_application_data variables
+ core: added error/ magic endpoint so modules can return error causes in situations like sofia_contact
+ core: added read_result channel variable
+ core: added support for "F" to indicate flash in dtmf (FSCORE-213)
+ core: allow calls to be stolen from originate
+ core: allow you to get the privacy bits in the caller_profile
+ core: change dso code to load symbols local
+ core: changes core flags to be array based so we have more
+ core: eavesdrop causes the people being eavesdropped on to not hear ach other (MODAPP-140)
+ core: expose time table to variable interface via caller field lookup
+ core: fix 100% cpu when sending parked call to moh (FSCORE-234)
+ core: fix bridge app to make sure both channels are ready for media when one is only in ringing state
+ core: fix buffer overflow (FSCORE-188)
+ core: fix conference dial by allowing multiple braces in originate, fix bad pointer op (FSCORE-208)
+ core: fix double detection of DTMF in IVR (FSCORE-221)
+ core: fix hangup_after_bridge is false on a bridge started with the intercept app
+ core: fix issue where pid file is accidentally truncated
+ core: fix ivr timeout (FSCORE-181)
+ core: fix memory leak in alias tab completion code
+ core: fix min digits in read app
+ core: fix out-of-bounds pointer in variable expansion (FSCORE-171)
+ core: fix segfault in media bugs when in bypass media (FSCORE-193)
+ core: fix segfault on gtalk to sip calls (FSCORE-212)
+ core: fix segfault on reloadxml (FSCORE-176)
+ core: fix segfault on trasfering eavesdopping party (FSCORE-210)
+ core: fix segfault using switch_system function (FSCORE-196)
+ core: fix session.bridge
+ core: fix setting effective_caller_id_name / effective_caller_id_number on bridge dialstring (MODAPP-122)
+ core: fix stream_raw_write (MODAPP-145)
+ core: fix using resampling on ringback file
+ core: fixed performance bottleneck in sqlite db's
+ core: fixed race in reloadxml
+ core: increment app before execute in case it returns to execute it will go to the next item in the list and not the same
+ core: ivr menu max_failures and max_timeouts now default to 3 if not specified or invalid (less than 1) values are specified (FSCORE-244)
+ core: ivr_menu max-timeouts option, result in ivr_menu_status var (FSCORE-183)
+ core: let b legs use park_after_bridge too
+ core: make events less verbose unless verbose_events is set
+ core: parse private events during originate
+ core: pass pdd data to a leg on oubound calls using bridge
+ core: prevent crash in crazy situation with xml interface lookup failures (FSCORE-169)
+ core: reduce cpu requirement for generated comfort noise
+ core: remove interface names from core db on unload
+ core: reworked timing resulting in significant performance increase and better rtp timing
+ core: rewrite switch_play_and_get_digits (MODAPP-166)
+ core: session.recordFile never terminates (MODLANG-79)
+ core: session.transfer make dialplan and context optional
+ core: set_user app now sets domain vars as well as user vars
+ core: tone_detect not triggering app after tone detection (MODAPP-182)
+ core: unprivileged user setting bigger stack for switch_system thread failure (FSCORE-197)
+ core: user_exists returns false when fetching a user from XML Curl or other xml interfaces
+ libesl: added c event socket library and fs_cli
+ libsndfile: fix autoconf 2.62 support (LBSNDF-5)
+ mod commands: add "all" modifier to "break" command
+ mod_celt: added new module
+ mod_commands: Add support for more than 2 variables to uuid_setvar_multi (MODAPP-171)
+ mod_commands: Add support for passing the cause of hangup to the uuid_kill command (FSCORE-217)
+ mod_commands: add attr lookup to user_data
+ mod_commands: add domain_exists fsapi command
+ mod_commands: add eval fsapi command
+ mod_commands: add flush_dtmf app and uuid_flush_dtmf api command
+ mod_commands: add fsctl send_sighup, fsctl shutdown asap, unsched_api commands
+ mod_commands: add fsctl shutdown [elegant|restart|cancel]
+ mod_commands: add new syntax to uuid_setvar to allow you to unset a var. <uuid> <var> [value] (MODAPP-167)
+ mod_commands: add reload fsapi command to reload a module
+ mod_commands: add system fsapi and application (MODAPP-138)
+ mod_commands: added hupall fsapi command
+ mod_commands: added strftime_tz api command
+ mod_commands: break all now stops broadcast too
+ mod_commands: fix api command sent through sched_api was getting the last char lopped off
+ mod_commands: fix race on transfer with -both
+ mod_commands: fix system dialplan app problems (MODAPP-86)
+ mod_commands: only send content-type on status when it really is http.
+ mod_conference: add fsapi to stop async playback too
+ mod_conference: add video caps to mod_conference with video follow audio
+ mod_conference: better sound prefix handling when using say: and allow say: on kick sounds.
+ mod_conference: fix race in record
+ mod_conference: fix runaway thread when floor holder has no video and other people do have video
+ mod_conference: fix seg when kicking many members quickly (MODAPP-129)
+ mod_conference: fix segfault on invalid chat event
+ mod_conference: perpetual sound does not auto-mute, you can do that yourself if you want it
+ mod_dialplan_xml: add Hunt- vars in dialplan lookup after transfer
+ mod_dialplan_xml: fail call on extensions with nested conditions
+ mod_dingaling: (LBDING-7) fix segfault on os x
+ mod_dingaling: end call on ice timeout
+ mod_dingaling: fix presence on jabber to be less protocol ambiguous
+ mod_dingaling: fix segfault (LBDING-10)
+ mod_dingaling: update to support latest client from google
+ mod_dptools: add a mechanism to tell if a file played from sendmsg over event socket
+ mod_dptools: add playback_terminator support to phrase and say app
+ mod_dptools: add playback_terminator_used variable (MODAPP-132)
+ mod_dptools: add presence application
+ mod_dptools: fix originate api not parsing users properly (FSCORE-246)
+ mod_dptools: fix record and record_session to create directory if it does not exist (FSCORE-250)
+ mod_dptools: fixed limit and + parsing bug in record_session app (MODAPP-148)
+ mod_dptools: remove_bugs added to remove all media bugs on a session
+ mod_erlang_event: add new module
+ mod_event_socket: missing : after Content-Length in event socket (MODEVENT-33)
+ mod_event_socket: add event socket listener filters
+ mod_event_socket: add stateful listener fsapi commands for ajax-y type event interface over http
+ mod_event_socket: fix arg parsing errors (MODEVENT-34)
+ mod_event_socket: fix shutdown segfault race (MODEVENT-32)
+ mod_event_socket: inbound connection to event_socket can now take over an existing channel with 'myevents <uuid>' to take on the behaviour of an outbound socket
+ mod_event_socket: let any channel get messages
+ mod_event_socket: make event socket wait for hangup on outbound mode and send disconnect message
+ mod_expr: fix endless loop
+ mod_fax: new module
+ mod_fifo: add fifo_consumer_wrapup_time var (MODAPP-117)
+ mod_fifo: added callback agents
+ mod_fifo: honor keyword silence (MODAPP-118)
+ mod_flite: added windows build
+ mod_fsv: fix in a windows enviroment opening the record file in text mode. (MODAPP-169)
+ mod_http: added new module
+ mod_java: updated to new module api to support read/write locks on interface
+ mod_limit: accept dialplan context for transfer (MODAPP-161)
+ mod_limit: added hashtable based limit functions
+ mod_limit: prevent empty error log message (MODAPP-134)
+ mod_local_stream: add start_local_stream and stop_local_stream fsapi commands to start/stop dynamically (MODFORM-13)
+ mod_local_stream: fix leak and improve error checking
+ mod_local_stream: fix seg when no timer name specified in config file. (MODFORM-16)
+ mod_loopback: add new module
+ mod_lua: add local scripts directory support (MODLANG-86)
+ mod_lua: don't eval blank string
+ mod_lua: fix originate
+ mod_lua: fix segfault (MODLANG-77)
+ mod_lua: update to lua 5.1.4 (MODLANG-87)
+ mod_lumenvox: removed
+ mod_managed: new module replaces mod_mono now supports native .net runtime on windows as well
+ mod_opal: added to trunk (still very beta)
+ mod_perl: fix segfault (MODLANG-77)
+ mod_pocketsphinx: fix rpm build
+ mod_portaudio: fix cpu race on inbound call to pa when no ring file is set
+ mod_radius_cdr: dictionary update for cause code changes (MODEVENT-27)
+ mod_radius_cdr: fix unload (MODEVENT-29)
+ mod_shout: add stereo recording broadcast support
+ mod_shout: added windows build
+ mod_shout: fix segfault when recording mp3's (MODFORM-12)
+ mod_shout: improved stability of mp3 decoding
+ mod_siren: added new module
+ mod_sndfile added support to record 16bit for the various rates including 48kHz
+ mod_sofia: Add filter to "sofia status profile XXX" (MODENDP-138)
+ mod_sofia: Add force-register-db-domain which works in conjunction with force-register-domain.
+ mod_sofia: Add optional <variables> and <params> tag to <gateway> tag.
+ mod_sofia: Challenge the right realm when to_host is outside the users domain. (MODENDP-136)
+ mod_sofia: Improve notify messages through a proxy (MODENDP-147)
+ mod_sofia: MWI for multiple domains (MODAPP-126)
+ mod_sofia: Move "a=sendrecv" from session to media section of SDP (MODENDP-148)
+ mod_sofia: add 200 OK re-invite without sdp
+ mod_sofia: add custom sofia::gateway_state event (MODENDP-112)
+ mod_sofia: add fire events for the refer SIP NOTIFY event package (MODENDP-152)
+ mod_sofia: add more params for xml_curl directory lookup
+ mod_sofia: add new auto vals for challenge-realm param <param name="challenge-realm" value="auto_from|auto_to|<hardcoded_val>"/>
+ mod_sofia: add option to turn of auto_restart of sofia profiles on ip change
+ mod_sofia: add params to use sip callid as uuid on inbound calls and uuid as sip callid on outbound calls
+ mod_sofia: add parsing of Privacy header for privacy info (MODENDP-133)
+ mod_sofia: add proto_specific_hangup_cause to both legs
+ mod_sofia: add proxy 3pcc mode
+ mod_sofia: add redirect variable to channel as well as partner channe (MODENDP-135)
+ mod_sofia: add sip-forbid-register to user params to refuse to let a certian user register
+ mod_sofia: add sip: into register-proxy when it's not specified
+ mod_sofia: add sip_history_info var for inbound invites.
+ mod_sofia: add sip_via_protocol variable
+ mod_sofia: add sofia xmlstatus (MODENDP-156)
+ mod_sofia: add support for params other than Replaces in Refer-To (MODENDP-143)
+ mod_sofia: add support for profiles sharing databases so that you can have a domain that uses multiple profiles for split dns type setups
+ mod_sofia: add support for refer transfer involving multiple machines
+ mod_sofia: add support to send a notify in the invite dialog by specifying the uuid of the call. (SFSIP-92)
+ mod_sofia: add suppress_from_cidname var to not have display name in from header (MODENDP-153)
+ mod_sofia: added sip_hangup_disposition variable
+ mod_sofia: allow send_message and notify events to send a message/notify without a body if needed.
+ mod_sofia: append -1 .. -N postfix after any X-headers as vars that have the same name
+ mod_sofia: cache auth_gateway_name in sofia for challenged bye
+ mod_sofia: cancel proxy or no-media mode if you purposely answer or pre_answer
+ mod_sofia: correct result code mapping for Unallocated Number (MODENDP-124)
+ mod_sofia: disable 100rel by default
+ mod_sofia: don't accept crypto in the RTP/AVP (MODENDP-126)
+ mod_sofia: don't put CN in sdp answer if it was not in the offer.
+ mod_sofia: fix Incorrect IP address shows up in SDP "o" field when multiple external IPs available and FS not bound to first (MODENDP-132)
+ mod_sofia: fix Wrong RTP media port destination after reinvite/UNHOLD (SFSIP-82)
+ mod_sofia: fix bug on linksys where they lie about the ptime and handle linksys transfer problem
+ mod_sofia: fix chat (send an IM) assumes that the user's profile is the same as their domain, which isn't necessarily so (SFSIP-83)
+ mod_sofia: fix dtmf handling of broken info dtmf endpoints
+ mod_sofia: fix eyebeam presence to be RFC compliant (MODENDP-144)
+ mod_sofia: fix ip change detection when in proxy mode
+ mod_sofia: fix register_proxy ignoring the paramaters (MODENDP-121)
+ mod_sofia: fix remote session refresh triggers request glare (MODENDP-131)
+ mod_sofia: fix rtp auto adjust running when it should not
+ mod_sofia: fix rtp sent to wrong port after some re-INVITE scenarios (MODENDP-141)
+ mod_sofia: fix sending of cn packets across bridge when we shouldn't
+ mod_sofia: fix sqlite issue with select of the sip contact
+ mod_sofia: fixed segfault on invalid presence payload
+ mod_sofia: gateway ping needs to look for 501 (SFSIP-78)
+ mod_sofia: handle multi contact register responses and register timeout better
+ mod_sofia: improve gateway resilience
+ mod_sofia: log ip and port you get reply to invite from
+ mod_sofia: make multiple-registations=true use the contact method and call-id option to do it the old way
+ mod_sofia: make proxy mode pull the port from m=image as well
+ mod_sofia: make register-proxy preserve the url composed from proxy but target the packets to desired address (MODENDP-121)
+ mod_sofia: many fixes for sonus rtp issues silence_when_idle=400 chanvar to send generated silence duing sleeps etc
+ mod_sofia: many fixes in presence handling
+ mod_sofia: passthrough t.38 fixes
+ mod_sofia: pick ipv4 or ipv6 based on sipip instead of having mixed in sdp
+ mod_sofia: send NOTIFY on TCP/UDP depending on the SUBSCRIBE (SFSIP-104)
+ mod_sofia: setting profile option multiple-registrations=contact key multi reg off the contact string
+ mod_sofia: wait for a reply on refer
+ mod_soundtouch: fixes and improvements, many options changed (MODAPP-149)
+ mod_soundtouch: updated to new module api
+ mod_spidermonkey: Segmentation fault in check_hangup_hook at mod_spidermonkey.c:1589 (MODLANG-74)
+ mod_spidermonkey: fix bug in apiExecute
+ mod_spidermonkey: fix memory pool handling and leaks
+ mod_spidermonkey: limit recursion busting through the stack (FSCORE-202)
+ mod_spidermonkey: make session.getVariable return blank string not the word false
+ mod_spidermonkey_curl: add optional content-type arg
+ mod_spidermonkey_odbc: fix numRows and add numCols
+ mod_spidermonkey_odbc: fix segfault (MODLANG-75)
+ mod_stress: new module for voice stress analysis
+ mod_syslog: don't log blank lines (FSCORE-163)
+ mod_tone_stream: let silence_stream://0 indicate perpetual silence
+ mod_vmd: add new module to detect voicemail "beep"
+ mod_voicemail: Add vm_alternate_greet_id param to directory entry (MODAPP-174)
+ mod_voicemail: Patch to add voicemail preference controlling date announcement new param 'play-date-announcement' to values 'first' 'last' or 'never' defaults to first to retain previous behavior (MODAPP-121)
+ mod_voicemail: Update mwi light after delete vm via web. (MODAPP-124)
+ mod_voicemail: add ability to get to options without listening to every saved message (MODAPP-115)
+ mod_voicemail: add ability to skip greeting when leaving a voicemail. (MODAPP-181)
+ mod_voicemail: add change-pass-key config file option
+ mod_voicemail: add forwarding support
+ mod_voicemail: add local dtmf driven alternat vm pass
+ mod_voicemail: add proper notification of a vm message being too short
+ mod_voicemail: add support for auth via a1-hash
+ mod_voicemail: add the "storage-dir" parameter to be set on a per-user basis (MODAPP-133)
+ mod_voicemail: add voicemail_greeting_path variable
+ mod_voicemail: added voicemail_alternate_greet_id variable
+ mod_voicemail: allow changing of password from voicemail to update user directory if using non-static config (MODAPP-156)
+ mod_voicemail: created email date (int overflow) (MODAPP-125)
+ mod_voicemail: don't try to deliver vm when no file was recorded. (MODAPP-133)
+ mod_voicemail: fix MWI with xml_curl used for directory (MODAPP-176)
+ mod_voicemail: fix Voicemail messages occasionally lost / stranded (MODAPP-178)
+ mod_voicemail: fix invalid event after message deleted (MODAPP-170)
+ mod_voicemail: fix mwi for phones with multiple registrations problem (MODAPP-153)
+ mod_voicemail: fix voicemail segfault on incorrect password (FSCORE-187)
+ mod_voicemail: fix voicemail_inject error handling (MODAPP-133)
+ mod_voicemail: fix voicemail_inject usage api call
+ mod_voicemail: improve error checking (MODAPP-142)
+ mod_voicemail: localize notification emails (MODAPP-139)
+ mod_voicemail: make more multi-domain friendly (MODAPP-162)
+ mod_voicemail: make playback created file macros optional (MODAPP-150)
+ mod_voicemail: recognize operator key in more places (MODAPP-159)
+ mod_voicemail: web interface displays incorrect created / last heard dates (MODAPP-123)
+ mod_wanpipe: removed
+ mod_xml_cdr: add https support
+ mod_xml_cdr: add optional a-leg prefix to xml cdr filenames (MDXMLINT-39)
+ mod_xml_cdr: add support for fallback webserver for cdr posting (FSCORE-238)
+ mod_xml_curl: Allow specification of HTTP method, and dynamic expansion of variables in URI. (MDXMLINT-41)
+ mod_xml_curl: added redirect following (max 10)
+ mod_xml_ldap: almost a complete rewrite of this module
+ mod_xml_rpc: allow setting of global realm without a global user (MDXMLINT-45)
+ mod_xml_rpc: fix multiple segfaults
+ mod_xml_rpc: fix segfault on originate via http
+ sofia-sip: updated to 1.12.10 (plus a few patches)
+
freeswitch (1.0.1)
FIX: prevent intercept race condition that can also be solved with continue_on_fail=originator_cancel
Modified: freeswitch/branches/gmaruzz/docs/Doxygen.conf
==============================================================================
--- freeswitch/branches/gmaruzz/docs/Doxygen.conf (original)
+++ freeswitch/branches/gmaruzz/docs/Doxygen.conf Wed Jan 7 10:17:00 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
Modified: freeswitch/branches/gmaruzz/libs/esl/Makefile
==============================================================================
--- freeswitch/branches/gmaruzz/libs/esl/Makefile (original)
+++ freeswitch/branches/gmaruzz/libs/esl/Makefile Wed Jan 7 10:17:00 2009
@@ -1,11 +1,10 @@
-PWD=$(shell pwd)
-INCS=-I$(PWD)/src/include
+INCS=-Isrc/include
LIBEDIT_DIR=../../libs/libedit
DEBUG=-g -ggdb
PICKY=-O2 -ffast-math -Wall -Werror -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
-CFLAGS=$(INCS) -D_GNU_SOURCE $(DEBUG) -I$(LIBEDIT_DIR)/src/ $(PICKY)
+CFLAGS=$(INCS) -DHAVE_EDITLINE $(DEBUG) -I$(LIBEDIT_DIR)/src/ $(PICKY)
MYLIB=libesl.a
-LIBS=-lesl -lncurses -lpthread
+LIBS=-lncurses -lpthread -lesl
LDFLAGS=-L.
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
Modified: freeswitch/branches/gmaruzz/libs/esl/fs_cli.2008.vcproj
==============================================================================
--- freeswitch/branches/gmaruzz/libs/esl/fs_cli.2008.vcproj (original)
+++ freeswitch/branches/gmaruzz/libs/esl/fs_cli.2008.vcproj Wed Jan 7 10:17:00 2009
@@ -21,7 +21,6 @@
OutputDirectory="$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
- InheritedPropertySheets="..\..\w32\winlibs.vsprops"
CharacterSet="2"
BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
>
@@ -43,8 +42,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories=""$(InputDir)\src\include""
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS"
+ AdditionalIncludeDirectories=""$(ProjectDir)getopt";"$(ProjectDir)src/include""
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ESL_DECLARE_STATIC"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
@@ -66,6 +65,7 @@
/>
<Tool
Name="VCLinkerTool"
+ AdditionalDependencies="Ws2_32.lib"
OutputFile="$(SolutionDir)$(ConfigurationName)/fs_cli.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="$(OutDir)"
@@ -103,7 +103,6 @@
OutputDirectory="$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
- InheritedPropertySheets="..\..\w32\winlibs.vsprops"
CharacterSet="2"
BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
>
@@ -124,8 +123,8 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""$(InputDir)\src\include""
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS"
+ AdditionalIncludeDirectories=""$(ProjectDir)getopt";"$(ProjectDir)src/include""
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ESL_DECLARE_STATIC"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="4"
@@ -144,6 +143,7 @@
/>
<Tool
Name="VCLinkerTool"
+ AdditionalDependencies="Ws2_32.lib"
OutputFile="$(SolutionDir)$(ConfigurationName)/fs_cli.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="$(OutDir)"
@@ -191,6 +191,10 @@
RelativePath="fs_cli.c"
>
</File>
+ <File
+ RelativePath=".\getopt\getopt_long.c"
+ >
+ </File>
</Filter>
<Filter
Name="Header Files"
@@ -198,51 +202,7 @@
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
- RelativePath="..\..\src\include\switch.h"
- >
- </File>
- <File
- RelativePath="..\..\src\include\switch_buffer.h"
- >
- </File>
- <File
- RelativePath="..\..\src\include\switch_caller.h"
- >
- </File>
- <File
- RelativePath="..\..\src\include\switch_channel.h"
- >
- </File>
- <File
- RelativePath="..\..\src\include\switch_config.h"
- >
- </File>
- <File
- RelativePath="..\..\src\include\switch_console.h"
- >
- </File>
- <File
- RelativePath="..\..\src\include\switch_core.h"
- >
- </File>
- <File
- RelativePath="..\..\src\include\switch_frame.h"
- >
- </File>
- <File
- RelativePath="..\..\src\include\switch_loadable_module.h"
- >
- </File>
- <File
- RelativePath="..\..\src\include\switch_module_interfaces.h"
- >
- </File>
- <File
- RelativePath="..\..\src\include\switch_types.h"
- >
- </File>
- <File
- RelativePath="..\..\src\include\switch_utils.h"
+ RelativePath=".\getopt\getopt.h"
>
</File>
</Filter>
Modified: freeswitch/branches/gmaruzz/libs/esl/fs_cli.c
==============================================================================
--- freeswitch/branches/gmaruzz/libs/esl/fs_cli.c (original)
+++ freeswitch/branches/gmaruzz/libs/esl/fs_cli.c Wed Jan 7 10:17:00 2009
@@ -1,3 +1,7 @@
+#ifndef _XOPEN_SOURCE
+#define _XOPEN_SOURCE 600
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <esl.h>
@@ -6,14 +10,45 @@
#ifdef WIN32
#define strdup(src) _strdup(src)
#define usleep(time) Sleep(time/1000)
+#define fileno _fileno
+#define read _read
+#include <io.h>
#else
#include <sys/select.h>
+#include <unistd.h>
+#endif
+
+#include <getopt.h>
+
+#ifdef HAVE_EDITLINE
#include <histedit.h>
-#define HAVE_EDITLINE
#endif
static char prompt_str[512] = "";
-static char hostname[512] = "";
+
+typedef struct {
+ char name[128];
+ char host[128];
+ esl_port_t port;
+ char pass[128];
+ int debug;
+ const char *console_fnkeys[12];
+ char loglevel[128];
+ int quiet;
+} cli_profile_t;
+
+static cli_profile_t profiles[128] = {{{0}}};
+static cli_profile_t internal_profile = {{ 0 }};
+static int pcount = 0;
+
+static esl_handle_t *global_handle;
+static cli_profile_t *global_profile;
+
+static int process_command(esl_handle_t *handle, const char *cmd);
+
+static int running = 1;
+static int thread_running = 0;
+
#ifdef HAVE_EDITLINE
static char *prompt(EditLine * e)
@@ -24,10 +59,86 @@
static EditLine *el;
static History *myhistory;
static HistEvent ev;
-#endif
-static int running = 1;
-static int thread_running = 0;
+
+
+/*
+ * If a fnkey is configured then process the command
+ */
+static unsigned char console_fnkey_pressed(int i)
+{
+ const char *c;
+
+ assert((i > 0) && (i <= 12));
+
+ c = global_profile->console_fnkeys[i - 1];
+
+ /* This new line is necessary to avoid output to begin after the ">" of the CLI's prompt */
+ printf("%s\n", c);
+ printf("\n");
+
+ if (c == NULL) {
+ esl_log(ESL_LOG_ERROR, "FUNCTION KEY F%d IS NOT BOUND, please edit your config.\n", i);
+ return CC_REDISPLAY;
+ }
+
+ if (process_command(global_handle, c)) {
+ running = thread_running = 0;
+ }
+
+ return CC_REDISPLAY;
+}
+
+static unsigned char console_f1key(EditLine * el, int ch)
+{
+ return console_fnkey_pressed(1);
+}
+static unsigned char console_f2key(EditLine * el, int ch)
+{
+ return console_fnkey_pressed(2);
+}
+static unsigned char console_f3key(EditLine * el, int ch)
+{
+ return console_fnkey_pressed(3);
+}
+static unsigned char console_f4key(EditLine * el, int ch)
+{
+ return console_fnkey_pressed(4);
+}
+static unsigned char console_f5key(EditLine * el, int ch)
+{
+ return console_fnkey_pressed(5);
+}
+static unsigned char console_f6key(EditLine * el, int ch)
+{
+ return console_fnkey_pressed(6);
+}
+static unsigned char console_f7key(EditLine * el, int ch)
+{
+ return console_fnkey_pressed(7);
+}
+static unsigned char console_f8key(EditLine * el, int ch)
+{
+ return console_fnkey_pressed(8);
+}
+static unsigned char console_f9key(EditLine * el, int ch)
+{
+ return console_fnkey_pressed(9);
+}
+static unsigned char console_f10key(EditLine * el, int ch)
+{
+ return console_fnkey_pressed(10);
+}
+static unsigned char console_f11key(EditLine * el, int ch)
+{
+ return console_fnkey_pressed(11);
+}
+static unsigned char console_f12key(EditLine * el, int ch)
+{
+ return console_fnkey_pressed(12);
+}
+
+#endif
static void handle_SIGINT(int sig)
{
@@ -35,9 +146,31 @@
return;
}
-static const char* COLORS[] = { ESL_SEQ_DEFAULT_COLOR, ESL_SEQ_FRED, ESL_SEQ_FRED,
- ESL_SEQ_FRED, ESL_SEQ_FMAGEN, ESL_SEQ_FCYAN, ESL_SEQ_FGREEN, ESL_SEQ_FYELLOW };
+#ifdef WIN32
+static HANDLE hStdout;
+static WORD wOldColorAttrs;
+static CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
+
+static WORD
+#else
+static const char*
+#endif
+COLORS[] = { ESL_SEQ_DEFAULT_COLOR, ESL_SEQ_FRED, ESL_SEQ_FRED,
+ ESL_SEQ_FRED, ESL_SEQ_FMAGEN, ESL_SEQ_FCYAN, ESL_SEQ_FGREEN, ESL_SEQ_FYELLOW };
+
+static int usage(char *name){
+ printf("Usage: %s [-H <host>] [-P <port>] [-p <secret>] [-d <level>] [-x command] [profile]\n\n", name);
+ printf(" -?,-h --help Usage Information\n");
+ printf(" -H, --host=hostname Host to connect\n");
+ printf(" -P, --port=port Port to connect (1 - 65535)\n");
+ printf(" -p, --password=FILENAME Password\n");
+ printf(" -x, --execute=command Execute Command and Exit\n");
+ printf(" -l, --loglevel=command Log Level\n");
+ printf(" -q, --quiet Disable logging\n");
+ printf(" -d, --debug=level Debug Level (0 - 7)\n\n");
+ return 1;
+}
static void *msg_thread_run(esl_thread_t *me, void *obj)
{
@@ -59,26 +192,37 @@
if (!esl_strlen_zero(type)) {
if (!strcasecmp(type, "log/data")) {
- int level = 0, tchannel = 0;
+ int level = 0;
const char *lname = esl_event_get_header(handle->last_event, "log-level");
- const char *channel = esl_event_get_header(handle->last_event, "text-channel");
- const char *file = esl_event_get_header(handle->last_event, "log-file");
-
- if (channel) {
- tchannel = atoi(channel);
- }
-
+#ifdef WIN32
+ DWORD len = (DWORD) strlen(handle->last_event->body);
+ DWORD outbytes = 0;
+#endif
if (lname) {
level = atoi(lname);
}
-
- if (tchannel == 0 || (file && !strcmp(file, "switch_console.c"))) {
- printf("%s%s%s", COLORS[level], handle->last_event->body, ESL_SEQ_DEFAULT_COLOR);
- }
+
+
+#ifdef WIN32
+
+ SetConsoleTextAttribute(hStdout, COLORS[level]);
+ WriteFile(hStdout, handle->last_event->body, len, &outbytes, NULL);
+ SetConsoleTextAttribute(hStdout, wOldColorAttrs);
+#else
+ printf("%s%s%s", COLORS[level], handle->last_event->body, ESL_SEQ_DEFAULT_COLOR);
+#endif
+
known++;
} else if (!strcasecmp(type, "text/disconnect-notice")) {
running = thread_running = 0;
known++;
+ } else if (!strcasecmp(type, "text/event-plain")) {
+ char *foo;
+ esl_event_serialize(handle->last_ievent, &foo, ESL_FALSE);
+ printf("RECV EVENT\n%s\n", foo);
+ free(foo);
+
+ known++;
}
}
@@ -99,48 +243,77 @@
static int process_command(esl_handle_t *handle, const char *cmd)
{
- if (
- !strcasecmp(cmd, "exit") ||
- !strcasecmp(cmd, "quit") ||
- !strcasecmp(cmd, "bye")
- ) {
- return -1;
- }
+ 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") ||
+ !strcasecmp(cmd, "...") ||
+ !strcasecmp(cmd, "bye")
+ ) {
+ esl_log(ESL_LOG_INFO, "Goodbye!\nSee you at ClueCon http://www.cluecon.com/\n");
+ return -1;
+ }
+
+ if (
+ !strncasecmp(cmd, "event", 5) ||
+ !strncasecmp(cmd, "noevent", 7) ||
+ !strncasecmp(cmd, "nixevent", 8) ||
+ !strncasecmp(cmd, "log", 3) ||
+ !strncasecmp(cmd, "nolog", 5) ||
+ !strncasecmp(cmd, "filter", 6)
+ ) {
- if (
- !strncasecmp(cmd, "event", 5) ||
- !strncasecmp(cmd, "noevent", 7) ||
- !strncasecmp(cmd, "nixevent", 8) ||
- !strncasecmp(cmd, "log", 3) ||
- !strncasecmp(cmd, "nolog", 5) ||
- !strncasecmp(cmd, "filter", 6)
- ) {
+ esl_send_recv(handle, cmd);
- esl_send_recv(handle, cmd);
- printf("%s\n", handle->last_sr_reply);
+ printf("%s\n", handle->last_sr_reply);
- goto end;
+ 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 {
+ char cmd_str[1024] = "";
+
+ snprintf(cmd_str, sizeof(cmd_str), "api %s\n\n", cmd);
+ esl_send_recv(handle, cmd_str);
+ if (handle->last_sr_event && handle->last_sr_event->body) {
+ printf("%s\n", handle->last_sr_event->body);
+ }
}
- printf("Unknown command [%s]\n", cmd);
-
end:
return 0;
}
-typedef struct {
- char name[128];
- char host[128];
- esl_port_t port;
- char pass[128];
-} cli_profile_t;
-
-static cli_profile_t profiles[128] = {{{0}}};
-static int pcount;
-
-
static int get_profile(const char *name, cli_profile_t **profile)
{
int x;
@@ -155,86 +328,315 @@
return -1;
}
+#ifndef HAVE_EDITLINE
+static char command_buf[2048] = "";
+
+static const char *basic_gets(int *cnt)
+{
+ int x = 0;
+
+ printf("%s", prompt_str);
+
+ memset(&command_buf, 0, sizeof(command_buf));
+ for (x = 0; x < (sizeof(command_buf) - 1); x++) {
+ int c = getchar();
+ if (c < 0) {
+ int y = read(fileno(stdin), command_buf, sizeof(command_buf) - 1);
+ command_buf[y - 1] = '\0';
+ break;
+ }
+
+ command_buf[x] = (char) c;
+
+ if (command_buf[x] == '\n') {
+ command_buf[x] = '\0';
+ break;
+ }
+ }
+
+ *cnt = x;
+
+ return command_buf;
+
+}
+#endif
+
+
+static void print_banner(FILE *stream)
+{
+ fprintf(stream,
+
+
+ " _____ ____ ____ _ ___ \n"
+ " | ___/ ___| / ___| | |_ _| \n"
+ " | |_ \\___ \\ | | | | | | \n"
+ " | _| ___) | | |___| |___ | | \n"
+ " |_| |____/ \\____|_____|___| \n"
+ "\n"
+ "*****************************************************\n"
+ "* Anthony Minessale II, Ken Rice, Michael Jerris *\n"
+ "* FreeSWITCH (http://www.freeswitch.org) *\n"
+ "* Brought to you by ClueCon http://www.cluecon.com/ *\n"
+ "*****************************************************\n"
+ "\n\n"
+ );
+}
+
+
+static void set_fn_keys(cli_profile_t *profile)
+{
+ profile->console_fnkeys[0] = "help";
+ profile->console_fnkeys[1] = "status";
+ profile->console_fnkeys[2] = "show channels";
+ profile->console_fnkeys[3] = "show calls";
+ profile->console_fnkeys[4] = "sofia status";
+ profile->console_fnkeys[5] = "reloadxml";
+ profile->console_fnkeys[6] = "/log console";
+ profile->console_fnkeys[7] = "/log debug";
+ profile->console_fnkeys[8] = "sofia status profile internal";
+ profile->console_fnkeys[9] = "fsctl pause";
+ profile->console_fnkeys[10] = "fsctl resume";
+ profile->console_fnkeys[11] = "version";
+}
+
+
int main(int argc, char *argv[])
{
esl_handle_t handle = {{0}};
int count = 0;
const char *line = NULL;
char cmd_str[1024] = "";
- char hfile[512] = "/tmp/fs_cli_history";
- char cfile[512] = "/tmp/fs_cli_config";
- char *home = getenv("HOME");
esl_config_t cfg;
- cli_profile_t *profile = &profiles[0];
- int cur = 0;
-
- strncpy(profiles[0].host, "localhost", sizeof(profiles[0].host));
- strncpy(profiles[0].pass, "ClueCon", sizeof(profiles[0].pass));
- strncpy(profiles[0].name, "default", sizeof(profiles[0].name));
- profiles[0].port = 8021;
- pcount++;
+ cli_profile_t *profile = NULL;
+ int rv = 0;
+
+#ifndef WIN32
+ char hfile[512] = "/etc/fs_cli_history";
+ char cfile[512] = "/etc/fs_cli.conf";
+ char dft_cfile[512] = "/etc/fs_cli.conf";
+#else
+ char hfile[512] = "fs_cli_history";
+ char cfile[512] = "fs_cli.conf";
+ char dft_cfile[512] = "fs_cli.conf";
+#endif
+ char *home = getenv("HOME");
+ /* Vars for optargs */
+ int opt;
+ static struct option options[] = {
+ {"help", 0, 0, 'h'},
+ {"host", 1, 0, 'H'},
+ {"port", 1, 0, 'P'},
+ {"password", 1, 0, 'p'},
+ {"debug", 1, 0, 'd'},
+ {"execute", 1, 0, 'x'},
+ {"loglevel", 1, 0, 'l'},
+ {"quiet", 0, 0, 'q'},
+ {0, 0, 0, 0}
+ };
+
+ char temp_host[128];
+ int argv_host = 0;
+ char temp_pass[128];
+ int argv_pass = 0 ;
+ int temp_port = 0;
+ int argv_port = 0;
+ int temp_log = -1;
+ int argv_error = 0;
+ int argv_exec = 0;
+ char argv_command[256] = "";
+ char argv_loglevel[128] = "";
+ int argv_quiet = 0;
+
+ strncpy(internal_profile.host, "127.0.0.1", sizeof(internal_profile.host));
+ strncpy(internal_profile.pass, "ClueCon", sizeof(internal_profile.pass));
+ strncpy(internal_profile.name, "internal", sizeof(internal_profile.name));
+ internal_profile.port = 8021;
+ set_fn_keys(&internal_profile);
+
+
if (home) {
snprintf(hfile, sizeof(hfile), "%s/.fs_cli_history", home);
- snprintf(cfile, sizeof(cfile), "%s/.fs_cli_config", home);
+ snprintf(cfile, sizeof(cfile), "%s/.fs_cli_conf", home);
}
signal(SIGINT, handle_SIGINT);
- gethostname(hostname, sizeof(hostname));
- handle.debug = 0;
- esl_global_set_default_logger(7);
+ esl_global_set_default_logger(6); /* default debug level to 6 (info) */
+
+ for(;;) {
+ int option_index = 0;
+ opt = getopt_long(argc, argv, "H:U:P:S:p:d:x:l:qh?", options, &option_index);
+ if (opt == -1) break;
+ switch (opt)
+ {
+ case 'H':
+ esl_set_string(temp_host, optarg);
+ argv_host = 1;
+ break;
+ case 'P':
+ temp_port= atoi(optarg);
+ if (temp_port > 0 && temp_port < 65536){
+ argv_port = 1;
+ } else {
+ printf("ERROR: Port must be in range 1 - 65535\n");
+ argv_error = 1;
+ }
+ break;
+ case 'p':
+ esl_set_string(temp_pass, optarg);
+ argv_pass = 1;
+ break;
+ case 'd':
+ temp_log=atoi(optarg);
+ if (temp_log < 0 || temp_log > 7){
+ printf("ERROR: Debug level should be 0 - 7.\n");
+ argv_error = 1;
+ } else {
+ esl_global_set_default_logger(temp_log);
+ }
+ break;
+ case 'x':
+ argv_exec = 1;
+ esl_set_string(argv_command, optarg);
+ break;
+ case 'l':
+ esl_set_string(argv_loglevel, optarg);
+ break;
+ case 'q':
+ argv_quiet = 1;
+ break;
+
+ case 'h':
+ case '?':
+ print_banner(stdout);
+ usage(argv[0]);
+ return 0;
+ default:
+ opt = 0;
+ }
+ }
- if (esl_config_open_file(&cfg, cfile)) {
+ if (argv_error){
+ printf("\n");
+ return usage(argv[0]);
+ }
+
+ if (!(rv = esl_config_open_file(&cfg, cfile))) {
+ rv = esl_config_open_file(&cfg, dft_cfile);
+ }
+
+ if (rv) {
char *var, *val;
char cur_cat[128] = "";
while (esl_config_next_pair(&cfg, &var, &val)) {
if (strcmp(cur_cat, cfg.category)) {
- cur++;
esl_set_string(cur_cat, cfg.category);
- esl_set_string(profiles[cur].name, cur_cat);
- esl_set_string(profiles[cur].host, "localhost");
- esl_set_string(profiles[cur].pass, "ClueCon");
- profiles[cur].port = 8021;
- esl_log(ESL_LOG_INFO, "Found Profile [%s]\n", profiles[cur].name);
+ esl_set_string(profiles[pcount].name, cur_cat);
+ esl_set_string(profiles[pcount].host, "localhost");
+ esl_set_string(profiles[pcount].pass, "ClueCon");
+ profiles[pcount].port = 8021;
+ set_fn_keys(&profiles[pcount]);
+ esl_log(ESL_LOG_DEBUG, "Found Profile [%s]\n", profiles[pcount].name);
pcount++;
}
if (!strcasecmp(var, "host")) {
- esl_set_string(profiles[cur].host, val);
+ esl_set_string(profiles[pcount-1].host, val);
} else if (!strcasecmp(var, "password")) {
- esl_set_string(profiles[cur].pass, val);
+ esl_set_string(profiles[pcount-1].pass, val);
} else if (!strcasecmp(var, "port")) {
int pt = atoi(val);
if (pt > 0) {
- profiles[cur].port = (esl_port_t)pt;
+ profiles[pcount-1].port = (esl_port_t)pt;
}
- }
+ } else if (!strcasecmp(var, "debug")) {
+ int dt = atoi(val);
+ if (dt > -1 && dt < 8){
+ profiles[pcount-1].debug = dt;
+ }
+ } else if(!strcasecmp(var, "loglevel")) {
+ esl_set_string(profiles[pcount-1].loglevel, val);
+ } else if(!strcasecmp(var, "quiet")) {
+ profiles[pcount-1].quiet = esl_true(val);
+ } else if (!strncasecmp(var, "key_F", 5)) {
+ char *key = var + 5;
+
+ if (key) {
+ int i = atoi(key);
+
+ if (i > 0 && i < 13) {
+ profiles[pcount-1].console_fnkeys[i - 1] = strdup(val);
+ }
+ }
+ }
}
esl_config_close_file(&cfg);
}
-
- if (argv[1]) {
- if (get_profile(argv[1], &profile)) {
- esl_log(ESL_LOG_INFO, "Chosen profile %s does not exist using builtin default\n", argv[1]);
- profile = &profiles[0];
- } else {
- esl_log(ESL_LOG_INFO, "Chosen profile %s\n", profile->name);
+
+ if (optind < argc) {
+ get_profile(argv[optind], &profile);
+ }
+
+ if (!profile) {
+ if (get_profile("default", &profile)) {
+ esl_log(ESL_LOG_DEBUG, "profile default does not exist using builtin profile\n");
+ profile = &internal_profile;
}
}
- esl_log(ESL_LOG_INFO, "Using profile %s\n", profile->name);
-
- gethostname(hostname, sizeof(hostname));
- snprintf(prompt_str, sizeof(prompt_str), "freeswitch@%s> ", profile->name);
+ if (temp_log < 0 ) {
+ esl_global_set_default_logger(profile->debug);
+ }
+
+ if (argv_host) {
+ esl_set_string(profile->host, temp_host);
+ }
+ if (argv_port) {
+ profile->port = (esl_port_t)temp_port;
+ }
+ if (argv_pass) {
+ esl_set_string(profile->pass, temp_pass);
+ }
+
+ if (*argv_loglevel) {
+ esl_set_string(profile->loglevel, argv_loglevel);
+ profile->quiet = 0;
+ }
+ esl_log(ESL_LOG_DEBUG, "Using profile %s [%s]\n", profile->name, profile->host);
+ if (argv_host) {
+ if (argv_port && profile->port != 8021) {
+ snprintf(prompt_str, sizeof(prompt_str), "freeswitch@%s:%u@%s> ", profile->host, profile->port, profile->name);
+ } else {
+ snprintf(prompt_str, sizeof(prompt_str), "freeswitch@%s@%s> ", profile->host, profile->name);
+ }
+ } else {
+ snprintf(prompt_str, sizeof(prompt_str), "freeswitch@%s> ", profile->name);
+ }
+
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;
}
-
+
+
+ if (argv_exec){
+ snprintf(cmd_str, sizeof(cmd_str), "api %s\n\n", argv_command);
+ esl_send_recv(&handle, cmd_str);
+ if (handle.last_sr_event && handle.last_sr_event->body) {
+ printf("%s\n", handle.last_sr_event->body);
+ }
+ esl_disconnect(&handle);
+ return 0;
+ }
+
+ global_handle = &handle;
+ global_profile = profile;
+
esl_thread_create_detached(msg_thread_run, &handle);
#ifdef HAVE_EDITLINE
@@ -243,6 +645,39 @@
el_set(el, EL_EDITOR, "emacs");
myhistory = history_init();
+ el_set(el, EL_ADDFN, "f1-key", "F1 KEY PRESS", console_f1key);
+ el_set(el, EL_ADDFN, "f2-key", "F2 KEY PRESS", console_f2key);
+ el_set(el, EL_ADDFN, "f3-key", "F3 KEY PRESS", console_f3key);
+ el_set(el, EL_ADDFN, "f4-key", "F4 KEY PRESS", console_f4key);
+ el_set(el, EL_ADDFN, "f5-key", "F5 KEY PRESS", console_f5key);
+ el_set(el, EL_ADDFN, "f6-key", "F6 KEY PRESS", console_f6key);
+ el_set(el, EL_ADDFN, "f7-key", "F7 KEY PRESS", console_f7key);
+ el_set(el, EL_ADDFN, "f8-key", "F8 KEY PRESS", console_f8key);
+ el_set(el, EL_ADDFN, "f9-key", "F9 KEY PRESS", console_f9key);
+ el_set(el, EL_ADDFN, "f10-key", "F10 KEY PRESS", console_f10key);
+ el_set(el, EL_ADDFN, "f11-key", "F11 KEY PRESS", console_f11key);
+ el_set(el, EL_ADDFN, "f12-key", "F12 KEY PRESS", console_f12key);
+
+ el_set(el, EL_BIND, "\033OP", "f1-key", NULL);
+ el_set(el, EL_BIND, "\033OQ", "f2-key", NULL);
+ el_set(el, EL_BIND, "\033OR", "f3-key", NULL);
+ el_set(el, EL_BIND, "\033OS", "f4-key", NULL);
+
+
+ el_set(el, EL_BIND, "\033[11~", "f1-key", NULL);
+ el_set(el, EL_BIND, "\033[12~", "f2-key", NULL);
+ el_set(el, EL_BIND, "\033[13~", "f3-key", NULL);
+ el_set(el, EL_BIND, "\033[14~", "f4-key", NULL);
+ el_set(el, EL_BIND, "\033[15~", "f5-key", NULL);
+ el_set(el, EL_BIND, "\033[17~", "f6-key", NULL);
+ el_set(el, EL_BIND, "\033[18~", "f7-key", NULL);
+ el_set(el, EL_BIND, "\033[19~", "f8-key", NULL);
+ el_set(el, EL_BIND, "\033[20~", "f9-key", NULL);
+ el_set(el, EL_BIND, "\033[21~", "f10-key", NULL);
+ el_set(el, EL_BIND, "\033[23~", "f11-key", NULL);
+ el_set(el, EL_BIND, "\033[24~", "f12-key", NULL);
+
+
if (myhistory == 0) {
esl_log(ESL_LOG_ERROR, "history could not be initialized\n");
goto done;
@@ -251,17 +686,31 @@
history(myhistory, &ev, H_SETSIZE, 800);
el_set(el, EL_HIST, history, myhistory);
history(myhistory, &ev, H_LOAD, hfile);
+
+
+#endif
+#ifdef WIN32
+ hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
+ if (hStdout != INVALID_HANDLE_VALUE && GetConsoleScreenBufferInfo(hStdout, &csbiInfo)) {
+ wOldColorAttrs = csbiInfo.wAttributes;
+ }
#endif
- snprintf(cmd_str, sizeof(cmd_str), "log info\n\n");
- esl_send_recv(&handle, cmd_str);
+ if (!argv_quiet && !profile->quiet) {
+ snprintf(cmd_str, sizeof(cmd_str), "log %s\n\n", profile->loglevel);
+ esl_send_recv(&handle, cmd_str);
+ }
+
+ print_banner(stdout);
- esl_log(ESL_LOG_INFO, "FS CLI Ready.\n");
+ esl_log(ESL_LOG_INFO, "FS CLI Ready.\nenter /help for a list of commands.\n");
while (running) {
#ifdef HAVE_EDITLINE
line = el_gets(el, &count);
+#else
+ line = basic_gets(&count);
#endif
if (count > 1) {
@@ -282,19 +731,9 @@
#ifdef HAVE_EDITLINE
history(myhistory, &ev, H_ENTER, line);
#endif
-
- if (!strncasecmp(cmd, "...", 3)) {
- goto done;
- } else if (*cmd == '/') {
- if (process_command(&handle, cmd + 1)) {
- running = 0;
- }
- } else {
- snprintf(cmd_str, sizeof(cmd_str), "api %s\n\n", cmd);
- esl_send_recv(&handle, cmd_str);
- if (handle.last_sr_event) {
- printf("%s\n", handle.last_sr_event->body);
- }
+
+ if (process_command(&handle, cmd)) {
+ running = 0;
}
#ifdef HAVE_EDITLINE
@@ -309,10 +748,8 @@
}
-
- done:
-
#ifdef HAVE_EDITLINE
+ done:
history(myhistory, &ev, H_SAVE, hfile);
/* Clean up our memory */
Modified: freeswitch/branches/gmaruzz/libs/esl/src/esl.2008.vcproj
==============================================================================
--- freeswitch/branches/gmaruzz/libs/esl/src/esl.2008.vcproj (original)
+++ freeswitch/branches/gmaruzz/libs/esl/src/esl.2008.vcproj Wed Jan 7 10:17:00 2009
@@ -20,7 +20,7 @@
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)Debug"
IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="2"
+ ConfigurationType="4"
CharacterSet="1"
>
<Tool
@@ -42,14 +42,14 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="include"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;ESL_EXPORTS"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;ESL_DECLARE_STATIC"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="4"
WarnAsError="true"
- DebugInformationFormat="4"
+ DebugInformationFormat="3"
DisableSpecificWarnings="4706;4100"
EnablePREfast="true"
/>
@@ -63,22 +63,12 @@
Name="VCPreLinkEventTool"
/>
<Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib"
- ModuleDefinitionFile=""
- OptimizeReferences="1"
- EnableCOMDATFolding="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary="$(IntDir)/$(TargetName).lib"
+ Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
- Name="VCManifestTool"
- />
- <Tool
Name="VCXDCMakeTool"
/>
<Tool
@@ -88,9 +78,6 @@
Name="VCFxCopTool"
/>
<Tool
- Name="VCAppVerifierTool"
- />
- <Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
@@ -98,7 +85,7 @@
Name="Release|Win32"
OutputDirectory="$(SolutionDir)Release"
IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="2"
+ ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="1"
>
@@ -120,7 +107,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="include"
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;ESL_EXPORTS"
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;ESL_DECLARE_STATIC"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="4"
@@ -139,20 +126,12 @@
Name="VCPreLinkEventTool"
/>
<Tool
- Name="VCLinkerTool"
- AdditionalDependencies="Ws2_32.lib"
- ModuleDefinitionFile=""
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary="$(IntDir)/$(TargetName).lib"
+ Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
- Name="VCManifestTool"
- />
- <Tool
Name="VCXDCMakeTool"
/>
<Tool
@@ -162,9 +141,6 @@
Name="VCFxCopTool"
/>
<Tool
- Name="VCAppVerifierTool"
- />
- <Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
Modified: freeswitch/branches/gmaruzz/libs/esl/src/esl.c
==============================================================================
--- freeswitch/branches/gmaruzz/libs/esl/src/esl.c (original)
+++ freeswitch/branches/gmaruzz/libs/esl/src/esl.c Wed Jan 7 10:17:00 2009
@@ -368,12 +368,14 @@
{
char *txt;
+ if (!handle->connected) {
+ return ESL_FAIL;
+ }
+
esl_event_serialize(handle->last_ievent, &txt, ESL_TRUE);
- if (handle->debug) {
- esl_log(ESL_LOG_DEBUG, "SEND EVENT\n%s\n", txt);
- }
-
+ esl_log(ESL_LOG_DEBUG, "SEND EVENT\n%s\n", txt);
+
send(handle->sock, "sendevent\n", 10, 0);
send(handle->sock, txt, strlen(txt), 0);
send(handle->sock, "\n\n", 2, 0);
@@ -390,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);
}
@@ -482,6 +488,16 @@
char sendbuf[256];
int rval = 0;
const char *hval;
+#ifdef WIN32
+ WORD wVersionRequested = MAKEWORD(2, 0);
+ WSADATA wsaData;
+ int err = WSAStartup(wVersionRequested, &wsaData);
+ if (err != 0) {
+ snprintf(handle->err, sizeof(handle->err), "WSAStartup Error");
+ return ESL_FAIL;
+ }
+
+#endif
if (!handle->mutex) {
esl_mutex_create(&handle->mutex);
@@ -562,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)
@@ -589,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);
@@ -624,7 +653,7 @@
done:
- esl_mutex_unlock(handle->mutex);
+ if (handle->mutex) esl_mutex_unlock(handle->mutex);
return status;
@@ -644,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);
@@ -689,9 +723,7 @@
if (hname && hval) {
esl_url_decode(hval);
- if (handle->debug > 1) {
- esl_log(ESL_LOG_DEBUG, "RECV HEADER [%s] = [%s]\n", hname, hval);
- }
+ esl_log(ESL_LOG_DEBUG, "RECV HEADER [%s] = [%s]\n", hname, hval);
esl_event_add_header_string(revent, ESL_STACK_BOTTOM, hname, hval);
}
@@ -783,10 +815,7 @@
if (hname && hval) {
esl_url_decode(hval);
-
- if (handle->debug > 1) {
- esl_log(ESL_LOG_DEBUG, "RECV INNER HEADER [%s] = [%s]\n", hname, hval);
- }
+ esl_log(ESL_LOG_DEBUG, "RECV INNER HEADER [%s] = [%s]\n", hname, hval);
esl_event_add_header_string(handle->last_ievent, ESL_STACK_BOTTOM, hname, hval);
}
@@ -815,8 +844,8 @@
handle->last_ievent->body = body;
}
-
- if (handle->debug) {
+
+ if (esl_log_level >= 7) {
char *foo;
esl_event_serialize(handle->last_ievent, &foo, ESL_FALSE);
esl_log(ESL_LOG_DEBUG, "RECV EVENT\n%s\n", foo);
@@ -824,7 +853,7 @@
}
}
- if (handle->debug) {
+ if (esl_log_level >= 7) {
char *foo;
esl_event_serialize(revent, &foo, ESL_FALSE);
esl_log(ESL_LOG_DEBUG, "RECV MESSAGE\n%s\n", foo);
@@ -847,17 +876,19 @@
{
const char *e = cmd + strlen(cmd) -1;
- if (handle->debug) {
- esl_log(ESL_LOG_DEBUG, "SEND\n%s\n", cmd);
+ if (!handle->connected) {
+ return ESL_FAIL;
}
+
+ esl_log(ESL_LOG_DEBUG, "SEND\n%s\n", cmd);
- if (send(handle->sock, cmd, strlen(cmd), 0)) {
+ if (send(handle->sock, cmd, strlen(cmd), 0) != (int)strlen(cmd)) {
strerror_r(handle->errnum, handle->err, sizeof(handle->err));
return ESL_FAIL;
}
-
+
if (!(*e == '\n' && *(e-1) == '\n')) {
- if (send(handle->sock, "\n\n", 2, 0)) {
+ if (send(handle->sock, "\n\n", 2, 0) != 2) {
strerror_r(handle->errnum, handle->err, sizeof(handle->err));
return ESL_FAIL;
}
@@ -873,8 +904,16 @@
const char *hval;
esl_status_t status;
+ if (!handle->connected) {
+ return ESL_FAIL;
+ }
+
esl_mutex_lock(handle->mutex);
- esl_send(handle, cmd);
+
+ if ((status = esl_send(handle, cmd))) {
+ return status;
+ }
+
status = esl_recv_event(handle, &handle->last_sr_event);
if (handle->last_sr_event) {
Modified: freeswitch/branches/gmaruzz/libs/esl/src/esl_event.c
==============================================================================
--- freeswitch/branches/gmaruzz/libs/esl/src/esl_event.c (original)
+++ freeswitch/branches/gmaruzz/libs/esl/src/esl_event.c Wed Jan 7 10:17:00 2009
@@ -313,41 +313,41 @@
int vasprintf(char **ret, const char *format, va_list ap);
-static int esl_vasprintf(char **ret, const char *fmt, va_list ap)
-{
-#ifndef WIN32
- 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
-}
+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, ...)
Modified: freeswitch/branches/gmaruzz/libs/esl/src/include/esl.h
==============================================================================
--- freeswitch/branches/gmaruzz/libs/esl/src/include/esl.h (original)
+++ freeswitch/branches/gmaruzz/libs/esl/src/include/esl.h Wed Jan 7 10:17:00 2009
@@ -42,6 +42,15 @@
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'
@@ -95,6 +104,7 @@
#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
@@ -246,7 +256,6 @@
esl_event_t *last_sr_event;
esl_event_t *last_ievent;
esl_event_t *info_event;
- int debug;
int connected;
struct sockaddr_in addr;
esl_mutex_t *mutex;
Modified: freeswitch/branches/gmaruzz/libs/esl/src/include/esl_config.h
==============================================================================
--- freeswitch/branches/gmaruzz/libs/esl/src/include/esl_config.h (original)
+++ freeswitch/branches/gmaruzz/libs/esl/src/include/esl_config.h Wed Jan 7 10:17:00 2009
@@ -70,6 +70,34 @@
#define esl_is_file_path(file) ((*file == '/') || strstr(file, SWITCH_URL_SEPARATOR))
#endif
+/*!
+ \brief Evaluate the truthfullness of a string expression
+ \param expr a string expression
+ \return true or false
+*/
+#define esl_true(expr)\
+(expr && ( !strcasecmp(expr, "yes") ||\
+!strcasecmp(expr, "on") ||\
+!strcasecmp(expr, "true") ||\
+!strcasecmp(expr, "enabled") ||\
+!strcasecmp(expr, "active") ||\
+!strcasecmp(expr, "allow") ||\
+atoi(expr))) ? 1 : 0
+
+/*!
+ \brief Evaluate the falsefullness of a string expression
+ \param expr a string expression
+ \return true or false
+*/
+#define esl_false(expr)\
+(expr && ( !strcasecmp(expr, "no") ||\
+!strcasecmp(expr, "off") ||\
+!strcasecmp(expr, "false") ||\
+!strcasecmp(expr, "disabled") ||\
+!strcasecmp(expr, "inactive") ||\
+!strcasecmp(expr, "disallow") ||\
+!atoi(expr))) ? 1 : 0
+
typedef struct esl_config esl_config_t;
/*! \brief A simple file handle representing an open configuration file **/
Modified: freeswitch/branches/gmaruzz/libs/esl/testclient.c
==============================================================================
--- freeswitch/branches/gmaruzz/libs/esl/testclient.c (original)
+++ freeswitch/branches/gmaruzz/libs/esl/testclient.c Wed Jan 7 10:17:00 2009
@@ -7,8 +7,6 @@
{
esl_handle_t handle = {{0}};
- handle.debug = 1;
-
esl_connect(&handle, "localhost", 8021, "ClueCon");
esl_send_recv(&handle, "api status\n\n");
Modified: freeswitch/branches/gmaruzz/libs/esl/testserver.c
==============================================================================
--- freeswitch/branches/gmaruzz/libs/esl/testserver.c (original)
+++ freeswitch/branches/gmaruzz/libs/esl/testserver.c Wed Jan 7 10:17:00 2009
@@ -13,7 +13,6 @@
esl_attach_handle(&handle, client_sock, addr);
- handle.debug = 2;
printf("Connected! %d\n", handle.sock);
Modified: freeswitch/branches/gmaruzz/libs/libg722_1/src/dct4.h
==============================================================================
--- freeswitch/branches/gmaruzz/libs/libg722_1/src/dct4.h (original)
+++ freeswitch/branches/gmaruzz/libs/libg722_1/src/dct4.h Wed Jan 7 10:17:00 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/branches/gmaruzz/libs/portaudio/src/os/win/pa_win_wdmks_utils.c
==============================================================================
--- freeswitch/branches/gmaruzz/libs/portaudio/src/os/win/pa_win_wdmks_utils.c (original)
+++ freeswitch/branches/gmaruzz/libs/portaudio/src/os/win/pa_win_wdmks_utils.c Wed Jan 7 10:17:00 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/branches/gmaruzz/libs/portaudio/src/os/win/pa_x86_plain_converters.c
==============================================================================
--- freeswitch/branches/gmaruzz/libs/portaudio/src/os/win/pa_x86_plain_converters.c (original)
+++ freeswitch/branches/gmaruzz/libs/portaudio/src/os/win/pa_x86_plain_converters.c Wed Jan 7 10:17:00 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<<PA_DITHER_BITS_)-1))
+#define PA_FLOAT_DITHER_SCALE_ (1.0f / ((1<<PA_DITHER_BITS_)-1))
static const float const_float_dither_scale_ = PA_FLOAT_DITHER_SCALE_;
#define PA_DITHER_SHIFT_ ((32 - PA_DITHER_BITS_) + 1)
Modified: freeswitch/branches/gmaruzz/libs/sofia-sip/libsofia-sip-ua/su/su_kqueue_port.c
==============================================================================
--- freeswitch/branches/gmaruzz/libs/sofia-sip/libsofia-sip-ua/su/su_kqueue_port.c (original)
+++ freeswitch/branches/gmaruzz/libs/sofia-sip/libsofia-sip-ua/su/su_kqueue_port.c Wed Jan 7 10:17:00 2009
@@ -242,21 +242,21 @@
i = ser->ser_id;
flags = (wait->events & SU_WAIT_IN) ? EV_ADD : EV_ADD | EV_DISABLE;
- EV_SET(ev, wait->fd, EVFILT_READ, flags, 0, 0, (void *)i);
+ EV_SET(ev, wait->fd, EVFILT_READ, flags, 0, 0, (void *)(intptr_t)i);
if (kevent(self->sup_kqueue, ev, 1, NULL, 0, NULL) == -1) {
SU_DEBUG_0(("kevent((%u, %s, %u, %p)) failed: %s\n",
- wait->fd, "EVFILT_READ", flags, (void *)i, strerror(errno)));
+ wait->fd, "EVFILT_READ", flags, (void *)(intptr_t)i, strerror(errno)));
return -1;
}
flags = (wait->events & SU_WAIT_OUT) ? EV_ADD : EV_ADD | EV_DISABLE;
- EV_SET(ev, wait->fd, EVFILT_WRITE, flags, 0, 0, (void *)i);
+ EV_SET(ev, wait->fd, EVFILT_WRITE, flags, 0, 0, (void *)(intptr_t)i);
if (kevent(self->sup_kqueue, ev, 1, NULL, 0, NULL) == -1) {
int error = errno;
SU_DEBUG_0(("kevent((%u, %s, %u, %p)) failed: %s\n",
- wait->fd, "EVFILT_WRITE", flags, (void *)i, strerror(error)));
+ wait->fd, "EVFILT_WRITE", flags, (void *)(intptr_t)i, strerror(error)));
- EV_SET(ev, wait->fd, EVFILT_READ, EV_DELETE, 0, 0, (void *)i);
+ EV_SET(ev, wait->fd, EVFILT_READ, EV_DELETE, 0, 0, (void *)(intptr_t)i);
kevent(self->sup_kqueue, ev, 1, NULL, 0, NULL);
errno = error;
@@ -294,17 +294,17 @@
wait = ser->ser_wait;
- EV_SET(ev, wait->fd, EVFILT_READ, EV_DELETE, 0, 0, (void *)i);
+ EV_SET(ev, wait->fd, EVFILT_READ, EV_DELETE, 0, 0, (void *)(intptr_t)i);
if (kevent(self->sup_kqueue, ev, 1, NULL, 0, NULL) == -1) {
SU_DEBUG_0(("remove kevent((%u, %s, %s, %p)) failed: %s\n",
- wait->fd, "EVFILT_READ", "EV_DELETE", (void *)i,
+ wait->fd, "EVFILT_READ", "EV_DELETE", (void *)(intptr_t)i,
strerror(errno)));
}
- EV_SET(ev, wait->fd, EVFILT_WRITE, EV_DELETE, 0, 0, (void *)i);
+ EV_SET(ev, wait->fd, EVFILT_WRITE, EV_DELETE, 0, 0, (void *)(intptr_t)i);
if (kevent(self->sup_kqueue, ev, 1, NULL, 0, NULL) == -1) {
SU_DEBUG_0(("remove kevent((%u, %s, %s, %p)) failed: %s\n",
- wait->fd, "EVFILT_WRITE", "EV_DELETE", (void *)i,
+ wait->fd, "EVFILT_WRITE", "EV_DELETE", (void *)(intptr_t)i,
strerror(errno)));
}
@@ -461,21 +461,21 @@
wait->events = events;
flags = (wait->events & SU_WAIT_IN) ? EV_ADD | EV_ENABLE : EV_ADD | EV_DISABLE;
- EV_SET(ev, wait->fd, EVFILT_READ, flags, 0, 0, (void *)index);
+ EV_SET(ev, wait->fd, EVFILT_READ, flags, 0, 0, (void *)(intptr_t)index);
if (kevent(self->sup_kqueue, ev, 1, NULL, 0, NULL) == -1) {
SU_DEBUG_0(("modify kevent((%u, %s, %s, %p)) failed: %s\n",
wait->fd, "EVFILT_READ",
(events & SU_WAIT_IN) ? "EV_ENABLE" : "EV_DISABLE",
- (void *)index, strerror(errno)));
+ (void *)(intptr_t)index, strerror(errno)));
}
flags = (wait->events & SU_WAIT_OUT) ? EV_ADD | EV_ENABLE : EV_ADD | EV_DISABLE;
- EV_SET(ev, wait->fd, EVFILT_WRITE, flags, 0, 0, (void *)index);
+ EV_SET(ev, wait->fd, EVFILT_WRITE, flags, 0, 0, (void *)(intptr_t)index);
if (kevent(self->sup_kqueue, ev, 1, NULL, 0, NULL) == -1) {
SU_DEBUG_0(("modify kevent((%u, %s, %s, %p)) failed: %s\n",
wait->fd, "EVFILT_WRITE",
(events & SU_WAIT_OUT) ? "EV_ENABLE" : "EV_DISABLE",
- (void *)index, strerror(errno)));
+ (void *)(intptr_t)index, strerror(errno)));
}
return 0;
@@ -539,7 +539,7 @@
struct su_register *ser;
su_root_magic_t *magic;
- index = (int)ev[j].udata;
+ index = (int)(intptr_t)ev[j].udata;
if (index <= 0 || self->sup_max_index < index)
continue;
ser = self->sup_indices[index];
Modified: freeswitch/branches/gmaruzz/libs/win32/Dowload 32khz Sounds.2008.vcproj
==============================================================================
--- freeswitch/branches/gmaruzz/libs/win32/Dowload 32khz Sounds.2008.vcproj (original)
+++ freeswitch/branches/gmaruzz/libs/win32/Dowload 32khz Sounds.2008.vcproj Wed Jan 7 10:17:00 2009
@@ -75,7 +75,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Downloading 32khzsound."
- CommandLine="if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\32000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-en-us-callie-32000-1.0.2.tar.gz "$(ProjectDir)..\sounds"
if not exist "$(ProjectDir)..\sounds\music\32000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-32000-1.0.2.tar.gz "$(ProjectDir)..\sounds"
"
+ CommandLine="if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\32000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-en-us-callie-32000-1.0.7.tar.gz "$(ProjectDir)..\sounds"
if not exist "$(ProjectDir)..\sounds\music\32000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-32000-1.0.7.tar.gz "$(ProjectDir)..\sounds"
"
Outputs="$(ProjectDir)..\sounds\en\us\callie\voicemail\32000"
/>
</FileConfiguration>
@@ -85,7 +85,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Downloading 32khzsound."
- CommandLine="if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\32000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-en-us-callie-32000-1.0.2.tar.gz "$(ProjectDir)..\sounds"
if not exist "$(ProjectDir)..\sounds\music\32000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-32000-1.0.2.tar.gz "$(ProjectDir)..\sounds"
"
+ CommandLine="if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\32000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-en-us-callie-32000-1.0.7.tar.gz "$(ProjectDir)..\sounds"
if not exist "$(ProjectDir)..\sounds\music\32000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-32000-1.0.7.tar.gz "$(ProjectDir)..\sounds"
"
Outputs="$(ProjectDir)..\sounds\en\us\callie\voicemail\32000"
/>
</FileConfiguration>
Modified: freeswitch/branches/gmaruzz/libs/win32/Download 16khz Sounds.2008.vcproj
==============================================================================
--- freeswitch/branches/gmaruzz/libs/win32/Download 16khz Sounds.2008.vcproj (original)
+++ freeswitch/branches/gmaruzz/libs/win32/Download 16khz Sounds.2008.vcproj Wed Jan 7 10:17:00 2009
@@ -75,7 +75,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Downloading 16khzsound."
- CommandLine="if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\16000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-en-us-callie-16000-1.0.2.tar.gz "$(ProjectDir)..\sounds"
if not exist "$(ProjectDir)..\sounds\music\16000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-16000-1.0.2.tar.gz "$(ProjectDir)..\sounds"
"
+ CommandLine="if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\16000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-en-us-callie-16000-1.0.7.tar.gz "$(ProjectDir)..\sounds"
if not exist "$(ProjectDir)..\sounds\music\16000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-16000-1.0.7.tar.gz "$(ProjectDir)..\sounds"
"
Outputs="$(ProjectDir)..\sounds\en\us\callie\voicemail\16000"
/>
</FileConfiguration>
@@ -85,7 +85,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Downloading 16khzsound."
- CommandLine="if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\16000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-en-us-callie-16000-1.0.2.tar.gz "$(ProjectDir)..\sounds"
if not exist "$(ProjectDir)..\sounds\music\16000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-16000-1.0.2.tar.gz "$(ProjectDir)..\sounds"
"
+ CommandLine="if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\16000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-en-us-callie-16000-1.0.7.tar.gz "$(ProjectDir)..\sounds"
if not exist "$(ProjectDir)..\sounds\music\16000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-16000-1.0.7.tar.gz "$(ProjectDir)..\sounds"
"
Outputs="$(ProjectDir)..\sounds\en\us\callie\voicemail\16000"
/>
</FileConfiguration>
Modified: freeswitch/branches/gmaruzz/libs/win32/Download 8khz Sounds.2008.vcproj
==============================================================================
--- freeswitch/branches/gmaruzz/libs/win32/Download 8khz Sounds.2008.vcproj (original)
+++ freeswitch/branches/gmaruzz/libs/win32/Download 8khz Sounds.2008.vcproj Wed Jan 7 10:17:00 2009
@@ -75,7 +75,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Downloading 8khzsound."
- CommandLine="if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\8000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-en-us-callie-8000-1.0.2.tar.gz "$(ProjectDir)..\sounds"
if not exist "$(ProjectDir)..\sounds\music\8000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-8000-1.0.2.tar.gz "$(ProjectDir)..\sounds"
"
+ CommandLine="if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\8000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-en-us-callie-8000-1.0.7.tar.gz "$(ProjectDir)..\sounds"
if not exist "$(ProjectDir)..\sounds\music\8000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-8000-1.0.7.tar.gz "$(ProjectDir)..\sounds"
"
Outputs="$(ProjectDir)..\sounds\en\us\callie\voicemail\8000"
/>
</FileConfiguration>
@@ -85,7 +85,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Downloading 8khzsound."
- CommandLine="if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\8000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-en-us-callie-8000-1.0.2.tar.gz "$(ProjectDir)..\sounds"
if not exist "$(ProjectDir)..\sounds\music\8000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-8000-1.0.2.tar.gz "$(ProjectDir)..\sounds"
"
+ CommandLine="if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\8000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-en-us-callie-8000-1.0.7.tar.gz "$(ProjectDir)..\sounds"
if not exist "$(ProjectDir)..\sounds\music\8000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-8000-1.0.7.tar.gz "$(ProjectDir)..\sounds"
"
Outputs="$(ProjectDir)..\sounds\en\us\callie\voicemail\8000"
/>
</FileConfiguration>
Modified: freeswitch/branches/gmaruzz/libs/win32/flite/flite.2008.vcproj
==============================================================================
--- freeswitch/branches/gmaruzz/libs/win32/flite/flite.2008.vcproj (original)
+++ freeswitch/branches/gmaruzz/libs/win32/flite/flite.2008.vcproj Wed Jan 7 10:17:00 2009
@@ -45,7 +45,7 @@
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
- WarningLevel="3"
+ WarningLevel="0"
DebugInformationFormat="4"
/>
<Tool
@@ -108,7 +108,7 @@
MinimalRebuild="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
- WarningLevel="3"
+ WarningLevel="0"
DebugInformationFormat="3"
/>
<Tool
@@ -127,9 +127,6 @@
Name="VCALinkTool"
/>
<Tool
- Name="VCManifestTool"
- />
- <Tool
Name="VCXDCMakeTool"
/>
<Tool
@@ -139,9 +136,6 @@
Name="VCFxCopTool"
/>
<Tool
- Name="VCAppVerifierTool"
- />
- <Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
@@ -721,15 +715,15 @@
>
</File>
<File
- RelativePath="..\..\flite-1.3.99\lang\cmu_us_kal\voxdefs.h"
+ RelativePath="..\..\flite-1.3.99\lang\cmu_us_kal16\voxdefs.h"
>
</File>
<File
- RelativePath="..\..\flite-1.3.99\lang\cmu_us_kal16\voxdefs.h"
+ RelativePath="..\..\flite-1.3.99\lang\cmu_time_awb\voxdefs.h"
>
</File>
<File
- RelativePath="..\..\flite-1.3.99\lang\cmu_time_awb\voxdefs.h"
+ RelativePath="..\..\flite-1.3.99\lang\cmu_us_kal\voxdefs.h"
>
</File>
</Filter>
@@ -742,4 +736,4 @@
</Files>
<Globals>
</Globals>
-</VisualStudioProject>
\ No newline at end of file
+</VisualStudioProject>
Modified: freeswitch/branches/gmaruzz/libs/win32/pocketsphinx/pocketsphinx.2008.vcproj
==============================================================================
--- freeswitch/branches/gmaruzz/libs/win32/pocketsphinx/pocketsphinx.2008.vcproj (original)
+++ freeswitch/branches/gmaruzz/libs/win32/pocketsphinx/pocketsphinx.2008.vcproj Wed Jan 7 10:17:00 2009
@@ -59,7 +59,7 @@
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
- WarningLevel="3"
+ WarningLevel="0"
SuppressStartupBanner="true"
/>
<Tool
@@ -145,7 +145,7 @@
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
- WarningLevel="3"
+ WarningLevel="0"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
@@ -278,11 +278,11 @@
>
</File>
<File
- RelativePath="..\..\pocketsphinx-0.5.99\include\pocketsphinx.h"
+ RelativePath="..\..\..\include\pocketsphinx.h"
>
</File>
<File
- RelativePath="..\..\..\include\pocketsphinx.h"
+ RelativePath="..\..\pocketsphinx-0.5.99\include\pocketsphinx.h"
>
</File>
<File
Modified: freeswitch/branches/gmaruzz/libs/win32/sphinxbase/sphinxbase.2008.vcproj
==============================================================================
--- freeswitch/branches/gmaruzz/libs/win32/sphinxbase/sphinxbase.2008.vcproj (original)
+++ freeswitch/branches/gmaruzz/libs/win32/sphinxbase/sphinxbase.2008.vcproj Wed Jan 7 10:17:00 2009
@@ -59,7 +59,7 @@
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
- WarningLevel="3"
+ WarningLevel="0"
SuppressStartupBanner="true"
/>
<Tool
@@ -146,7 +146,7 @@
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
- WarningLevel="3"
+ WarningLevel="0"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
@@ -474,7 +474,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\fe\fe_interface.c"
@@ -497,8 +496,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\fe\fe_sigproc.c"
@@ -521,7 +518,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\fe\fe_warp.c"
@@ -544,7 +540,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\fe\fe_warp_affine.c"
@@ -567,7 +562,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\fe\fe_warp_inverse_linear.c"
@@ -590,7 +584,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\fe\fe_warp_piecewise_linear.c"
@@ -613,7 +606,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\feat\feat.c"
@@ -636,7 +628,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\util\filename.c"
@@ -659,7 +650,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\fe\fixlog.c"
@@ -682,7 +672,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\lm\fsg_model.c"
@@ -709,7 +698,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\util\glist.c"
@@ -732,7 +720,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\util\hash_table.c"
@@ -755,7 +742,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\util\heap.c"
@@ -778,7 +764,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\util\info.c"
@@ -801,7 +786,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\lm\jsgf.c"
@@ -836,7 +820,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\util\listelem_alloc.c"
@@ -871,7 +854,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\util\mmio.c"
@@ -918,7 +900,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxad\play_win32.c"
@@ -941,7 +922,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\util\profile.c"
@@ -964,7 +944,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxad\rec_win32.c"
@@ -987,7 +966,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\util\sbthread.c"
@@ -1014,7 +992,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\util\slapack_lite.c"
@@ -1037,7 +1014,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\util\strfuncs.c"
@@ -1060,7 +1036,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\util\unlimit.c"
@@ -1083,7 +1058,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
-
</File>
<File
RelativePath="..\..\sphinxbase-0.4.99\src\libsphinxbase\fe\yin.c"
Modified: freeswitch/branches/gmaruzz/src/include/switch_channel.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/include/switch_channel.h (original)
+++ freeswitch/branches/gmaruzz/src/include/switch_channel.h Wed Jan 7 10:17:00 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/gmaruzz/src/include/switch_dso.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/include/switch_dso.h (original)
+++ freeswitch/branches/gmaruzz/src/include/switch_dso.h Wed Jan 7 10:17:00 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/gmaruzz/src/include/switch_ivr.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/include/switch_ivr.h (original)
+++ freeswitch/branches/gmaruzz/src/include/switch_ivr.h Wed Jan 7 10:17:00 2009
@@ -780,7 +780,7 @@
SWITCH_DECLARE(switch_status_t) switch_ivr_bind_dtmf_meta_session(switch_core_session_t *session, uint32_t key,
switch_bind_flag_t bind_flags, const char *app);
- SWITCH_DECLARE(switch_status_t) switch_ivr_unbind_dtmf_meta_session(switch_core_session_t *session);
+ SWITCH_DECLARE(switch_status_t) switch_ivr_unbind_dtmf_meta_session(switch_core_session_t *session, uint32_t key);
SWITCH_DECLARE(switch_status_t) switch_ivr_soft_hold(switch_core_session_t *session, const char *unhold_key, const char *moh_a, const char *moh_b);
SWITCH_DECLARE(switch_status_t) switch_ivr_say(switch_core_session_t *session, const char *tosay, const char *module_name, const char *say_type,
const char *say_method, switch_input_args_t *args);
Modified: freeswitch/branches/gmaruzz/src/include/switch_rtp.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/include/switch_rtp.h (original)
+++ freeswitch/branches/gmaruzz/src/include/switch_rtp.h Wed Jan 7 10:17:00 2009
@@ -431,6 +431,8 @@
SWITCH_DECLARE(switch_status_t) switch_rtp_activate_stun_ping(switch_rtp_t *rtp_session, const char *stun_ip, switch_port_t stun_port,
uint32_t packet_count, switch_bool_t funny);
+SWITCH_DECLARE(void) switch_rtp_intentional_bugs(switch_rtp_t *rtp_session, switch_rtp_bug_flag_t bugs);
+
/*!
\}
*/
Modified: freeswitch/branches/gmaruzz/src/include/switch_types.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/include/switch_types.h (original)
+++ freeswitch/branches/gmaruzz/src/include/switch_types.h Wed Jan 7 10:17:00 2009
@@ -179,7 +179,8 @@
SBF_DIAL_BLEG = (1 << 2),
SBF_EXEC_BLEG = (1 << 3),
SBF_EXEC_OPPOSITE = (1 << 4),
- SBF_EXEC_SAME = (1 << 5)
+ SBF_EXEC_SAME = (1 << 5),
+ SBF_ONCE = (1 << 6)
} switch_bind_flag_enum_t;
typedef uint32_t switch_bind_flag_t;
@@ -460,6 +461,38 @@
} switch_rtp_flag_enum_t;
typedef uint32_t switch_rtp_flag_t;
+typedef enum {
+ RTP_BUG_NONE = 0, /* won't be using this one much ;) */
+
+ RTP_BUG_CISCO_SKIP_MARK_BIT_2833 = (1 << 0),
+ /* Some Cisco devices get mad when you send the mark bit on new 2833 because it makes
+ them flush their jitterbuffer and the dtmf along with it.
+
+ This flag will disable the sending of the mark bit on the first DTMF packet.
+ */
+
+
+ RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833 = (1 << 1)
+ /*
+ Sonus wrongly expects that, when sending a multi-packet 2833 DTMF event, The sender
+ should increment the RTP timestamp in each packet when, in reality, the sender should
+ send the same exact timestamp and increment the duration field in the 2833 payload.
+ This allows a reconstruction of the duration if any of the packets are lost.
+
+ final_duration - initial_timestamp = total_samples
+
+ However, if the duration value exceeds the space allocated (16 bits), The sender should increment
+ the timestamp one unit and reset the duration to 0.
+
+ Always sending a duration of 0 with a new timestamp should be tolerated but is rarely intentional
+ and is mistakenly done by many devices.
+ The issue is that the Sonus expects everyone to do it this way instead of tolerating either way.
+ Sonus will actually ignore every packet with the same timestamp before concluding if it's DTMF.
+
+ This flag will cause each packet to have a new timestamp.
+ */
+
+} switch_rtp_bug_flag_t;
#ifdef _MSC_VER
#pragma pack(push, r1, 1)
@@ -574,9 +607,23 @@
SWITCH_MESSAGE_INDICATE_DISPLAY,
SWITCH_MESSAGE_INDICATE_TRANSCODING_NECESSARY,
SWITCH_MESSAGE_INDICATE_AUDIO_SYNC,
+ SWITCH_MESSAGE_INDICATE_REQUEST_IMAGE_MEDIA,
SWITCH_MESSAGE_INVALID
} switch_core_session_message_types_t;
+typedef struct {
+ uint32_t T38MaxBitRate;
+ switch_bool_t T38FaxFillBitRemoval;
+ switch_bool_t T38FaxTranscodingMMR;
+ switch_bool_t T38FaxTranscodingJBIG;
+ const char *T38FaxRateManagement;
+ uint32_t T38FaxMaxBuffer;
+ uint32_t T38FaxMaxDatagram;
+ const char *T38FaxUdpEC;
+ const char *T38VendorInfo;
+ const char *ip;
+ uint32_t port;
+} switch_t38_options_t;
/*!
\enum switch_stack_t
Modified: freeswitch/branches/gmaruzz/src/include/switch_xml.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/include/switch_xml.h (original)
+++ freeswitch/branches/gmaruzz/src/include/switch_xml.h Wed Jan 7 10:17:00 2009
@@ -142,6 +142,7 @@
///\param value the value
///\return an xml node or NULL
SWITCH_DECLARE(switch_xml_t) switch_xml_find_child(switch_xml_t node, const char *childname, const char *attrname, const char *value);
+SWITCH_DECLARE(switch_xml_t) switch_xml_find_child_multi(switch_xml_t node, const char *childname, ...);
///\brief returns the next tag of the same name in the same section and depth or NULL
///\ if not found
@@ -334,11 +335,22 @@
switch_event_t *params);
SWITCH_DECLARE(switch_status_t) switch_xml_locate_domain(const char *domain_name, switch_event_t *params, switch_xml_t *root, switch_xml_t *domain);
+
+SWITCH_DECLARE(switch_status_t) switch_xml_locate_group(const char *group_name,
+ const char *domain_name,
+ switch_xml_t *root,
+ switch_xml_t *domain,
+ switch_xml_t *group,
+ switch_event_t *params);
+
SWITCH_DECLARE(switch_status_t) switch_xml_locate_user(const char *key,
const char *user_name,
const char *domain_name,
const char *ip,
- switch_xml_t *root, switch_xml_t *domain, switch_xml_t *user, switch_event_t *params);
+ switch_xml_t *root, switch_xml_t *domain, switch_xml_t *user, switch_xml_t *ingroup,
+ switch_event_t *params);
+
+SWITCH_DECLARE(switch_status_t) switch_xml_locate_user_in_domain(const char *user_name, switch_xml_t domain, switch_xml_t *user, switch_xml_t *ingroup);
///\brief open a config in the core registry
///\param file_path the name of the config section e.g. modules.conf
Modified: freeswitch/branches/gmaruzz/src/mod/applications/mod_commands/mod_commands.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/applications/mod_commands/mod_commands.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/applications/mod_commands/mod_commands.c Wed Jan 7 10:17:00 2009
@@ -77,6 +77,245 @@
return SWITCH_STATUS_SUCCESS;
}
+SWITCH_STANDARD_API(group_call_function)
+{
+ char *domain;
+ char *group_name = NULL;
+ char *flags;
+ int ok = 0;
+ switch_channel_t *channel = NULL;
+ char *fp = NULL;
+ const char *call_delim = ",";
+
+ if (switch_strlen_zero(cmd)) {
+ goto end;
+ }
+
+ if (session) {
+ channel = switch_core_session_get_channel(session);
+ }
+
+ group_name = strdup(cmd);
+ switch_assert(group_name);
+
+ if ((flags = strchr(group_name, '+'))) {
+ *flags++ = '\0';
+ for (fp = flags; fp && *fp; fp++) {
+ switch(*fp) {
+ case 'F':
+ call_delim = "|";
+ break;
+ case 'A':
+ call_delim = ",";
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ domain = strchr(group_name, '@');
+
+ if (domain) {
+ *domain++ = '\0';
+ } else {
+ domain = switch_core_get_variable("domain");
+ }
+
+ if (!switch_strlen_zero(domain)) {
+ switch_xml_t xml, x_domain, x_group;
+ switch_event_t *params;
+ switch_stream_handle_t dstream = { 0 };
+
+ SWITCH_STANDARD_STREAM(dstream);
+
+ switch_event_create(¶ms, SWITCH_EVENT_REQUEST_PARAMS);
+ switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "group", group_name);
+ switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "domain", domain);
+ switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "action", "group_call");
+
+ if (switch_xml_locate_group(group_name, domain, &xml, &x_domain, &x_group, params) == SWITCH_STATUS_SUCCESS) {
+ switch_xml_t x_user, x_users, x_param, x_params;
+
+ if ((x_users = switch_xml_child(x_group, "users"))) {
+ ok++;
+
+ for(x_user = switch_xml_child(x_users, "user"); x_user; x_user = x_user->next) {
+ const char *id = switch_xml_attr_soft(x_user, "id");
+ const char *dest = NULL;
+ char *d_dest = NULL;
+
+ 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(x_param, "name");
+ const char *val = switch_xml_attr(x_param, "value");
+
+ if (!strcasecmp(var, "group-dial-string")) {
+ dest = val;
+ break;
+ }
+
+ if (!strcasecmp(var, "dial-string")) {
+ dest = val;
+ }
+ }
+ }
+
+ if ((x_params = switch_xml_child(x_group, "params"))) {
+ for (x_param = switch_xml_child(x_params, "param"); x_param; x_param = x_param->next) {
+ const char *var = switch_xml_attr(x_param, "name");
+ const char *val = switch_xml_attr(x_param, "value");
+
+ if (!strcasecmp(var, "group-dial-string")) {
+ dest = val;
+ break;
+ }
+
+ if (!strcasecmp(var, "dial-string")) {
+ dest = val;
+ }
+ }
+ }
+
+ if ((x_params = switch_xml_child(x_user, "params"))) {
+ for (x_param = switch_xml_child(x_params, "param"); x_param; x_param = x_param->next) {
+ const char *var = switch_xml_attr(x_param, "name");
+ const char *val = switch_xml_attr(x_param, "value");
+
+ if (!strcasecmp(var, "group-dial-string")) {
+ dest = val;
+ break;
+ }
+
+ if (!strcasecmp(var, "dial-string")) {
+ dest = val;
+ }
+ }
+ }
+
+ if (dest) {
+ if (channel) {
+ switch_channel_set_variable(channel, "dialed_group", group_name);
+ switch_channel_set_variable(channel, "dialed_user", id);
+ switch_channel_set_variable(channel, "dialed_domain", domain);
+ d_dest = switch_channel_expand_variables(channel, dest);
+ } else {
+ switch_event_del_header(params, "dialed_user");
+ switch_event_del_header(params, "dialed_group");
+ switch_event_del_header(params, "dialed_domain");
+ switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "dialed_user", id);
+ switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "dialed_group", group_name);
+ switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "dialed_domain", domain);
+ d_dest = switch_event_expand_headers(params, dest);
+ }
+ } else {
+ d_dest = switch_mprintf("user/%s@%s", id, domain);
+ }
+
+ if (d_dest) {
+ if (!switch_stristr("error/", d_dest)) {
+ dstream.write_function(&dstream, "%s%s", d_dest, call_delim);
+ }
+
+ if (d_dest != dest) {
+ free(d_dest);
+ }
+ }
+ }
+
+ if (ok && dstream.data) {
+ char *data = (char *) dstream.data;
+ char c = end_of(data);
+ char *p;
+
+ if (c == ',' || c == '|') {
+ end_of(data) = '\0';
+ }
+
+ for (p = data; p && *p; p++) {
+ if (*p == '{') {
+ *p = '[';
+ } else if (*p == '}') {
+ *p = ']';
+ }
+ }
+
+
+ stream->write_function(stream, "%s", data);
+ free(dstream.data);
+ } else {
+ ok = 0;
+ }
+
+ }
+ switch_xml_free(xml);
+ }
+ switch_event_destroy(¶ms);
+ }
+
+ end:
+
+ switch_safe_free(group_name);
+
+ if (!ok) {
+ stream->write_function(stream, "error/NO_ROUTE_DESTINATION");
+ }
+
+ return SWITCH_STATUS_SUCCESS;
+}
+
+
+SWITCH_STANDARD_API(in_group_function)
+{
+ switch_xml_t x_domain, xml = NULL, x_user = NULL, x_group;
+ int argc;
+ char *mydata = NULL, *argv[2], *user, *domain;
+ char delim = ',';
+ switch_event_t *params = NULL;
+ const char *rval = "false";
+ char *group;
+
+ if (switch_strlen_zero(cmd) || !(mydata = strdup(cmd))) {
+ goto end;
+ }
+
+ if ((argc = switch_separate_string(mydata, delim, argv, (sizeof(argv) / sizeof(argv[0])))) < 2) {
+ goto end;
+ }
+
+ user = argv[0];
+ group = argv[1];
+
+ if ((domain = strchr(user, '@'))) {
+ *domain++ = '\0';
+ } else {
+ domain = switch_core_get_variable("domain");
+ }
+
+ switch_event_create(¶ms, SWITCH_EVENT_REQUEST_PARAMS);
+ switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "user", user);
+ switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "domain", domain);
+
+ if (switch_xml_locate_group(group, domain, &xml, &x_domain, &x_group, params) == SWITCH_STATUS_SUCCESS) {
+ switch_xml_t x_users;
+ if ((x_users = switch_xml_child(x_group, "users"))) {
+ if ((x_user = switch_xml_find_child(x_users, "user", "id", user))) {
+ rval = "true";
+ }
+ }
+ }
+
+ end:
+
+ stream->write_function(stream, "%s", rval);
+
+ switch_xml_free(xml);
+ free(mydata);
+ switch_event_destroy(¶ms);
+
+ return SWITCH_STATUS_SUCCESS;
+}
+
SWITCH_STANDARD_API(user_data_function)
{
switch_xml_t x_domain, xml = NULL, x_user = NULL, x_param, x_params;
@@ -111,7 +350,7 @@
switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "type", type);
switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "key", key);
- if (key && type && switch_xml_locate_user("id", user, domain, NULL, &xml, &x_domain, &x_user, params) == SWITCH_STATUS_SUCCESS) {
+ if (key && type && switch_xml_locate_user("id", user, domain, NULL, &xml, &x_domain, &x_user, NULL, params) == SWITCH_STATUS_SUCCESS) {
if (!strcmp(type, "attr")) {
const char *attr = switch_xml_attr_soft(x_user, key);
stream->write_function(stream, "%s", attr);
@@ -201,7 +440,7 @@
goto end;
}
- if (switch_xml_locate_user(key, user, domain, NULL, &xml, &x_domain, &x_user, NULL) != SWITCH_STATUS_SUCCESS) {
+ if (switch_xml_locate_user(key, user, domain, NULL, &xml, &x_domain, &x_user, NULL, NULL) != SWITCH_STATUS_SUCCESS) {
err = "can't find user";
goto end;
}
@@ -2940,6 +3179,9 @@
switch_api_interface_t *commands_api_interface;
*module_interface = switch_loadable_module_create_module_interface(pool, modname);
+ SWITCH_ADD_API(commands_api_interface, "group_call", "Generate a dial string to call a group", group_call_function, "<group>[@<domain>]");
+ SWITCH_ADD_API(commands_api_interface, "in_group", "determine if a user is in a group", in_group_function, "<user>[@<domain>] <group_name>");
+
SWITCH_ADD_API(commands_api_interface, "uuid_flush_dtmf", "Flush dtmf on a given uuid", uuid_flush_dtmf_function, "<uuid>");
SWITCH_ADD_API(commands_api_interface, "md5", "md5", md5_function, "<data>");
SWITCH_ADD_API(commands_api_interface, "hupall", "hupall", hupall_api_function, "<cause> [<var> <value>]");
Modified: freeswitch/branches/gmaruzz/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/applications/mod_conference/mod_conference.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/applications/mod_conference/mod_conference.c Wed Jan 7 10:17:00 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);
@@ -1543,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);
@@ -1790,8 +1806,9 @@
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);
}
@@ -1806,7 +1823,20 @@
}
for (cp = call_list; cp; cp = cp->next) {
- conference_outcall_bg(member->conference, NULL, NULL, cp->string, to, switch_str_nil(flags), cid_name, cid_num);
+ 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_safe_free(cpstr);
}
}
/* Fair WARNING, If you expect the caller to hear anything or for digit handling to be processed, */
@@ -2014,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 {
@@ -3024,6 +3063,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;
@@ -3564,6 +3737,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, "<confname> list [delim <string>]"},
+ {"xml_list", (void_fn_t) &conf_api_sub_xml_list, CONF_API_SUB_ARGS_SPLIT, "<confname> xml_list"},
{"energy", (void_fn_t) &conf_api_sub_energy, CONF_API_SUB_MEMBER_TARGET,
"<confname> energy <member_id|all|last> [<newval>]"},
{"volume_in", (void_fn_t) &conf_api_sub_volume_in, CONF_API_SUB_MEMBER_TARGET,
@@ -3764,6 +3938,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) {
@@ -3881,7 +4057,7 @@
goto done;
}
/* add them to the conference */
- if (flags && !strcasecmp(flags, "none")) {
+ if (flags && strcasecmp(flags, "none")) {
switch_snprintf(appdata, sizeof(appdata), "%s+flags{%s}", conference_name, flags);
switch_caller_extension_add_application(peer_session, extension, (char *) global_app_name, appdata);
} else {
@@ -4059,15 +4235,20 @@
if (flags) {
if (strstr(flags, "mute")) {
*f &= ~MFLAG_CAN_SPEAK;
- } else if (strstr(flags, "deaf")) {
+ }
+
+ if (strstr(flags, "deaf")) {
*f &= ~MFLAG_CAN_HEAR;
- } else if (strstr(flags, "waste")) {
+ }
+
+ if (strstr(flags, "waste")) {
*f |= MFLAG_WASTE_BANDWIDTH;
- } else if (strstr(flags, "endconf")) {
+ }
+
+ if (strstr(flags, "endconf")) {
*f |= MFLAG_ENDCONF;
}
}
-
}
static void clear_eflags(char *events, uint32_t *f)
@@ -4862,6 +5043,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 */
@@ -4981,6 +5163,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;
}
@@ -5140,6 +5324,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/gmaruzz/src/mod/applications/mod_dptools/mod_dptools.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/applications/mod_dptools/mod_dptools.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/applications/mod_dptools/mod_dptools.c Wed Jan 7 10:17:00 2009
@@ -148,7 +148,21 @@
}
}
-#define BIND_SYNTAX "<key> [a|b|ab] [a|b|o|s] <app>"
+#define UNBIND_SYNTAX "[<key>]"
+SWITCH_STANDARD_APP(dtmf_unbind_function)
+{
+ char *key = (char *) data;
+ int kval = 0;
+
+ if (key) {
+ kval = atoi(key);
+ }
+
+ switch_ivr_unbind_dtmf_meta_session(session, kval);
+
+}
+
+#define BIND_SYNTAX "<key> [a|b|ab] [a|b|o|s|1] <app>"
SWITCH_STANDARD_APP(dtmf_bind_function)
{
char *argv[4] = { 0 };
@@ -208,6 +222,10 @@
}
}
+ if (strchr(argv[2], '1')) {
+ bind_flags |= SBF_ONCE;
+ }
+
if (switch_ivr_bind_dtmf_meta_session(session, kval, bind_flags, argv[3]) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Bind Error!\n");
}
@@ -2002,6 +2020,108 @@
return cause;
}
+
+/* fake chan_group */
+switch_endpoint_interface_t *group_endpoint_interface;
+static switch_call_cause_t group_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_io_routines_t group_io_routines = {
+ /*.outgoing_channel */ group_outgoing_channel
+};
+
+static switch_call_cause_t group_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)
+{
+ char *group;
+ 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;
+ char *cid_num_override = NULL;
+ const char *var;
+ unsigned int timelimit = 60;
+ char *domain = NULL;
+ switch_channel_t *new_channel = NULL;
+
+ group = strdup(outbound_profile->destination_number);
+
+ if (!group) goto done;
+
+ if ((domain = strchr(group, '@'))) {
+ *domain++ = '\0';
+ } else {
+ domain = switch_core_get_variable("domain");
+ }
+
+ if (!domain) {
+ goto done;
+ }
+
+ template = switch_mprintf("${group_call(%s@%s)}", group, domain);
+
+ if (session) {
+ switch_channel_t *channel = switch_core_session_get_channel(session);
+ dest = switch_channel_expand_variables(channel, template);
+ if ((var = switch_channel_get_variable(channel, SWITCH_CALL_TIMEOUT_VARIABLE))) {
+ timelimit = atoi(var);
+ }
+ } else if (var_event) {
+ dest = switch_event_expand_headers(var_event, template);
+ }
+ if (!dest) {
+ goto done;
+ }
+
+ if (var_event) {
+ cid_name_override = switch_event_get_header(var_event, "origination_caller_id_name");
+ cid_num_override = switch_event_get_header(var_event, "origination_caller_id_number");
+ if ((var = switch_event_get_header(var_event, SWITCH_CALL_TIMEOUT_VARIABLE))) {
+ timelimit = atoi(var);
+ }
+ }
+
+ if ((flags & SOF_FORKED_DIAL)) {
+ myflags |= SOF_NOBLOCK;
+ }
+
+
+ if (switch_ivr_originate(session, new_session, &cause, dest, timelimit, NULL,
+ cid_name_override, cid_num_override, NULL, var_event, myflags) == SWITCH_STATUS_SUCCESS) {
+ const char *context;
+ switch_caller_profile_t *cp;
+
+ new_channel = switch_core_session_get_channel(*new_session);
+
+ if ((context = switch_channel_get_variable(new_channel, "group_context"))) {
+ if ((cp = switch_channel_get_caller_profile(new_channel))) {
+ cp->context = switch_core_strdup(cp->pool, context);
+ }
+ }
+ switch_core_session_rwunlock(*new_session);
+ }
+
+
+ done:
+
+ if (dest && dest != template) {
+ switch_safe_free(dest);
+ }
+
+ switch_safe_free(template);
+
+ if (cause == SWITCH_CAUSE_NONE) {
+ cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
+ }
+
+ return cause;
+}
+
+
+
/* fake chan_user */
switch_endpoint_interface_t *user_endpoint_interface;
static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session,
@@ -2017,7 +2137,7 @@
switch_caller_profile_t *outbound_profile,
switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags)
{
- switch_xml_t x_domain = NULL, xml = NULL, x_user = NULL, x_param, x_params;
+ switch_xml_t x_domain = NULL, xml = NULL, x_user = NULL, x_group = NULL, x_param, x_params;
char *user = NULL, *domain = NULL;
const char *dest = NULL;
static switch_call_cause_t cause = SWITCH_CAUSE_NONE;
@@ -2030,20 +2150,24 @@
user = strdup(outbound_profile->destination_number);
- if (!user)
- goto done;
+ if (!user) goto done;
- if (!(domain = strchr(user, '@'))) {
+ if ((domain = strchr(user, '@'))) {
+ *domain++ = '\0';
+ } else {
+ domain = switch_core_get_variable("domain");
+ }
+
+ if (!domain) {
goto done;
}
-
- *domain++ = '\0';
+
switch_event_create(¶ms, SWITCH_EVENT_REQUEST_PARAMS);
switch_assert(params);
switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "as_channel", "true");
- if (switch_xml_locate_user("id", user, domain, NULL, &xml, &x_domain, &x_user, params) != SWITCH_STATUS_SUCCESS) {
+ if (switch_xml_locate_user("id", user, domain, NULL, &xml, &x_domain, &x_user, &x_group, params) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Can't find user [%s@%s]\n", user, domain);
cause = SWITCH_CAUSE_SUBSCRIBER_ABSENT;
goto done;
@@ -2061,6 +2185,18 @@
}
}
+ if ((x_params = switch_xml_child(x_group, "params"))) {
+ for (x_param = switch_xml_child(x_params, "param"); x_param; x_param = x_param->next) {
+ const char *var = switch_xml_attr(x_param, "name");
+ const char *val = switch_xml_attr(x_param, "value");
+
+ if (!strcasecmp(var, "dial-string")) {
+ dest = val;
+ break;
+ }
+ }
+ }
+
if ((x_params = switch_xml_child(x_user, "params"))) {
for (x_param = switch_xml_child(x_params, "param"); x_param; x_param = x_param->next) {
const char *var = switch_xml_attr(x_param, "name");
@@ -2107,6 +2243,9 @@
switch_event_dup(&event, var_event);
switch_event_del_header(event, "dialer_user");
switch_event_del_header(event, "dialer_domain");
+ if ((var = switch_event_get_header(var_event, SWITCH_CALL_TIMEOUT_VARIABLE))) {
+ timelimit = atoi(var);
+ }
} else {
switch_event_create(&event, SWITCH_EVENT_REQUEST_PARAMS);
switch_assert(event);
@@ -2318,6 +2457,10 @@
error_endpoint_interface->interface_name = "error";
error_endpoint_interface->io_routines = &error_io_routines;
+ group_endpoint_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE);
+ group_endpoint_interface->interface_name = "group";
+ group_endpoint_interface->io_routines = &group_io_routines;
+
user_endpoint_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE);
user_endpoint_interface->interface_name = "user";
user_endpoint_interface->io_routines = &user_io_routines;
@@ -2389,6 +2532,8 @@
SAF_NONE);
SWITCH_ADD_APP(app_interface, "bind_meta_app", "Bind a key to an application", "Bind a key to an application", dtmf_bind_function, BIND_SYNTAX,
SAF_SUPPORT_NOMEDIA);
+ SWITCH_ADD_APP(app_interface, "unbind_meta_app", "Unbind a key from an application", "Unbind a key from an application", dtmf_unbind_function,
+ UNBIND_SYNTAX, SAF_SUPPORT_NOMEDIA);
SWITCH_ADD_APP(app_interface, "intercept", "intercept", "intercept", intercept_function, INTERCEPT_SYNTAX, SAF_NONE);
SWITCH_ADD_APP(app_interface, "eavesdrop", "eavesdrop on a uuid", "eavesdrop on a uuid", eavesdrop_function, eavesdrop_SYNTAX, SAF_NONE);
SWITCH_ADD_APP(app_interface, "three_way", "three way call with a uuid", "three way call with a uuid", three_way_function, threeway_SYNTAX, SAF_NONE);
Modified: freeswitch/branches/gmaruzz/src/mod/applications/mod_limit/mod_limit.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/applications/mod_limit/mod_limit.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/applications/mod_limit/mod_limit.c Wed Jan 7 10:17:00 2009
@@ -285,6 +285,8 @@
limit_execute_sql(sql, globals.mutex);
switch_safe_free(sql);
switch_core_event_hook_remove_state_change(session, db_state_handler);
+ /* Remove limit_realm variable so we register another hook if limit is called again */
+ switch_channel_set_variable(channel, "limit_realm", "");
}
return SWITCH_STATUS_SUCCESS;
}
@@ -298,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))
@@ -317,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;
Modified: freeswitch/branches/gmaruzz/src/mod/applications/mod_voicemail/mod_voicemail.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/applications/mod_voicemail/mod_voicemail.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/applications/mod_voicemail/mod_voicemail.c Wed Jan 7 10:17:00 2009
@@ -1888,7 +1888,7 @@
switch_channel_event_set_data(channel, params);
if (switch_xml_locate_user("id", myid, domain_name, switch_channel_get_variable(channel, "network_addr"),
- &xx_domain_root, &xx_domain, &xx_user, params) == SWITCH_STATUS_SUCCESS) {
+ &xx_domain_root, &xx_domain, &xx_user, NULL, params) == SWITCH_STATUS_SUCCESS) {
switch_xml_free(xx_domain_root);
}
@@ -1981,7 +1981,7 @@
if (switch_xml_locate_user("id", myid, domain_name, switch_channel_get_variable(channel, "network_addr"),
- &x_domain_root, &x_domain, &x_user, params) != SWITCH_STATUS_SUCCESS) {
+ &x_domain_root, &x_domain, &x_user, NULL, params) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Can't find user [%s@%s]\n", myid, domain_name);
ok = 0;
}
@@ -2261,7 +2261,9 @@
}
/*switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Send mail is %d, var is %s\n", send_mail, var);*/
}
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Send mail is %d and that's my final answer\n", send_mail);
+
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Deliver VM to %s@%s\n", myid, domain_name);
+
if (!switch_strlen_zero(vm_storage_dir)) {
dir_path = switch_mprintf("%s%s%s", vm_storage_dir, SWITCH_PATH_SEPARATOR, myid);
} else if (!switch_strlen_zero(profile->storage_dir)) {
@@ -2507,7 +2509,7 @@
vm_profile_t *profile;
char *dup = NULL, *user = NULL, *domain = NULL;
switch_status_t status = SWITCH_STATUS_SUCCESS;
- int istag = 0, isall = 0;
+ int isgroup = 0, isall = 0;
int argc = 0;
char *argv[4];
char *box, *path, *cid_num, *cid_name;
@@ -2540,9 +2542,9 @@
domain = user;
}
- if (switch_stristr("tag=", user)) {
- user += 4;
- istag++;
+ if (switch_stristr("group=", user)) {
+ user += 6;
+ isgroup++;
} else if (user == domain) {
isall++;
}
@@ -2567,6 +2569,17 @@
switch_event_create(&my_params, SWITCH_EVENT_REQUEST_PARAMS);
switch_assert(my_params);
+
+ if (isgroup) {
+ switch_event_add_header_string(my_params, SWITCH_STACK_BOTTOM, "group", user);
+ } else {
+ if (isall) {
+ switch_event_add_header_string(my_params, SWITCH_STACK_BOTTOM, "user", "_all_");
+ } else {
+ switch_event_add_header_string(my_params, SWITCH_STACK_BOTTOM, "user", user);
+ }
+ }
+
switch_event_add_header_string(my_params, SWITCH_STACK_BOTTOM, "domain", domain);
switch_event_add_header_string(my_params, SWITCH_STACK_BOTTOM, "purpose", "publish-vm");
@@ -2581,24 +2594,66 @@
switch_core_new_memory_pool(&pool);
- if (!isall && !istag) {
- if ((ut = switch_xml_find_child(x_domain, "user", "id", user))) {
+
+ if (isgroup) {
+ switch_xml_t group = NULL, groups = NULL, users = NULL;
+ if ((groups = switch_xml_child(x_domain, "groups"))) {
+ if ((group = switch_xml_find_child_multi(groups, "group", "name", user, NULL))) {
+ if ((users = switch_xml_child(group, "users"))) {
+ for (ut = switch_xml_child(users, "user"); ut; ut = ut->next) {
+ const char *type = switch_xml_attr_soft(ut, "type");
+
+ if (!strcasecmp(type, "pointer")) {
+ const char *uname = switch_xml_attr_soft(ut, "id");
+ switch_xml_t ux;
+
+ if (switch_xml_locate_user_in_domain(uname, x_domain, &ux, NULL) == SWITCH_STATUS_SUCCESS) {
+ switch_event_create(&my_params, SWITCH_EVENT_REQUEST_PARAMS);
+ status = deliver_vm(profile, ux, domain, path, 0, "B", my_params, pool, cid_name, cid_num, SWITCH_TRUE);
+ switch_event_destroy(&my_params);
+ }
+ continue;
+ }
+
+ switch_event_create(&my_params, SWITCH_EVENT_REQUEST_PARAMS);
+ status = deliver_vm(profile, ut, domain, path, 0, "B", my_params, pool, cid_name, cid_num, SWITCH_TRUE);
+ switch_event_destroy(&my_params);
+ }
+ }
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Cannot locate group %s\n", user);
+ }
+ }
+ } else if (isall) {
+ switch_xml_t group = NULL, groups = NULL, users = NULL;
+ if ((groups = switch_xml_child(x_domain, "groups"))) {
+ for (group = switch_xml_child(groups, "group"); group; group = group->next) {
+ if ((users = switch_xml_child(group, "users"))) {
+ for (ut = switch_xml_child(users, "user"); ut; ut = ut->next) {
+ const char *type = switch_xml_attr_soft(ut, "type");
+
+ if (!strcasecmp(type, "pointer")) {
+ continue;
+ }
+
+ switch_event_create(&my_params, SWITCH_EVENT_REQUEST_PARAMS);
+ status = deliver_vm(profile, ut, domain, path, 0, "B", my_params, pool, cid_name, cid_num, SWITCH_TRUE);
+ switch_event_destroy(&my_params);
+ }
+ }
+ }
+ }
+
+ } else {
+ switch_xml_t x_group = NULL;
+
+ if ((status = switch_xml_locate_user_in_domain(user, x_domain, &ut, &x_group)) == SWITCH_STATUS_SUCCESS) {
switch_event_create(&my_params, SWITCH_EVENT_REQUEST_PARAMS);
status = deliver_vm(profile, ut, domain, path, 0, "B", my_params, pool, cid_name, cid_num, SWITCH_TRUE);
switch_event_destroy(&my_params);
} else {
status = SWITCH_STATUS_FALSE;
}
- } else {
- for (ut = switch_xml_child(x_domain, "user"); ut; ut = ut->next) {
- const char *tag;
-
- if (isall || (istag && (tag=switch_xml_attr(ut, "vm-tag")) && !strcasecmp(tag, user))) {
- switch_event_create(&my_params, SWITCH_EVENT_REQUEST_PARAMS);
- status = deliver_vm(profile, ut, domain, path, 0, "B", my_params, pool, cid_name, cid_num, SWITCH_TRUE);
- switch_event_destroy(&my_params);
- }
- }
}
switch_core_destroy_memory_pool(&pool);
@@ -2679,7 +2734,7 @@
switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "mailbox", id);
if (switch_xml_locate_user("id", id, domain_name, switch_channel_get_variable(channel, "network_addr"),
- &x_domain_root, &x_domain, &x_user, params) == SWITCH_STATUS_SUCCESS) {
+ &x_domain_root, &x_domain, &x_user, NULL, params) == SWITCH_STATUS_SUCCESS) {
if ((x_params = switch_xml_child(x_user, "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");
@@ -3562,7 +3617,7 @@
}
}
-#define VM_INJECT_USAGE "[tag=]<box> <sound_file> [<cid_num>] [<cid_name>]"
+#define VM_INJECT_USAGE "[group=]<box> <sound_file> [<cid_num>] [<cid_name>]"
SWITCH_STANDARD_API(voicemail_inject_api_function)
{
if (voicemail_inject(cmd) == SWITCH_STATUS_SUCCESS) {
Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_iax/mod_iax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_iax/mod_iax.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_iax/mod_iax.c Wed Jan 7 10:17:00 2009
@@ -496,6 +496,7 @@
switch_clear_flag_locked(tech_pvt, TFLAG_IO);
switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
+ switch_clear_flag_locked(tech_pvt, TFLAG_CODEC);
if (tech_pvt->read_codec.implementation) {
switch_core_codec_destroy(&tech_pvt->read_codec);
@@ -1079,17 +1080,16 @@
case IAX_EVENT_VOICE:
if (tech_pvt && (tech_pvt->read_frame.datalen = iaxevent->datalen) != 0) {
if (channel && switch_channel_get_state(channel) <= CS_HANGUP) {
- int bytes, frames;
+ int bytes = 0, frames = 1;
- if (!switch_test_flag(tech_pvt, TFLAG_CODEC)) {
+ if (!switch_test_flag(tech_pvt, TFLAG_CODEC) || !tech_pvt->read_codec.implementation) {
+ switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
break;
}
-
+
if (tech_pvt->read_codec.implementation->encoded_bytes_per_packet) {
bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_packet;
frames = (int) (tech_pvt->read_frame.datalen / bytes);
- } else {
- frames = 1;
}
tech_pvt->read_frame.samples = frames * tech_pvt->read_codec.implementation->samples_per_packet;
Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/mod_sofia.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/mod_sofia.c Wed Jan 7 10:17:00 2009
@@ -734,7 +734,8 @@
const char *val;
int rtp_timeout_sec = 0;
int rtp_hold_timeout_sec = 0;
-
+
+ tech_pvt->read_frame.datalen = 0;
tech_pvt->codec_ms = codec_ms;
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,
"Changing codec ptime to %d. I bet you have a linksys/sipura =D\n", tech_pvt->codec_ms);
@@ -809,6 +810,10 @@
frames = (tech_pvt->read_frame.datalen / bytes);
}
tech_pvt->read_frame.samples = (int) (frames * tech_pvt->read_codec.implementation->samples_per_packet);
+
+ if (tech_pvt->read_frame.datalen == 0) {
+ continue;
+ }
}
break;
}
@@ -1054,13 +1059,30 @@
case SWITCH_MESSAGE_INDICATE_MEDIA_REDIRECT:
{
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending media re-direct:\n%s\n", msg->string_arg);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Sending media re-direct:\n%s\n",
+ switch_channel_get_name(channel), msg->string_arg);
tech_pvt->local_sdp_str = switch_core_session_strdup(session, msg->string_arg);
switch_set_flag_locked(tech_pvt, TFLAG_SENT_UPDATE);
sofia_glue_do_invite(session);
}
break;
+
+ case SWITCH_MESSAGE_INDICATE_REQUEST_IMAGE_MEDIA:
+ {
+ switch_t38_options_t *t38_options = (switch_t38_options_t *) msg->pointer_arg;
+
+ sofia_glue_set_image_sdp(tech_pvt, t38_options);
+
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Sending request for image media. %s\n",
+ switch_channel_get_name(channel), tech_pvt->local_sdp_str);
+
+
+ switch_set_flag_locked(tech_pvt, TFLAG_SENT_UPDATE);
+ sofia_glue_do_invite(session);
+ }
+ break;
+
case SWITCH_MESSAGE_INDICATE_MEDIA:
{
uint32_t send_invite = 1;
@@ -2294,6 +2316,7 @@
private_object_t *tech_pvt = NULL;
switch_channel_t *nchannel;
char *host = NULL, *dest_to = NULL;
+ const char *hval = NULL;
*new_session = NULL;
@@ -2498,9 +2521,20 @@
*new_session = nsession;
cause = SWITCH_CAUSE_SUCCESS;
+ if ((hval = switch_event_get_header(var_event, "sip_auto_answer")) && switch_true(hval)) {
+ switch_channel_set_variable_printf(nchannel, "sip_h_Call-Info", "<sip:%s>;answer-after=0", profile->sipip);
+ switch_channel_set_variable(nchannel, "sip_invite_params", "intercom=true");
+ }
+
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", "<sip:%s>;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);
Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/mod_sofia.h
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/mod_sofia.h (original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/mod_sofia.h Wed Jan 7 10:17:00 2009
@@ -208,7 +208,7 @@
TFLAG_NOHUP = (1 << 18),
TFLAG_NOSDP_REINVITE = (1 << 19),
TFLAG_NAT = (1 << 20),
- TFLAG_BUGGY_2833 = (1 << 21),
+ TFLAG_USEME = (1 << 21),
TFLAG_SIP_HOLD = (1 << 22),
TFLAG_INB_NOMEDIA = (1 << 23),
TFLAG_LATE_NEGOTIATION = (1 << 24),
@@ -552,6 +552,7 @@
uint32_t mismatch_count;
uint32_t last_codec_ms;
nua_event_t want_event;
+ switch_rtp_bug_flag_t rtp_bugs;
};
struct callback_t {
@@ -760,3 +761,4 @@
const char * sofia_state_string(int state);
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);
Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/sofia.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/sofia.c Wed Jan 7 10:17:00 2009
@@ -1186,12 +1186,25 @@
}
if (switch_true(parse)) {
- switch_xml_t ut, gateways_tag;
+ switch_xml_t gts, gt, uts, ut, gateways_tag;
+ /* Backwards Compatibility */
for (ut = switch_xml_child(x_domain_tag, "user"); ut; ut = ut->next) {
if (((gateways_tag = switch_xml_child(ut, "gateways")))) {
parse_gateways(profile, gateways_tag);
}
}
+ /* New Method with <groups> tags and users are now inside a <users> tag */
+ for (gts = switch_xml_child(x_domain_tag, "groups"); gts; gts = gts->next) {
+ for (gt = switch_xml_child(gts, "group"); gt; gt = gt->next) {
+ for (uts = switch_xml_child(gt, "users"); uts; uts = uts->next) {
+ for (ut = switch_xml_child(uts, "user"); ut; ut = ut->next) {
+ if (((gateways_tag = switch_xml_child(ut, "gateways")))) {
+ parse_gateways(profile, gateways_tag);
+ }
+ }
+ }
+ }
+ }
}
}
@@ -3549,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/gmaruzz/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/sofia_glue.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/sofia_glue.c Wed Jan 7 10:17:00 2009
@@ -35,6 +35,75 @@
#include "mod_sofia.h"
#include <switch_stun.h>
+void sofia_glue_set_image_sdp(private_object_t *tech_pvt, switch_t38_options_t *t38_options)
+{
+ char buf[2048];
+ const char *ip = t38_options->ip;
+ uint32_t port = t38_options->port;
+ const char *family = "IP4";
+
+ if (!ip) {
+ if (!(ip = tech_pvt->adv_sdp_audio_ip)) {
+ ip = tech_pvt->proxy_sdp_audio_ip;
+ }
+ }
+
+ if (!port) {
+ if (!(port = tech_pvt->adv_sdp_audio_port)) {
+ port = tech_pvt->proxy_sdp_audio_port;
+ }
+ }
+
+ if (!tech_pvt->owner_id) {
+ tech_pvt->owner_id = (uint32_t) switch_timestamp(NULL) - port;
+ }
+
+ if (!tech_pvt->session_id) {
+ tech_pvt->session_id = tech_pvt->owner_id;
+ }
+
+ tech_pvt->session_id++;
+
+ family = strchr(ip, ':') ? "IP6" : "IP4";
+ switch_snprintf(buf, sizeof(buf),
+ "v=0\n"
+ "o=FreeSWITCH %010u %010u IN %s %s\n"
+ "s=FreeSWITCH\n"
+ "c=IN %s %s\n"
+ "t=0 0\n"
+ "m=image %d udptl t38\n"
+ "a=T38MaxBitRate:%d\n"
+ "%s"
+ "%s"
+ "%s"
+ "a=T38FaxRateManagement:%s\n"
+ "a=T38FaxMaxBuffer:%d\n"
+ "a=T38FaxMaxDatagram:%d\n"
+ "a=T38FaxUdpEC:%s\n"
+ "a=T38VendorInfo:%s\n",
+
+ tech_pvt->owner_id,
+ tech_pvt->session_id,
+ family,
+ ip,
+ family,
+ ip,
+ port,
+
+ t38_options->T38MaxBitRate,
+ t38_options->T38FaxFillBitRemoval ? "a=T38FaxFillBitRemoval\n" : "",
+ t38_options->T38FaxTranscodingMMR ? "a=T38FaxTranscodingMMR\n" : "",
+ t38_options->T38FaxTranscodingJBIG ? "a=T38FaxTranscodingJBIG\n" : "",
+ t38_options->T38FaxRateManagement,
+ t38_options->T38FaxMaxBuffer,
+ t38_options->T38FaxMaxDatagram,
+ t38_options->T38FaxUdpEC,
+ t38_options->T38VendorInfo
+ );
+
+
+ tech_pvt->local_sdp_str = switch_core_session_strdup(tech_pvt->session, buf);
+}
void sofia_glue_set_local_sdp(private_object_t *tech_pvt, const char *ip, uint32_t port, const char *sr, int force)
{
@@ -1775,10 +1844,6 @@
flags = (switch_rtp_flag_t) (SWITCH_RTP_FLAG_DATAWAIT);
}
- if (switch_test_flag(tech_pvt, TFLAG_BUGGY_2833)) {
- flags |= SWITCH_RTP_FLAG_BUGGY_2833;
- }
-
if ((val = switch_channel_get_variable(tech_pvt->channel, "dtmf_type"))) {
if (!strcasecmp(val, "rfc2833")) {
tech_pvt->dtmf_type = DTMF_2833;
@@ -1923,7 +1988,9 @@
tech_pvt->ssrc = switch_rtp_get_ssrc(tech_pvt->rtp_session);
switch_set_flag(tech_pvt, TFLAG_RTP);
switch_set_flag(tech_pvt, TFLAG_IO);
-
+
+ switch_rtp_intentional_bugs(tech_pvt->rtp_session, tech_pvt->rtp_bugs);
+
if ((vad_in && inb) || (vad_out && !inb)) {
switch_rtp_enable_vad(tech_pvt->rtp_session, tech_pvt->session, &tech_pvt->read_codec, SWITCH_VAD_FLAG_TALKING);
switch_set_flag(tech_pvt, TFLAG_VAD);
@@ -2191,7 +2258,7 @@
switch_channel_t *channel = switch_core_session_get_channel(session);
const char *val;
const char *crypto = NULL;
- int got_crypto = 0, got_audio = 0, got_avp = 0, got_savp = 0;
+ int got_crypto = 0, got_audio = 0, got_avp = 0, got_savp = 0, got_udptl = 0;
switch_assert(tech_pvt != NULL);
@@ -2205,12 +2272,12 @@
if ((tech_pvt->origin = switch_core_session_strdup(session, (char *) sdp->sdp_origin->o_username))) {
if (strstr(tech_pvt->origin, "CiscoSystemsSIP-GW-UserAgent")) {
- switch_set_flag_locked(tech_pvt, TFLAG_BUGGY_2833);
+ 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")) {
- switch_set_flag_locked(tech_pvt, TFLAG_BUGGY_2833);
+ 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"
@@ -2252,9 +2319,42 @@
got_savp++;
} else if (m->m_proto == sdp_proto_rtp) {
got_avp++;
+ } else if (m->m_proto == sdp_proto_udptl) {
+ got_udptl++;
}
- if (m->m_type == sdp_media_audio && m->m_port && !got_audio) {
+ if (got_udptl && m->m_type == sdp_media_image && m->m_port) {
+ switch_t38_options_t *t38_options = switch_core_session_alloc(tech_pvt->session, sizeof(switch_t38_options_t));
+
+ for (attr = m->m_attributes; attr; attr = attr->a_next) {
+ if (!strcasecmp(attr->a_name, "T38MaxBitRate") && attr->a_value) {
+ t38_options->T38MaxBitRate = (uint32_t) atoi(attr->a_value);
+ } else if (!strcasecmp(attr->a_name, "T38FaxFillBitRemoval")) {
+ t38_options->T38FaxFillBitRemoval = SWITCH_TRUE;
+ } else if (!strcasecmp(attr->a_name, "T38FaxTranscodingMMR")) {
+ t38_options->T38FaxTranscodingMMR = SWITCH_TRUE;
+ } else if (!strcasecmp(attr->a_name, "T38FaxTranscodingJBIG")) {
+ t38_options->T38FaxTranscodingJBIG = SWITCH_TRUE;
+ } else if (!strcasecmp(attr->a_name, "T38FaxRateManagement") && attr->a_value) {
+ t38_options->T38FaxRateManagement = switch_core_session_strdup(tech_pvt->session, attr->a_value);
+ } else if (!strcasecmp(attr->a_name, "T38FaxMaxBuffer") && attr->a_value) {
+ t38_options->T38FaxMaxBuffer = (uint32_t) atoi(attr->a_value);
+ } else if (!strcasecmp(attr->a_name, "T38FaxMaxDatagram") && attr->a_value) {
+ t38_options->T38FaxMaxDatagram = (uint32_t) atoi(attr->a_value);
+ } else if (!strcasecmp(attr->a_name, "T38FaxUdpEC") && attr->a_value) {
+ t38_options->T38FaxUdpEC = switch_core_session_strdup(tech_pvt->session, attr->a_value);
+ } else if (!strcasecmp(attr->a_name, "T38VendorInfo") && attr->a_value) {
+ t38_options->T38VendorInfo = switch_core_session_strdup(tech_pvt->session, attr->a_value);
+ }
+ }
+
+ 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);
+
+ } else if (m->m_type == sdp_media_audio && m->m_port && !got_audio) {
sdp_rtpmap_t *map;
for (attr = m->m_attributes; attr; attr = attr->a_next) {
Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/sofia_reg.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/sofia_reg.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_sofia/sofia_reg.c Wed Jan 7 10:17:00 2009
@@ -1064,6 +1064,8 @@
if (regtype == REG_REGISTER) {
char exp_param[128] = "";
+ char date[80] = "";
+
s_event = NULL;
if (exptime) {
@@ -1086,7 +1088,12 @@
}
}
- nua_respond(nh, SIP_200_OK, SIPTAG_CONTACT(sip->sip_contact), TAG_IF(path_val, SIPTAG_PATH_STR(path_val)), NUTAG_WITH_THIS(nua), TAG_END());
+ switch_rfc822_date(date, switch_timestamp_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),
+ SIPTAG_DATE_STR(date),
+ TAG_END());
if (s_event) {
switch_event_fire(&s_event);
@@ -1245,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) {
@@ -1394,7 +1401,7 @@
const char *a1_hash = NULL;
char *sql;
char *mailbox = NULL;
- switch_xml_t domain, xml = NULL, user, param, uparams, dparams;
+ switch_xml_t domain, xml = NULL, user, param, uparams, dparams, group = NULL, gparams = NULL;
char hexdigest[2 * SU_MD5_DIGEST_SIZE + 1] = "";
char *domain_name = NULL;
switch_event_t *params = NULL;
@@ -1529,7 +1536,7 @@
}
if (switch_xml_locate_user("id", switch_strlen_zero(username) ? "nobody" : username,
- domain_name, ip, &xml, &domain, &user, params) != SWITCH_STATUS_SUCCESS) {
+ domain_name, ip, &xml, &domain, &user, &group, params) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Can't find user [%s@%s]\n"
"You must define a domain called '%s' in your directory and add a user with the id=\"%s\" attribute\n"
"and you must configure your device to use the proper domain in it's authentication credentials.\n"
@@ -1545,6 +1552,9 @@
dparams = switch_xml_child(domain, "params");
uparams = switch_xml_child(user, "params");
+ if (group) {
+ gparams = switch_xml_child(group, "params");
+ }
if (!(dparams || uparams)) {
ret = AUTH_OK;
@@ -1575,6 +1585,30 @@
}
}
+ if (gparams) {
+ for (param = switch_xml_child(gparams, "param"); param; param = param->next) {
+ const char *var = switch_xml_attr_soft(param, "name");
+ const char *val = switch_xml_attr_soft(param, "value");
+
+ if (!strcasecmp(var, "sip-forbid-register") && switch_true(val)) {
+ ret = AUTH_FORBIDDEN;
+ goto end;
+ }
+
+ if (!strcasecmp(var, "password")) {
+ passwd = val;
+ }
+
+ if (!strcasecmp(var, "auth-acl")) {
+ auth_acl = val;
+ }
+
+ if (!strcasecmp(var, "a1-hash")) {
+ a1_hash = val;
+ }
+ }
+ }
+
if (uparams) {
for (param = switch_xml_child(uparams, "param"); param; param = param->next) {
const char *var = switch_xml_attr_soft(param, "name");
@@ -1670,7 +1704,7 @@
switch_event_create(v_event, SWITCH_EVENT_REQUEST_PARAMS);
}
if (v_event && *v_event) {
- switch_xml_t xparams[2];
+ switch_xml_t xparams[3];
int i = 0;
switch_event_add_header_string(*v_event, SWITCH_STACK_BOTTOM, "sip_mailbox", mailbox);
@@ -1684,11 +1718,15 @@
xparams[i++] = dparams;
}
+ if (group && (gparams = switch_xml_child(group, "variables"))) {
+ xparams[i++] = gparams;
+ }
+
if ((uparams = switch_xml_child(user, "variables"))) {
xparams[i++] = uparams;
}
- if (dparams || uparams) {
+ if (i <= 3) {
int j = 0;
for (j = 0; j < i; j++) {
Modified: freeswitch/branches/gmaruzz/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c Wed Jan 7 10:17:00 2009
@@ -142,25 +142,28 @@
switch_mutex_lock(globals.listener_mutex);
for (l = listen_list.listeners; l; l = l->next) {
if (switch_test_flag(l, LFLAG_LOG) && l->level >= node->level) {
- char *data = strdup(node->data);
- if (data) {
- if (switch_queue_trypush(l->log_queue, data) == SWITCH_STATUS_SUCCESS) {
- if (l->lost_logs) {
- int ll = l->lost_logs;
- switch_event_t *event;
- l->lost_logs = 0;
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Lost %d log lines!\n", ll);
- if (switch_event_create(&event, SWITCH_EVENT_TRAP) == SWITCH_STATUS_SUCCESS) {
- switch_event_add_header(event, SWITCH_STACK_BOTTOM, "info", "lost %d log lines", ll);
- switch_event_fire(&event);
- }
+
+ switch_log_node_t *dnode = malloc(sizeof(*node));
+ switch_assert(dnode);
+ *dnode = *node;
+ dnode->data = strdup(node->data);
+ switch_assert(dnode->data);
+
+ if (switch_queue_trypush(l->log_queue, dnode) == SWITCH_STATUS_SUCCESS) {
+ if (l->lost_logs) {
+ int ll = l->lost_logs;
+ switch_event_t *event;
+ l->lost_logs = 0;
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Lost %d log lines!\n", ll);
+ if (switch_event_create(&event, SWITCH_EVENT_TRAP) == SWITCH_STATUS_SUCCESS) {
+ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "info", "lost %d log lines", ll);
+ switch_event_fire(&event);
}
- } else {
- switch_safe_free(data);
- l->lost_logs++;
}
} else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error!\n");
+ switch_safe_free(dnode->data);
+ switch_safe_free(dnode);
+ l->lost_logs++;
}
}
}
@@ -268,6 +271,8 @@
static 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++);
@@ -275,7 +280,13 @@
if (event->body)
i++;
- ei_x_encode_list_header(ebuf, 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);
@@ -936,7 +947,7 @@
}
switch_core_session_t *session;
- if ((session = switch_core_session_locate(uuid))) {
+ 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");
@@ -980,6 +991,9 @@
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:
@@ -1262,20 +1276,48 @@
/* 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) {
- char *data = (char *) pop;
+ switch_log_node_t *dnode = (switch_log_node_t *) pop;
- if (data) {
+ 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_string(&lbuf, data);
+ 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);
}
}
}
Modified: freeswitch/branches/gmaruzz/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c Wed Jan 7 10:17:00 2009
@@ -332,7 +332,7 @@
}
if (var && strlen(var) > 1) {
- switch_event_add_body(local_event, var);
+ switch_event_add_body(local_event, "%s", var);
}
switch_event_fire(&local_event);
Modified: freeswitch/branches/gmaruzz/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/event_handlers/mod_event_socket/mod_event_socket.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/event_handlers/mod_event_socket/mod_event_socket.c Wed Jan 7 10:17:00 2009
@@ -473,6 +473,7 @@
}
switch_mutex_unlock(globals.listener_mutex);
+ switch_yield(1000000);
return SWITCH_STATUS_SUCCESS;
@@ -627,15 +628,67 @@
switch_mutex_unlock(listener->filter_mutex);
+ } else if (!strcasecmp(wcmd, "stop-logging")) {
+ char *id = switch_event_get_header(stream->param_event, "listen-id");
+ uint32_t idl = 0;
+
+ if (id) {
+ idl = (uint32_t) atol(id);
+ }
+
+ if (!(listener = find_listener(idl))) {
+ stream->write_function(stream, "<data><reply type=\"error\">Invalid Listen-ID</reply></data>\n");
+ goto end;
+ }
+
+ if (switch_test_flag(listener, LFLAG_LOG)) {
+ switch_clear_flag_locked(listener, LFLAG_LOG);
+ stream->write_function(stream, "<data><reply type=\"success\">Not Logging</reply></data>\n");
+ } else {
+ stream->write_function(stream, "<data><reply type=\"error\">Not Logging</reply></data>\n");
+ }
+
+ goto end;
+
+ } else if (!strcasecmp(wcmd, "set-loglevel")) {
+ char *loglevel = switch_event_get_header(stream->param_event, "loglevel");
+ char *id = switch_event_get_header(stream->param_event, "listen-id");
+ uint32_t idl = 0;
+
+ if (id) {
+ idl = (uint32_t) atol(id);
+ }
+
+ if (!(listener = find_listener(idl))) {
+ stream->write_function(stream, "<data><reply type=\"error\">Invalid Listen-ID</reply></data>\n");
+ goto end;
+ }
+
+ if (loglevel) {
+ switch_log_level_t ltype = switch_log_str2level(loglevel);
+ if (ltype != SWITCH_LOG_INVALID) {
+ listener->level = ltype;
+ switch_set_flag(listener, LFLAG_LOG);
+ stream->write_function(stream, "<data><reply type=\"success\">Log Level %s</reply></data>\n", loglevel);
+ } else {
+ stream->write_function(stream, "<data><reply type=\"error\">Invalid Level</reply></data>\n");
+ }
+ } else {
+ stream->write_function(stream, "<data><reply type=\"error\">Invalid Syntax</reply></data>\n");
+ }
+
+ goto end;
+
} else if (!strcasecmp(wcmd, "create-listener")) {
char *events = switch_event_get_header(stream->param_event, "events");
+ char *loglevel = switch_event_get_header(stream->param_event, "loglevel");
switch_memory_pool_t *pool;
char *next, *cur;
uint32_t count = 0, key_count = 0;
uint8_t custom = 0;
char *edup;
- if (switch_strlen_zero(events)) {
+ if (switch_strlen_zero(events) && switch_strlen_zero(loglevel)) {
stream->write_function(stream, "<data><reply type=\"error\">Missing parameter!</reply></data>\n");
goto end;
}
@@ -651,64 +704,81 @@
switch_set_flag(listener, LFLAG_AUTHED);
switch_set_flag(listener, LFLAG_STATEFUL);
switch_queue_create(&listener->event_queue, SWITCH_CORE_QUEUE_LEN, listener->pool);
+ switch_queue_create(&listener->log_queue, SWITCH_CORE_QUEUE_LEN, listener->pool);
+
+ if (loglevel) {
+ switch_log_level_t ltype = switch_log_str2level(loglevel);
+ if (ltype != SWITCH_LOG_INVALID) {
+ listener->level = ltype;
+ switch_set_flag(listener, LFLAG_LOG);
+ }
+ }
switch_thread_rwlock_create(&listener->rwlock, listener->pool);
listener->id = next_id();
listener->timeout = 60;
listener->last_flush = switch_timestamp(NULL);
- if (switch_stristr("xml", format)) {
- listener->format = EVENT_FORMAT_XML;
- } else {
- listener->format = EVENT_FORMAT_PLAIN;
- }
+ if (events) {
+ char delim = ',';
- edup = strdup(events);
-
- for (cur = edup; cur; count++) {
- switch_event_types_t type;
+ if (switch_stristr("xml", format)) {
+ listener->format = EVENT_FORMAT_XML;
+ } else {
+ listener->format = EVENT_FORMAT_PLAIN;
+ }
+
+ edup = strdup(events);
- if ((next = strchr(cur, ' '))) {
- *next++ = '\0';
+ if (strchr(edup, ' ')) {
+ delim = ' ';
}
- if (custom) {
- switch_core_hash_insert(listener->event_hash, cur, MARKER);
- } else if (switch_name_event(cur, &type) == SWITCH_STATUS_SUCCESS) {
- key_count++;
- if (type == SWITCH_EVENT_ALL) {
- 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;
+ for (cur = edup; cur; count++) {
+ switch_event_types_t type;
+
+ if ((next = strchr(cur, delim))) {
+ *next++ = '\0';
}
- if (type == SWITCH_EVENT_CUSTOM) {
- custom++;
+
+ if (custom) {
+ switch_core_hash_insert(listener->event_hash, cur, MARKER);
+ } else if (switch_name_event(cur, &type) == SWITCH_STATUS_SUCCESS) {
+ key_count++;
+ if (type == SWITCH_EVENT_ALL) {
+ 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++;
+ }
}
+
+ cur = next;
}
-
- cur = next;
- }
- switch_safe_free(edup);
+ switch_safe_free(edup);
- if (!key_count) {
- switch_core_hash_destroy(&listener->event_hash);
- switch_core_destroy_memory_pool(&listener->pool);
- stream->write_function(stream, "<data><reply type=\"error\">No keywords supplied</reply></data>\n");
- goto end;
+ if (!key_count) {
+ switch_core_hash_destroy(&listener->event_hash);
+ switch_core_destroy_memory_pool(&listener->pool);
+ stream->write_function(stream, "<data><reply type=\"error\">No keywords supplied</reply></data>\n");
+ goto end;
+ }
}
-
switch_set_flag_locked(listener, LFLAG_EVENTS);
add_listener(listener);
stream->write_function(stream, "<data>\n");
stream->write_function(stream, " <reply type=\"success\">Listener %u Created</reply>\n", listener->id);
xmlize_listener(listener, stream);
stream->write_function(stream, "</data>\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")) {
@@ -720,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, "<data>\n <reply type=\"success\">listener %u destroyed</reply>\n", listener->id);
xmlize_listener(listener, stream);
@@ -727,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, "<data><reply type=\"error\">Can't find listener</reply></data>\n");
goto end;
}
@@ -749,7 +821,38 @@
listener->last_flush = switch_timestamp(NULL);
stream->write_function(stream, "<data>\n <reply type=\"success\">Current Events Follow</reply>\n");
xmlize_listener(listener, stream);
- stream->write_function(stream, "<events>\n");
+
+ if (switch_test_flag(listener, LFLAG_LOG)) {
+ stream->write_function(stream, "<log_data>\n");
+
+ while (switch_queue_trypop(listener->log_queue, &pop) == SWITCH_STATUS_SUCCESS) {
+ switch_log_node_t *dnode = (switch_log_node_t *) pop;
+ int encode_len = (strlen(dnode->data) * 3) + 1;
+ char *encode_buf = malloc(encode_len);
+
+ switch_assert(encode_buf);
+
+ memset(encode_buf, 0, encode_len);
+ switch_url_encode((char *) dnode->data, encode_buf, encode_len);
+
+
+ stream->write_function(stream, "<log log-level=\"%d\" text-channel=\"%d\" log-file=\"%s\" log-func=\"%s\" log-line=\"%d\">%s</log>\n",
+ dnode->level,
+ dnode->channel,
+ dnode->file,
+ dnode->func,
+ dnode->line,
+ encode_buf
+ );
+ free(encode_buf);
+ free(dnode->data);
+ free(dnode);
+ }
+
+ stream->write_function(stream, "</log_data>\n");
+ }
+
+ stream->write_function(stream, "<events>\n");
while (switch_queue_trypop(listener->event_queue, &pop) == SWITCH_STATUS_SUCCESS) {
char *etype;
@@ -821,6 +924,9 @@
switch_mutex_init(&globals.listener_mutex, SWITCH_MUTEX_NESTED, pool);
+ memset(&listen_list, 0, sizeof(listen_list));
+ switch_mutex_init(&listen_list.sock_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) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n");
return SWITCH_STATUS_GENERR;
@@ -1482,7 +1588,7 @@
ltype = switch_log_str2level(level_s);
}
- if (ltype && ltype != SWITCH_LOG_INVALID) {
+ if (ltype != SWITCH_LOG_INVALID) {
listener->level = ltype;
switch_set_flag(listener, LFLAG_LOG);
switch_snprintf(reply, reply_len, "+OK log level %s [%d]", level_s, listener->level);
@@ -1824,7 +1930,7 @@
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);
@@ -1927,17 +2033,12 @@
listener_t *listener;
uint32_t x = 0;
- memset(&listen_list, 0, sizeof(listen_list));
- config();
-
if (switch_core_new_memory_pool(&pool) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "OH OH no pool\n");
return SWITCH_STATUS_TERM;
}
-
- switch_mutex_init(&listen_list.sock_mutex, SWITCH_MUTEX_NESTED, pool);
-
+ config();
for (;;) {
rv = switch_sockaddr_info_get(&sa, prefs.ip, SWITCH_INET, prefs.port, 0, pool);
Modified: freeswitch/branches/gmaruzz/src/mod/formats/mod_shout/Makefile
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/formats/mod_shout/Makefile (original)
+++ freeswitch/branches/gmaruzz/src/mod/formats/mod_shout/Makefile Wed Jan 7 10:17:00 2009
@@ -30,7 +30,7 @@
$(GETLIB) $(MPG123).tar.gz
$(MPG123_DIR)/Makefile: $(MPG123_DIR)
- cd $(MPG123_DIR) && CFLAGS=$(AM_CFLAGS) ./configure --disable-shared --with-pic
+ cd $(MPG123_DIR) && CFLAGS=$(AM_CFLAGS) ./configure --disable-shared --with-pic CPPFLAGS= LDFLAGS=
$(TOUCH_TARGET)
$(MPG123LA): $(MPG123_DIR)/Makefile
@@ -41,7 +41,7 @@
$(GETLIB) $(LAME).tar.gz
$(LAME_DIR)/Makefile: $(LAME_DIR)
- cd $(LAME_DIR) && ./configure $(DEFAULT_ARGS) --disable-decoder
+ cd $(LAME_DIR) && ./configure $(DEFAULT_ARGS) --disable-decoder CPPFLAGS= LDFLAGS=
$(TOUCH_TARGET)
$(LAMELA): $(LAME_DIR)/Makefile
@@ -52,7 +52,7 @@
$(GETLIB) $(SHOUT).tar.gz
$(SHOUT_DIR)/Makefile: $(SHOUT_DIR)
- cd $(SHOUT_DIR) && ./configure $(DEFAULT_ARGS) --without-speex --without-vorbis --without-ogg
+ cd $(SHOUT_DIR) && ./configure $(DEFAULT_ARGS) --without-speex --without-vorbis --without-ogg CPPFLAGS= LDFLAGS=
$(TOUCH_TARGET)
$(SHOUTLA): $(SHOUT_DIR)/Makefile
Modified: freeswitch/branches/gmaruzz/src/mod/languages/mod_managed/freeswitch_wrap.cxx
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/languages/mod_managed/freeswitch_wrap.cxx (original)
+++ freeswitch/branches/gmaruzz/src/mod/languages/mod_managed/freeswitch_wrap.cxx Wed Jan 7 10:17:00 2009
@@ -2290,7 +2290,7 @@
int jresult ;
int result;
- result = (int) 32;
+ result = (int) 48;
jresult = result;
return jresult;
@@ -2312,7 +2312,7 @@
int jresult ;
int result;
- result = (int) (2*32*(120+10));
+ result = (int) 4096;
jresult = result;
return jresult;
@@ -2600,6 +2600,302 @@
}
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_T38MaxBitRate_set(void * jarg1, unsigned long jarg2) {
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ uint32_t arg2 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ arg2 = (uint32_t)jarg2;
+ if (arg1) (arg1)->T38MaxBitRate = arg2;
+
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_t38_options_t_T38MaxBitRate_get(void * jarg1) {
+ unsigned long jresult ;
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ uint32_t result;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ result = (uint32_t) ((arg1)->T38MaxBitRate);
+ jresult = (unsigned long)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxFillBitRemoval_set(void * jarg1, int jarg2) {
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ switch_bool_t arg2 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ arg2 = (switch_bool_t)jarg2;
+ if (arg1) (arg1)->T38FaxFillBitRemoval = arg2;
+
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxFillBitRemoval_get(void * jarg1) {
+ int jresult ;
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ switch_bool_t result;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ result = (switch_bool_t) ((arg1)->T38FaxFillBitRemoval);
+ jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxTranscodingMMR_set(void * jarg1, int jarg2) {
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ switch_bool_t arg2 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ arg2 = (switch_bool_t)jarg2;
+ if (arg1) (arg1)->T38FaxTranscodingMMR = arg2;
+
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxTranscodingMMR_get(void * jarg1) {
+ int jresult ;
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ switch_bool_t result;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ result = (switch_bool_t) ((arg1)->T38FaxTranscodingMMR);
+ jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxTranscodingJBIG_set(void * jarg1, int jarg2) {
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ switch_bool_t arg2 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ arg2 = (switch_bool_t)jarg2;
+ if (arg1) (arg1)->T38FaxTranscodingJBIG = arg2;
+
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxTranscodingJBIG_get(void * jarg1) {
+ int jresult ;
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ switch_bool_t result;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ result = (switch_bool_t) ((arg1)->T38FaxTranscodingJBIG);
+ jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxRateManagement_set(void * jarg1, char * jarg2) {
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ char *arg2 = (char *) 0 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ arg2 = (char *)jarg2;
+ {
+ if (arg2) {
+ arg1->T38FaxRateManagement = (char const *) (new char[strlen((const char *)arg2)+1]);
+ strcpy((char *)arg1->T38FaxRateManagement, (const char *)arg2);
+ } else {
+ arg1->T38FaxRateManagement = 0;
+ }
+ }
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxRateManagement_get(void * jarg1) {
+ char * jresult ;
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ char *result = 0 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ result = (char *) ((arg1)->T38FaxRateManagement);
+ jresult = SWIG_csharp_string_callback((const char *)result);
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxMaxBuffer_set(void * jarg1, unsigned long jarg2) {
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ uint32_t arg2 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ arg2 = (uint32_t)jarg2;
+ if (arg1) (arg1)->T38FaxMaxBuffer = arg2;
+
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxMaxBuffer_get(void * jarg1) {
+ unsigned long jresult ;
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ uint32_t result;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ result = (uint32_t) ((arg1)->T38FaxMaxBuffer);
+ jresult = (unsigned long)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxMaxDatagram_set(void * jarg1, unsigned long jarg2) {
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ uint32_t arg2 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ arg2 = (uint32_t)jarg2;
+ if (arg1) (arg1)->T38FaxMaxDatagram = arg2;
+
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxMaxDatagram_get(void * jarg1) {
+ unsigned long jresult ;
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ uint32_t result;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ result = (uint32_t) ((arg1)->T38FaxMaxDatagram);
+ jresult = (unsigned long)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxUdpEC_set(void * jarg1, char * jarg2) {
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ char *arg2 = (char *) 0 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ arg2 = (char *)jarg2;
+ {
+ if (arg2) {
+ arg1->T38FaxUdpEC = (char const *) (new char[strlen((const char *)arg2)+1]);
+ strcpy((char *)arg1->T38FaxUdpEC, (const char *)arg2);
+ } else {
+ arg1->T38FaxUdpEC = 0;
+ }
+ }
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_switch_t38_options_t_T38FaxUdpEC_get(void * jarg1) {
+ char * jresult ;
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ char *result = 0 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ result = (char *) ((arg1)->T38FaxUdpEC);
+ jresult = SWIG_csharp_string_callback((const char *)result);
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_T38VendorInfo_set(void * jarg1, char * jarg2) {
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ char *arg2 = (char *) 0 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ arg2 = (char *)jarg2;
+ {
+ if (arg2) {
+ arg1->T38VendorInfo = (char const *) (new char[strlen((const char *)arg2)+1]);
+ strcpy((char *)arg1->T38VendorInfo, (const char *)arg2);
+ } else {
+ arg1->T38VendorInfo = 0;
+ }
+ }
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_switch_t38_options_t_T38VendorInfo_get(void * jarg1) {
+ char * jresult ;
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ char *result = 0 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ result = (char *) ((arg1)->T38VendorInfo);
+ jresult = SWIG_csharp_string_callback((const char *)result);
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_ip_set(void * jarg1, char * jarg2) {
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ char *arg2 = (char *) 0 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ arg2 = (char *)jarg2;
+ {
+ if (arg2) {
+ arg1->ip = (char const *) (new char[strlen((const char *)arg2)+1]);
+ strcpy((char *)arg1->ip, (const char *)arg2);
+ } else {
+ arg1->ip = 0;
+ }
+ }
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_switch_t38_options_t_ip_get(void * jarg1) {
+ char * jresult ;
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ char *result = 0 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ result = (char *) ((arg1)->ip);
+ jresult = SWIG_csharp_string_callback((const char *)result);
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_t38_options_t_port_set(void * jarg1, unsigned long jarg2) {
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ uint32_t arg2 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ arg2 = (uint32_t)jarg2;
+ if (arg1) (arg1)->port = arg2;
+
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_t38_options_t_port_get(void * jarg1) {
+ unsigned long jresult ;
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+ uint32_t result;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ result = (uint32_t) ((arg1)->port);
+ jresult = (unsigned long)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_switch_t38_options_t() {
+ void * jresult ;
+ switch_t38_options_t *result = 0 ;
+
+ result = (switch_t38_options_t *)new switch_t38_options_t();
+ jresult = (void *)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_switch_t38_options_t(void * jarg1) {
+ switch_t38_options_t *arg1 = (switch_t38_options_t *) 0 ;
+
+ arg1 = (switch_t38_options_t *)jarg1;
+ delete arg1;
+
+}
+
+
SWIGEXPORT void SWIGSTDCALL CSharp_switch_input_args_t_input_callback_set(void * jarg1, void * jarg2) {
switch_input_args_t *arg1 = (switch_input_args_t *) 0 ;
switch_input_callback_function_t arg2 = (switch_input_callback_function_t) 0 ;
@@ -6323,6 +6619,38 @@
}
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_session_lock_codec_write(void * jarg1) {
+ switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
+
+ arg1 = (switch_core_session_t *)jarg1;
+ switch_core_session_lock_codec_write(arg1);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_session_unlock_codec_write(void * jarg1) {
+ switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
+
+ arg1 = (switch_core_session_t *)jarg1;
+ switch_core_session_unlock_codec_write(arg1);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_session_lock_codec_read(void * jarg1) {
+ switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
+
+ arg1 = (switch_core_session_t *)jarg1;
+ switch_core_session_lock_codec_read(arg1);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_session_unlock_codec_read(void * jarg1) {
+ switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
+
+ arg1 = (switch_core_session_t *)jarg1;
+ switch_core_session_unlock_codec_read(arg1);
+}
+
+
SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_session_get_read_impl(void * jarg1, void * jarg2) {
int jresult ;
switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
@@ -19729,7 +20057,7 @@
{
size_t ii;
switch_byte_t *b = (switch_byte_t *) arg1->write_frame_data;
- for (ii = 0; ii < (size_t)(2*32*(120+10)); ii++) b[ii] = *((switch_byte_t *) arg2 + ii);
+ for (ii = 0; ii < (size_t)4096; ii++) b[ii] = *((switch_byte_t *) arg2 + ii);
}
}
@@ -21417,13 +21745,15 @@
}
-SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_unbind_dtmf_meta_session(void * jarg1) {
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_unbind_dtmf_meta_session(void * jarg1, unsigned long jarg2) {
int jresult ;
switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
+ uint32_t arg2 ;
switch_status_t result;
arg1 = (switch_core_session_t *)jarg1;
- result = (switch_status_t)switch_ivr_unbind_dtmf_meta_session(arg1);
+ arg2 = (uint32_t)jarg2;
+ result = (switch_status_t)switch_ivr_unbind_dtmf_meta_session(arg1,arg2);
jresult = result;
return jresult;
}
@@ -22378,6 +22708,16 @@
}
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtp_intentional_bugs(void * jarg1, int jarg2) {
+ switch_rtp_t *arg1 = (switch_rtp_t *) 0 ;
+ switch_rtp_bug_flag_t arg2 ;
+
+ arg1 = (switch_rtp_t *)jarg1;
+ arg2 = (switch_rtp_bug_flag_t)jarg2;
+ switch_rtp_intentional_bugs(arg1,arg2);
+}
+
+
SWIGEXPORT void SWIGSTDCALL CSharp_switch_log_node_t_data_set(void * jarg1, char * jarg2) {
switch_log_node_t *arg1 = (switch_log_node_t *) 0 ;
char *arg2 = (char *) 0 ;
@@ -22592,6 +22932,29 @@
}
+SWIGEXPORT void SWIGSTDCALL CSharp_switch_log_node_t_channel_set(void * jarg1, int jarg2) {
+ switch_log_node_t *arg1 = (switch_log_node_t *) 0 ;
+ switch_text_channel_t arg2 ;
+
+ arg1 = (switch_log_node_t *)jarg1;
+ arg2 = (switch_text_channel_t)jarg2;
+ if (arg1) (arg1)->channel = arg2;
+
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_log_node_t_channel_get(void * jarg1) {
+ int jresult ;
+ switch_log_node_t *arg1 = (switch_log_node_t *) 0 ;
+ switch_text_channel_t result;
+
+ arg1 = (switch_log_node_t *)jarg1;
+ result = (switch_text_channel_t) ((arg1)->channel);
+ jresult = result;
+ return jresult;
+}
+
+
SWIGEXPORT void * SWIGSTDCALL CSharp_new_switch_log_node_t() {
void * jresult ;
switch_log_node_t *result = 0 ;
@@ -23109,6 +23472,21 @@
}
+SWIGEXPORT void * SWIGSTDCALL CSharp_switch_xml_find_child_multi(void * jarg1, char * jarg2) {
+ void * jresult ;
+ switch_xml_t arg1 = (switch_xml_t) 0 ;
+ char *arg2 = (char *) 0 ;
+ void *arg3 = 0 ;
+ switch_xml_t result;
+
+ arg1 = (switch_xml_t)jarg1;
+ arg2 = (char *)jarg2;
+ result = (switch_xml_t)switch_xml_find_child_multi(arg1,(char const *)arg2,arg3);
+ jresult = (void *)result;
+ return jresult;
+}
+
+
SWIGEXPORT char * SWIGSTDCALL CSharp_switch_xml_attr(void * jarg1, char * jarg2) {
char * jresult ;
switch_xml_t arg1 = (switch_xml_t) 0 ;
@@ -23428,7 +23806,29 @@
}
-SWIGEXPORT int SWIGSTDCALL CSharp_switch_xml_locate_user(char * jarg1, char * jarg2, char * jarg3, char * jarg4, void * jarg5, void * jarg6, void * jarg7, void * jarg8) {
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_xml_locate_group(char * jarg1, char * jarg2, void * jarg3, void * jarg4, void * jarg5, void * jarg6) {
+ int jresult ;
+ char *arg1 = (char *) 0 ;
+ char *arg2 = (char *) 0 ;
+ switch_xml_t *arg3 = (switch_xml_t *) 0 ;
+ switch_xml_t *arg4 = (switch_xml_t *) 0 ;
+ switch_xml_t *arg5 = (switch_xml_t *) 0 ;
+ switch_event_t *arg6 = (switch_event_t *) 0 ;
+ switch_status_t result;
+
+ arg1 = (char *)jarg1;
+ arg2 = (char *)jarg2;
+ arg3 = (switch_xml_t *)jarg3;
+ arg4 = (switch_xml_t *)jarg4;
+ arg5 = (switch_xml_t *)jarg5;
+ arg6 = (switch_event_t *)jarg6;
+ result = (switch_status_t)switch_xml_locate_group((char const *)arg1,(char const *)arg2,arg3,arg4,arg5,arg6);
+ jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_xml_locate_user(char * jarg1, char * jarg2, char * jarg3, char * jarg4, void * jarg5, void * jarg6, void * jarg7, void * jarg8, void * jarg9) {
int jresult ;
char *arg1 = (char *) 0 ;
char *arg2 = (char *) 0 ;
@@ -23437,7 +23837,8 @@
switch_xml_t *arg5 = (switch_xml_t *) 0 ;
switch_xml_t *arg6 = (switch_xml_t *) 0 ;
switch_xml_t *arg7 = (switch_xml_t *) 0 ;
- switch_event_t *arg8 = (switch_event_t *) 0 ;
+ switch_xml_t *arg8 = (switch_xml_t *) 0 ;
+ switch_event_t *arg9 = (switch_event_t *) 0 ;
switch_status_t result;
arg1 = (char *)jarg1;
@@ -23447,8 +23848,27 @@
arg5 = (switch_xml_t *)jarg5;
arg6 = (switch_xml_t *)jarg6;
arg7 = (switch_xml_t *)jarg7;
- arg8 = (switch_event_t *)jarg8;
- result = (switch_status_t)switch_xml_locate_user((char const *)arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4,arg5,arg6,arg7,arg8);
+ arg8 = (switch_xml_t *)jarg8;
+ arg9 = (switch_event_t *)jarg9;
+ result = (switch_status_t)switch_xml_locate_user((char const *)arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4,arg5,arg6,arg7,arg8,arg9);
+ jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_switch_xml_locate_user_in_domain(char * jarg1, void * jarg2, void * jarg3, void * jarg4) {
+ int jresult ;
+ char *arg1 = (char *) 0 ;
+ switch_xml_t arg2 = (switch_xml_t) 0 ;
+ switch_xml_t *arg3 = (switch_xml_t *) 0 ;
+ switch_xml_t *arg4 = (switch_xml_t *) 0 ;
+ switch_status_t result;
+
+ arg1 = (char *)jarg1;
+ arg2 = (switch_xml_t)jarg2;
+ arg3 = (switch_xml_t *)jarg3;
+ arg4 = (switch_xml_t *)jarg4;
+ result = (switch_status_t)switch_xml_locate_user_in_domain((char const *)arg1,arg2,arg3,arg4);
jresult = result;
return jresult;
}
Modified: freeswitch/branches/gmaruzz/src/mod/languages/mod_managed/managed/swig.cs
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/languages/mod_managed/managed/swig.cs (original)
+++ freeswitch/branches/gmaruzz/src/mod/languages/mod_managed/managed/swig.cs Wed Jan 7 10:17:00 2009
@@ -1499,6 +1499,22 @@
freeswitchPINVOKE.switch_core_session_unset_write_codec(SWIGTYPE_p_switch_core_session.getCPtr(session));
}
+ public static void switch_core_session_lock_codec_write(SWIGTYPE_p_switch_core_session session) {
+ freeswitchPINVOKE.switch_core_session_lock_codec_write(SWIGTYPE_p_switch_core_session.getCPtr(session));
+ }
+
+ public static void switch_core_session_unlock_codec_write(SWIGTYPE_p_switch_core_session session) {
+ freeswitchPINVOKE.switch_core_session_unlock_codec_write(SWIGTYPE_p_switch_core_session.getCPtr(session));
+ }
+
+ public static void switch_core_session_lock_codec_read(SWIGTYPE_p_switch_core_session session) {
+ freeswitchPINVOKE.switch_core_session_lock_codec_read(SWIGTYPE_p_switch_core_session.getCPtr(session));
+ }
+
+ public static void switch_core_session_unlock_codec_read(SWIGTYPE_p_switch_core_session session) {
+ freeswitchPINVOKE.switch_core_session_unlock_codec_read(SWIGTYPE_p_switch_core_session.getCPtr(session));
+ }
+
public static switch_status_t switch_core_session_get_read_impl(SWIGTYPE_p_switch_core_session session, switch_codec_implementation impp) {
switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_session_get_read_impl(SWIGTYPE_p_switch_core_session.getCPtr(session), switch_codec_implementation.getCPtr(impp));
return ret;
@@ -3262,8 +3278,8 @@
return ret;
}
- public static switch_status_t switch_ivr_unbind_dtmf_meta_session(SWIGTYPE_p_switch_core_session session) {
- switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_unbind_dtmf_meta_session(SWIGTYPE_p_switch_core_session.getCPtr(session));
+ public static switch_status_t switch_ivr_unbind_dtmf_meta_session(SWIGTYPE_p_switch_core_session session, uint key) {
+ switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_unbind_dtmf_meta_session(SWIGTYPE_p_switch_core_session.getCPtr(session), key);
return ret;
}
@@ -3524,6 +3540,10 @@
return ret;
}
+ public static void switch_rtp_intentional_bugs(SWIGTYPE_p_switch_rtp rtp_session, switch_rtp_bug_flag_t bugs) {
+ freeswitchPINVOKE.switch_rtp_intentional_bugs(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), (int)bugs);
+ }
+
public static switch_status_t switch_log_init(SWIGTYPE_p_apr_pool_t pool, switch_bool_t colorize) {
switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_log_init(SWIGTYPE_p_apr_pool_t.getCPtr(pool), (int)colorize);
return ret;
@@ -3602,6 +3622,12 @@
return ret;
}
+ public static switch_xml switch_xml_find_child_multi(switch_xml node, string childname) {
+ IntPtr cPtr = freeswitchPINVOKE.switch_xml_find_child_multi(switch_xml.getCPtr(node), childname);
+ switch_xml ret = (cPtr == IntPtr.Zero) ? null : new switch_xml(cPtr, false);
+ return ret;
+ }
+
public static string switch_xml_attr(switch_xml xml, string attr) {
string ret = freeswitchPINVOKE.switch_xml_attr(switch_xml.getCPtr(xml), attr);
return ret;
@@ -3718,8 +3744,18 @@
return ret;
}
- public static switch_status_t switch_xml_locate_user(string key, string user_name, string domain_name, string ip, SWIGTYPE_p_p_switch_xml root, SWIGTYPE_p_p_switch_xml domain, SWIGTYPE_p_p_switch_xml user, switch_event arg7) {
- switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_xml_locate_user(key, user_name, domain_name, ip, SWIGTYPE_p_p_switch_xml.getCPtr(root), SWIGTYPE_p_p_switch_xml.getCPtr(domain), SWIGTYPE_p_p_switch_xml.getCPtr(user), switch_event.getCPtr(arg7));
+ public static switch_status_t switch_xml_locate_group(string group_name, string domain_name, SWIGTYPE_p_p_switch_xml root, SWIGTYPE_p_p_switch_xml domain, SWIGTYPE_p_p_switch_xml group, switch_event arg5) {
+ switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_xml_locate_group(group_name, domain_name, SWIGTYPE_p_p_switch_xml.getCPtr(root), SWIGTYPE_p_p_switch_xml.getCPtr(domain), SWIGTYPE_p_p_switch_xml.getCPtr(group), switch_event.getCPtr(arg5));
+ return ret;
+ }
+
+ public static switch_status_t switch_xml_locate_user(string key, string user_name, string domain_name, string ip, SWIGTYPE_p_p_switch_xml root, SWIGTYPE_p_p_switch_xml domain, SWIGTYPE_p_p_switch_xml user, SWIGTYPE_p_p_switch_xml ingroup, switch_event arg8) {
+ switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_xml_locate_user(key, user_name, domain_name, ip, SWIGTYPE_p_p_switch_xml.getCPtr(root), SWIGTYPE_p_p_switch_xml.getCPtr(domain), SWIGTYPE_p_p_switch_xml.getCPtr(user), SWIGTYPE_p_p_switch_xml.getCPtr(ingroup), switch_event.getCPtr(arg8));
+ return ret;
+ }
+
+ public static switch_status_t switch_xml_locate_user_in_domain(string user_name, switch_xml domain, SWIGTYPE_p_p_switch_xml user, SWIGTYPE_p_p_switch_xml ingroup) {
+ switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_xml_locate_user_in_domain(user_name, switch_xml.getCPtr(domain), SWIGTYPE_p_p_switch_xml.getCPtr(user), SWIGTYPE_p_p_switch_xml.getCPtr(ingroup));
return ret;
}
@@ -4927,6 +4963,78 @@
[DllImport("mod_managed", EntryPoint="CSharp_delete_switch_rtp_hdr_t")]
public static extern void delete_switch_rtp_hdr_t(HandleRef jarg1);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38MaxBitRate_set")]
+ public static extern void switch_t38_options_t_T38MaxBitRate_set(HandleRef jarg1, uint jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38MaxBitRate_get")]
+ public static extern uint switch_t38_options_t_T38MaxBitRate_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxFillBitRemoval_set")]
+ public static extern void switch_t38_options_t_T38FaxFillBitRemoval_set(HandleRef jarg1, int jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxFillBitRemoval_get")]
+ public static extern int switch_t38_options_t_T38FaxFillBitRemoval_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxTranscodingMMR_set")]
+ public static extern void switch_t38_options_t_T38FaxTranscodingMMR_set(HandleRef jarg1, int jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxTranscodingMMR_get")]
+ public static extern int switch_t38_options_t_T38FaxTranscodingMMR_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxTranscodingJBIG_set")]
+ public static extern void switch_t38_options_t_T38FaxTranscodingJBIG_set(HandleRef jarg1, int jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxTranscodingJBIG_get")]
+ public static extern int switch_t38_options_t_T38FaxTranscodingJBIG_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxRateManagement_set")]
+ public static extern void switch_t38_options_t_T38FaxRateManagement_set(HandleRef jarg1, string jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxRateManagement_get")]
+ public static extern string switch_t38_options_t_T38FaxRateManagement_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxMaxBuffer_set")]
+ public static extern void switch_t38_options_t_T38FaxMaxBuffer_set(HandleRef jarg1, uint jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxMaxBuffer_get")]
+ public static extern uint switch_t38_options_t_T38FaxMaxBuffer_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxMaxDatagram_set")]
+ public static extern void switch_t38_options_t_T38FaxMaxDatagram_set(HandleRef jarg1, uint jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxMaxDatagram_get")]
+ public static extern uint switch_t38_options_t_T38FaxMaxDatagram_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxUdpEC_set")]
+ public static extern void switch_t38_options_t_T38FaxUdpEC_set(HandleRef jarg1, string jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38FaxUdpEC_get")]
+ public static extern string switch_t38_options_t_T38FaxUdpEC_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38VendorInfo_set")]
+ public static extern void switch_t38_options_t_T38VendorInfo_set(HandleRef jarg1, string jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_T38VendorInfo_get")]
+ public static extern string switch_t38_options_t_T38VendorInfo_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_ip_set")]
+ public static extern void switch_t38_options_t_ip_set(HandleRef jarg1, string jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_ip_get")]
+ public static extern string switch_t38_options_t_ip_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_port_set")]
+ public static extern void switch_t38_options_t_port_set(HandleRef jarg1, uint jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_t38_options_t_port_get")]
+ public static extern uint switch_t38_options_t_port_get(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_new_switch_t38_options_t")]
+ public static extern IntPtr new_switch_t38_options_t();
+
+ [DllImport("mod_managed", EntryPoint="CSharp_delete_switch_t38_options_t")]
+ public static extern void delete_switch_t38_options_t(HandleRef jarg1);
+
[DllImport("mod_managed", EntryPoint="CSharp_switch_input_args_t_input_callback_set")]
public static extern void switch_input_args_t_input_callback_set(HandleRef jarg1, HandleRef jarg2);
@@ -5782,6 +5890,18 @@
[DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_unset_write_codec")]
public static extern void switch_core_session_unset_write_codec(HandleRef jarg1);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_lock_codec_write")]
+ public static extern void switch_core_session_lock_codec_write(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_unlock_codec_write")]
+ public static extern void switch_core_session_unlock_codec_write(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_lock_codec_read")]
+ public static extern void switch_core_session_lock_codec_read(HandleRef jarg1);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_unlock_codec_read")]
+ public static extern void switch_core_session_unlock_codec_read(HandleRef jarg1);
+
[DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_get_read_impl")]
public static extern int switch_core_session_get_read_impl(HandleRef jarg1, HandleRef jarg2);
@@ -9320,7 +9440,7 @@
public static extern int switch_ivr_bind_dtmf_meta_session(HandleRef jarg1, uint jarg2, uint jarg3, string jarg4);
[DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_unbind_dtmf_meta_session")]
- public static extern int switch_ivr_unbind_dtmf_meta_session(HandleRef jarg1);
+ public static extern int switch_ivr_unbind_dtmf_meta_session(HandleRef jarg1, uint jarg2);
[DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_soft_hold")]
public static extern int switch_ivr_soft_hold(HandleRef jarg1, string jarg2, string jarg3, string jarg4);
@@ -9535,6 +9655,9 @@
[DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_activate_stun_ping")]
public static extern int switch_rtp_activate_stun_ping(HandleRef jarg1, string jarg2, ushort jarg3, uint jarg4, int jarg5);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_intentional_bugs")]
+ public static extern void switch_rtp_intentional_bugs(HandleRef jarg1, int jarg2);
+
[DllImport("mod_managed", EntryPoint="CSharp_switch_log_node_t_data_set")]
public static extern void switch_log_node_t_data_set(HandleRef jarg1, string jarg2);
@@ -9583,6 +9706,12 @@
[DllImport("mod_managed", EntryPoint="CSharp_switch_log_node_t_userdata_get")]
public static extern string switch_log_node_t_userdata_get(HandleRef jarg1);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_log_node_t_channel_set")]
+ public static extern void switch_log_node_t_channel_set(HandleRef jarg1, int jarg2);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_log_node_t_channel_get")]
+ public static extern int switch_log_node_t_channel_get(HandleRef jarg1);
+
[DllImport("mod_managed", EntryPoint="CSharp_new_switch_log_node_t")]
public static extern IntPtr new_switch_log_node_t();
@@ -9706,6 +9835,9 @@
[DllImport("mod_managed", EntryPoint="CSharp_switch_xml_find_child")]
public static extern IntPtr switch_xml_find_child(HandleRef jarg1, string jarg2, string jarg3, string jarg4);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_find_child_multi")]
+ public static extern IntPtr switch_xml_find_child_multi(HandleRef jarg1, string jarg2);
+
[DllImport("mod_managed", EntryPoint="CSharp_switch_xml_attr")]
public static extern string switch_xml_attr(HandleRef jarg1, string jarg2);
@@ -9769,8 +9901,14 @@
[DllImport("mod_managed", EntryPoint="CSharp_switch_xml_locate_domain")]
public static extern int switch_xml_locate_domain(string jarg1, HandleRef jarg2, HandleRef jarg3, HandleRef jarg4);
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_locate_group")]
+ public static extern int switch_xml_locate_group(string jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4, HandleRef jarg5, HandleRef jarg6);
+
[DllImport("mod_managed", EntryPoint="CSharp_switch_xml_locate_user")]
- public static extern int switch_xml_locate_user(string jarg1, string jarg2, string jarg3, string jarg4, HandleRef jarg5, HandleRef jarg6, HandleRef jarg7, HandleRef jarg8);
+ public static extern int switch_xml_locate_user(string jarg1, string jarg2, string jarg3, string jarg4, HandleRef jarg5, HandleRef jarg6, HandleRef jarg7, HandleRef jarg8, HandleRef jarg9);
+
+ [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_locate_user_in_domain")]
+ public static extern int switch_xml_locate_user_in_domain(string jarg1, HandleRef jarg2, HandleRef jarg3, HandleRef jarg4);
[DllImport("mod_managed", EntryPoint="CSharp_switch_xml_open_cfg")]
public static extern IntPtr switch_xml_open_cfg(string jarg1, HandleRef jarg2, HandleRef jarg3);
@@ -16062,7 +16200,8 @@
SBF_DIAL_BLEG = (1 << 2),
SBF_EXEC_BLEG = (1 << 3),
SBF_EXEC_OPPOSITE = (1 << 4),
- SBF_EXEC_SAME = (1 << 5)
+ SBF_EXEC_SAME = (1 << 5),
+ SBF_ONCE = (1 << 6)
}
}
@@ -18462,6 +18601,7 @@
SWITCH_MESSAGE_INDICATE_DISPLAY,
SWITCH_MESSAGE_INDICATE_TRANSCODING_NECESSARY,
SWITCH_MESSAGE_INDICATE_AUDIO_SYNC,
+ SWITCH_MESSAGE_INDICATE_REQUEST_IMAGE_MEDIA,
SWITCH_MESSAGE_INVALID
}
@@ -22265,6 +22405,16 @@
}
}
+ public switch_text_channel_t channel {
+ set {
+ freeswitchPINVOKE.switch_log_node_t_channel_set(swigCPtr, (int)value);
+ }
+ get {
+ switch_text_channel_t ret = (switch_text_channel_t)freeswitchPINVOKE.switch_log_node_t_channel_get(swigCPtr);
+ return ret;
+ }
+ }
+
public switch_log_node_t() : this(freeswitchPINVOKE.new_switch_log_node_t(), true) {
}
@@ -22561,6 +22711,23 @@
namespace FreeSWITCH.Native {
+public enum switch_rtp_bug_flag_t {
+ RTP_BUG_NONE = 0,
+ RTP_BUG_CISCO_SKIP_MARK_BIT_2833 = (1 << 0),
+ RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833 = (1 << 1)
+}
+
+}
+/* ----------------------------------------------------------------------------
+ * 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_rtp_crypto_direction_t {
SWITCH_RTP_CRYPTO_SEND,
SWITCH_RTP_CRYPTO_RECV,
@@ -23986,6 +24153,163 @@
namespace FreeSWITCH.Native {
+using System;
+using System.Runtime.InteropServices;
+
+public class switch_t38_options_t : IDisposable {
+ private HandleRef swigCPtr;
+ protected bool swigCMemOwn;
+
+ internal switch_t38_options_t(IntPtr cPtr, bool cMemoryOwn) {
+ swigCMemOwn = cMemoryOwn;
+ swigCPtr = new HandleRef(this, cPtr);
+ }
+
+ internal static HandleRef getCPtr(switch_t38_options_t obj) {
+ return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
+ }
+
+ ~switch_t38_options_t() {
+ Dispose();
+ }
+
+ public virtual void Dispose() {
+ lock(this) {
+ if(swigCPtr.Handle != IntPtr.Zero && swigCMemOwn) {
+ swigCMemOwn = false;
+ freeswitchPINVOKE.delete_switch_t38_options_t(swigCPtr);
+ }
+ swigCPtr = new HandleRef(null, IntPtr.Zero);
+ GC.SuppressFinalize(this);
+ }
+ }
+
+ public uint T38MaxBitRate {
+ set {
+ freeswitchPINVOKE.switch_t38_options_t_T38MaxBitRate_set(swigCPtr, value);
+ }
+ get {
+ uint ret = freeswitchPINVOKE.switch_t38_options_t_T38MaxBitRate_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public switch_bool_t T38FaxFillBitRemoval {
+ set {
+ freeswitchPINVOKE.switch_t38_options_t_T38FaxFillBitRemoval_set(swigCPtr, (int)value);
+ }
+ get {
+ switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_t38_options_t_T38FaxFillBitRemoval_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public switch_bool_t T38FaxTranscodingMMR {
+ set {
+ freeswitchPINVOKE.switch_t38_options_t_T38FaxTranscodingMMR_set(swigCPtr, (int)value);
+ }
+ get {
+ switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_t38_options_t_T38FaxTranscodingMMR_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public switch_bool_t T38FaxTranscodingJBIG {
+ set {
+ freeswitchPINVOKE.switch_t38_options_t_T38FaxTranscodingJBIG_set(swigCPtr, (int)value);
+ }
+ get {
+ switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_t38_options_t_T38FaxTranscodingJBIG_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public string T38FaxRateManagement {
+ set {
+ freeswitchPINVOKE.switch_t38_options_t_T38FaxRateManagement_set(swigCPtr, value);
+ }
+ get {
+ string ret = freeswitchPINVOKE.switch_t38_options_t_T38FaxRateManagement_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public uint T38FaxMaxBuffer {
+ set {
+ freeswitchPINVOKE.switch_t38_options_t_T38FaxMaxBuffer_set(swigCPtr, value);
+ }
+ get {
+ uint ret = freeswitchPINVOKE.switch_t38_options_t_T38FaxMaxBuffer_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public uint T38FaxMaxDatagram {
+ set {
+ freeswitchPINVOKE.switch_t38_options_t_T38FaxMaxDatagram_set(swigCPtr, value);
+ }
+ get {
+ uint ret = freeswitchPINVOKE.switch_t38_options_t_T38FaxMaxDatagram_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public string T38FaxUdpEC {
+ set {
+ freeswitchPINVOKE.switch_t38_options_t_T38FaxUdpEC_set(swigCPtr, value);
+ }
+ get {
+ string ret = freeswitchPINVOKE.switch_t38_options_t_T38FaxUdpEC_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public string T38VendorInfo {
+ set {
+ freeswitchPINVOKE.switch_t38_options_t_T38VendorInfo_set(swigCPtr, value);
+ }
+ get {
+ string ret = freeswitchPINVOKE.switch_t38_options_t_T38VendorInfo_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public string ip {
+ set {
+ freeswitchPINVOKE.switch_t38_options_t_ip_set(swigCPtr, value);
+ }
+ get {
+ string ret = freeswitchPINVOKE.switch_t38_options_t_ip_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public uint port {
+ set {
+ freeswitchPINVOKE.switch_t38_options_t_port_set(swigCPtr, value);
+ }
+ get {
+ uint ret = freeswitchPINVOKE.switch_t38_options_t_port_get(swigCPtr);
+ return ret;
+ }
+ }
+
+ public switch_t38_options_t() : this(freeswitchPINVOKE.new_switch_t38_options_t(), true) {
+ }
+
+}
+
+}
+/* ----------------------------------------------------------------------------
+ * 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_text_channel_t {
SWITCH_CHANNEL_ID_LOG,
SWITCH_CHANNEL_ID_LOG_CLEAN,
Modified: freeswitch/branches/gmaruzz/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c Wed Jan 7 10:17:00 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/gmaruzz/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c Wed Jan 7 10:17:00 2009
@@ -95,10 +95,12 @@
if (!globals.port) {
globals.port = 8080;
}
- if (user && pass && realm) {
+ if (realm) {
set_global_realm(realm);
- set_global_user(user);
- set_global_pass(pass);
+ if (user && pass) {
+ set_global_user(user);
+ set_global_pass(pass);
+ }
}
switch_xml_free(xml);
@@ -176,6 +178,7 @@
if ((dp = strchr(user, '@'))) {
*dp++ = '\0';
domain_name = dp;
+ at++;
}
if (!domain_name) {
@@ -194,19 +197,21 @@
goto fail;
}
- switch_snprintf(z, sizeof(z), "%s:%s", globals.user, globals.pass);
- Base64Encode(z, t);
+ if (!switch_strlen_zero(globals.user)) {
+ switch_snprintf(z, sizeof(z), "%s:%s", globals.user, globals.pass);
+ Base64Encode(z, t);
- if (!strcmp(p, t)) {
- r->requestInfo.user = strdup(user);
- goto authed;
+ if (!strcmp(p, t)) {
+ r->requestInfo.user = strdup(user);
+ goto authed;
+ }
}
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, params) != SWITCH_STATUS_SUCCESS) {
+ 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;
}
@@ -496,7 +501,7 @@
}
}
- if (!fs_user || !strcmp(fs_user, globals.user)) {
+ if (!fs_user || (!switch_strlen_zero(globals.user) && !strcmp(fs_user, globals.user))) {
auth = 1;
} else {
if (!j) {
Modified: freeswitch/branches/gmaruzz/src/switch_apr.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_apr.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_apr.c Wed Jan 7 10:17:00 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/gmaruzz/src/switch_channel.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_channel.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_channel.c Wed Jan 7 10:17:00 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;
@@ -1628,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 {
@@ -1660,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);
@@ -1765,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/gmaruzz/src/switch_console.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_console.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_console.c Wed Jan 7 10:17:00 2009
@@ -249,10 +249,18 @@
SWITCH_STANDARD_STREAM(stream);
if (stream.data) {
+ FILE *handle = switch_core_get_console();
+
if (switch_api_execute(cmd, arg, NULL, &stream) == SWITCH_STATUS_SUCCESS) {
- switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_CONSOLE, "API CALL [%s(%s)] output:\n%s\n", cmd, arg ? arg : "", (char *) stream.data);
+ if (handle) {
+ fprintf(handle, "API CALL [%s(%s)] output:\n%s\n", cmd, arg ? arg : "", (char *) stream.data);
+ fflush(handle);
+ }
} else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Unknown Command: %s\n", cmd);
+ if (handle) {
+ fprintf(handle, "Unknown Command: %s\n", cmd);
+ fflush(handle);
+ }
}
free(stream.data);
} else {
Modified: freeswitch/branches/gmaruzz/src/switch_core.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_core.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_core.c Wed Jan 7 10:17:00 2009
@@ -168,7 +168,7 @@
SWITCH_DECLARE(void) switch_core_remove_state_handler(const switch_state_handler_table_t *state_handler)
{
- int index, total = 0;
+ int index, tmp_index = 0;
const switch_state_handler_table_t *tmp[SWITCH_MAX_STATE_HANDLERS+1] = { 0 };
switch_mutex_lock(runtime.global_mutex);
@@ -179,13 +179,12 @@
if (cur == state_handler) {
continue;
}
- tmp[index] = runtime.state_handlers[index];
- total++;
+ tmp[tmp_index++] = cur;
}
runtime.state_handler_index = 0;
- for (index = 0; index < total; index++) {
+ for (index = 0; index < tmp_index; index++) {
runtime.state_handlers[runtime.state_handler_index++] = tmp[index];
}
switch_mutex_unlock(runtime.global_mutex);
@@ -881,7 +880,7 @@
if (domain) {
switch_event_t *my_params = NULL;
switch_xml_t x_domain, xml_root;
- switch_xml_t ut;
+ switch_xml_t gt, gts, ut, uts;
switch_event_create(&my_params, SWITCH_EVENT_GENERAL);
switch_assert(my_params);
@@ -914,6 +913,32 @@
free(token);
}
}
+
+ for (gts = switch_xml_child(x_domain, "groups"); gts; gts = gts->next) {
+ for (gt = switch_xml_child(gts, "group"); gt; gt = gt->next) {
+ for (uts = switch_xml_child(gt, "users"); uts; uts = uts->next) {
+ for (ut = switch_xml_child(uts, "user"); ut; ut = ut->next) {
+ const char *user_cidr = switch_xml_attr(ut, "cidr");
+ const char *id = switch_xml_attr(ut, "id");
+
+ if (id && user_cidr) {
+ char *token = switch_mprintf("%s@%s", id, domain);
+ switch_assert(token);
+
+ if (switch_network_list_add_cidr_token(list, user_cidr, ok, token) == SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Adding %s (%s) [%s] to list %s\n",
+ user_cidr, ok ? "allow" : "deny", switch_str_nil(token), name);
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Adding %s (%s) [%s] to list %s\n",
+ user_cidr, ok ? "allow" : "deny", switch_str_nil(token), name);
+ }
+ free(token);
+ }
+ }
+ }
+ }
+ }
+
switch_xml_free(xml_root);
} else if (cidr) {
if (switch_network_list_add_cidr(list, cidr, ok) == SWITCH_STATUS_SUCCESS) {
Modified: freeswitch/branches/gmaruzz/src/switch_core_io.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_core_io.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_core_io.c Wed Jan 7 10:17:00 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;
}
@@ -571,7 +567,7 @@
switch_status_t status = SWITCH_STATUS_FALSE;
switch_frame_t *enc_frame = NULL, *write_frame = frame;
- unsigned int flag = 0, need_codec = 0, perfect = 0, do_bugs = 0, do_write = 0, do_resample = 0, ptime_mismatch = 0, pass_cng = 0;
+ unsigned int flag = 0, need_codec = 0, perfect = 0, do_bugs = 0, do_write = 0, do_resample = 0, ptime_mismatch = 0, pass_cng = 0, resample = 0;
switch_assert(session != NULL);
switch_assert(frame != NULL);
@@ -645,6 +641,7 @@
if (!need_codec) {
do_write = TRUE;
+ write_frame = frame;
goto done;
}
@@ -674,6 +671,7 @@
switch (status) {
case SWITCH_STATUS_RESAMPLE:
+ resample++;
write_frame = &session->raw_write_frame;
if (!session->write_resampler) {
switch_mutex_lock(session->resample_mutex);
@@ -842,6 +840,7 @@
switch (status) {
case SWITCH_STATUS_RESAMPLE:
+ resample++;
/* switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Fixme 2\n"); */
case SWITCH_STATUS_SUCCESS:
session->enc_write_frame.codec = session->write_codec;
@@ -916,6 +915,7 @@
&session->enc_write_frame.datalen, &session->enc_write_frame.rate, &flag);
switch (status) {
case SWITCH_STATUS_RESAMPLE:
+ resample++;
session->enc_write_frame.codec = session->write_codec;
session->enc_write_frame.samples = enc_frame->datalen / sizeof(int16_t);
session->enc_write_frame.m = frame->m;
@@ -987,9 +987,14 @@
switch_mutex_unlock(session->resample_mutex);
}
+
if (flag & SFF_CNG) {
switch_set_flag(write_frame, SFF_CNG);
}
+
+ if (ptime_mismatch || resample) {
+ write_frame->timestamp = 0;
+ }
if ((status = perform_write(session, write_frame, flags, stream_id)) != SWITCH_STATUS_SUCCESS) {
break;
@@ -1003,8 +1008,12 @@
done:
+ if (ptime_mismatch || resample) {
+ write_frame->timestamp = 0;
+ }
+
if (do_write) {
- status = perform_write(session, frame, flags, stream_id);
+ status = perform_write(session, write_frame, flags, stream_id);
}
error:
Modified: freeswitch/branches/gmaruzz/src/switch_core_session.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_core_session.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_core_session.c Wed Jan 7 10:17:00 2009
@@ -421,28 +421,29 @@
}
static const char *message_names[] = {
- "SWITCH_MESSAGE_REDIRECT_AUDIO",
- "SWITCH_MESSAGE_TRANSMIT_TEXT",
- "SWITCH_MESSAGE_INDICATE_ANSWER",
- "SWITCH_MESSAGE_INDICATE_PROGRESS",
- "SWITCH_MESSAGE_INDICATE_BRIDGE",
- "SWITCH_MESSAGE_INDICATE_UNBRIDGE",
- "SWITCH_MESSAGE_INDICATE_TRANSFER",
- "SWITCH_MESSAGE_INDICATE_RINGING",
- "SWITCH_MESSAGE_INDICATE_MEDIA",
- "SWITCH_MESSAGE_INDICATE_NOMEDIA",
- "SWITCH_MESSAGE_INDICATE_HOLD",
- "SWITCH_MESSAGE_INDICATE_UNHOLD",
- "SWITCH_MESSAGE_INDICATE_REDIRECT",
- "SWITCH_MESSAGE_INDICATE_RESPOND",
- "SWITCH_MESSAGE_INDICATE_BROADCAST",
- "SWITCH_MESSAGE_INDICATE_MEDIA_REDIRECT",
- "SWITCH_MESSAGE_INDICATE_DEFLECT",
- "SWITCH_MESSAGE_INDICATE_VIDEO_REFRESH_REQ",
- "SWITCH_MESSAGE_INDICATE_DISPLAY",
- "SWITCH_MESSAGE_INDICATE_TRANSCODING_NECESSARY",
- "SWITCH_MESSAGE_INDICATE_AUDIO_SYNC",
- "SWITCH_MESSAGE_INVALID"
+ "REDIRECT_AUDIO",
+ "TRANSMIT_TEXT",
+ "ANSWER",
+ "PROGRESS",
+ "BRIDGE",
+ "UNBRIDGE",
+ "TRANSFER",
+ "RINGING",
+ "MEDIA",
+ "NOMEDIA",
+ "HOLD",
+ "UNHOLD",
+ "REDIRECT",
+ "RESPOND",
+ "BROADCAST",
+ "MEDIA_REDIRECT",
+ "DEFLECT",
+ "VIDEO_REFRESH_REQ",
+ "DISPLAY",
+ "TRANSCODING_NECESSARY",
+ "AUDIO_SYNC",
+ "REQUEST_IMAGE_MEDIA",
+ "INVALID"
};
SWITCH_DECLARE(switch_status_t) switch_core_session_perform_receive_message(switch_core_session_t *session,
Modified: freeswitch/branches/gmaruzz/src/switch_core_state_machine.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_core_state_machine.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_core_state_machine.c Wed Jan 7 10:17:00 2009
@@ -206,6 +206,7 @@
//static switch_hash_t *stack_table = NULL;
static Hash stack_table;
+static switch_mutex_t *stack_mutex = NULL;
#if defined (__GNUC__) && defined (LINUX) && defined (HAVE_EXECINFO_H)
#include <execinfo.h>
@@ -244,9 +245,14 @@
switch_thread_id_t thread_id;
jmp_buf *env;
- if (sig && (thread_id = switch_thread_self())
- && (env = (jmp_buf *) sqlite3HashFind(&stack_table, &thread_id, sizeof(thread_id)))) {
- //&& (env = (jmp_buf *) switch_core_hash_find(stack_table, (char *)&thread_id, sizeof(thread_id)))) {
+ if (!sig) return;
+
+ thread_id = switch_thread_self();
+ switch_mutex_lock(stack_mutex);
+ env = (jmp_buf *) sqlite3HashFind(&stack_table, &thread_id, sizeof(thread_id));
+ switch_mutex_unlock(stack_mutex);
+
+ if (thread_id && env) {
print_trace();
longjmp(*env, sig);
} else {
@@ -259,7 +265,10 @@
{
if (switch_test_flag((&runtime), SCF_CRASH_PROT)) {
+ switch_mutex_init(&stack_mutex, SWITCH_MUTEX_NESTED, pool);
+ switch_mutex_lock(stack_mutex);
sqlite3HashInit(&stack_table, SQLITE_HASH_BINARY, 0);
+ switch_mutex_unlock(stack_mutex);
}
}
@@ -328,8 +337,9 @@
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Thread has crashed for channel %s\n", switch_channel_get_name(session->channel));
switch_channel_hangup(session->channel, SWITCH_CAUSE_CRASH);
} else {
+ switch_mutex_lock(stack_mutex);
sqlite3HashInsert(&stack_table, &thread_id, sizeof(thread_id), (void *) &env);
- //apr_hash_set(stack_table, &thread_id, sizeof(thread_id), &env);
+ switch_mutex_unlock(stack_mutex);
}
}
@@ -399,6 +409,8 @@
STATE_MACRO(hangup, "HANGUP");
+ switch_core_media_bug_remove_all(session);
+
hook_var = switch_channel_get_variable(session->channel, SWITCH_API_HANGUP_HOOK_VARIABLE);
if (switch_true(switch_channel_get_variable(session->channel, SWITCH_SESSION_IN_HANGUP_HOOK_VARIABLE))) {
use_session = session;
Modified: freeswitch/branches/gmaruzz/src/switch_dso.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_dso.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_dso.c Wed Jan 7 10:17:00 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();
Modified: freeswitch/branches/gmaruzz/src/switch_event.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_event.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_event.c Wed Jan 7 10:17:00 2009
@@ -930,13 +930,20 @@
static switch_xml_t add_xml_header(switch_xml_t xml, char *name, char *value, int offset)
{
- switch_xml_t header = switch_xml_add_child_d(xml, "header", offset);
-
+ switch_xml_t header = switch_xml_add_child_d(xml, name, offset);
+
if (header) {
- switch_xml_set_attr_d(header, "name", name);
- switch_xml_set_attr_d(header, "value", value);
+ int encode_len = (strlen(value) * 3) + 1;
+ char *encode_buf = malloc(encode_len);
+
+ switch_assert(encode_buf);
+
+ memset(encode_buf, 0, encode_len);
+ switch_url_encode((char *) value, encode_buf, encode_len);
+ switch_xml_set_txt_d(header, encode_buf);
+ free(encode_buf);
}
-
+
return header;
}
@@ -948,6 +955,7 @@
switch_xml_t xml = NULL;
uint32_t off = 0;
va_list ap;
+ switch_xml_t xheaders = NULL;
if (!(xml = switch_xml_new("event"))) {
return xml;
@@ -972,8 +980,11 @@
}
}
- for (hp = event->headers; hp; hp = hp->next) {
- add_xml_header(xml, hp->name, hp->value, off++);
+ if ((xheaders = switch_xml_add_child_d(xml, "headers", off++))) {
+ int hoff = 0;
+ for (hp = event->headers; hp; hp = hp->next) {
+ add_xml_header(xheaders, hp->name, hp->value, hoff++);
+ }
}
if (!switch_strlen_zero(data)) {
@@ -1032,7 +1043,7 @@
switch_event_add_header_string(*event, SWITCH_STACK_BOTTOM, "Event-Date-Local", date);
switch_rfc822_date(date, ts);
switch_event_add_header_string(*event, SWITCH_STACK_BOTTOM, "Event-Date-GMT", date);
- switch_event_add_header(*event, SWITCH_STACK_BOTTOM, "Event-Date-timestamp", "%" SWITCH_UINT64_T_FMT, (uint64_t) ts);
+ switch_event_add_header(*event, SWITCH_STACK_BOTTOM, "Event-Date-Timestamp", "%" SWITCH_UINT64_T_FMT, (uint64_t) ts);
switch_event_add_header_string(*event, SWITCH_STACK_BOTTOM, "Event-Calling-File", switch_cut_path(file));
switch_event_add_header_string(*event, SWITCH_STACK_BOTTOM, "Event-Calling-Function", func);
switch_event_add_header(*event, SWITCH_STACK_BOTTOM, "Event-Calling-Line-Number", "%d", line);
Modified: freeswitch/branches/gmaruzz/src/switch_ivr.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_ivr.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_ivr.c Wed Jan 7 10:17:00 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);
}
@@ -1920,7 +1924,7 @@
SWITCH_DECLARE(switch_status_t) switch_ivr_set_user(switch_core_session_t *session, const char *data)
{
- switch_xml_t x_domain, xml = NULL, x_user, x_param, x_params;
+ switch_xml_t x_domain, xml = NULL, x_user, x_param, x_params, x_group = NULL;
char *user, *mailbox, *domain;
switch_channel_t *channel = switch_core_session_get_channel(session);
switch_status_t status = SWITCH_STATUS_FALSE;
@@ -1937,7 +1941,7 @@
*domain++ = '\0';
- if (switch_xml_locate_user("id", user, domain, NULL, &xml, &x_domain, &x_user, NULL) != SWITCH_STATUS_SUCCESS) {
+ if (switch_xml_locate_user("id", user, domain, NULL, &xml, &x_domain, &x_user, &x_group, NULL) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "can't find user [%s@%s]\n", user, domain);
goto done;
}
@@ -1959,6 +1963,17 @@
}
}
+ if (x_group && (x_params = switch_xml_child(x_group, "variables"))) {
+ for (x_param = switch_xml_child(x_params, "variable"); x_param; x_param = x_param->next) {
+ const char *var = switch_xml_attr(x_param, "name");
+ const char *val = switch_xml_attr(x_param, "value");
+
+ if (var && val) {
+ switch_channel_set_variable(channel, var, val);
+ }
+ }
+ }
+
if ((x_params = switch_xml_child(x_user, "variables"))) {
for (x_param = switch_xml_child(x_params, "variable"); x_param; x_param = x_param->next) {
const char *var = switch_xml_attr(x_param, "name");
Modified: freeswitch/branches/gmaruzz/src/switch_ivr_async.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_ivr_async.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_ivr_async.c Wed Jan 7 10:17:00 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,19 @@
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]));
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Unbinding meta digit '%c'\n",
+ switch_channel_get_name(channel), dtmf->digit);
+ }
+
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "%s Ignoring meta digit '%c' not mapped\n",
switch_channel_get_name(channel), dtmf->digit);
@@ -1534,10 +1584,26 @@
return SWITCH_STATUS_SUCCESS;
}
-SWITCH_DECLARE(switch_status_t) switch_ivr_unbind_dtmf_meta_session(switch_core_session_t *session)
+SWITCH_DECLARE(switch_status_t) switch_ivr_unbind_dtmf_meta_session(switch_core_session_t *session, uint32_t key)
{
switch_channel_t *channel = switch_core_session_get_channel(session);
- switch_channel_set_private(channel, SWITCH_META_VAR_KEY, NULL);
+
+ if (key) {
+ dtmf_meta_data_t *md = switch_channel_get_private(channel, SWITCH_META_VAR_KEY);
+
+ if (!md || key > 9) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid key %u\n", key);
+ return SWITCH_STATUS_FALSE;
+ }
+
+ memset(&md->sr[SWITCH_DTMF_RECV].map[key], 0, sizeof(md->sr[SWITCH_DTMF_RECV].map[key]));
+ memset(&md->sr[SWITCH_DTMF_SEND].map[key], 0, sizeof(md->sr[SWITCH_DTMF_SEND].map[key]));
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "UnBound A-Leg: %d\n", key);
+
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "UnBound A-Leg: ALL\n");
+ switch_channel_set_private(channel, SWITCH_META_VAR_KEY, NULL);
+ }
return SWITCH_STATUS_SUCCESS;
}
@@ -1566,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)) {
@@ -2134,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/gmaruzz/src/switch_ivr_bridge.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_ivr_bridge.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_ivr_bridge.c Wed Jan 7 10:17:00 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);
}
@@ -1187,7 +1188,7 @@
switch_channel_answer(rchannel);
}
- switch_channel_set_state_flag(rchannel, CF_TRANSFER);
+ switch_channel_set_state_flag(rchannel, CF_TRANSFER);
switch_channel_set_state(rchannel, CS_PARK);
if (bchannel) {
Modified: freeswitch/branches/gmaruzz/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_ivr_originate.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_ivr_originate.c Wed Jan 7 10:17:00 2009
@@ -39,6 +39,16 @@
{
switch_channel_t *channel = switch_core_session_get_channel(session);
+ 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)) {
+ if (!switch_channel_media_ready(channel)) {
+ switch_yield(10000);
+ } else {
+ switch_ivr_sleep(session, 10, SWITCH_FALSE, NULL);
+ }
+ }
+ }
+
switch_channel_clear_state_handler(channel, &originate_state_handlers);
return SWITCH_STATUS_FALSE;
@@ -324,7 +334,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);
@@ -545,7 +555,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)
Modified: freeswitch/branches/gmaruzz/src/switch_log.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_log.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_log.c Wed Jan 7 10:17:00 2009
@@ -122,6 +122,7 @@
if (!LEVELS[x]) {
break;
}
+
if (!strcasecmp(LEVELS[x], str)) {
level = (switch_log_level_t) x;
break;
Modified: freeswitch/branches/gmaruzz/src/switch_rtp.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_rtp.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_rtp.c Wed Jan 7 10:17:00 2009
@@ -199,6 +199,7 @@
switch_port_t stun_port;
int from_auto;
uint32_t cng_count;
+ switch_rtp_bug_flag_t rtp_bugs;
};
static int global_init = 0;
@@ -486,6 +487,11 @@
return port;
}
+SWITCH_DECLARE(void) switch_rtp_intentional_bugs(switch_rtp_t *rtp_session, switch_rtp_bug_flag_t bugs)
+{
+ rtp_session->rtp_bugs = bugs;
+}
+
SWITCH_DECLARE(switch_status_t) switch_rtp_set_local_address(switch_rtp_t *rtp_session, const char *host, switch_port_t port, const char **err)
{
switch_socket_t *new_sock = NULL, *old_sock = NULL;
@@ -1204,7 +1210,7 @@
rtp_session->dtmf_data.timestamp_dtmf,
rtp_session->dtmf_data.out_digit_sofar,
rtp_session->dtmf_data.out_digit_sub_sofar, rtp_session->dtmf_data.out_digit_dur, rtp_session->seq);
- if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_BUGGY_2833)) {
+ if (rtp_session->rtp_bugs & RTP_BUG_SONUS_SEND_INVALID_TIMESTAMP_2833) {
rtp_session->dtmf_data.timestamp_dtmf = rtp_session->last_write_ts + samples;
}
}
@@ -1257,7 +1263,7 @@
switch_rtp_write_manual(rtp_session,
rtp_session->dtmf_data.out_digit_packet,
4,
- switch_test_flag(rtp_session, SWITCH_RTP_FLAG_BUGGY_2833) ? 0 : 1,
+ rtp_session->rtp_bugs & RTP_BUG_CISCO_SKIP_MARK_BIT_2833 ? 0 : 1,
rtp_session->te, rtp_session->dtmf_data.timestamp_dtmf, &flags);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Send start packet for [%c] ts=%u dur=%d/%d/%d seq=%d\n",
Modified: freeswitch/branches/gmaruzz/src/switch_xml.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/switch_xml.c (original)
+++ freeswitch/branches/gmaruzz/src/switch_xml.c Wed Jan 7 10:17:00 2009
@@ -300,6 +300,62 @@
return p;
}
+SWITCH_DECLARE(switch_xml_t) switch_xml_find_child_multi(switch_xml_t node, const char *childname, ...)
+{
+ switch_xml_t p = NULL;
+ const char *names[256] = {0};
+ const char *vals[256] = {0};
+ int x, i = 0;
+ va_list ap;
+ const char *attrname, *value = NULL;
+
+ va_start(ap, childname);
+
+ while(i < 255) {
+ if ((attrname = va_arg(ap, const char *))) {
+ value = va_arg(ap, const char *);
+ }
+ if (attrname && value) {
+ names[i] = attrname;
+ vals[i] = value;
+ } else {
+ break;
+ }
+ i++;
+ }
+
+ va_end(ap);
+
+ if (!(childname && i)) {
+ return node;
+ }
+
+ for (p = switch_xml_child(node, childname); p; p = p->next) {
+ for (x = 0; x < i; x++) {
+ if (names[x] && vals[x]) {
+ const char *aname = switch_xml_attr(p, names[x]);
+
+ if (aname) {
+ if (*vals[x] == '!') {
+ const char *sval = vals[x] + 1;
+ if (sval && strcasecmp(aname, sval)) {
+ goto done;
+ }
+ } else {
+ if (!strcasecmp(aname, vals[x])) {
+ goto done;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ done:
+
+ return p;
+}
+
// returns the first child tag with the given name or NULL if not found
SWITCH_DECLARE(switch_xml_t) switch_xml_child(switch_xml_t xml, const char *name)
{
@@ -1528,6 +1584,112 @@
return status;
}
+SWITCH_DECLARE(switch_status_t) switch_xml_locate_group(const char *group_name,
+ const char *domain_name,
+ switch_xml_t *root,
+ switch_xml_t *domain,
+ switch_xml_t *group,
+ switch_event_t *params)
+{
+ switch_status_t status = SWITCH_STATUS_FALSE;
+ switch_event_t *my_params = NULL;
+ switch_xml_t groups = NULL;
+
+ *root = NULL;
+ *group = NULL;
+ *domain = NULL;
+
+ if (!params) {
+ switch_event_create(&my_params, SWITCH_EVENT_REQUEST_PARAMS);
+ switch_assert(my_params);
+ params = my_params;
+ }
+
+ if (group_name) {
+ switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "group_name", group_name);
+ }
+
+ if (domain_name) {
+ switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "domain", domain_name);
+ }
+
+ if ((status = switch_xml_locate_domain(domain_name, params, root, domain)) != SWITCH_STATUS_SUCCESS) {
+ goto end;
+ }
+
+ status = SWITCH_STATUS_FALSE;
+
+ if ((groups = switch_xml_child(*domain, "groups"))) {
+ if ((*group = switch_xml_find_child(groups, "group", "name", group_name))) {
+ status = SWITCH_STATUS_SUCCESS;
+ }
+ }
+
+ end:
+
+ if (my_params) {
+ switch_event_destroy(&my_params);
+ }
+
+ return status;
+}
+
+static switch_status_t find_user_in_tag(switch_xml_t tag, const char *ip, const char *user_name, const char *key, switch_event_t *params, switch_xml_t *user)
+{
+ const char *type = "!pointer";
+ const char *val;
+
+ if (params && (val = switch_event_get_header(params, "user_type"))) {
+ if (!strcasecmp(val, "any")) {
+ type = NULL;
+ } else {
+ type = val;
+ }
+ }
+
+ if (ip) {
+ if ((*user = switch_xml_find_child_multi(tag, "user", "ip", ip, "type", type, NULL))) {
+ return SWITCH_STATUS_SUCCESS;
+ }
+ }
+
+ if (user_name) {
+ if (params && switch_event_get_header(params, (char *) "mailbox")) {
+ if ((*user = switch_xml_find_child_multi(tag, "user", "mailbox", user_name, "type", type, NULL))) {
+ return SWITCH_STATUS_SUCCESS;
+ }
+ }
+
+ if ((*user = switch_xml_find_child_multi(tag, "user", key, user_name, "type", type, NULL))) {
+ return SWITCH_STATUS_SUCCESS;
+ }
+ }
+
+ return SWITCH_STATUS_FALSE;
+
+}
+
+SWITCH_DECLARE(switch_status_t) switch_xml_locate_user_in_domain(const char *user_name, switch_xml_t domain, switch_xml_t *user, switch_xml_t *ingroup)
+{
+ switch_xml_t group = NULL, groups = NULL, users = NULL;
+ switch_status_t status = SWITCH_STATUS_FALSE;
+
+ if ((groups = switch_xml_child(domain, "groups"))) {
+ for (group = switch_xml_child(groups, "group"); group; group = group->next) {
+ if ((users = switch_xml_child(group, "users"))) {
+ if ((status = find_user_in_tag(users, NULL, user_name, "id", NULL, user)) == SWITCH_STATUS_SUCCESS) {
+ if (ingroup) {
+ *ingroup = group;
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ return status;
+}
+
SWITCH_DECLARE(switch_status_t) switch_xml_locate_user(const char *key,
const char *user_name,
const char *domain_name,
@@ -1535,15 +1697,21 @@
switch_xml_t *root,
switch_xml_t *domain,
switch_xml_t *user,
+ switch_xml_t *ingroup,
switch_event_t *params)
{
switch_status_t status = SWITCH_STATUS_FALSE;
- switch_event_t *my_params = NULL;
-
+ switch_event_t *my_params = NULL, *search_params = NULL;
+ switch_xml_t group = NULL, groups = NULL, users = NULL;
+
*root = NULL;
*user = NULL;
*domain = NULL;
+ if (ingroup) {
+ *ingroup = NULL;
+ }
+
if (!params) {
switch_event_create(&my_params, SWITCH_EVENT_REQUEST_PARAMS);
switch_assert(my_params);
@@ -1570,26 +1738,27 @@
status = SWITCH_STATUS_FALSE;
- if (ip) {
- if ((*user = switch_xml_find_child(*domain, "user", "ip", ip))) {
- status = SWITCH_STATUS_SUCCESS;
- goto end;
- }
- }
+ if (params != my_params) {
+ search_params = params;
+ }
- if (user_name) {
- if (params != my_params && switch_event_get_header(params, (char *) "mailbox")) {
- if ((*user = switch_xml_find_child(*domain, "user", "mailbox", user_name))) {
- status = SWITCH_STATUS_SUCCESS;
- goto end;
+ if ((groups = switch_xml_child(*domain, "groups"))) {
+ for (group = switch_xml_child(groups, "group"); group; group = group->next) {
+ if ((users = switch_xml_child(group, "users"))) {
+ if ((status = find_user_in_tag(users, ip, user_name, key, params, user)) == SWITCH_STATUS_SUCCESS) {
+ if (ingroup) {
+ *ingroup = group;
+ }
+ break;
+ }
}
}
+ }
- if ((*user = switch_xml_find_child(*domain, "user", key, user_name))) {
- status = SWITCH_STATUS_SUCCESS;
- goto end;
- }
+ if (status != SWITCH_STATUS_SUCCESS) {
+ status = find_user_in_tag(*domain, ip, user_name, key, params, user);
}
+
end:
Modified: freeswitch/branches/gmaruzz/support-d/.screenrc
==============================================================================
--- freeswitch/branches/gmaruzz/support-d/.screenrc (original)
+++ freeswitch/branches/gmaruzz/support-d/.screenrc Wed Jan 7 10:17:00 2009
@@ -1,2 +1,3 @@
+startup_message off
escape ^\b
defscrollback 500000
More information about the Freeswitch-branches
mailing list