-Mon Nov 23 10:00:46 CST 2009
+Mon Feb 22 09:40:01 CST 2010
For example
$ ./configure --with-sofia-sip=/usr/local/sofia-sip
+To cross-compile for 64-bit platform use
+CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 ./configure
+
+To cross-compile for 32-bit platform use
+CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32 ./configure
+
To install the default configuration use
+$ cd conf
$ make def-conf
-To generate doxygen documentation from the sources use
+To install the default data use
+$ cd data
+$ make def-data
+
+To generate doxygen documentation from the source use
$ make dox
-To build distribution tarball use
-$ make dist
WINDOWS BUILD
/>
Build procedure
-Open unimrcp.sln solution file and build the solution (Build -> Build Solution).
+- open unimrcp.sln solution file
+- choose an appropriate solution platform (Build -> Configuration Manager) either win32 or x64
+- choose an appropriate solution configuration (Build -> Configuration Manager) either Debug or Release
+- build the solution (Build -> Build Solution)
One-time pre-run output directory preparation
Build prepare.vcproj utility project (right click on tools -> prebuild in
bin - binaries (unimrcpserver, unimrcpclient) and all the required dlls
conf - configuration files
data - data files
+lib - libraries
log - log files
plugin - run-time loadable modules
ACLOCAL = aclocal -I $(macrodir)
-SUBDIRS = libs modules plugins platforms build
+SUBDIRS = conf data libs modules plugins platforms build
if TEST_SUITES
SUBDIRS += tests
endif
dox:
doxygen $(top_srcdir)/docs/doxygen.conf
-
-def-conf:
- test -d $(confdir) || $(mkinstalldirs) $(confdir)
- for conffile in `find conf -name \*.xml` ; do \
- filename=`echo $$conffile | sed -e 's|^.*/||'`; \
- $(INSTALL) -m 644 conf/$$filename $(confdir); \
- done
-
-def-data:
- test -d $(datadir) || $(mkinstalldirs) $(datadir)
- for datafile in `find data -name *.pcm -o -name *.xml -o -name *.jsgf -o -name *.txt` ; do \
- filename=`echo $$datafile | sed -e 's|^.*/||'`; \
- $(INSTALL) -m 644 data/$$filename $(datadir); \
- done
-
+
install-data-local:
- test -d $(confdir) || $(MAKE) def-conf
- test -d $(datadir) || $(MAKE) def-data
test -d $(logdir) || $(mkinstalldirs) $(logdir)
INTRODUCTION
============
-UniMRCP - Open Source Media Resource Control Protocol Stack.
+UniMRCP is an open source MRCP Project.
INSTALLATION
http://www.unimrcp.org
Project Home:
- http://code.google.com/p/unimrcp/
+ http://code.google.com/p/unimrcp
Wiki:
http://code.google.com/p/unimrcp/w/list
http://groups.google.com/group/unimrcp
Version Control Repository (SVN):
- http://unimrcp.googlecode.com/svn/trunk/
+ http://unimrcp.googlecode.com/svn/trunk
UML Documentation File (Enterpise Architect):
http://unimrcp.googlecode.com/svn/misc/unimrcp.eap
UniMRCP is licensed under terms of the Apache 2.0 license.
See the file "LICENSE" for more information.
-Copyright 2008 Arsen Chaloyan
+Copyright 2008 - 2010 Arsen Chaloyan
MAINTAINERCLEANFILES = Makefile.in
SUBDIRS = pkgconfig
+
+include_HEADERS = uni_version.h
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="xcopy "$(AprDir)\$(ConfigurationName)\libapr-1.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y
xcopy "$(AprUtilDir)\$(ConfigurationName)\libaprutil-1.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y

if exist "$(AprIconvDir)\$(ConfigurationName)\libapriconv-1.dll" (
 xcopy "$(AprIconvDir)\$(ConfigurationName)\libapriconv-1.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y
 if exist "$(AprIconvDir)\$(ConfigurationName)\iconv" (
 if not exist "$(SolutionDir)$(ConfigurationName)\bin\iconv" mkdir "$(SolutionDir)$(ConfigurationName)\bin\iconv"
 xcopy "$(AprIconvDir)\$(ConfigurationName)\iconv\*.so" "$(SolutionDir)$(ConfigurationName)\bin\iconv\" /Y
 )
)

xcopy "$(SofiaDir)\win32\libsofia-sip-ua\$(ConfigurationName)\libsofia_sip_ua.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y
xcopy "$(SofiaDir)\win32\pthread\pthreadVC2.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y

if not exist "$(SolutionDir)$(ConfigurationName)\conf" xcopy "$(SolutionDir)conf\*.xml" "$(SolutionDir)$(ConfigurationName)\conf\" /Y
if not exist "$(SolutionDir)$(ConfigurationName)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(ConfigurationName)\data\" /Y
if not exist "$(SolutionDir)$(ConfigurationName)\log" mkdir "$(SolutionDir)$(ConfigurationName)\log\"
"
+ CommandLine="xcopy "$(AprDir)\$(ConfigurationName)\libapr-1.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y
xcopy "$(AprUtilDir)\$(ConfigurationName)\libaprutil-1.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y

if exist "$(AprIconvDir)\$(ConfigurationName)\libapriconv-1.dll" (
xcopy "$(AprIconvDir)\$(ConfigurationName)\libapriconv-1.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y
if exist "$(AprIconvDir)\$(ConfigurationName)\iconv" (
if not exist "$(SolutionDir)$(ConfigurationName)\bin\iconv" mkdir "$(SolutionDir)$(ConfigurationName)\bin\iconv"
xcopy "$(AprIconvDir)\$(ConfigurationName)\iconv\*.so" "$(SolutionDir)$(ConfigurationName)\bin\iconv\" /Y
)
)

xcopy "$(SofiaDir)\win32\libsofia-sip-ua\$(ConfigurationName)\libsofia_sip_ua.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y
xcopy "$(SofiaDir)\win32\pthread\pthreadVC2.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y

if not exist "$(SolutionDir)$(ConfigurationName)\conf" xcopy "$(SolutionDir)conf\*.xml" "$(SolutionDir)$(ConfigurationName)\conf\" /Y
if not exist "$(SolutionDir)$(ConfigurationName)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(ConfigurationName)\data\" /Y
if not exist "$(SolutionDir)$(ConfigurationName)\log" mkdir "$(SolutionDir)$(ConfigurationName)\log\"
"
ExcludedFromBuild="false"
/>
<Tool
</Configuration>
<Configuration
Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="10"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\apr.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="xcopy "$(AprDir)\$(ConfigurationName)\libapr-1.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y
xcopy "$(AprUtilDir)\$(ConfigurationName)\libaprutil-1.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y

if exist "$(AprIconvDir)\$(ConfigurationName)\libapriconv-1.dll" (
xcopy "$(AprIconvDir)\$(ConfigurationName)\libapriconv-1.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y
if exist "$(AprIconvDir)\$(ConfigurationName)\iconv" (
if not exist "$(SolutionDir)$(ConfigurationName)\bin\iconv" mkdir "$(SolutionDir)$(ConfigurationName)\bin\iconv"
xcopy "$(AprIconvDir)\$(ConfigurationName)\iconv\*.so" "$(SolutionDir)$(ConfigurationName)\bin\iconv\" /Y
)
)

xcopy "$(SofiaDir)\win32\libsofia-sip-ua\$(ConfigurationName)\libsofia_sip_ua.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y
xcopy "$(SofiaDir)\win32\pthread\pthreadVC2.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y

if not exist "$(SolutionDir)$(ConfigurationName)\conf" xcopy "$(SolutionDir)conf\*.xml" "$(SolutionDir)$(ConfigurationName)\conf\" /Y
if not exist "$(SolutionDir)$(ConfigurationName)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(ConfigurationName)\data\" /Y
if not exist "$(SolutionDir)$(ConfigurationName)\log" mkdir "$(SolutionDir)$(ConfigurationName)\log\"
"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="10"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\apr.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="xcopy "$(AprDir)\$(PlatformName)\$(ConfigurationName)\libapr-1.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y
xcopy "$(AprUtilDir)\$(PlatformName)\$(ConfigurationName)\libaprutil-1.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y

if exist "$(AprIconvDir)\$(PlatformName)\$(ConfigurationName)\libapriconv-1.dll" (
xcopy "$(AprIconvDir)\$(PlatformName)\$(ConfigurationName)\libapriconv-1.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y
if exist "$(AprIconvDir)\$(PlatformName)\$(ConfigurationName)\iconv" (
if not exist "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\iconv" mkdir "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\iconv"
xcopy "$(AprIconvDir)\$(PlatformName)\$(ConfigurationName)\iconv\*.so" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\iconv\" /Y
)
)

xcopy "$(SofiaDir)\win32\libsofia-sip-ua\$(PlatformName)\$(ConfigurationName)\libsofia_sip_ua.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y
xcopy "$(SofiaDir)\win32\pthread\$(PlatformName)\pthreadVC2.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y

if not exist "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\conf" xcopy "$(SolutionDir)conf\*.xml" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\conf\" /Y
if not exist "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\data\" /Y
if not exist "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\log" mkdir "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\log\"
"
+ ExcludedFromBuild="false"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="10"
InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\apr.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
- CommandLine="xcopy "$(AprDir)\$(ConfigurationName)\libapr-1.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y
xcopy "$(AprUtilDir)\$(ConfigurationName)\libaprutil-1.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y

if exist "$(AprIconvDir)\$(ConfigurationName)\libapriconv-1.dll" (
 xcopy "$(AprIconvDir)\$(ConfigurationName)\libapriconv-1.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y
 if exist "$(AprIconvDir)\$(ConfigurationName)\iconv" (
 if not exist "$(SolutionDir)$(ConfigurationName)\bin\iconv" mkdir "$(SolutionDir)$(ConfigurationName)\bin\iconv"
 xcopy "$(AprIconvDir)\$(ConfigurationName)\iconv\*.so" "$(SolutionDir)$(ConfigurationName)\bin\iconv\" /Y
 )
)

xcopy "$(SofiaDir)\win32\libsofia-sip-ua\$(ConfigurationName)\libsofia_sip_ua.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y
xcopy "$(SofiaDir)\win32\pthread\pthreadVC2.dll" "$(SolutionDir)$(ConfigurationName)\bin\" /Y

if not exist "$(SolutionDir)$(ConfigurationName)\conf" xcopy "$(SolutionDir)conf\*.xml" "$(SolutionDir)$(ConfigurationName)\conf\" /Y
if not exist "$(SolutionDir)$(ConfigurationName)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(ConfigurationName)\data\" /Y
if not exist "$(SolutionDir)$(ConfigurationName)\log" mkdir "$(SolutionDir)$(ConfigurationName)\log\"
"
+ CommandLine="xcopy "$(AprDir)\$(PlatformName)\$(ConfigurationName)\libapr-1.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y
xcopy "$(AprUtilDir)\$(PlatformName)\$(ConfigurationName)\libaprutil-1.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y

if exist "$(AprIconvDir)\$(PlatformName)\$(ConfigurationName)\libapriconv-1.dll" (
xcopy "$(AprIconvDir)\$(PlatformName)\$(ConfigurationName)\libapriconv-1.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y
if exist "$(AprIconvDir)\$(PlatformName)\$(ConfigurationName)\iconv" (
if not exist "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\iconv" mkdir "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\iconv"
xcopy "$(AprIconvDir)\$(PlatformName)\$(ConfigurationName)\iconv\*.so" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\iconv\" /Y
)
)

xcopy "$(SofiaDir)\win32\libsofia-sip-ua\$(PlatformName)\$(ConfigurationName)\libsofia_sip_ua.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y
xcopy "$(SofiaDir)\win32\pthread\$(PlatformName)\pthreadVC2.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y

if not exist "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\conf" xcopy "$(SolutionDir)conf\*.xml" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\conf\" /Y
if not exist "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\data\" /Y
if not exist "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\log" mkdir "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\log\"
"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCPostBuildEventTool"
<Platform\r
Name="Win32"\r
/>\r
+ <Platform\r
+ Name="x64"\r
+ />\r
</Platforms>\r
<ToolFiles>\r
</ToolFiles>\r
Name="VCPostBuildEventTool"\r
/>\r
</Configuration>\r
+ <Configuration\r
+ Name="Debug|x64"\r
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"\r
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
+ ConfigurationType="10"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\pocketsphinx.vsprops"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ CommandLine="xcopy "$(PocketSphinxDir)\bin\$(PlatformName)\$(ConfigurationName)\pocketsphinx.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y
xcopy "$(SphinxBaseDir)\lib\$(PlatformName)\$(ConfigurationName)\sphinxbase.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y

xcopy "$(PocketSphinxDir)\model\hmm\wsj1\*" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\data\wsj1\" /Y
copy "$(PocketSphinxDir)\model\lm\cmudict.0.6d" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\data\default.dic"

if not exist "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\conf\pocketsphinx.xml" xcopy "$(SolutionDir)plugins\mrcp-pocketsphinx\conf\pocketsphinx.xml" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\conf\" /Y
"\r
+ ExcludedFromBuild="false"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ TargetEnvironment="3"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|x64"\r
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"\r
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
+ ConfigurationType="10"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\pocketsphinx.vsprops"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ CommandLine="xcopy "$(PocketSphinxDir)\bin\$(PlatformName)\$(ConfigurationName)\pocketsphinx.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y
xcopy "$(SphinxBaseDir)\lib\$(PlatformName)\$(ConfigurationName)\sphinxbase.dll" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin\" /Y

xcopy "$(PocketSphinxDir)\model\hmm\wsj1\*" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\data\wsj1\" /Y
copy "$(PocketSphinxDir)\model\lm\cmudict.0.6d" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\data\default.dic"

if not exist "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\conf\pocketsphinx.xml" xcopy "$(SolutionDir)plugins\mrcp-pocketsphinx\conf\pocketsphinx.xml" "$(SolutionDir)$(PlatformName)\$(ConfigurationName)\conf\" /Y
"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ TargetEnvironment="3"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
</Configurations>\r
<References>\r
</References>\r
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
<Configuration
Name="Release|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="libaprutil-1.lib libapr-1.lib"
+ LinkTimeCodeGeneration="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ AdditionalManifestFiles="unimrcpservice.exe.manifest"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="libaprutil-1.lib libapr-1.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ AdditionalManifestFiles="unimrcpservice.exe.manifest"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
* Minor API changes that do not cause binary compatibility problems.
* Reset to 0 when upgrading UNI_MAJOR_VERSION
*/
-#define UNI_MINOR_VERSION 8
+#define UNI_MINOR_VERSION 9
/** patch level
* The Patch Level never includes API changes, simply bug fixes.
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""$(AprDir)\include";"$(AprUtilDir)\include""
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(AprDir)\$(ConfigurationName)";"$(AprUtilDir)\$(ConfigurationName)""
- />
<UserMacro
Name="AprDir"
Value="$(LibRootDir)libs\apr"
AdditionalIncludeDirectories=""$(ProjectRootDir)libs\apr-toolkit\include""
PreprocessorDefinitions="APT_STATIC_LIB"
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(OutDir)""
- />
</VisualStudioPropertySheet>
AdditionalIncludeDirectories=""$(ProjectRootDir)libs\mpf\include""
PreprocessorDefinitions="MPF_STATIC_LIB"
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(OutDir)""
- />
</VisualStudioPropertySheet>
AdditionalIncludeDirectories=""$(ProjectRootDir)libs\mrcp\include";"$(ProjectRootDir)libs\mrcp\message\include";"$(ProjectRootDir)libs\mrcp\control\include";"$(ProjectRootDir)libs\mrcp\resources\include""
PreprocessorDefinitions="MRCP_STATIC_LIB"
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(OutDir)""
- />
</VisualStudioPropertySheet>
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""$(ProjectRootDir)libs\mrcp-client\include""
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(OutDir)""
- />
</VisualStudioPropertySheet>
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""$(ProjectRootDir)libs\mrcp-engine\include""
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(OutDir)""
- />
</VisualStudioPropertySheet>
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""$(ProjectRootDir)libs\mrcp-server\include""
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(OutDir)""
- />
</VisualStudioPropertySheet>
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""$(ProjectRootDir)libs\mrcp-signaling\include""
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(OutDir)""
- />
</VisualStudioPropertySheet>
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""$(ProjectRootDir)libs\mrcpv2-transport\include""
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(OutDir)""
- />
</VisualStudioPropertySheet>
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""$(SofiaDir)\win32";"$(SofiaDir)\libsofia-sip-ua\su";"$(SofiaDir)\libsofia-sip-ua\nua";"$(SofiaDir)\libsofia-sip-ua\url";"$(SofiaDir)\libsofia-sip-ua\sip";"$(SofiaDir)\libsofia-sip-ua\msg";"$(SofiaDir)\libsofia-sip-ua\sdp";"$(SofiaDir)\libsofia-sip-ua\nta";"$(SofiaDir)\libsofia-sip-ua\nea";"$(SofiaDir)\libsofia-sip-ua\soa";"$(SofiaDir)\libsofia-sip-ua\iptsec";"$(SofiaDir)\libsofia-sip-ua\bnf";"$(SofiaDir)\libsofia-sip-ua\features""
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(SofiaDir)\win32\libsofia-sip-ua\$(ConfigurationName)""
- />
<UserMacro
Name="SofiaDir"
Value="$(LibRootDir)libs\sofia-sip"
ProjectType="Visual C++"
Version="8.00"
Name="unibase"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)\bin"
- IntermediateDirectory="$(ConfigurationName)"
>
<Tool
Name="VCCLCompilerTool"
WarnAsError="true"
DisableSpecificWarnings="4100"
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(OutDir)""
- />
<UserMacro
Name="ProjectRootDir"
Value="$(ProjectDir)..\..\"
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="unibin-x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ InheritedPropertySheets="apr.vsprops;sofiasip.vsprops"
+ >
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalLibraryDirectories="$(AprDir)\$(PlatformName)\$(ConfigurationName);$(AprUtilDir)\$(PlatformName)\$(ConfigurationName);$(SofiaDir)\win32\libsofia-sip-ua\$(PlatformName)\$(ConfigurationName);$(SolutionDir)$(PlatformName)\$(ConfigurationName)\lib;$(SolutionDir)$(PlatformName)\$(ConfigurationName)\bin"
+ TargetMachine="17"
+ />
+</VisualStudioPropertySheet>
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="unibin"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)\bin"
+ IntermediateDirectory="$(ConfigurationName)"
+ InheritedPropertySheets="apr.vsprops;sofiasip.vsprops"
+ >
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalLibraryDirectories="$(AprDir)\$(ConfigurationName);$(AprUtilDir)\$(ConfigurationName);$(SofiaDir)\win32\libsofia-sip-ua\$(ConfigurationName);$(SolutionDir)$(ConfigurationName)\lib;$(SolutionDir)$(ConfigurationName)\bin"
+ TargetMachine="1"
+ />
+</VisualStudioPropertySheet>
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
- DebugInformationFormat="4"
+ DebugInformationFormat="3"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
- TargetMachine="1"
/>
</VisualStudioPropertySheet>
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="unilib-x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)\lib"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ >
+ <Tool
+ Name="VCLinkerTool"
+ TargetMachine="17"
+ />
+</VisualStudioPropertySheet>
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="unilib"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
+ IntermediateDirectory="$(ConfigurationName)"
+ >
+ <Tool
+ Name="VCLinkerTool"
+ TargetMachine="1"
+ />
+</VisualStudioPropertySheet>
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""$(ProjectRootDir)platforms\libunimrcp-client\include";"$(ProjectRootDir)build""
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(OutDir)""
- />
<UserMacro
Name="UniMRCPClientLibs"
Value="libunimrcpclient.lib mrcpclient.lib mrcpsignaling.lib mrcp.lib aprtoolkit.lib libaprutil-1.lib libapr-1.lib libsofia_sip_ua.lib ws2_32.lib winmm.lib"
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""$(ProjectRootDir)platforms\libunimrcp-server\include";"$(ProjectRootDir)build""
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(OutDir)""
- />
<UserMacro
Name="UniMRCPServerLibs"
Value="libunimrcpserver.lib mrcpserver.lib mrcpsignaling.lib mrcpengine.lib mrcp.lib aprtoolkit.lib libaprutil-1.lib libapr-1.lib libsofia_sip_ua.lib ws2_32.lib winmm.lib"
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="uniplugin-x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)\plugin"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ InheritedPropertySheets="apr.vsprops;mrcpengine.vsprops"
+ >
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalLibraryDirectories="$(AprDir)\$(PlatformName)\$(ConfigurationName);$(AprUtilDir)\$(PlatformName)\$(ConfigurationName);$(SolutionDir)$(PlatformName)\$(ConfigurationName)\lib"
+ AdditionalDependencies="mrcpengine.lib mrcp.lib mpf.lib aprtoolkit.lib libaprutil-1.lib libapr-1.lib ws2_32.lib"
+ TargetMachine="17"
+ />
+</VisualStudioPropertySheet>
--- /dev/null
+<?xml version="1.0" encoding="windows-1251"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="uniplugin"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)\plugin"
+ IntermediateDirectory="$(ConfigurationName)"
+ InheritedPropertySheets="apr.vsprops;mrcpengine.vsprops"
+ >
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalLibraryDirectories="$(AprDir)\$(ConfigurationName);$(AprUtilDir)\$(ConfigurationName);$(SolutionDir)$(ConfigurationName)\lib"
+ AdditionalDependencies="mrcpengine.lib mrcp.lib mpf.lib aprtoolkit.lib libaprutil-1.lib libapr-1.lib ws2_32.lib"
+ TargetMachine="1"
+ />
+</VisualStudioPropertySheet>
AdditionalIncludeDirectories=""$(ProjectRootDir)libs\uni-rtsp\include""
PreprocessorDefinitions="RTSP_STATIC_LIB"
/>
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""$(OutDir)""
- />
</VisualStudioPropertySheet>
--- /dev/null
+MAINTAINERCLEANFILES = Makefile.in
+
+def-conf:
+ test -d $(confdir) || $(mkinstalldirs) $(confdir)
+ for conffile in `find ./ -name \*.xml` ; do \
+ filename=`echo $$conffile | sed -e 's|^.*/||'`; \
+ $(INSTALL) -m 644 $$filename $(confdir); \
+ done
+
+install-data-local:
+ test -d $(confdir) || $(MAKE) def-conf
2. class="Recognizer"
3. class="Recorder"
4. class="DtmfRecofnizer"
+5. class="Params"
More than one scenario of the same type (class) can be defined.
The name (not class) of the scenario is used to run it from console.
-->
</scenario>
+ <scenario name="params" class="Params" profile="MRCPv2-Default"/>
+
<!-- It'd be great to have scriptable custom scenarios as well.
<scenario name="custom" class="UmcXml">
</scenario>
<!-- Media engines -->
<media>
- <engine name="Media-Engine-1"/>
+ <engine name="Media-Engine-1" realtime-rate="1"/>
<rtp name="RTP-Factory-1">
<param name="rtp-ip" value="auto"/>
<!-- <param name="rtp-ext-ip" value="auto"/> -->
<!-- Media engines -->
<media>
- <engine name="Media-Engine-1"/>
+ <engine name="Media-Engine-1" realtime-rate="1"/>
<rtp name="RTP-Factory-1">
<param name="rtp-ip" value="auto"/>
<!-- <param name="rtp-ext-ip" value="auto"/> -->
AC_PREREQ(2.57)
-AC_INIT([unimrcp],[0.8.0])
+AC_INIT([unimrcp],[0.9.0])
AC_CONFIG_AUX_DIR([build])
AC_CONFIG_MACRO_DIR([build/acmacros])
build/pkgconfig/unimrcpclient.pc
build/pkgconfig/unimrcpserver.pc
build/pkgconfig/unimrcpplugin.pc
+ conf/Makefile
+ data/Makefile
])
AC_OUTPUT
--- /dev/null
+MAINTAINERCLEANFILES = Makefile.in
+
+def-data:
+ test -d $(datadir) || $(mkinstalldirs) $(datadir)
+ for datafile in `find ./ -name \*.pcm -o -name \*.xml -o -name \*.jsgf -o -name \*.txt` ; do \
+ filename=`echo $$datafile | sed -e 's|^.*/||'`; \
+ $(INSTALL) -m 644 $$filename $(datadir); \
+ done
+
+install-data-local:
+ test -d $(datadir) || $(MAKE) def-data
FULL_PATH_NAMES=NO
CASE_SENSE_NAMES=NO
+EXCLUDE=platforms/umc platforms/libasr-client platforms/asr-client
EXCLUDE_PATTERNS="*/acconfig.h" \
"*/test/*" \
"*/arch/*"
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
typedef enum {
APT_LOG_OUTPUT_NONE = 0x00, /**< disable logging */
APT_LOG_OUTPUT_CONSOLE = 0x01, /**< enable console output */
- APT_LOG_OUTPUT_FILE = 0x02, /**< enable log file output */
+ APT_LOG_OUTPUT_FILE = 0x02 /**< enable log file output */
} apt_log_output_e;
/** Opaque logger declaration */
* @brief Generic Name-Value Pair
*/
-#include "apr_tables.h"
+#include <apr_tables.h>
#include "apt_string.h"
APT_BEGIN_EXTERN_C
APT_BEGIN_EXTERN_C
+/** Empty string */
+#define APT_EMPTY_STRING ""
+
/** String declaration */
typedef struct apt_str_t apt_str_t;
str->length = 0;
}
+/** Get string buffer. */
+static APR_INLINE const char* apt_string_buffer_get(const apt_str_t *str)
+{
+ if(str->buf) {
+ return str->buf;
+ }
+ return APT_EMPTY_STRING;
+}
+
+/** Get string length. */
+static APR_INLINE apr_size_t apt_string_length_get(const apt_str_t *str)
+{
+ return str->length;
+}
+
+/** Check whether string is empty. */
+static APR_INLINE apr_size_t apt_string_is_empty(const apt_str_t *str)
+{
+ return str->length ? TRUE : FALSE;
+}
+
/**
* Set NULL terminated string.
* @param str the destination string
/** Text stream is used for message parsing and generation */
struct apt_text_stream_t {
/** Text stream */
- apt_str_t text;
- /** Current position in the buffer */
- char *pos;
+ apt_str_t text;
+
+ /** Current position in the stream */
+ char *pos;
+ /** End of stream pointer */
+ const char *end;
+ /** Is end of stream reached */
+ apt_bool_t is_eos;
};
/**
* Navigate through the lines of the text stream (message).
* @param stream the text stream to navigate
* @param line the read line to return
- * @return TRUE if the length of the line > 0, otherwise FALSE
+ * @return TRUE if the line is successfully read, otherwise FALSE
*/
APT_DECLARE(apt_bool_t) apt_text_line_read(apt_text_stream_t *stream, apt_str_t *line);
* Navigate through the headers (name:value pairs) of the text stream (message).
* @param stream the text stream to navigate
* @param pair the read pair to return
- * @return TRUE if the length of the read name > 0, otherwise FALSE
+ * @return TRUE if the header is successfully read, otherwise FALSE
*/
APT_DECLARE(apt_bool_t) apt_text_header_read(apt_text_stream_t *stream, apt_pair_t *pair);
return TRUE;
}
+/** Reset navigation related data of the text stream */
+static APR_INLINE void apt_text_stream_reset(apt_text_stream_t *stream)
+{
+ stream->pos = stream->text.buf;
+ stream->end = stream->text.buf + stream->text.length;
+ stream->is_eos = FALSE;
+}
+
/** Initialize text stream */
static APR_INLINE void apt_text_stream_init(apt_text_stream_t *stream, char *buffer, apr_size_t size)
{
stream->text.buf = buffer;
stream->text.length = size;
- stream->pos = stream->text.buf;
+ apt_text_stream_reset(stream);
}
/** Insert end of the line symbol(s) */
/** Check whether end of stream is reached */
static APR_INLINE apt_bool_t apt_text_is_eos(const apt_text_stream_t *stream)
{
- const char *end = stream->text.buf + stream->text.length;
- return (stream->pos >= end) ? TRUE : FALSE;
+ return (stream->pos >= stream->end || stream->is_eos == TRUE) ? TRUE : FALSE;
}
/** Scroll text stream */
static apt_bool_t apt_do_log(const char *file, int line, apt_log_priority_e priority, const char *format, va_list arg_ptr)
{
char log_entry[MAX_LOG_ENTRY_SIZE];
+ apr_size_t max_size = MAX_LOG_ENTRY_SIZE - 2;
apr_size_t offset = 0;
apr_time_exp_t result;
apr_time_t now = apr_time_now();
apr_time_exp_lt(&result,now);
if(apt_logger->header & APT_LOG_HEADER_DATE) {
- offset += apr_snprintf(log_entry+offset,MAX_LOG_ENTRY_SIZE-offset,"%4d-%02d-%02d ",
+ offset += apr_snprintf(log_entry+offset,max_size-offset,"%4d-%02d-%02d ",
result.tm_year+1900,
result.tm_mon+1,
result.tm_mday);
}
if(apt_logger->header & APT_LOG_HEADER_TIME) {
- offset += apr_snprintf(log_entry+offset,MAX_LOG_ENTRY_SIZE-offset,"%02d:%02d:%02d:%06d ",
+ offset += apr_snprintf(log_entry+offset,max_size-offset,"%02d:%02d:%02d:%06d ",
result.tm_hour,
result.tm_min,
result.tm_sec,
result.tm_usec);
}
if(apt_logger->header & APT_LOG_HEADER_MARK) {
- offset += apr_snprintf(log_entry+offset,MAX_LOG_ENTRY_SIZE-offset,"%s:%03d ",file,line);
+ offset += apr_snprintf(log_entry+offset,max_size-offset,"%s:%03d ",file,line);
}
if(apt_logger->header & APT_LOG_HEADER_PRIORITY) {
memcpy(log_entry+offset,priority_snames[priority],MAX_PRIORITY_NAME_LENGTH);
offset += MAX_PRIORITY_NAME_LENGTH;
}
- offset += apr_vsnprintf(log_entry+offset,MAX_LOG_ENTRY_SIZE-offset,format,arg_ptr);
+ offset += apr_vsnprintf(log_entry+offset,max_size-offset,format,arg_ptr);
log_entry[offset++] = '\n';
log_entry[offset] = '\0';
if((apt_logger->mode & APT_LOG_OUTPUT_CONSOLE) == APT_LOG_OUTPUT_CONSOLE) {
static const char* apt_log_file_path_make(apt_log_file_data_t *file_data)
{
char *log_file_path = NULL;
- const char *log_file_name = apr_psprintf(file_data->pool,"%s-%d.log",file_data->log_file_name,file_data->cur_file_index);
+ const char *log_file_name = apr_psprintf(file_data->pool,"%s-%"APR_SIZE_T_FMT".log",file_data->log_file_name,file_data->cur_file_index);
apr_filepath_merge(&log_file_path,file_data->log_dir_path,log_file_name,0,file_data->pool);
return log_file_path;
}
APT_DECLARE(const apt_pair_t*) apt_pair_array_get(const apt_pair_arr_t *arr, int id)
{
if(id < arr->nelts) {
- return (apt_pair_t*)arr->elts + id;
+ return &APR_ARRAY_IDX(arr,id,apt_pair_t);
}
return NULL;
}
while(elem) {
child_task = apt_list_elem_object_get(elem);
if(child_task) {
+#ifdef ENABLE_SIMULT_TASK_TERMINATION
+ if(child_task->thread_handle) {
+ apr_thread_detach(child_task->thread_handle);
+ child_task->thread_handle = NULL;
+ }
if(apt_task_terminate(child_task,FALSE) == TRUE) {
task->pending_term++;
}
+#else
+ apt_task_terminate(child_task,TRUE);
+#endif
}
elem = apt_list_next_elem_get(task->child_tasks,elem);
}
if(task->vtable.on_terminate_complete) {
task->vtable.on_terminate_complete(task);
}
+#ifdef ENABLE_SIMULT_TASK_TERMINATION
if(task->parent_task) {
if(task->msg_pool) {
apt_task_msg_t *msg = apt_task_msg_acquire(task->msg_pool);
apt_task_msg_signal(task->parent_task,msg);
}
}
+#endif
}
return TRUE;
}
if(task->vtable.on_post_run) {
task->vtable.on_post_run(task);
}
+
+ apr_thread_exit(thread_handle,APR_SUCCESS);
return NULL;
}
APT_DECLARE(apt_bool_t) apt_text_line_read(apt_text_stream_t *stream, apt_str_t *line)
{
char *pos = stream->pos;
- const char *end = stream->text.buf + stream->text.length;
- apt_bool_t eol = FALSE;
+ apt_bool_t status = FALSE;
line->length = 0;
line->buf = pos;
/* while not end of stream */
- while(pos < end) {
+ while(pos < stream->end) {
if(*pos == APT_TOKEN_CR) {
/* end of line detected */
line->length = pos - line->buf;
pos++;
- if(pos < end && *pos == APT_TOKEN_LF) {
+ if(pos < stream->end && *pos == APT_TOKEN_LF) {
pos++;
}
- eol = TRUE;
+ status = TRUE;
break;
}
else if(*pos == APT_TOKEN_LF) {
/* end of line detected */
line->length = pos - line->buf;
pos++;
- eol = TRUE;
+ status = TRUE;
break;
}
pos++;
}
- stream->pos = pos;
- return eol;
+ if(status == TRUE) {
+ /* advance stream pos */
+ stream->pos = pos;
+ }
+ else {
+ /* end of stream is reached, do not advance stream pos, but set is_eos flag */
+ stream->is_eos = TRUE;
+ }
+ return status;
}
/** Navigate through the headers (name:value pairs) of the text stream (message)
APT_DECLARE(apt_bool_t) apt_text_header_read(apt_text_stream_t *stream, apt_pair_t *pair)
{
char *pos = stream->pos;
- const char *end = stream->text.buf + stream->text.length;
- apt_bool_t eol = FALSE;
+ apt_bool_t status = FALSE;
apt_string_reset(&pair->name);
apt_string_reset(&pair->value);
/* while not end of stream */
- while(pos < end) {
+ while(pos < stream->end) {
if(*pos == APT_TOKEN_CR) {
/* end of line detected */
if(pair->value.buf) {
pair->value.length = pos - pair->value.buf;
}
pos++;
- if(pos < end && *pos == APT_TOKEN_LF) {
+ if(pos < stream->end && *pos == APT_TOKEN_LF) {
pos++;
}
- eol = TRUE;
+ status = TRUE;
break;
}
else if(*pos == APT_TOKEN_LF) {
pair->value.length = pos - pair->value.buf;
}
pos++;
- eol = TRUE;
+ status = TRUE;
break;
}
else if(!pair->name.length) {
pos++;
}
- stream->pos = pos;
- /* if length == 0 && buf -> header is malformed */
- return (eol && (pair->name.length || !pair->name.buf));
+ if(status == TRUE) {
+ /* advance stream pos regardless it's a valid header or not */
+ stream->pos = pos;
+
+ /* if length == 0 && buf => header is malformed */
+ if(!pair->name.length && pair->name.buf) {
+ status = FALSE;
+ }
+ }
+ else {
+ /* end of stream is reached, do not advance stream pos, but set is_eos flag */
+ stream->is_eos = TRUE;
+ }
+
+ return status;
}
APT_DECLARE(apt_bool_t) apt_text_field_read(apt_text_stream_t *stream, char separator, apt_bool_t skip_spaces, apt_str_t *field)
{
char *pos = stream->pos;
- const char *end = stream->text.buf + stream->text.length;
if(skip_spaces == TRUE) {
- while(pos < end && *pos == APT_TOKEN_SP) pos++;
+ while(pos < stream->end && *pos == APT_TOKEN_SP) pos++;
}
field->buf = pos;
field->length = 0;
- while(pos < end && *pos != separator) pos++;
+ while(pos < stream->end && *pos != separator) pos++;
field->length = pos - field->buf;
- if(pos < end) {
+ if(pos < stream->end) {
/* skip the separator */
pos++;
}
static apt_bool_t apt_pair_parse(apt_pair_t *pair, const apt_str_t *field, apr_pool_t *pool)
{
apt_text_stream_t stream;
+ apt_str_t item;
stream.text = *field;
- stream.pos = stream.text.buf;
+ apt_text_stream_reset(&stream);
/* read name */
- if(apt_text_field_read(&stream,'=',TRUE,&pair->name) == FALSE) {
+ if(apt_text_field_read(&stream,'=',TRUE,&item) == FALSE) {
return FALSE;
}
+ apt_string_copy(&pair->name,&item,pool);
/* read value */
- apt_text_field_read(&stream,';',TRUE,&pair->value);
+ apt_text_field_read(&stream,';',TRUE,&item);
+ apt_string_copy(&pair->value,&item,pool);
return TRUE;
}
}
stream.text = *value;
- stream.pos = stream.text.buf;
+ apt_text_stream_reset(&stream);
/* read name-value pairs */
while(apt_text_field_read(&stream,';',TRUE,&field) == TRUE) {
pair = apr_array_push(arr);
}
/* remove trailing 0s (if any) */
- end = stream->pos + length -1;
+ end = stream->pos + length - 1;
while(*end == 0x30 && end != stream->pos) end--;
stream->pos = end + 1;
MPF_DECLARE(struct mpf_dtmf_generator_t *) mpf_dtmf_generator_create_ex(
const struct mpf_audio_stream_t *stream,
enum mpf_dtmf_generator_band_e band,
- apr_size_t tone_ms,
- apr_size_t silence_ms,
+ apr_uint32_t tone_ms,
+ apr_uint32_t silence_ms,
struct apr_pool_t *pool);
/**
MPF_MARKER_NONE, /**< none */
MPF_MARKER_START_OF_EVENT, /**< start of event */
MPF_MARKER_END_OF_EVENT, /**< end of event */
- MPF_MARKER_NEW_SEGMENT, /**< start of new segment (long-lasting events) */
+ MPF_MARKER_NEW_SEGMENT /**< start of new segment (long-lasting events) */
} mpf_frame_marker_e;
/** Media frame declaration */
struct rtcp_sdes_item_t {
/** type of item (rtcp_sdes_type_t) */
apr_byte_t type;
- /* length of item (in octets) */
+ /** length of item (in octets) */
apr_byte_t length;
- /* text, not null-terminated */
+ /** text, not null-terminated */
char data[1];
};
struct rtcp_packet_t {
/** common header */
rtcp_header_t header;
+ /** union of RTCP reports */
union {
/** sender report (SR) */
struct {
apr_byte_t adaptive;
};
+/** RTCP BYE transmission policy */
typedef enum {
RTCP_BYE_DISABLE, /**< disable RTCP BYE transmission */
RTCP_BYE_PER_SESSION, /**< transmit RTCP BYE at the end of session */
- RTCP_BYE_PER_TALKSPURT, /**< transmit RTCP BYE at the end of each talkspurt (input) */
+ RTCP_BYE_PER_TALKSPURT /**< transmit RTCP BYE at the end of each talkspurt (input) */
} rtcp_bye_policy_e;
/** RTP config */
apr_uint32_t ntp_frac;
/** RTP timestamp */
apr_uint32_t rtp_ts;
- /* packets sent */
+ /** packets sent */
apr_uint32_t sent_packets;
- /* octets (bytes) sent */
+ /** octets (bytes) sent */
apr_uint32_t sent_octets;
};
<Platform\r
Name="Win32"\r
/>\r
+ <Platform\r
+ Name="x64"\r
+ />\r
</Platforms>\r
<ToolFiles>\r
</ToolFiles>\r
<Configuration\r
Name="Debug|Win32"\r
ConfigurationType="4"\r
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\mpf.vsprops"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mpf.vsprops"\r
CharacterSet="1"\r
>\r
<Tool\r
<Configuration\r
Name="Release|Win32"\r
ConfigurationType="4"\r
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\mpf.vsprops"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mpf.vsprops"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="codecs"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLibrarianTool"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Debug|x64"\r
+ ConfigurationType="4"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mpf.vsprops"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ TargetEnvironment="3"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="codecs"\r
+ DebugInformationFormat="3"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLibrarianTool"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|x64"\r
+ ConfigurationType="4"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mpf.vsprops"\r
CharacterSet="1"\r
WholeProgramOptimization="1"\r
>\r
/>\r
<Tool\r
Name="VCMIDLTool"\r
+ TargetEnvironment="3"\r
/>\r
<Tool\r
Name="VCCLCompilerTool"\r
/* first, calculate current activity level of processed frame */
level = mpf_activity_detector_level_calculate(frame);
#if 0
- apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Activity Detector [%d]",level);
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Activity Detector [%"APR_SIZE_T_FMT"]",level);
#endif
}
/** Higher frequency generator */
struct sine_state_t sine2;
/** Sampling rate of audio in Hz; used in tone generator */
- apr_size_t sample_rate_audio;
+ apr_uint32_t sample_rate_audio;
/** Sampling rate of telephone-events in Hz; used for timing */
- apr_size_t sample_rate_events;
+ apr_uint32_t sample_rate_events;
/** How often to issue event packet */
- apr_size_t events_ptime;
+ apr_uint32_t events_ptime;
/** Milliseconds elapsed since last event packet */
- apr_size_t since_last_event;
+ apr_uint32_t since_last_event;
};
MPF_DECLARE(struct mpf_dtmf_generator_t *) mpf_dtmf_generator_create_ex(
const struct mpf_audio_stream_t *stream,
enum mpf_dtmf_generator_band_e band,
- apr_size_t tone_ms,
- apr_size_t silence_ms,
+ apr_uint32_t tone_ms,
+ apr_uint32_t silence_ms,
struct apr_pool_t *pool)
{
struct mpf_dtmf_generator_t *gen;
qlen = strlen(generator->queue);
if (qlen + dlen > MPF_DTMFGEN_QUEUE_LEN) {
ret = FALSE;
- apt_log(APT_LOG_MARK, APT_PRIO_WARNING, "DTMF queue too short (%d), "
- "cannot add %d digit%s, already has %d", MPF_DTMFGEN_QUEUE_LEN,
+ apt_log(APT_LOG_MARK, APT_PRIO_WARNING, "DTMF queue too short (%"APR_SIZE_T_FMT"), "
+ "cannot add %d digit%s, already has %"APR_SIZE_T_FMT, MPF_DTMFGEN_QUEUE_LEN,
dlen, dlen > 1 ? "s" : "", qlen);
} else {
strcpy(generator->queue + qlen, digits);
/* number of frames */
apr_size_t frame_count;
/* frame timestamp units (samples) */
- apr_size_t frame_ts;
+ apr_uint32_t frame_ts;
/* frame size in bytes */
apr_size_t frame_size;
/* playout delay in timetsamp units */
- apr_size_t playout_delay_ts;
+ apr_uint32_t playout_delay_ts;
/* write should be synchronized (offset calculated) */
apr_byte_t write_sync;
int write_ts_offset;
/* write pointer in timestamp units */
- apr_size_t write_ts;
+ apr_uint32_t write_ts;
/* read pointer in timestamp units */
- apr_size_t read_ts;
+ apr_uint32_t read_ts;
/* timestamp event starts at */
- apr_size_t event_write_base_ts;
+ apr_uint32_t event_write_base_ts;
/* the first (base) frame of the event */
- mpf_named_event_frame_t event_write_base;
+ mpf_named_event_frame_t event_write_base;
/* the last received update for the event */
const mpf_named_event_frame_t *event_write_update;
};
jb->config = jb_config;
jb->codec = codec;
- jb->frame_ts = mpf_codec_frame_samples_calculate(descriptor);
+ jb->frame_ts = (apr_uint32_t)mpf_codec_frame_samples_calculate(descriptor);
jb->frame_size = mpf_codec_frame_size_calculate(descriptor,codec->attribs);
jb->frame_count = jb->config->max_playout_delay / CODEC_FRAME_TIME_BASE;
jb->raw_data = apr_palloc(pool,jb->frame_size*jb->frame_count);
frame->codec_frame.buffer = jb->raw_data + i*jb->frame_size;
}
- jb->playout_delay_ts = jb->config->initial_playout_delay *
- descriptor->channel_count * descriptor->sampling_rate / 1000;
+ jb->playout_delay_ts = (apr_uint32_t)(jb->config->initial_playout_delay *
+ descriptor->channel_count * descriptor->sampling_rate / 1000);
jb->write_sync = 1;
jb->write_ts_offset = 0;
return &jb->frames[index];
}
-static APR_INLINE jb_result_t mpf_jitter_buffer_write_prepare(mpf_jitter_buffer_t *jb, apr_uint32_t ts, apr_size_t *write_ts)
+static APR_INLINE jb_result_t mpf_jitter_buffer_write_prepare(mpf_jitter_buffer_t *jb, apr_uint32_t ts, apr_uint32_t *write_ts)
{
if(jb->write_sync) {
jb->write_ts_offset = ts - jb->write_ts;
jb_result_t mpf_jitter_buffer_write(mpf_jitter_buffer_t *jb, void *buffer, apr_size_t size, apr_uint32_t ts)
{
mpf_frame_t *media_frame;
- apr_size_t write_ts;
+ apr_uint32_t write_ts;
apr_size_t available_frame_count;
jb_result_t result = mpf_jitter_buffer_write_prepare(jb,ts,&write_ts);
if(result != JB_OK) {
}
else {
/* too late */
- JB_TRACE("JB write ts=%d too late\n",write_ts);
+ JB_TRACE("JB write ts=%"APR_SIZE_T_FMT" too late\n",write_ts);
return JB_DISCARD_TOO_LATE;
}
}
available_frame_count = jb->frame_count - (write_ts - jb->read_ts)/jb->frame_ts;
if(available_frame_count <= 0) {
/* too early */
- JB_TRACE("JB write ts=%d too early\n",write_ts);
+ JB_TRACE("JB write ts=%"APR_SIZE_T_FMT" too early\n",write_ts);
return JB_DISCARD_TOO_EARLY;
}
- JB_TRACE("JB write ts=%d size=%d\n",write_ts,size);
+ JB_TRACE("JB write ts=%"APR_SIZE_T_FMT" size=%"APR_SIZE_T_FMT"\n",write_ts,size);
while(available_frame_count && size) {
media_frame = mpf_jitter_buffer_frame_get(jb,write_ts);
media_frame->codec_frame.size = jb->frame_size;
jb_result_t mpf_jitter_buffer_event_write(mpf_jitter_buffer_t *jb, const mpf_named_event_frame_t *named_event, apr_uint32_t ts, apr_byte_t marker)
{
mpf_frame_t *media_frame;
- apr_size_t write_ts;
+ apr_uint32_t write_ts;
jb_result_t result = mpf_jitter_buffer_write_prepare(jb,ts,&write_ts);
if(result != JB_OK) {
return result;
/* new event detection */
if(!marker) {
- if(jb->event_write_base.event_id != named_event->event_id) {
+ if(jb->event_write_base.event_id != named_event->event_id || !jb->event_write_update) {
/* new event detected, marker is missing though */
marker = 1;
}
if(write_ts < jb->read_ts) {
/* too late */
- JB_TRACE("JB write ts=%d event=%d duration=%d too late\n",
+ JB_TRACE("JB write ts=%"APR_SIZE_T_FMT" event=%d duration=%d too late\n",
write_ts,named_event->event_id,named_event->duration);
return JB_DISCARD_TOO_LATE;
}
else if( (write_ts - jb->read_ts)/jb->frame_ts >= jb->frame_count) {
/* too early */
- JB_TRACE("JB write ts=%d event=%d duration=%d too early\n",
+ JB_TRACE("JB write ts=%"APR_SIZE_T_FMT" event=%d duration=%d too early\n",
write_ts,named_event->event_id,named_event->duration);
return JB_DISCARD_TOO_EARLY;
}
- JB_TRACE("JB write ts=%d event=%d duration=%d\n",
+ JB_TRACE("JB write ts=%"APR_SIZE_T_FMT" event=%d duration=%d\n",
write_ts,named_event->event_id,named_event->duration);
media_frame = mpf_jitter_buffer_frame_get(jb,write_ts);
media_frame->event_frame = *named_event;
mpf_frame_t *src_media_frame = mpf_jitter_buffer_frame_get(jb,jb->read_ts);
if(jb->write_ts > jb->read_ts) {
/* normal read */
- JB_TRACE("JB read ts=%d\n", jb->read_ts);
+ JB_TRACE("JB read ts=%"APR_SIZE_T_FMT"\n", jb->read_ts);
media_frame->type = src_media_frame->type;
media_frame->marker = src_media_frame->marker;
if(media_frame->type & MEDIA_FRAME_TYPE_AUDIO) {
}
else {
/* underflow */
- JB_TRACE("JB read ts=%d underflow\n", jb->read_ts);
+ JB_TRACE("JB read ts=%"APR_SIZE_T_FMT" underflow\n", jb->read_ts);
media_frame->type = MEDIA_FRAME_TYPE_NONE;
media_frame->marker = MPF_MARKER_NONE;
jb->write_ts += jb->frame_ts;
source = mixer->source_arr[i];
if(source) {
mpf_audio_stream_trace(source,STREAM_DIRECTION_RECEIVE,&output);
- if(apt_text_is_eos(&output) == FALSE) {
- *output.pos++ = ';';
- }
+ apt_text_char_insert(&output,';');
}
}
sink = multiplier->sink_arr[i];
if(sink) {
mpf_audio_stream_trace(sink,STREAM_DIRECTION_SEND,&output);
- if(apt_text_is_eos(&output) == FALSE) {
- *output.pos++ = ';';
- }
+ apt_text_char_insert(&output,';');
}
}
}
} while((is_port_ok == FALSE) && (first_port_in_search != rtp_stream->config->rtp_port_cur));
if(is_port_ok == FALSE) {
+ apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Find Free RTP Port");
local_media->state = MPF_MEDIA_DISABLED;
status = FALSE;
}
codec,
rtp_stream->pool);
- apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open RTP Receiver %s:%hu <- %s:%hu playout [%d ms]",
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open RTP Receiver %s:%hu <- %s:%hu playout [%"APR_SIZE_T_FMT" ms]",
rtp_stream->rtp_l_sockaddr->hostname,
rtp_stream->rtp_l_sockaddr->port,
rtp_stream->rtp_r_sockaddr->hostname,
transmitter->packet_data,
&transmitter->packet_size) == APR_SUCCESS) {
transmitter->sr_stat.sent_packets++;
- transmitter->sr_stat.sent_octets += transmitter->packet_size - sizeof(rtp_header_t);
+ transmitter->sr_stat.sent_octets += (apr_uint32_t)transmitter->packet_size - sizeof(rtp_header_t);
}
else {
status = FALSE;
0,
pool);
if(!*l_sockaddr) {
- apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Sockaddr %s:%hu",ip,port);
+ apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Failed to Get Sockaddr %s:%hu",ip,port);
return NULL;
}
if(apr_socket_create(&socket,(*l_sockaddr)->family,SOCK_DGRAM,0,pool) != APR_SUCCESS) {
- apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Socket %s:%hu", ip,port);
+ apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Failed to Create Socket %s:%hu", ip,port);
return NULL;
}
apr_socket_opt_set(socket,APR_SO_REUSEADDR,1);
if(apr_socket_bind(socket,*l_sockaddr) != APR_SUCCESS) {
- apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Bind Socket to %s:%hu", ip,port);
+ apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Failed to Bind Socket to %s:%hu", ip,port);
apr_socket_close(socket);
return NULL;
}
{
stream->rtp_socket = mpf_socket_create(&stream->rtp_l_sockaddr,local_media->ip.buf,local_media->port,stream->pool);
if(!stream->rtp_socket) {
- apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create RTP Socket");
+ apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Failed to Create RTP Socket");
return FALSE;
}
stream->rtcp_socket = mpf_socket_create(&stream->rtcp_l_sockaddr,local_media->ip.buf,local_media->port+1,stream->pool);
if(!stream->rtcp_socket) {
- apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create RTCP Socket");
+ apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Failed to Create RTCP Socket");
}
return TRUE;
}
rtcp_packet = (rtcp_packet_t*) (buffer + length);
length += rtcp_sdes_generate(rtp_stream,rtcp_packet,sizeof(buffer)-length);
- apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send Compound RTCP Packet [%d bytes] %s:%hu -> %s:%hu",
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send Compound RTCP Packet [%"APR_SIZE_T_FMT" bytes] %s:%hu -> %s:%hu",
length,
rtp_stream->rtcp_l_sockaddr->hostname,
rtp_stream->rtcp_l_sockaddr->port,
0,
buffer,
&length) != APR_SUCCESS) {
- apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send Compound RTCP Packet [%d bytes] %s:%hu -> %s:%hu",
+ apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send Compound RTCP Packet [%"APR_SIZE_T_FMT" bytes] %s:%hu -> %s:%hu",
length,
rtp_stream->rtcp_l_sockaddr->hostname,
rtp_stream->rtcp_l_sockaddr->port,
rtcp_packet = (rtcp_packet_t*) (buffer + length);
length += rtcp_bye_generate(rtp_stream,rtcp_packet,sizeof(buffer)-length,reason);
- apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send Compound RTCP Packet [BYE] [%d bytes] %s:%hu -> %s:%hu",
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send Compound RTCP Packet [BYE] [%"APR_SIZE_T_FMT" bytes] %s:%hu -> %s:%hu",
length,
rtp_stream->rtcp_l_sockaddr->hostname,
rtp_stream->rtcp_l_sockaddr->port,
0,
buffer,
&length) != APR_SUCCESS) {
- apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send Compound RTCP Packet [BYE] [%d bytes] %s:%hu -> %s:%hu",
+ apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send Compound RTCP Packet [BYE] [%"APR_SIZE_T_FMT" bytes] %s:%hu -> %s:%hu",
length,
rtp_stream->rtcp_l_sockaddr->hostname,
rtp_stream->rtcp_l_sockaddr->port,
apr_size_t length = sizeof(buffer);
if(apr_socket_recv(rtp_stream->rtcp_socket,buffer,&length) == APR_SUCCESS) {
- apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Receive Compound RTCP Packet [%d bytes] %s:%hu <- %s:%hu",
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Receive Compound RTCP Packet [%"APR_SIZE_T_FMT" bytes] %s:%hu <- %s:%hu",
length,
rtp_stream->rtcp_l_sockaddr->hostname,
rtp_stream->rtcp_l_sockaddr->port,
#endif
}
+ apr_thread_exit(thread,APR_SUCCESS);
return NULL;
}
mpf_timer_manager_t *timer_manager = apr_palloc(pool,sizeof(mpf_timer_manager_t));
APR_RING_INIT(&timer_manager->head, mpf_timer_t, link);
timer_manager->elapsed_time = 0;
- timer_manager->resolution = 100; // 100 ms
+ timer_manager->resolution = 100; /* 100 ms */
mpf_scheduler_timer_clock_set(scheduler,timer_manager->resolution,mpf_scheduler_proc,timer_manager);
return timer_manager;
/* calculate time to elapse */
timer->scheduled_time = manager->elapsed_time + timeout;
- apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Set Timer 0x%x [%d]",timer,timer->scheduled_time);
+ apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Set Timer 0x%x [%lu]",timer,timer->scheduled_time);
if(APR_RING_EMPTY(&timer->manager->head, mpf_timer_t, link)) {
APR_RING_INSERT_TAIL(&manager->head,timer,mpf_timer_t,link);
return FALSE;
}
- apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Kill Timer 0x%x [%d]",timer,timer->scheduled_time);
+ apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Kill Timer 0x%x [%lu]",timer,timer->scheduled_time);
/* remove node (timer) from the list */
APR_RING_REMOVE(timer,link);
timer->scheduled_time = 0;
/* increment elapsed time */
manager->elapsed_time += manager->resolution;
if(manager->elapsed_time >= 0xFFFF) {
- apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Reschedule Timers [%d]",manager->elapsed_time);
+ apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Reschedule Timers [%lu]",manager->elapsed_time);
mpf_timers_reschedule(manager);
}
break;
}
- apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Timer Elapsed 0x%x [%d]",timer,timer->scheduled_time);
+ apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Timer Elapsed 0x%x [%lu]",timer,timer->scheduled_time);
/* remove the elapsed timer from the list */
APR_RING_REMOVE(timer, link);
timer->scheduled_time = 0;
/** Enumeration of MRCP signaling events */
typedef enum {
- MRCP_SIG_EVENT_READY,
MRCP_SIG_EVENT_TERMINATE
} mrcp_sig_event_e;
/** Response (event) to mrcp_application_message_send() request */
apt_bool_t (*on_message_receive)(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message);
- /** Event indicating client stack is started and ready to process requests from the application */
- apt_bool_t (*on_ready)(mrcp_application_t *application, mrcp_sig_status_code_e status);
-
/** Event indicating unexpected session/channel termination */
apt_bool_t (*on_terminate_event)(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel);
APT_BEGIN_EXTERN_C
+/** Event handler used in case of asynchronous start */
+typedef void (*mrcp_client_handler_f)(apt_bool_t status);
+
/**
* Create MRCP client instance.
* @return the created client instance
*/
MRCP_DECLARE(mrcp_client_t*) mrcp_client_create(apt_dir_layout_t *dir_layout);
+/**
+ * Set asynchronous start mode.
+ * @param client the MRCP client to set mode for
+ * @param handler the event handler to signal start completion
+ */
+MRCP_DECLARE(void) mrcp_client_async_start_set(mrcp_client_t *client, mrcp_client_handler_f handler);
+
+
/**
* Start message processing loop.
* @param client the MRCP client to start
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpclient.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpclient.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpclient.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpclient.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpclient.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpclient.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
* limitations under the License.
*/
+#include <apr_thread_cond.h>
#include <apr_hash.h>
#include "mrcp_client.h"
#include "mrcp_resource_factory.h"
/** Connection task message pool */
apt_task_msg_pool_t *cnt_msg_pool;
+
+ /** Event handler used in case of async start */
+ mrcp_client_handler_f on_start_complete;
+ /** Wait object used in case of synch start */
+ apr_thread_cond_t *sync_start_object;
+ /** Mutex to protect sync start routine */
+ apr_thread_mutex_t *sync_start_mutex;
+
/** Dir layout structure */
apt_dir_layout_t *dir_layout;
/** Memory pool */
client->app_table = apr_hash_make(client->pool);
client->session_table = apr_hash_make(client->pool);
+
+ client->on_start_complete = NULL;
+ client->sync_start_object = NULL;
+ client->sync_start_mutex = NULL;
return client;
}
+/** Set asynchronous start mode */
+MRCP_DECLARE(void) mrcp_client_async_start_set(mrcp_client_t *client, mrcp_client_handler_f handler)
+{
+ if(client) {
+ client->on_start_complete = handler;
+ }
+}
+
/** Start message processing loop */
MRCP_DECLARE(apt_bool_t) mrcp_client_start(mrcp_client_t *client)
{
+ apt_bool_t sync_start = TRUE;
apt_task_t *task;
if(!client || !client->task) {
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Invalid Client");
return FALSE;
}
task = apt_consumer_task_base_get(client->task);
+
+ if(client->on_start_complete) {
+ sync_start = FALSE;
+ }
+
+ if(sync_start == TRUE) {
+ /* get prepared to start stack synchronously */
+ apr_thread_mutex_create(&client->sync_start_mutex,APR_THREAD_MUTEX_DEFAULT,client->pool);
+ apr_thread_cond_create(&client->sync_start_object,client->pool);
+
+ apr_thread_mutex_lock(client->sync_start_mutex);
+ }
+
if(apt_task_start(task) == FALSE) {
+ if(sync_start == TRUE) {
+ apr_thread_mutex_unlock(client->sync_start_mutex);
+ }
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Start Client Task");
return FALSE;
}
+
+ if(sync_start == TRUE) {
+ /* wait for start complete */
+ apr_thread_cond_wait(client->sync_start_object,client->sync_start_mutex);
+ apr_thread_mutex_unlock(client->sync_start_mutex);
+ }
+
return TRUE;
}
return FALSE;
}
client->session_table = NULL;
+
+ if(client->sync_start_object) {
+ apr_thread_cond_destroy(client->sync_start_object);
+ client->sync_start_object = NULL;
+ }
+ if(client->sync_start_mutex) {
+ apr_thread_mutex_destroy(client->sync_start_mutex);
+ client->sync_start_mutex = NULL;
+ }
+
return TRUE;
}
{
apt_consumer_task_t *consumer_task = apt_task_object_get(task);
mrcp_client_t *client = apt_consumer_task_object_get(consumer_task);
- void *val;
- mrcp_application_t *application;
- mrcp_app_message_t *app_message;
- apr_hash_index_t *it;
+
apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,CLIENT_TASK_NAME" Started");
- it = apr_hash_first(client->pool,client->app_table);
- for(; it; it = apr_hash_next(it)) {
- apr_hash_this(it,NULL,NULL,&val);
- application = val;
- if(!application) continue;
-
- /* raise one-time application-ready event */
- app_message = mrcp_client_app_signaling_event_create(MRCP_SIG_EVENT_READY,client->pool);
- app_message->sig_message.status = MRCP_SIG_STATUS_CODE_SUCCESS;
- app_message->application = application;
- application->handler(app_message);
+ if(client->on_start_complete) {
+ /* async start */
+ client->on_start_complete(TRUE);
+ }
+ else {
+ /* sync start */
+ apr_thread_mutex_lock(client->sync_start_mutex);
+ apr_thread_cond_signal(client->sync_start_object);
+ apr_thread_mutex_unlock(client->sync_start_mutex);
}
}
static apt_bool_t mrcp_app_sig_response_raise(mrcp_client_session_t *session, apt_bool_t process_pending_requests);
static apt_bool_t mrcp_app_sig_event_raise(mrcp_client_session_t *session, mrcp_channel_t *channel);
static apt_bool_t mrcp_app_control_message_raise(mrcp_client_session_t *session, mrcp_channel_t *channel, mrcp_message_t *mrcp_message);
+static apt_bool_t mrcp_app_failure_message_raise(mrcp_client_session_t *session);
static apt_bool_t mrcp_app_request_dispatch(mrcp_client_session_t *session, const mrcp_app_message_t *app_message);
static apt_bool_t mrcp_client_resource_answer_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor);
if(session->active_request) {
/* raise app response */
session->status = MRCP_SIG_STATUS_CODE_TERMINATE;
- mrcp_app_sig_response_raise(session,FALSE);
+ mrcp_app_failure_message_raise(session);
/* cancel remaing requests, but do process session termination request (if any) */
do {
/* cancel pending request */
session->status = MRCP_SIG_STATUS_CODE_CANCEL;
- mrcp_app_sig_response_raise(session,FALSE);
+ mrcp_app_failure_message_raise(session);
}
}
while(session->active_request);
return TRUE;
}
+static apt_bool_t mrcp_app_failure_message_raise(mrcp_client_session_t *session)
+{
+ mrcp_app_message_t *response;
+ const mrcp_app_message_t *request = session->active_request;
+ if(!request) {
+ return FALSE;
+ }
+ session->active_request = NULL;
+ response = mrcp_client_app_response_create(request,session->status,session->base.pool);
+ if(response->message_type == MRCP_APP_MESSAGE_TYPE_SIGNALING) {
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Raise App Response "APT_PTRSID_FMT" [%d] %s [%d]",
+ MRCP_SESSION_PTRSID(&session->base),
+ response->sig_message.command_id,
+ session->status == MRCP_SIG_STATUS_CODE_SUCCESS ? "SUCCESS" : "FAILURE",
+ session->status);
+ }
+ else if(response->control_message){
+ mrcp_message_t *mrcp_response = mrcp_response_create(response->control_message,response->control_message->pool);
+ mrcp_response->start_line.status_code = MRCP_STATUS_CODE_METHOD_FAILED;
+ response->control_message = mrcp_response;
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Raise App MRCP Response "APT_PTRSID_FMT, MRCP_SESSION_PTRSID(&session->base));
+ }
+ session->application->handler(response);
+ return TRUE;
+}
+
static apt_bool_t mrcp_client_channel_find(mrcp_client_session_t *session, mrcp_channel_t *channel, int *index)
{
int i;
}
else if(app_message->sig_message.message_type == MRCP_SIG_MESSAGE_TYPE_EVENT) {
switch(app_message->sig_message.event_id) {
- case MRCP_SIG_EVENT_READY:
- if(dispatcher->on_ready) {
- status = dispatcher->on_ready(
- app_message->application,
- app_message->sig_message.status);
- }
- break;
case MRCP_SIG_EVENT_TERMINATE:
if(dispatcher->on_terminate_event) {
status = dispatcher->on_terminate_event(
* Minor API changes that do not cause binary compatibility problems.
* Reset to 0 when upgrading PLUGIN_MAJOR_VERSION
*/
-#define PLUGIN_MINOR_VERSION 5
+#define PLUGIN_MINOR_VERSION 6
/** patch level
* The Patch Level never includes API changes, simply bug fixes.
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpengine.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpengine.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpengine.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpengine.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpengine.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpengine.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpserver.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpserver.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpserver.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpserver.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpserver.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpserver.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
APT_BEGIN_EXTERN_C
-/** Result of MRCP stream processing (parse/generate) */
+/** Status of MRCP stream processing (parse/generate) */
typedef enum {
- MRCP_STREAM_MESSAGE_COMPLETE,
- MRCP_STREAM_MESSAGE_TRUNCATED,
- MRCP_STREAM_MESSAGE_INVALID
-} mrcp_stream_result_e;
+ MRCP_STREAM_STATUS_COMPLETE,
+ MRCP_STREAM_STATUS_INCOMPLETE,
+ MRCP_STREAM_STATUS_INVALID
+} mrcp_stream_status_e;
/** Opaque MRCP parser declaration */
typedef struct mrcp_parser_t mrcp_parser_t;
typedef struct mrcp_generator_t mrcp_generator_t;
/** MRCP message handler */
-typedef apt_bool_t (*mrcp_message_handler_f)(void *obj, mrcp_message_t *message, mrcp_stream_result_e result);
+typedef apt_bool_t (*mrcp_message_handler_f)(void *obj, mrcp_message_t *message, mrcp_stream_status_e status);
/** Parse MRCP message (excluding message body) */
MRCP_DECLARE(apt_bool_t) mrcp_message_parse(mrcp_resource_factory_t *resource_factory, mrcp_message_t *message, apt_text_stream_t *stream);
MRCP_DECLARE(void) mrcp_parser_resource_name_set(mrcp_parser_t *parser, const apt_str_t *resource_name);
/** Parse MRCP stream */
-MRCP_DECLARE(mrcp_stream_result_e) mrcp_parser_run(mrcp_parser_t *parser, apt_text_stream_t *stream);
+MRCP_DECLARE(mrcp_stream_status_e) mrcp_parser_run(mrcp_parser_t *parser, apt_text_stream_t *stream);
/** Get parsed MRCP message */
MRCP_DECLARE(mrcp_message_t*) mrcp_parser_message_get(const mrcp_parser_t *parser);
MRCP_DECLARE(apt_bool_t) mrcp_generator_message_set(mrcp_generator_t *generator, mrcp_message_t *message);
/** Generate MRCP stream */
-MRCP_DECLARE(mrcp_stream_result_e) mrcp_generator_run(mrcp_generator_t *generator, apt_text_stream_t *stream);
+MRCP_DECLARE(mrcp_stream_status_e) mrcp_generator_run(mrcp_generator_t *generator, apt_text_stream_t *stream);
/** Walk through MRCP stream and call message handler for each parsed message */
MRCP_DECLARE(apt_bool_t) mrcp_stream_walk(mrcp_parser_t *parser, apt_text_stream_t *stream, mrcp_message_handler_f handler, void *obj);
#include "mrcp_resource_factory.h"
#include "apt_log.h"
+/** Stage of MRCP stream processing (parse/generate) */
+typedef enum {
+ MRCP_STREAM_STAGE_NONE,
+ MRCP_STREAM_STAGE_START_LINE,
+ MRCP_STREAM_STAGE_RESOURCE,
+ MRCP_STREAM_STAGE_HEADER,
+ MRCP_STREAM_STAGE_BODY
+} mrcp_stream_stage_e;
+
/** MRCP parser */
struct mrcp_parser_t {
mrcp_resource_factory_t *resource_factory;
apt_str_t resource_name;
- mrcp_stream_result_e result;
- char *pos;
+ mrcp_stream_stage_e stage;
apt_bool_t skip_lf;
mrcp_message_t *message;
apr_pool_t *pool;
/** MRCP generator */
struct mrcp_generator_t {
mrcp_resource_factory_t *resource_factory;
- mrcp_stream_result_e result;
- char *pos;
+ mrcp_stream_stage_e stage;
mrcp_message_t *message;
apr_pool_t *pool;
};
/** Read MRCP message-body */
-static mrcp_stream_result_e mrcp_message_body_read(mrcp_message_t *message, apt_text_stream_t *stream)
+static apt_bool_t mrcp_message_body_read(mrcp_message_t *message, apt_text_stream_t *stream)
{
- mrcp_stream_result_e result = MRCP_STREAM_MESSAGE_COMPLETE;
+ apt_bool_t status = TRUE;
if(message->body.buf) {
mrcp_generic_header_t *generic_header = mrcp_generic_header_get(message);
/* stream length available to read */
if(required_length > stream_length) {
required_length = stream_length;
/* not complete */
- result = MRCP_STREAM_MESSAGE_TRUNCATED;
+ status = FALSE;
}
memcpy(message->body.buf+message->body.length,stream->pos,required_length);
message->body.length += required_length;
message->body.buf[message->body.length] = '\0';
}
- return result;
-}
-
-/** Parse MRCP message-body */
-static mrcp_stream_result_e mrcp_message_body_parse(mrcp_message_t *message, apt_text_stream_t *stream, apr_pool_t *pool)
-{
- if(mrcp_generic_header_property_check(message,GENERIC_HEADER_CONTENT_LENGTH) == TRUE) {
- mrcp_generic_header_t *generic_header = mrcp_generic_header_get(message);
- if(generic_header && generic_header->content_length) {
- apt_str_t *body = &message->body;
- body->buf = apr_palloc(pool,generic_header->content_length+1);
- body->length = 0;
- return mrcp_message_body_read(message,stream);
- }
- }
- return MRCP_STREAM_MESSAGE_COMPLETE;
+ return status;
}
/** Write MRCP message-body */
-static mrcp_stream_result_e mrcp_message_body_write(mrcp_message_t *message, apt_text_stream_t *stream)
+static apt_bool_t mrcp_message_body_write(mrcp_message_t *message, apt_text_stream_t *stream)
{
- mrcp_stream_result_e result = MRCP_STREAM_MESSAGE_COMPLETE;
+ apt_bool_t status = TRUE;
mrcp_generic_header_t *generic_header = mrcp_generic_header_get(message);
if(generic_header && message->body.length < generic_header->content_length) {
/* stream length available to write */
if(required_length > stream_length) {
required_length = stream_length;
/* not complete */
- result = MRCP_STREAM_MESSAGE_TRUNCATED;
+ status = FALSE;
}
memcpy(stream->pos,message->body.buf+message->body.length,required_length);
stream->pos += required_length;
}
- return result;
-}
-
-/** Generate MRCP message-body */
-static mrcp_stream_result_e mrcp_message_body_generate(mrcp_message_t *message, apt_text_stream_t *stream)
-{
- if(mrcp_generic_header_property_check(message,GENERIC_HEADER_CONTENT_LENGTH) == TRUE) {
- mrcp_generic_header_t *generic_header = mrcp_generic_header_get(message);
- if(generic_header && generic_header->content_length) {
- apt_str_t *body = &message->body;
- body->length = 0;
- return mrcp_message_body_write(message,stream);
- }
- }
- return MRCP_STREAM_MESSAGE_COMPLETE;
+ return status;
}
/** Parse MRCP message (excluding message body) */
mrcp_parser_t *parser = apr_palloc(pool,sizeof(mrcp_parser_t));
parser->resource_factory = resource_factory;
apt_string_reset(&parser->resource_name);
- parser->result = MRCP_STREAM_MESSAGE_INVALID;
- parser->pos = NULL;
+ parser->stage = MRCP_STREAM_STAGE_NONE;
parser->skip_lf = FALSE;
parser->message = NULL;
parser->pool = pool;
}
}
-static mrcp_stream_result_e mrcp_parser_break(mrcp_parser_t *parser, apt_text_stream_t *stream)
+static mrcp_stream_status_e mrcp_parser_break(mrcp_parser_t *parser, apt_text_stream_t *stream)
{
- /* failed to parse either start-line or header */
+ /* failed to parse message */
if(apt_text_is_eos(stream) == TRUE) {
- /* end of stream reached, rewind/restore stream */
- stream->pos = parser->pos;
- parser->result = MRCP_STREAM_MESSAGE_TRUNCATED;
- parser->message = NULL;
- }
- else {
- /* error case */
- parser->result = MRCP_STREAM_MESSAGE_INVALID;
+ /* end of stream reached */
+ return MRCP_STREAM_STATUS_INCOMPLETE;
}
- return parser->result;
+
+ /* error case */
+ parser->stage = MRCP_STREAM_STAGE_NONE;
+ return MRCP_STREAM_STATUS_INVALID;
}
/** Parse MRCP stream */
-MRCP_DECLARE(mrcp_stream_result_e) mrcp_parser_run(mrcp_parser_t *parser, apt_text_stream_t *stream)
+MRCP_DECLARE(mrcp_stream_status_e) mrcp_parser_run(mrcp_parser_t *parser, apt_text_stream_t *stream)
{
mrcp_message_t *message = parser->message;
- if(message && parser->result == MRCP_STREAM_MESSAGE_TRUNCATED) {
- /* process continuation data */
- parser->result = mrcp_message_body_read(message,stream);
- return parser->result;
+ if(parser->stage == MRCP_STREAM_STAGE_NONE || !message) {
+ /* create new MRCP message */
+ message = mrcp_message_create(parser->pool);
+ message->channel_id.resource_name = parser->resource_name;
+ parser->message = message;
+ parser->stage = MRCP_STREAM_STAGE_START_LINE;
}
-
- /* create new MRCP message */
- message = mrcp_message_create(parser->pool);
- message->channel_id.resource_name = parser->resource_name;
- parser->message = message;
- /* store current position to be able to rewind/restore stream if needed */
- parser->pos = stream->pos;
-
- /* parse start-line and header */
- if(mrcp_message_parse(parser->resource_factory,message,stream) == FALSE) {
- return mrcp_parser_break(parser,stream);
+
+ if(parser->stage == MRCP_STREAM_STAGE_START_LINE) {
+ /* parse start-line */
+ if(mrcp_start_line_parse(&message->start_line,stream,message->pool) == FALSE) {
+ return mrcp_parser_break(parser,stream);
+ }
+ parser->stage = MRCP_STREAM_STAGE_RESOURCE;
+ }
+
+ if(parser->stage == MRCP_STREAM_STAGE_RESOURCE) {
+ mrcp_resource_t *resource;
+
+ if(message->start_line.version == MRCP_VERSION_2) {
+ mrcp_channel_id_parse(&message->channel_id,stream,message->pool);
+ }
+
+ /* find resource */
+ resource = mrcp_resource_find(parser->resource_factory,&message->channel_id.resource_name);
+ if(!resource) {
+ return mrcp_parser_break(parser,stream);
+ }
+
+ if(mrcp_message_resource_set(message,resource) == FALSE) {
+ return mrcp_parser_break(parser,stream);
+ }
+ parser->stage = MRCP_STREAM_STAGE_HEADER;
+ }
+
+ if(parser->stage == MRCP_STREAM_STAGE_HEADER) {
+ /* parse header */
+ if(mrcp_message_header_parse(&message->header,stream,message->pool) == FALSE) {
+ return mrcp_parser_break(parser,stream);
+ }
+
+ parser->stage = MRCP_STREAM_STAGE_NONE;
+ if(mrcp_generic_header_property_check(message,GENERIC_HEADER_CONTENT_LENGTH) == TRUE) {
+ mrcp_generic_header_t *generic_header = mrcp_generic_header_get(message);
+ if(generic_header && generic_header->content_length) {
+ apt_str_t *body = &message->body;
+ body->buf = apr_palloc(message->pool,generic_header->content_length+1);
+ body->length = 0;
+ parser->stage = MRCP_STREAM_STAGE_BODY;
+ }
+ }
}
- /* parse body */
- parser->result = mrcp_message_body_parse(message,stream,message->pool);
+ if(parser->stage == MRCP_STREAM_STAGE_BODY) {
+ if(mrcp_message_body_read(message,stream) == FALSE) {
+ return mrcp_parser_break(parser,stream);
+ }
+ parser->stage = MRCP_STREAM_STAGE_NONE;
+ }
/* in the worst case message segmentation may occur between <CR> and <LF>
of the final empty header */
/* if this is the case be prepared to skip <LF> */
parser->skip_lf = TRUE;
}
- return parser->result;
+ return MRCP_STREAM_STATUS_COMPLETE;
}
/** Get parsed MRCP message */
{
mrcp_generator_t *generator = apr_palloc(pool,sizeof(mrcp_generator_t));
generator->resource_factory = resource_factory;
- generator->result = MRCP_STREAM_MESSAGE_INVALID;
- generator->pos = NULL;
+ generator->stage = MRCP_STREAM_STAGE_NONE;
generator->message = NULL;
generator->pool = pool;
return generator;
return TRUE;
}
-static mrcp_stream_result_e mrcp_generator_break(mrcp_generator_t *generator, apt_text_stream_t *stream)
+static mrcp_stream_status_e mrcp_generator_break(mrcp_generator_t *generator, apt_text_stream_t *stream)
{
- /* failed to generate either start-line or header */
+ /* failed to generate message */
if(apt_text_is_eos(stream) == TRUE) {
- /* end of stream reached, rewind/restore stream */
- stream->pos = generator->pos;
- generator->result = MRCP_STREAM_MESSAGE_TRUNCATED;
+ /* end of stream reached */
+ return MRCP_STREAM_STATUS_INCOMPLETE;
}
- else {
- /* error case */
- generator->result = MRCP_STREAM_MESSAGE_INVALID;
- }
- return generator->result;
+
+ /* error case */
+ generator->stage = MRCP_STREAM_STAGE_NONE;
+ return MRCP_STREAM_STATUS_INVALID;
}
/** Generate MRCP stream */
-MRCP_DECLARE(mrcp_stream_result_e) mrcp_generator_run(mrcp_generator_t *generator, apt_text_stream_t *stream)
+MRCP_DECLARE(mrcp_stream_status_e) mrcp_generator_run(mrcp_generator_t *generator, apt_text_stream_t *stream)
{
mrcp_message_t *message = generator->message;
if(!message) {
- return MRCP_STREAM_MESSAGE_INVALID;
+ return MRCP_STREAM_STATUS_INVALID;
}
- if(message && generator->result == MRCP_STREAM_MESSAGE_TRUNCATED) {
- /* process continuation data */
- generator->result = mrcp_message_body_write(message,stream);
- return generator->result;
+ if(generator->stage == MRCP_STREAM_STAGE_NONE) {
+ /* validate message */
+ if(mrcp_message_validate(message) == FALSE) {
+ return MRCP_STREAM_STATUS_INVALID;
+ }
+ generator->stage = MRCP_STREAM_STAGE_START_LINE;
}
+
+ if(generator->stage == MRCP_STREAM_STAGE_START_LINE) {
+ /* generate start-line */
+ if(mrcp_start_line_generate(&message->start_line,stream) == FALSE) {
+ return mrcp_generator_break(generator,stream);
+ }
+
+ if(message->start_line.version == MRCP_VERSION_2) {
+ mrcp_channel_id_generate(&message->channel_id,stream);
+ }
- /* generate start-line and header */
- if(mrcp_message_generate(generator->resource_factory,message,stream) == FALSE) {
- return mrcp_generator_break(generator,stream);
+ /* generate header */
+ if(mrcp_message_header_generate(&message->header,stream) == FALSE) {
+ return mrcp_generator_break(generator,stream);
+ }
+
+ /* finalize start-line generation */
+ if(mrcp_start_line_finalize(&message->start_line,message->body.length,stream) == FALSE) {
+ return mrcp_generator_break(generator,stream);
+ }
+
+ generator->stage = MRCP_STREAM_STAGE_NONE;
+ if(mrcp_generic_header_property_check(message,GENERIC_HEADER_CONTENT_LENGTH) == TRUE) {
+ mrcp_generic_header_t *generic_header = mrcp_generic_header_get(message);
+ if(generic_header && generic_header->content_length) {
+ apt_str_t *body = &message->body;
+ body->length = 0;
+ generator->stage = MRCP_STREAM_STAGE_BODY;
+ }
+ }
+ }
+
+ if(generator->stage == MRCP_STREAM_STAGE_BODY) {
+ if(mrcp_message_body_write(message,stream) == FALSE) {
+ return mrcp_generator_break(generator,stream);
+ }
+
+ generator->stage = MRCP_STREAM_STAGE_NONE;
}
- /* generate body */
- generator->result = mrcp_message_body_generate(message,stream);
- return generator->result;
+ return MRCP_STREAM_STATUS_COMPLETE;
}
/** Walk through MRCP stream and invoke message handler for each parsed message */
MRCP_DECLARE(apt_bool_t) mrcp_stream_walk(mrcp_parser_t *parser, apt_text_stream_t *stream, mrcp_message_handler_f handler, void *obj)
{
- mrcp_stream_result_e result;
+ mrcp_stream_status_e status;
if(parser->skip_lf == TRUE) {
/* skip <LF> occurred as a result of message segmentation between <CR> and <LF> */
apt_text_char_skip(stream,APT_TOKEN_LF);
parser->skip_lf = FALSE;
}
do {
- result = mrcp_parser_run(parser,stream);
- if(result == MRCP_STREAM_MESSAGE_COMPLETE) {
+ status = mrcp_parser_run(parser,stream);
+ if(status == MRCP_STREAM_STATUS_COMPLETE) {
/* message is completely parsed */
apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Parsed MRCP Message [%lu]", stream->pos - stream->text.buf);
/* invoke message handler */
- handler(obj,parser->message,result);
+ handler(obj,parser->message,status);
}
- else if(result == MRCP_STREAM_MESSAGE_TRUNCATED) {
+ else if(status == MRCP_STREAM_STATUS_INCOMPLETE) {
/* message is partially parsed, to be continued */
apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Truncated MRCP Message [%lu]", stream->pos - stream->text.buf);
/* prepare stream for further processing */
}
return TRUE;
}
- else if(result == MRCP_STREAM_MESSAGE_INVALID){
+ else if(status == MRCP_STREAM_STATUS_INVALID){
/* error case */
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse MRCP Message");
/* invoke message handler */
- handler(obj,parser->message,result);
+ handler(obj,parser->message,status);
/* reset stream pos */
stream->pos = stream->text.buf;
return FALSE;
while(apt_text_is_eos(stream) == FALSE);
/* reset stream pos */
- stream->pos = stream->text.buf;
+ apt_text_stream_reset(stream);
return TRUE;
}
/** Add name only property */
MRCP_DECLARE(void) mrcp_header_name_property_add(mrcp_header_accessor_t *accessor, apr_size_t id);
+
+/** Generate completion-cause */
+MRCP_DECLARE(apt_bool_t) mrcp_completion_cause_generate(const apt_str_table_item_t table[], apr_size_t size, apr_size_t cause, apt_text_stream_t *stream);
+
APT_END_EXTERN_C
#endif /*__MRCP_HEADER_ACCESSOR_H__*/
apt_str_t field;
apt_text_stream_t stream;
stream.text = *value;
- stream.pos = stream.text.buf;
+ apt_text_stream_reset(&stream);
request_id_list->count = 0;
while(request_id_list->count < MAX_ACTIVE_REQUEST_ID_COUNT) {
if(apt_text_field_read(&stream,',',TRUE,&field) == FALSE) {
* limitations under the License.
*/
+#include <stdio.h>
#include "mrcp_header_accessor.h"
typedef enum {
return TRUE;
}
+
+/** Generate completion-cause */
+MRCP_DECLARE(apt_bool_t) mrcp_completion_cause_generate(const apt_str_table_item_t table[], apr_size_t size, apr_size_t cause, apt_text_stream_t *stream)
+{
+ int length;
+ const apt_str_t *name = apt_string_table_str_get(table,size,cause);
+ if(!name) {
+ return FALSE;
+ }
+ length = sprintf(stream->pos,"%03"APR_SIZE_T_FMT" ",cause);
+ if(length <= 0) {
+ return FALSE;
+ }
+ stream->pos += length;
+
+ memcpy(stream->pos,name->buf,name->length);
+ stream->pos += name->length;
+ return TRUE;
+}
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse MRCP start-line");
return FALSE;
}
- line.pos = line.text.buf;
-
+
+ apt_text_stream_reset(&line);
if(apt_text_field_read(&line,APT_TOKEN_SP,TRUE,&field) == FALSE) {
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot read the first field in start-line");
return FALSE;
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\mrcp.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcp.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\mrcp.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcp.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcp.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcp.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
* limitations under the License.
*/
-#include <stdio.h>
#include "mrcp_recog_header.h"
/** String table of MRCPv1 recognizer headers (mrcp_recog_header_id) */
{{"grammar-definition-failure", 26},9}
};
-/** Generate MRCP recognizer completion-cause */
-static apt_bool_t mrcp_completion_cause_generate(mrcp_recog_completion_cause_e completion_cause, const apt_str_t *name, apt_text_stream_t *stream)
-{
- int length = sprintf(stream->pos,"%03"APR_SIZE_T_FMT" ",completion_cause);
- if(length <= 0) {
- return FALSE;
- }
- stream->pos += length;
-
- if(name) {
- memcpy(stream->pos,name->buf,name->length);
- stream->pos += name->length;
- }
- return TRUE;
-}
-
-
/** Initialize recognizer header */
static void mrcp_recog_header_init(mrcp_recog_header_t *recog_header)
{
return apt_size_value_generate_from_float(recog_header->speed_vs_accuracy,value);
}
else if(id == RECOGNIZER_HEADER_COMPLETION_CAUSE) {
- const apt_str_t *name = apt_string_table_str_get(
+ return mrcp_completion_cause_generate(
v1_completion_cause_string_table,
RECOGNIZER_COMPLETION_CAUSE_COUNT,
- recog_header->completion_cause);
- return mrcp_completion_cause_generate(recog_header->completion_cause,name,value);
+ recog_header->completion_cause,
+ value);
}
return mrcp_recog_header_generate(recog_header,id,value);
}
return apt_float_value_generate(recog_header->speed_vs_accuracy,value);
}
else if(id == RECOGNIZER_HEADER_COMPLETION_CAUSE) {
- const apt_str_t *name = apt_string_table_str_get(
+ return mrcp_completion_cause_generate(
v2_completion_cause_string_table,
RECOGNIZER_COMPLETION_CAUSE_COUNT,
- recog_header->completion_cause);
- return mrcp_completion_cause_generate(recog_header->completion_cause,name,value);
+ recog_header->completion_cause,
+ value);
}
return mrcp_recog_header_generate(recog_header,id,value);
}
* limitations under the License.
*/
-#include <stdio.h>
#include "mrcp_recorder_header.h"
/** String table of recorder headers (mrcp_recorder_header_id) */
{{"error", 5},0}
};
-/** Generate MRCP recorder completion-cause */
-static apt_bool_t mrcp_completion_cause_generate(
- mrcp_recorder_completion_cause_e completion_cause,
- const apt_str_t *name,
- apt_text_stream_t *stream)
-{
- int length = sprintf(stream->pos,"%03"APR_SIZE_T_FMT" ",completion_cause);
- if(length <= 0) {
- return FALSE;
- }
- stream->pos += length;
-
- if(name) {
- memcpy(stream->pos,name->buf,name->length);
- stream->pos += name->length;
- }
- return TRUE;
-}
-
/** Initialize recorder header */
static void mrcp_recorder_header_init(mrcp_recorder_header_t *recorder_header)
break;
case RECORDER_HEADER_COMPLETION_CAUSE:
{
- const apt_str_t *name = apt_string_table_str_get(
+ mrcp_completion_cause_generate(
completion_cause_string_table,
RECORDER_COMPLETION_CAUSE_COUNT,
- recorder_header->completion_cause);
- mrcp_completion_cause_generate(recorder_header->completion_cause,name,value);
+ recorder_header->completion_cause,
+ value);
break;
}
case RECORDER_HEADER_COMPLETION_REASON:
* limitations under the License.
*/
-#include <stdio.h>
#include "mrcp_synth_header.h"
/** String table of MRCP synthesizer headers (mrcp_synthesizer_header_id) */
apt_str_t str;
apt_text_stream_t stream;
stream.text = *value;
- stream.pos = stream.text.buf;
+ apt_text_stream_reset(&stream);
stream.pos++;
if(apt_text_field_read(&stream,APT_TOKEN_SP,TRUE,&str) == FALSE) {
return FALSE;
return TRUE;
}
-/** Generate MRCP synthesizer completion-cause */
-static apt_bool_t mrcp_completion_cause_generate(mrcp_synth_completion_cause_e completion_cause, apt_text_stream_t *stream)
-{
- int length;
- const apt_str_t *name = apt_string_table_str_get(completion_cause_string_table,SYNTHESIZER_COMPLETION_CAUSE_COUNT,completion_cause);
- if(!name) {
- return FALSE;
- }
- length = sprintf(stream->pos,"%03"APR_SIZE_T_FMT" ",completion_cause);
- if(length <= 0) {
- return FALSE;
- }
- stream->pos += length;
-
- memcpy(stream->pos,name->buf,name->length);
- stream->pos += name->length;
- return TRUE;
-}
-
/** Initialize synthesizer header */
static void mrcp_synth_header_init(mrcp_synth_header_t *synth_header)
{
apt_string_value_generate(&synth_header->speaker_profile,value);
break;
case SYNTHESIZER_HEADER_COMPLETION_CAUSE:
- mrcp_completion_cause_generate(synth_header->completion_cause,value);
+ mrcp_completion_cause_generate(
+ completion_cause_string_table,
+ SYNTHESIZER_COMPLETION_CAUSE_COUNT,
+ synth_header->completion_cause,
+ value);
break;
case SYNTHESIZER_HEADER_COMPLETION_REASON:
apt_string_value_generate(&synth_header->completion_reason,value);
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpv2transport.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpv2transport.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpv2transport.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpv2transport.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpv2transport.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpv2transport.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
apt_task_vtable_t *vtable;
mrcp_connection_agent_t *agent;
- apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create "MRCPV2_CONNECTION_TASK_NAME" [%d]",max_connection_count);
+ apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create "MRCPV2_CONNECTION_TASK_NAME" [%"APR_SIZE_T_FMT"]",max_connection_count);
agent = apr_palloc(pool,sizeof(mrcp_connection_agent_t));
agent->pool = pool;
agent->pollset = NULL;
apt_bool_t status = FALSE;
mrcp_connection_t *connection = channel->connection;
apt_text_stream_t *stream;
- mrcp_stream_result_e result;
+ mrcp_stream_status_e result;
if(!connection || !connection->sock) {
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No MRCPv2 Connection");
do {
apt_text_stream_init(&connection->tx_stream,connection->tx_buffer,sizeof(connection->tx_buffer)-1);
result = mrcp_generator_run(connection->generator,stream);
- if(result == MRCP_STREAM_MESSAGE_COMPLETE || result == MRCP_STREAM_MESSAGE_TRUNCATED) {
+ if(result != MRCP_STREAM_STATUS_INVALID) {
stream->text.length = stream->pos - stream->text.buf;
*stream->pos = '\0';
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate MRCPv2 Stream");
}
}
- while(result == MRCP_STREAM_MESSAGE_TRUNCATED);
+ while(result == MRCP_STREAM_STATUS_INCOMPLETE);
if(status == FALSE) {
mrcp_message_t *response = mrcp_response_create(message,message->pool);
return TRUE;
}
-static apt_bool_t mrcp_client_message_handler(void *obj, mrcp_message_t *message, mrcp_stream_result_e result)
+static apt_bool_t mrcp_client_message_handler(void *obj, mrcp_message_t *message, mrcp_stream_status_e status)
{
- if(result == MRCP_STREAM_MESSAGE_COMPLETE) {
+ if(status == MRCP_STREAM_STATUS_COMPLETE) {
/* message is completely parsed */
mrcp_connection_t *connection = obj;
mrcp_control_channel_t *channel;
stream->pos);
/* reset pos */
- stream->pos = stream->text.buf;
- /* walk through the stream parsing RTSP messages */
+ apt_text_stream_reset(stream);
+ /* walk through the stream parsing MRCP messages */
return mrcp_stream_walk(connection->parser,stream,mrcp_client_message_handler,connection);
}
return NULL;
}
- apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create "MRCPV2_CONNECTION_TASK_NAME" %s:%hu [%d]",listen_ip,listen_port,max_connection_count);
+ apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create "MRCPV2_CONNECTION_TASK_NAME" %s:%hu [%"APR_SIZE_T_FMT"]",
+ listen_ip,listen_port,max_connection_count);
agent = apr_palloc(pool,sizeof(mrcp_connection_agent_t));
agent->pool = pool;
agent->sockaddr = NULL;
{
apt_bool_t status = FALSE;
apt_text_stream_t *stream;
- mrcp_stream_result_e result;
+ mrcp_stream_status_e result;
if(!connection || !connection->sock) {
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No MRCPv2 Connection");
return FALSE;
do {
apt_text_stream_init(&connection->tx_stream,connection->tx_buffer,sizeof(connection->tx_buffer)-1);
result = mrcp_generator_run(connection->generator,stream);
- if(result == MRCP_STREAM_MESSAGE_COMPLETE || result == MRCP_STREAM_MESSAGE_TRUNCATED) {
+ if(result != MRCP_STREAM_STATUS_INVALID) {
stream->text.length = stream->pos - stream->text.buf;
*stream->pos = '\0';
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate MRCPv2 Stream");
}
}
- while(result == MRCP_STREAM_MESSAGE_TRUNCATED);
+ while(result == MRCP_STREAM_STATUS_INCOMPLETE);
return status;
}
-static apt_bool_t mrcp_server_message_handler(void *obj, mrcp_message_t *message, mrcp_stream_result_e result)
+static apt_bool_t mrcp_server_message_handler(void *obj, mrcp_message_t *message, mrcp_stream_status_e status)
{
mrcp_connection_t *connection = obj;
mrcp_connection_agent_t *agent = connection->agent;
- if(result == MRCP_STREAM_MESSAGE_COMPLETE) {
+ if(status == MRCP_STREAM_STATUS_COMPLETE) {
/* message is completely parsed */
mrcp_control_channel_t *channel = mrcp_connection_channel_associate(agent,connection,message);
if(channel) {
connection->id);
}
}
- else if(result == MRCP_STREAM_MESSAGE_INVALID) {
+ else if(status == MRCP_STREAM_STATUS_INVALID) {
/* error case */
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse MRCPv2 Stream");
if(message->resource) {
stream->pos);
/* reset pos */
- stream->pos = stream->text.buf;
- /* walk through the stream parsing RTSP messages */
+ apt_text_stream_reset(stream);
+ /* walk through the stream parsing MRCP messages */
return mrcp_stream_walk(connection->parser,stream,mrcp_server_message_handler,connection);
}
APT_BEGIN_EXTERN_C
-/** Result of RTSP stream processing (parse/generate) */
+/** Status of RTSP stream processing (parse/generate) */
typedef enum {
- RTSP_STREAM_MESSAGE_COMPLETE,
- RTSP_STREAM_MESSAGE_TRUNCATED,
- RTSP_STREAM_MESSAGE_INVALID
-} rtsp_stream_result_e;
+ RTSP_STREAM_STATUS_COMPLETE,
+ RTSP_STREAM_STATUS_INCOMPLETE,
+ RTSP_STREAM_STATUS_INVALID
+} rtsp_stream_status_e;
/** Opaque RTSP parser declaration */
typedef struct rtsp_parser_t rtsp_parser_t;
typedef struct rtsp_generator_t rtsp_generator_t;
/** RTSP message handler */
-typedef apt_bool_t (*rtsp_message_handler_f)(void *obj, rtsp_message_t *message, rtsp_stream_result_e result);
+typedef apt_bool_t (*rtsp_message_handler_f)(void *obj, rtsp_message_t *message, rtsp_stream_status_e status);
/** Create RTSP stream parser */
RTSP_DECLARE(rtsp_parser_t*) rtsp_parser_create(apr_pool_t *pool);
/** Parse RTSP stream */
-RTSP_DECLARE(rtsp_stream_result_e) rtsp_parser_run(rtsp_parser_t *parser, apt_text_stream_t *stream);
+RTSP_DECLARE(rtsp_stream_status_e) rtsp_parser_run(rtsp_parser_t *parser, apt_text_stream_t *stream);
/** Get parsed RTSP message */
RTSP_DECLARE(rtsp_message_t*) rtsp_parser_message_get(const rtsp_parser_t *parser);
RTSP_DECLARE(apt_bool_t) rtsp_generator_message_set(rtsp_generator_t *generator, rtsp_message_t *message);
/** Generate RTSP stream */
-RTSP_DECLARE(rtsp_stream_result_e) rtsp_generator_run(rtsp_generator_t *generator, apt_text_stream_t *stream);
+RTSP_DECLARE(rtsp_stream_status_e) rtsp_generator_run(rtsp_generator_t *generator, apt_text_stream_t *stream);
/** Walk through RTSP stream and call message handler for each parsed message */
apt_task_msg_pool_t *msg_pool;
rtsp_client_t *client;
- apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Create RTSP Client [%d]",max_connection_count);
+ apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Create RTSP Client [%"APR_SIZE_T_FMT"]",max_connection_count);
client = apr_palloc(pool,sizeof(rtsp_client_t));
client->pool = pool;
client->obj = obj;
}
/* Destroy RTSP connection */
-static apt_bool_t rtsp_client_connection_destroy(rtsp_client_t *client, rtsp_client_connection_t *rtsp_connection)
+static apt_bool_t rtsp_client_connection_destroy(rtsp_client_connection_t *rtsp_connection)
{
+ rtsp_client_t *client = rtsp_connection->client;
apt_list_elem_remove(client->connection_list,rtsp_connection->it);
apt_net_client_disconnect(client->task,rtsp_connection->base);
session->term_state = TERMINATION_STATE_NONE;
client->vtable->on_session_terminate_response(client,session);
-
- if(apr_hash_count(rtsp_connection->handle_table) == 0) {
- rtsp_client_connection_destroy(client,rtsp_connection);
- }
return TRUE;
}
/* respond immediately if no resources left */
if(apr_hash_count(session->resource_table) == 0) {
rtsp_client_session_terminate_respond(client,session);
+
+ if(apr_hash_count(rtsp_connection->handle_table) == 0) {
+ rtsp_client_connection_destroy(rtsp_connection);
+ }
}
}
static apt_bool_t rtsp_client_request_push(rtsp_client_connection_t *rtsp_connection, rtsp_client_session_t *session, rtsp_message_t *message)
{
/* add request to inprogress request queue */
- apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Push RTSP Request to In-Progress Queue "APT_PTRSID_FMT" CSeq:%d",
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Push RTSP Request to In-Progress Queue "APT_PTRSID_FMT" CSeq:%"APR_SIZE_T_FMT,
session,
message->header.session_id.buf ? message->header.session_id.buf : "new",
message->header.cseq);
if(ret_request) {
*ret_request = session->active_request;
}
- apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Pop In-Progress RTSP Request "APT_PTR_FMT" CSeq:%d",
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Pop In-Progress RTSP Request "APT_PTR_FMT" CSeq:%"APR_SIZE_T_FMT,
session,
response->header.cseq);
apt_list_elem_remove(rtsp_connection->inprogress_request_queue,elem);
if(remaining_handles) {
void *val;
apr_hash_index_t *it;
- apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Terminate Remaining RTSP Handles [%d]",remaining_handles);
+ apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Terminate Remaining RTSP Handles [%"APR_SIZE_T_FMT"]",remaining_handles);
it = apr_hash_first(rtsp_connection->base->pool,rtsp_connection->session_table);
for(; it; it = apr_hash_next(it)) {
apr_hash_this(it,NULL,NULL,&val);
}
if(!remaining_handles && !cancelled_requests) {
- rtsp_client_connection_destroy(client,rtsp_connection);
+ rtsp_client_connection_destroy(rtsp_connection);
}
return TRUE;
}
apt_bool_t status = FALSE;
rtsp_client_connection_t *rtsp_connection;
apt_text_stream_t *stream;
- rtsp_stream_result_e result;
+ rtsp_stream_status_e result;
if(!connection || !connection->sock) {
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No RTSP Connection");
rtsp_generator_message_set(rtsp_connection->generator,message);
do {
stream->text.length = sizeof(rtsp_connection->tx_buffer)-1;
- stream->pos = stream->text.buf;
+ apt_text_stream_reset(stream);
result = rtsp_generator_run(rtsp_connection->generator,stream);
- if(result == RTSP_STREAM_MESSAGE_COMPLETE || result == RTSP_STREAM_MESSAGE_TRUNCATED) {
+ if(result != RTSP_STREAM_STATUS_INVALID) {
stream->text.length = stream->pos - stream->text.buf;
*stream->pos = '\0';
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate RTSP Stream");
}
}
- while(result == RTSP_STREAM_MESSAGE_TRUNCATED);
+ while(result == RTSP_STREAM_STATUS_INCOMPLETE);
return status;
}
-static apt_bool_t rtsp_client_message_handler(void *obj, rtsp_message_t *message, rtsp_stream_result_e result)
+/** return TRUE to proceed with the next message in the stream (if any) */
+static apt_bool_t rtsp_client_message_handler(void *obj, rtsp_message_t *message, rtsp_stream_status_e status)
{
rtsp_client_connection_t *rtsp_connection = obj;
- if(result != RTSP_STREAM_MESSAGE_COMPLETE) {
+ if(status != RTSP_STREAM_STATUS_COMPLETE) {
/* message is not completely parsed, nothing to do */
return TRUE;
}
rtsp_client_session_t *session;
/* at first, pop in-progress request/session */
if(rtsp_client_request_pop(rtsp_connection,message,&request,&session) == FALSE) {
- apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unexpected RTSP Response Received CSeq:%d",message->header.cseq);
- return FALSE;
+ apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unexpected RTSP Response Received CSeq:%"APR_SIZE_T_FMT,
+ message->header.cseq);
+ return TRUE;
}
/* next, process session response */
/* respond if no resources left */
if(apr_hash_count(session->resource_table) == 0) {
rtsp_client_session_terminate_respond(rtsp_connection->client,session);
+
+ if(apr_hash_count(rtsp_connection->handle_table) == 0) {
+ rtsp_client_connection_destroy(rtsp_connection);
+ /* return FALSE to indicate connection has been destroyed */
+ return FALSE;
+ }
}
}
}
stream->pos);
/* reset pos */
- stream->pos = stream->text.buf;
+ apt_text_stream_reset(stream);
/* walk through the stream parsing RTSP messages */
return rtsp_stream_walk(rtsp_connection->parser,stream,rtsp_client_message_handler,rtsp_connection);
}
apt_text_stream_t stream;
stream.text = *field;
- stream.pos = stream.text.buf;
+ apt_text_stream_reset(&stream);
/* read attrib name */
if(apt_text_field_read(&stream,'=',TRUE,&name) == FALSE) {
apt_text_stream_t stream;
stream.text = *value;
- stream.pos = stream.text.buf;
+ apt_text_stream_reset(&stream);
/* set the defaults */
transport->protocol = RTSP_TRANSPORT_RTP;
apt_text_stream_t stream;
stream.text = *line;
- stream.pos = stream.text.buf;
+ apt_text_stream_reset(&stream);
/* read transport protocol (RTP/AVP[/UDP]) */
if(apt_text_field_read(&stream,';',TRUE,&field) == FALSE) {
return FALSE;
return NULL;
}
- apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Create RTSP Server %s:%hu [%d]",listen_ip,listen_port,max_connection_count);
+ apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Create RTSP Server %s:%hu [%"APR_SIZE_T_FMT"]",
+ listen_ip,listen_port,max_connection_count);
server = apr_palloc(pool,sizeof(rtsp_server_t));
server->pool = pool;
server->obj = obj;
apt_bool_t status = FALSE;
rtsp_server_connection_t *rtsp_connection;
apt_text_stream_t *stream;
- rtsp_stream_result_e result;
+ rtsp_stream_status_e result;
if(!connection || !connection->sock) {
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No RTSP Connection");
rtsp_generator_message_set(rtsp_connection->generator,message);
do {
stream->text.length = sizeof(rtsp_connection->tx_buffer)-1;
- stream->pos = stream->text.buf;
+ apt_text_stream_reset(stream);
result = rtsp_generator_run(rtsp_connection->generator,stream);
- if(result == RTSP_STREAM_MESSAGE_COMPLETE || result == RTSP_STREAM_MESSAGE_TRUNCATED) {
+ if(result != RTSP_STREAM_STATUS_INVALID) {
stream->text.length = stream->pos - stream->text.buf;
*stream->pos = '\0';
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate RTSP Stream");
}
}
- while(result == RTSP_STREAM_MESSAGE_TRUNCATED);
+ while(result == RTSP_STREAM_STATUS_INCOMPLETE);
return status;
}
-static apt_bool_t rtsp_server_message_handler(void *obj, rtsp_message_t *message, rtsp_stream_result_e result)
+static apt_bool_t rtsp_server_message_handler(void *obj, rtsp_message_t *message, rtsp_stream_status_e status)
{
rtsp_server_connection_t *rtsp_connection = obj;
- if(result == RTSP_STREAM_MESSAGE_COMPLETE) {
+ if(status == RTSP_STREAM_STATUS_COMPLETE) {
/* message is completely parsed */
apt_str_t *destination;
rtsp_message_t *message = rtsp_parser_message_get(rtsp_connection->parser);
}
rtsp_server_session_request_process(rtsp_connection->server,rtsp_connection,message);
}
- else if(result == RTSP_STREAM_MESSAGE_INVALID) {
+ else if(status == RTSP_STREAM_STATUS_INVALID) {
/* error case */
rtsp_message_t *response;
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse RTSP Stream");
stream->pos);
/* reset pos */
- stream->pos = stream->text.buf;
+ apt_text_stream_reset(stream);
/* walk through the stream parsing RTSP messages */
return rtsp_stream_walk(rtsp_connection->parser,stream,rtsp_server_message_handler,rtsp_connection);
}
rtsp_server_session_t *session;
void *val;
apr_hash_index_t *it;
- apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Terminate Remaining RTSP Sessions [%d]",remaining_sessions);
+ apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Terminate Remaining RTSP Sessions [%"APR_SIZE_T_FMT"]",
+ remaining_sessions);
it = apr_hash_first(connection->pool,rtsp_connection->session_table);
for(; it; it = apr_hash_next(it)) {
apr_hash_this(it,NULL,NULL,&val);
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse RTSP start-line");
return FALSE;
}
- line.pos = line.text.buf;
+ apt_text_stream_reset(&line);
if(apt_text_field_read(&line,APT_TOKEN_SP,TRUE,&field) == FALSE) {
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot read the first field in start-line");
return FALSE;
#include "rtsp_stream.h"
#include "apt_log.h"
+/** Stage of RTSP stream processing (parse/generate) */
+typedef enum {
+ RTSP_STREAM_STAGE_NONE,
+ RTSP_STREAM_STAGE_START_LINE,
+ RTSP_STREAM_STAGE_HEADER,
+ RTSP_STREAM_STAGE_BODY
+} rtsp_stream_stage_e;
+
/** RTSP parser */
struct rtsp_parser_t {
- rtsp_stream_result_e result;
- char *pos;
+ rtsp_stream_stage_e stage;
apt_bool_t skip_lf;
rtsp_message_t *message;
apr_pool_t *pool;
/** RTSP generator */
struct rtsp_generator_t {
- rtsp_stream_result_e result;
- char *pos;
+ rtsp_stream_status_e stage;
rtsp_message_t *message;
apr_pool_t *pool;
};
/** Read RTSP message-body */
-static rtsp_stream_result_e rtsp_message_body_read(rtsp_message_t *message, apt_text_stream_t *stream)
+static apt_bool_t rtsp_message_body_read(rtsp_message_t *message, apt_text_stream_t *stream)
{
- rtsp_stream_result_e result = RTSP_STREAM_MESSAGE_COMPLETE;
+ apt_bool_t status = TRUE;
if(message->body.buf) {
/* stream length available to read */
apr_size_t stream_length = stream->text.length - (stream->pos - stream->text.buf);
if(required_length > stream_length) {
required_length = stream_length;
/* not complete */
- result = RTSP_STREAM_MESSAGE_TRUNCATED;
+ status = FALSE;
}
memcpy(message->body.buf+message->body.length,stream->pos,required_length);
message->body.length += required_length;
message->body.buf[message->body.length] = '\0';
}
- return result;
-}
-
-/** Parse RTSP message-body */
-static rtsp_stream_result_e rtsp_message_body_parse(rtsp_message_t *message, apt_text_stream_t *stream, apr_pool_t *pool)
-{
- if(rtsp_header_property_check(&message->header.property_set,RTSP_HEADER_FIELD_CONTENT_LENGTH) == TRUE) {
- if(message->header.content_length) {
- apt_str_t *body = &message->body;
- body->buf = apr_palloc(pool,message->header.content_length+1);
- body->length = 0;
- return rtsp_message_body_read(message,stream);
- }
- }
- return RTSP_STREAM_MESSAGE_COMPLETE;
+ return status;
}
/** Write RTSP message-body */
-static rtsp_stream_result_e rtsp_message_body_write(rtsp_message_t *message, apt_text_stream_t *stream)
+static apt_bool_t rtsp_message_body_write(rtsp_message_t *message, apt_text_stream_t *stream)
{
- rtsp_stream_result_e result = RTSP_STREAM_MESSAGE_COMPLETE;
+ apt_bool_t status = TRUE;
if(message->body.length < message->header.content_length) {
/* stream length available to write */
apr_size_t stream_length = stream->text.length - (stream->pos - stream->text.buf);
if(required_length > stream_length) {
required_length = stream_length;
/* not complete */
- result = RTSP_STREAM_MESSAGE_TRUNCATED;
+ status = FALSE;
}
memcpy(stream->pos,message->body.buf+message->body.length,required_length);
stream->pos += required_length;
}
- return result;
-}
-
-/** Generate RTSP message-body */
-static rtsp_stream_result_e rtsp_message_body_generate(rtsp_message_t *message, apt_text_stream_t *stream, apr_pool_t *pool)
-{
- if(rtsp_header_property_check(&message->header.property_set,RTSP_HEADER_FIELD_CONTENT_LENGTH) == TRUE) {
- if(message->header.content_length) {
- apt_str_t *body = &message->body;
- body->length = 0;
- return rtsp_message_body_write(message,stream);
- }
- }
- return RTSP_STREAM_MESSAGE_COMPLETE;
+ return status;
}
/** Create RTSP parser */
RTSP_DECLARE(rtsp_parser_t*) rtsp_parser_create(apr_pool_t *pool)
{
rtsp_parser_t *parser = apr_palloc(pool,sizeof(rtsp_parser_t));
- parser->result = RTSP_STREAM_MESSAGE_INVALID;
- parser->pos = NULL;
+ parser->stage = RTSP_STREAM_STAGE_NONE;
parser->skip_lf = FALSE;
parser->message = NULL;
parser->pool = pool;
return parser;
}
-static rtsp_stream_result_e rtsp_parser_break(rtsp_parser_t *parser, apt_text_stream_t *stream)
+static rtsp_stream_status_e rtsp_parser_break(rtsp_parser_t *parser, apt_text_stream_t *stream)
{
- /* failed to parse either start-line or header */
+ /* failed to parse message */
if(apt_text_is_eos(stream) == TRUE) {
- /* end of stream reached, rewind/restore stream */
- stream->pos = parser->pos;
- parser->result = RTSP_STREAM_MESSAGE_TRUNCATED;
- parser->message = NULL;
- }
- else {
- /* error case */
- parser->result = RTSP_STREAM_MESSAGE_INVALID;
+ /* end of stream reached */
+ return RTSP_STREAM_STATUS_INCOMPLETE;
}
- return parser->result;
+
+ /* error case */
+ parser->stage = RTSP_STREAM_STAGE_NONE;
+ return RTSP_STREAM_STATUS_INVALID;
}
/** Parse RTSP stream */
-RTSP_DECLARE(rtsp_stream_result_e) rtsp_parser_run(rtsp_parser_t *parser, apt_text_stream_t *stream)
+RTSP_DECLARE(rtsp_stream_status_e) rtsp_parser_run(rtsp_parser_t *parser, apt_text_stream_t *stream)
{
rtsp_message_t *message = parser->message;
- if(message && parser->result == RTSP_STREAM_MESSAGE_TRUNCATED) {
- /* process continuation data */
- parser->result = rtsp_message_body_read(message,stream);
- return parser->result;
+ if(parser->stage == RTSP_STREAM_STAGE_NONE || !message) {
+ /* create new RTSP message */
+ message = rtsp_message_create(RTSP_MESSAGE_TYPE_UNKNOWN,parser->pool);
+ parser->message = message;
+ parser->stage = RTSP_STREAM_STAGE_START_LINE;
}
- /* create new RTSP message */
- message = rtsp_message_create(RTSP_MESSAGE_TYPE_UNKNOWN,parser->pool);
- parser->message = message;
- /* store current position to be able to rewind/restore stream if needed */
- parser->pos = stream->pos;
- /* parse start-line */
- if(rtsp_start_line_parse(&message->start_line,stream,message->pool) == FALSE) {
- return rtsp_parser_break(parser,stream);
+ if(parser->stage == RTSP_STREAM_STAGE_START_LINE) {
+ /* parse start-line */
+ if(rtsp_start_line_parse(&message->start_line,stream,message->pool) == FALSE) {
+ return rtsp_parser_break(parser,stream);
+ }
+ parser->stage = RTSP_STREAM_STAGE_HEADER;
+ }
+
+ if(parser->stage == RTSP_STREAM_STAGE_HEADER) {
+ /* parse header */
+ if(rtsp_header_parse(&message->header,stream,message->pool) == FALSE) {
+ return rtsp_parser_break(parser,stream);
+ }
+
+ parser->stage = RTSP_STREAM_STAGE_NONE;
+ if(rtsp_header_property_check(&message->header.property_set,RTSP_HEADER_FIELD_CONTENT_LENGTH) == TRUE) {
+ if(message->header.content_length) {
+ apt_str_t *body = &message->body;
+ body->buf = apr_palloc(message->pool,message->header.content_length+1);
+ body->length = 0;
+ parser->stage = RTSP_STREAM_STAGE_BODY;
+ }
+ }
}
- /* parse header */
- if(rtsp_header_parse(&message->header,stream,message->pool) == FALSE) {
- return rtsp_parser_break(parser,stream);
+
+ if(parser->stage == RTSP_STREAM_STAGE_BODY) {
+ if(rtsp_message_body_read(message,stream) == FALSE) {
+ return rtsp_parser_break(parser,stream);
+ }
+ parser->stage = RTSP_STREAM_STAGE_NONE;
}
- /* parse body */
- parser->result = rtsp_message_body_parse(message,stream,message->pool);
-
+
/* in the worst case message segmentation may occur between <CR> and <LF>
of the final empty header */
if(!message->body.length && *(stream->pos-1)== APT_TOKEN_CR) {
/* if this is the case be prepared to skip <LF> */
parser->skip_lf = TRUE;
}
- return parser->result;
+
+ return RTSP_STREAM_STATUS_COMPLETE;
}
/** Get parsed RTSP message */
RTSP_DECLARE(rtsp_generator_t*) rtsp_generator_create(apr_pool_t *pool)
{
rtsp_generator_t *generator = apr_palloc(pool,sizeof(rtsp_generator_t));
- generator->result = RTSP_STREAM_MESSAGE_INVALID;
- generator->pos = NULL;
+ generator->stage = RTSP_STREAM_STAGE_NONE;
generator->message = NULL;
generator->pool = pool;
return generator;
return TRUE;
}
-static rtsp_stream_result_e rtsp_generator_break(rtsp_generator_t *generator, apt_text_stream_t *stream)
+static rtsp_stream_status_e rtsp_generator_break(rtsp_generator_t *generator, apt_text_stream_t *stream)
{
- /* failed to generate either start-line or header */
+ /* failed to generate message */
if(apt_text_is_eos(stream) == TRUE) {
- /* end of stream reached, rewind/restore stream */
- stream->pos = generator->pos;
- generator->result = RTSP_STREAM_MESSAGE_TRUNCATED;
- }
- else {
- /* error case */
- generator->result = RTSP_STREAM_MESSAGE_INVALID;
+ /* end of stream reached */
+ return RTSP_STREAM_STATUS_INCOMPLETE;
}
- return generator->result;
+
+ /* error case */
+ generator->stage = RTSP_STREAM_STAGE_NONE;
+ return RTSP_STREAM_STATUS_INVALID;
}
/** Generate RTSP stream */
-RTSP_DECLARE(rtsp_stream_result_e) rtsp_generator_run(rtsp_generator_t *generator, apt_text_stream_t *stream)
+RTSP_DECLARE(rtsp_stream_status_e) rtsp_generator_run(rtsp_generator_t *generator, apt_text_stream_t *stream)
{
rtsp_message_t *message = generator->message;
if(!message) {
- return RTSP_STREAM_MESSAGE_INVALID;
+ return RTSP_STREAM_STATUS_INVALID;
}
- if(message && generator->result == RTSP_STREAM_MESSAGE_TRUNCATED) {
- /* process continuation data */
- generator->result = rtsp_message_body_write(message,stream);
- return generator->result;
- }
+ if(generator->stage == RTSP_STREAM_STAGE_NONE) {
+ /* generate start-line */
+ if(rtsp_start_line_generate(&message->start_line,stream) == FALSE) {
+ return rtsp_generator_break(generator,stream);
+ }
+
+ /* generate header */
+ if(rtsp_header_generate(&message->header,stream) == FALSE) {
+ return rtsp_generator_break(generator,stream);
+ }
- /* generate start-line */
- if(rtsp_start_line_generate(&message->start_line,stream) == FALSE) {
- return rtsp_generator_break(generator,stream);
+ generator->stage = RTSP_STREAM_STAGE_NONE;
+ if(rtsp_header_property_check(&message->header.property_set,RTSP_HEADER_FIELD_CONTENT_LENGTH) == TRUE) {
+ if(message->header.content_length) {
+ apt_str_t *body = &message->body;
+ body->length = 0;
+ generator->stage = RTSP_STREAM_STAGE_BODY;
+ }
+ }
}
- /* generate header */
- if(rtsp_header_generate(&message->header,stream) == FALSE) {
- return rtsp_generator_break(generator,stream);
+ if(generator->stage == RTSP_STREAM_STAGE_BODY) {
+ if(rtsp_message_body_write(message,stream) == FALSE) {
+ return rtsp_generator_break(generator,stream);
+ }
+
+ generator->stage = RTSP_STREAM_STAGE_NONE;
}
- /* generate body */
- generator->result = rtsp_message_body_generate(message,stream,message->pool);
- return generator->result;
+ return RTSP_STREAM_STATUS_COMPLETE;
}
/** Walk through RTSP stream and invoke message handler for each parsed message */
RTSP_DECLARE(apt_bool_t) rtsp_stream_walk(rtsp_parser_t *parser, apt_text_stream_t *stream, rtsp_message_handler_f handler, void *obj)
{
- rtsp_stream_result_e result;
+ rtsp_stream_status_e status;
if(parser->skip_lf == TRUE) {
/* skip <LF> occurred as a result of message segmentation between <CR> and <LF> */
apt_text_char_skip(stream,APT_TOKEN_LF);
parser->skip_lf = FALSE;
}
do {
- result = rtsp_parser_run(parser,stream);
- if(result == RTSP_STREAM_MESSAGE_COMPLETE) {
+ status = rtsp_parser_run(parser,stream);
+ if(status == RTSP_STREAM_STATUS_COMPLETE) {
/* message is completely parsed */
apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Parsed RTSP Message [%lu]", stream->pos - stream->text.buf);
- /* invoke message handler */
- handler(obj,parser->message,result);
+ /* connection has already been destroyed, if handler return FALSE */
+ if(handler(obj,parser->message,status) == FALSE) {
+ return TRUE;
+ }
}
- else if(result == RTSP_STREAM_MESSAGE_TRUNCATED) {
+ else if(status == RTSP_STREAM_STATUS_INCOMPLETE) {
/* message is partially parsed, to be continued */
apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Truncated RTSP Message [%lu]", stream->pos - stream->text.buf);
/* prepare stream for further processing */
}
return TRUE;
}
- else if(result == RTSP_STREAM_MESSAGE_INVALID){
+ else if(status == RTSP_STREAM_STATUS_INVALID){
/* error case */
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse RTSP Message");
/* invoke message handler */
- handler(obj,parser->message,result);
- /* reset stream pos */
- stream->pos = stream->text.buf;
+ if(handler(obj,parser->message,status) == TRUE) {
+ /* reset stream pos */
+ stream->pos = stream->text.buf;
+ }
return FALSE;
}
}
while(apt_text_is_eos(stream) == FALSE);
/* reset stream pos */
- stream->pos = stream->text.buf;
+ apt_text_stream_reset(stream);
return TRUE;
}
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="codecs"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="codecs"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpv2transport.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpv2transport.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpv2transport.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpv2transport.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpv2transport.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpv2transport.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
offset += snprintf(buffer+offset,size-offset,"a=ptime:%hu\r\n",audio_media->ptime);
}
}
- offset += snprintf(buffer+offset,size-offset,"a=mid:%d\r\n",audio_media->mid);
+ offset += snprintf(buffer+offset,size-offset,"a=mid:%"APR_SIZE_T_FMT"\r\n",audio_media->mid);
return offset;
}
for(i=0; i<control_media->cmid_arr->nelts; i++) {
offset += snprintf(buffer+offset,size-offset,
- "a=cmid:%d\r\n",
+ "a=cmid:%"APR_SIZE_T_FMT"\r\n",
APR_ARRAY_IDX(control_media->cmid_arr,i,apr_size_t));
}
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcpsignaling.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops;$(ProjectDir)..\..\build\vsprops\sofiasip.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
apt_task_name_set(task,UNIRTSP_TASK_NAME);
agent->sig_agent->task = task;
- apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create "UNIRTSP_TASK_NAME" %s:%hu [%d]",
+ apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create "UNIRTSP_TASK_NAME" %s:%hu [%"APR_SIZE_T_FMT"]",
config->server_ip,
config->server_port,
config->max_connection_count);
apt_str_t resource_name_str;
text_stream.text = message->body;
- text_stream.pos = text_stream.text.buf;
+ apt_text_stream_reset(&text_stream);
apt_string_set(&resource_name_str,resource_name);
parser = mrcp_parser_create(agent->sig_agent->resource_factory,session->mrcp_session->pool);
mrcp_parser_resource_name_set(parser,&resource_name_str);
- if(mrcp_parser_run(parser,&text_stream) == MRCP_STREAM_MESSAGE_COMPLETE) {
+ if(mrcp_parser_run(parser,&text_stream) == MRCP_STREAM_STATUS_COMPLETE) {
mrcp_message = mrcp_parser_message_get(parser);
mrcp_message->channel_id.session_id = message->header.session_id;
}
apt_task_name_set(task,UNIRTSP_TASK_NAME);
agent->sig_agent->task = task;
- apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create "UNIRTSP_TASK_NAME" %s:%hu [%d]",
+ apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create "UNIRTSP_TASK_NAME" %s:%hu [%"APR_SIZE_T_FMT"]",
config->local_ip,
config->local_port,
config->max_connection_count);
apt_str_t resource_name_str;
text_stream.text = message->body;
- text_stream.pos = text_stream.text.buf;
+ apt_text_stream_reset(&text_stream);
apt_string_set(&resource_name_str,resource_name);
parser = mrcp_parser_create(agent->sig_agent->resource_factory,session->mrcp_session->pool);
mrcp_parser_resource_name_set(parser,&resource_name_str);
- if(mrcp_parser_run(parser,&text_stream) == MRCP_STREAM_MESSAGE_COMPLETE) {
+ if(mrcp_parser_run(parser,&text_stream) == MRCP_STREAM_STATUS_COMPLETE) {
mrcp_message_t *mrcp_message = mrcp_parser_message_get(parser);
mrcp_message->channel_id.session_id = message->header.session_id;
status = mrcp_session_control_request(session->mrcp_session,mrcp_message);
--- /dev/null
+#include "setup.txt"
+#define release_dir "Release"
+OutputBaseFilename=unimrcp-sdk-{#= uni_version}
--- /dev/null
+#include "setup.txt"
+#define release_dir "x64\Release"
+OutputBaseFilename=unimrcp-x64-sdk-{#= uni_version}
+ArchitecturesInstallIn64BitMode=x64
--- /dev/null
+#include "setup.txt"
+#define uni_outdir "..\..\Release"
+OutputBaseFilename=unimrcp-{#= uni_version}
--- /dev/null
+#include "setup.txt"
+#define uni_outdir "..\..\x64\Release"
+OutputBaseFilename=unimrcp-x64-{#= uni_version}
+ArchitecturesInstallIn64BitMode=x64
+ArchitecturesAllowed=x64
--- /dev/null
+#define uni_version "0.9.0"
+#define uni_src "..\.."
+
+AppName=UniMRCP
+AppVerName=UniMRCP-{#= uni_version}
+AppPublisher=UniMRCP
+AppPublisherURL=http://www.unimrcp.org/
+AppSupportURL=http://groups.google.com/group/unimrcp
+AppUpdatesURL=http://code.google.com/p/unimrcp/downloads/list
+DefaultDirName={pf}\UniMRCP
+DefaultGroupName=UniMRCP
+Compression=lzma
+InternalCompressLevel=max
+SolidCompression=true
[Setup]
-#include "setup.iss"
-OutputBaseFilename=unimrcp-sdk-{#= uni_version}
+; include either setup-sdk-win32.txt or setup-sdk-x64.txt
+#include "setup-sdk-win32.txt"
+;#include "setup-sdk-x64.txt"
[Types]
-Name: "full"; Description: "Full installation"
-Name: "sdk"; Description: "SDK installation"
-Name: "docs"; Description: "Documentation installation"
-Name: "custom"; Description: "Custom installation"; Flags: iscustom
+Name: full; Description: Full installation
+Name: sdk; Description: SDK installation
+Name: docs; Description: Documentation installation
+Name: custom; Description: Custom installation; Flags: iscustom
[Components]
-Name: "sdk"; Description: "UniMRCP SDK (client, server and plugin development)"; Types: full sdk
-Name: "docs"; Description: "UniMRCP documentation"; Types: full docs
-Name: "docs\design"; Description: "Design concepts"; Types: full docs
-Name: "docs\api"; Description: "API"; Types: full docs
+Name: sdk; Description: UniMRCP SDK (client, server and plugin development); Types: full sdk
+Name: docs; Description: UniMRCP documentation; Types: full docs
+Name: docs\design; Description: Design concepts; Types: full docs
+Name: docs\api; Description: API; Types: full docs
[Files]
-Source: "..\..\libs\apr\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\libs\apr-toolkit\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\libs\mpf\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\libs\mrcp\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\libs\mrcp\message\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\libs\mrcp\control\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\libs\mrcp\resources\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\libs\mrcp-engine\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\libs\mrcp-signaling\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\libs\mrcpv2-transport\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\libs\mrcp-client\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\libs\mrcp-server\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\platforms\libunimrcp-client\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\platforms\libunimrcp-server\include\*.h"; DestDir: "{app}\include"; Components: sdk
-Source: "..\..\Release\bin\*.lib"; DestDir: "{app}\lib"; Components: sdk
-Source: "..\..\libs\apr\Release\*.lib"; DestDir: "{app}\lib"; Components: sdk
-Source: "..\..\libs\apr-util\Release\*.lib"; DestDir: "{app}\lib"; Components: sdk
-Source: "..\..\libs\sofia-sip\win32\libsofia-sip-ua\Release\*.lib"; DestDir: "{app}\lib"; Components: sdk
-Source: "..\..\build\vsprops\sdk\*.vsprops"; DestDir: "{app}\vsprops"; Components: sdk; AfterInstall: SetProjectPath()
-Source: "..\..\docs\ea\*"; DestDir: "{app}\doc\ea"; Components: docs/design; Flags: recursesubdirs
-Source: "..\..\docs\dox\*"; DestDir: "{app}\doc\dox"; Components: docs/api; Flags: recursesubdirs
+Source: {#= uni_src}\libs\apr\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\libs\apr-toolkit\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\libs\mpf\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\libs\mrcp\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\libs\mrcp\message\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\libs\mrcp\control\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\libs\mrcp\resources\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\libs\mrcp-engine\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\libs\mrcp-signaling\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\libs\mrcpv2-transport\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\libs\mrcp-client\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\libs\mrcp-server\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\platforms\libunimrcp-client\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\platforms\libunimrcp-server\include\*.h; DestDir: {app}\include; Components: sdk
+Source: {#= uni_src}\{#= release_dir}\lib\*.lib; DestDir: {app}\lib; Components: sdk
+Source: {#= uni_src}\libs\apr\{#= release_dir}\*.lib; DestDir: {app}\lib; Components: sdk
+Source: {#= uni_src}\libs\apr-util\{#= release_dir}\*.lib; DestDir: {app}\lib; Components: sdk
+Source: {#= uni_src}\libs\sofia-sip\win32\libsofia-sip-ua\{#= release_dir}\*.lib; DestDir: {app}\lib; Components: sdk
+Source: {#= uni_src}\build\vsprops\sdk\*.vsprops; DestDir: {app}\vsprops; Components: sdk; AfterInstall: SetProjectPath()
+Source: {#= uni_src}\docs\ea\*; DestDir: {app}\doc\ea; Components: docs/design; Flags: recursesubdirs
+Source: {#= uni_src}\docs\dox\*; DestDir: {app}\doc\dox; Components: docs/api; Flags: recursesubdirs
[Icons]
-Name: "{group}\UniMRCP Docs\Design concepts"; Filename: "{app}\doc\ea\index.htm"; Components: docs\design
-Name: "{group}\UniMRCP Docs\API"; Filename: "{app}\doc\dox\html\index.html"; Components: docs\api
-Name: "{group}\Uninstall"; Filename: "{uninstallexe}"
+Name: {group}\UniMRCP Docs\Design concepts; Filename: {app}\doc\ea\index.htm; Components: docs\design
+Name: {group}\UniMRCP Docs\API; Filename: {app}\doc\dox\html\index.html; Components: docs\api
+Name: {group}\Uninstall; Filename: {uninstallexe}
[Code]
procedure SetProjectPath();
[Setup]
-#include "setup.iss"
-OutputBaseFilename=unimrcp-{#= uni_version}
+; include either setup-win32.txt or setup-x64.txt
+#include "setup-win32.txt"
+;#include "setup-x64.txt"
[Types]
-Name: "full"; Description: "Full installation"
-Name: "server"; Description: "Server installation"
-Name: "client"; Description: "Client installation"
-Name: "custom"; Description: "Custom installation"; Flags: iscustom
+Name: full; Description: Full installation
+Name: server; Description: Server installation
+Name: client; Description: Client installation
+Name: custom; Description: Custom installation; Flags: iscustom
[Components]
-Name: "server"; Description: "UniMRCP server"; Types: full server
-Name: "server\cepstral"; Description: "Cepstral synthesizer plugin"; Types: full server
-Name: "server\demosynth"; Description: "Demo synthesizer plugin"; Types: full server
-Name: "server\demorecog"; Description: "Demo recognizer plugin"; Types: full server
-Name: "client"; Description: "UniMRCP client (demo application)"; Types: full client
+Name: server; Description: UniMRCP server; Types: full server
+Name: server\recorder; Description: Recorder plugin; Types: full server
+Name: server\demosynth; Description: Demo synthesizer plugin; Types: full server
+Name: server\demorecog; Description: Demo recognizer plugin; Types: full server
+Name: client; Description: UniMRCP client (demo application); Types: full client
[Dirs]
-Name: "{app}\data"; Permissions: everyone-full;
-Name: "{app}\log"; Permissions: everyone-full;
+Name: {app}\data; Permissions: everyone-full
+Name: {app}\log; Permissions: everyone-full
[Files]
-#define uni_root "..\..\Release"
-Source: "{#= uni_root}\bin\unimrcpserver.exe"; DestDir: "{app}\bin"; Components: server
-Source: "{#= uni_root}\bin\unimrcpservice.exe"; DestDir: "{app}\bin"; Components: server
-Source: "{#= uni_root}\bin\unimrcpclient.exe"; DestDir: "{app}\bin"; Components: client
-Source: "{#= uni_root}\bin\*.dll"; DestDir: "{app}\bin"; Components: server client
-Source: "{#= uni_root}\plugin\mrcpcepstral.dll"; DestDir: "{app}\plugin"; Components: server/cepstral
-Source: "{#= uni_root}\plugin\demosynth.dll"; DestDir: "{app}\plugin"; Components: server/demosynth
-Source: "{#= uni_root}\plugin\demorecog.dll"; DestDir: "{app}\plugin"; Components: server/demorecog
-Source: "{#= uni_root}\conf\unimrcpserver.xml"; DestDir: "{app}\conf"; Components: server
-Source: "{#= uni_root}\conf\unimrcpclient.xml"; DestDir: "{app}\conf"; Components: client
-Source: "{#= uni_root}\data\*.pcm"; DestDir: "{app}\data"; Components: server client
-Source: "{#= uni_root}\data\*.xml"; DestDir: "{app}\data"; Components: server client
+Source: {#= uni_outdir}\bin\unimrcpserver.exe; DestDir: {app}\bin; Components: server
+Source: {#= uni_outdir}\bin\unimrcpservice.exe; DestDir: {app}\bin; Components: server
+Source: {#= uni_outdir}\bin\unimrcpclient.exe; DestDir: {app}\bin; Components: client
+Source: {#= uni_outdir}\bin\umc.exe; DestDir: {app}\bin; Components: client
+Source: {#= uni_outdir}\bin\*.dll; DestDir: {app}\bin; Components: server client
+Source: {#= uni_outdir}\plugin\mrcprecorder.dll; DestDir: {app}\plugin; Components: server/recorder
+Source: {#= uni_outdir}\plugin\demosynth.dll; DestDir: {app}\plugin; Components: server/demosynth
+Source: {#= uni_outdir}\plugin\demorecog.dll; DestDir: {app}\plugin; Components: server/demorecog
+Source: {#= uni_outdir}\conf\unimrcpserver.xml; DestDir: {app}\conf; Components: server
+Source: {#= uni_outdir}\conf\unimrcpclient.xml; DestDir: {app}\conf; Components: client
+Source: {#= uni_outdir}\conf\umcscenarios.xml; DestDir: {app}\conf; Components: client
+Source: {#= uni_outdir}\data\*.pcm; DestDir: {app}\data; Components: server client
+Source: {#= uni_outdir}\data\*.xml; DestDir: {app}\data; Components: server client
[Icons]
-Name: "{group}\UniMRCP Server Console"; Filename: "{app}\bin\unimrcpserver.exe"; Parameters: "--root-dir ""{app}"""; Components: server
-Name: "{group}\UniMRCP Client Console"; Filename: "{app}\bin\unimrcpclient.exe"; Parameters: "--root-dir ""{app}"""; Components: client
-Name: "{group}\UniMRCP Service\Start Server"; Filename: "{app}\bin\unimrcpservice.exe"; Parameters: "--start"; Components: server
-Name: "{group}\UniMRCP Service\Stop Server"; Filename: "{app}\bin\unimrcpservice.exe"; Parameters: "--stop"; Components: server
-Name: "{group}\Uninstall"; Filename: "{uninstallexe}"
+Name: {group}\UniMRCP Server Console; Filename: {app}\bin\unimrcpserver.exe; Parameters: "--root-dir ""{app}"""; Components: server
+Name: {group}\UniMRCP Client Console; Filename: {app}\bin\unimrcpclient.exe; Parameters: "--root-dir ""{app}"""; Components: client
+Name: {group}\UniMRCP Service\Start Server; Filename: {app}\bin\unimrcpservice.exe; Parameters: --start; Components: server
+Name: {group}\UniMRCP Service\Stop Server; Filename: {app}\bin\unimrcpservice.exe; Parameters: --stop; Components: server
+Name: {group}\Uninstall; Filename: {uninstallexe}
[Run]
-Filename: "{app}\bin\unimrcpservice.exe"; Description: "Register service"; Parameters: "--register ""{app}"""; Components: server
+Filename: {app}\bin\unimrcpservice.exe; Description: Register service; Parameters: "--register ""{app}"""; Components: server
[UninstallRun]
-Filename: "{app}\bin\unimrcpservice.exe"; Parameters: "--unregister"; Components: server
+Filename: {app}\bin\unimrcpservice.exe; Parameters: --unregister; Components: server
[Code]
var
Content: String;
-
+
procedure ModifyPluginConf(PluginName: String; Enable: Boolean);
var
TextFrom: String;
begin
CfgFile := ExpandConstant('{app}\conf\unimrcpserver.xml');
LoadStringFromFile (CfgFile, Content);
- ModifyPluginConf ('mrcpcepstral', IsComponentSelected('server\cepstral'));
+ ModifyPluginConf ('mrcprecorder', IsComponentSelected('server\recorder'));
ModifyPluginConf ('demosynth', IsComponentSelected('server\demosynth'));
ModifyPluginConf ('demorecog', IsComponentSelected('server\demorecog'));
SaveStringToFile (CfgFile, Content, False);
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
<Configuration
Name="Release|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include;"..\libasr-client\include""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="libasrclient.lib libapr-1.lib"
+ LinkTimeCodeGeneration="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include;"..\libasr-client\include""
+ RuntimeLibrary="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="libasrclient.lib libapr-1.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
<Platform\r
Name="Win32"\r
/>\r
+ <Platform\r
+ Name="x64"\r
+ />\r
</Platforms>\r
<ToolFiles>\r
</ToolFiles>\r
<Configuration\r
Name="Debug|Win32"\r
ConfigurationType="2"\r
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"\r
CharacterSet="1"\r
>\r
<Tool\r
<Configuration\r
Name="Release|Win32"\r
ConfigurationType="2"\r
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="include"\r
+ PreprocessorDefinitions="ASR_CLIENT_LIB_EXPORT"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ AdditionalDependencies="$(UniMRCPClientLibs)"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Debug|x64"\r
+ ConfigurationType="2"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ TargetEnvironment="3"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="include"\r
+ PreprocessorDefinitions="ASR_CLIENT_LIB_EXPORT"\r
+ DebugInformationFormat="3"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ AdditionalDependencies="$(UniMRCPClientLibs)"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|x64"\r
+ ConfigurationType="2"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"\r
CharacterSet="1"\r
WholeProgramOptimization="1"\r
>\r
/>\r
<Tool\r
Name="VCMIDLTool"\r
+ TargetEnvironment="3"\r
/>\r
<Tool\r
Name="VCCLCompilerTool"\r
}
recog_header->no_input_timeout = 5000;
mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_NO_INPUT_TIMEOUT);
- recog_header->recognition_timeout = 10000;
+ recog_header->recognition_timeout = 20000;
mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_RECOGNITION_TIMEOUT);
+ recog_header->speech_complete_timeout = 400;
+ mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT);
+ recog_header->dtmf_term_timeout = 3000;
+ mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_DTMF_TERM_TIMEOUT);
+ recog_header->dtmf_interdigit_timeout = 3000;
+ mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT);
+ recog_header->confidence_threshold = 0.5f;
+ mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD);
recog_header->start_input_timers = TRUE;
mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_START_INPUT_TIMERS);
- recog_header->confidence_threshold = 0.87f;
- mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD);
}
}
return mrcp_message;
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""$(ProjectRootDir)modules\mrcp-sofiasip\include";"$(ProjectRootDir)modules\mrcp-unirtsp\include""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""$(ProjectRootDir)modules\mrcp-sofiasip\include";"$(ProjectRootDir)modules\mrcp-unirtsp\include""
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
for(elem = root->first_child; elem; elem = elem->next) {
if(strcasecmp(elem->name,"engine") == 0) {
mpf_engine_t *media_engine;
- unsigned long rate = 1;
+ unsigned long realtime_rate = 1;
const char *name = NULL;
const apr_xml_attr *attr;
for(attr = elem->attr; attr; attr = attr->next) {
if(strcasecmp(attr->name,"name") == 0) {
name = apr_pstrdup(pool,attr->value);
}
- else if(strcasecmp(attr->name,"rate") == 0) {
- rate = atol(attr->value);
+ else if(strcasecmp(attr->name,"realtime-rate") == 0) {
+ realtime_rate = atol(attr->value);
}
else {
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Attribute <%s>",attr->name);
apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Media Engine");
media_engine = mpf_engine_create(pool);
if(media_engine) {
- mpf_engine_scheduler_rate_set(media_engine,rate);
+ mpf_engine_scheduler_rate_set(media_engine,realtime_rate);
mrcp_client_media_engine_register(client,media_engine,name);
}
}
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpserver.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpserver.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="4"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpserver.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpserver.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""$(ProjectRootDir)modules\mrcp-sofiasip\include";"$(ProjectRootDir)modules\mrcp-unirtsp\include""
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpserver.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""$(ProjectRootDir)modules\mrcp-sofiasip\include";"$(ProjectRootDir)modules\mrcp-unirtsp\include""
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unilib-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpserver.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
for(elem = root->first_child; elem; elem = elem->next) {
if(strcasecmp(elem->name,"engine") == 0) {
mpf_engine_t *media_engine;
- unsigned long rate = 1;
+ unsigned long realtime_rate = 1;
const char *name = NULL;
const apr_xml_attr *attr;
for(attr = elem->attr; attr; attr = attr->next) {
if(strcasecmp(attr->name,"name") == 0) {
name = apr_pstrdup(pool,attr->value);
}
- else if(strcasecmp(attr->name,"rate") == 0) {
- rate = atol(attr->value);
+ else if(strcasecmp(attr->name,"realtime-rate") == 0) {
+ realtime_rate = atol(attr->value);
}
else {
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Attribute <%s>",attr->name);
apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Media Engine");
media_engine = mpf_engine_create(pool);
if(media_engine) {
- mpf_engine_scheduler_rate_set(media_engine,rate);
+ mpf_engine_scheduler_rate_set(media_engine,realtime_rate);
mrcp_server_media_engine_register(server,media_engine,name);
}
}
src/recorderscenario.cpp \
src/recordersession.cpp \
src/dtmfscenario.cpp \
- src/dtmfsession.cpp
+ src/dtmfsession.cpp \
+ src/setparamscenario.cpp \
+ src/setparamsession.cpp
umc_LDADD = $(top_builddir)/platforms/libunimrcp-client/libunimrcpclient.la
if ISMAC
/* ============================ HANDLERS =================================== */
virtual bool OnSessionTerminate(mrcp_sig_status_code_e status);
virtual bool OnChannelAdd(mrcp_channel_t* channel, mrcp_sig_status_code_e status);
- virtual bool OnChannelRemove(mrcp_channel_t* channel, mrcp_sig_status_code_e status);
virtual bool OnMessageReceive(mrcp_channel_t* channel, mrcp_message_t* message);
/* ============================ ACCESSORS ================================== */
/* ============================ HANDLERS =================================== */
virtual bool OnSessionTerminate(mrcp_sig_status_code_e status);
virtual bool OnChannelAdd(mrcp_channel_t* channel, mrcp_sig_status_code_e status);
- virtual bool OnChannelRemove(mrcp_channel_t* channel, mrcp_sig_status_code_e status);
virtual bool OnMessageReceive(mrcp_channel_t* channel, mrcp_message_t* message);
/* ============================ ACCESSORS ================================== */
/* ============================ HANDLERS =================================== */
virtual bool OnSessionTerminate(mrcp_sig_status_code_e status);
virtual bool OnChannelAdd(mrcp_channel_t* channel, mrcp_sig_status_code_e status);
- virtual bool OnChannelRemove(mrcp_channel_t* channel, mrcp_sig_status_code_e status);
virtual bool OnMessageReceive(mrcp_channel_t* channel, mrcp_message_t* message);
/* ============================ ACCESSORS ================================== */
--- /dev/null
+/*
+ * Copyright 2008 Arsen Chaloyan
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __SETPARAM_SCENARIO_H__
+#define __SETPARAM_SCENARIO_H__
+
+/**
+ * @file setaparamscenario.h
+ * @brief Set Params Scenario
+ */
+
+#include "umcscenario.h"
+
+class SetParamScenario : public UmcScenario
+{
+public:
+/* ============================ CREATORS =================================== */
+
+/* ============================ MANIPULATORS =============================== */
+
+ virtual UmcSession* CreateSession();
+
+/* ============================ ACCESSORS ================================== */
+
+/* ============================ INQUIRIES ================================== */
+protected:
+/* ============================ MANIPULATORS =============================== */
+
+/* ============================ DATA ======================================= */
+};
+
+/* ============================ INLINE METHODS ============================= */
+
+#endif /*__SETPARAM_SCENARIO_H__*/
--- /dev/null
+/*
+ * Copyright 2008 Arsen Chaloyan
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __SETPARAM_SESSION_H__
+#define __SETPARAM_SESSION_H__
+
+/**
+ * @file setparamsession.h
+ * @brief Set Recognizer Params
+ */
+
+#include <apr_tables.h>
+#include "umcsession.h"
+
+class SetParamScenario;
+struct RecogChannel;
+
+class SetParamSession : public UmcSession
+{
+public:
+/* ============================ CREATORS =================================== */
+ SetParamSession(const SetParamScenario* pScenario);
+ virtual ~SetParamSession();
+
+protected:
+/* ============================ MANIPULATORS =============================== */
+ virtual bool Start();
+
+ RecogChannel* CreateRecogChannel();
+
+ bool CreateRequestQueue(mrcp_channel_t* pMrcpChannel);
+ mrcp_message_t* CreateSetParams1(mrcp_channel_t* pMrcpChannel);
+ mrcp_message_t* CreateGetParams1(mrcp_channel_t* pMrcpChannel);
+ mrcp_message_t* CreateSetParams2(mrcp_channel_t* pMrcpChannel);
+ mrcp_message_t* CreateGetParams2(mrcp_channel_t* pMrcpChannel);
+ mrcp_message_t* CreateSetParams3(mrcp_channel_t* pMrcpChannel);
+ mrcp_message_t* CreateGetParams3(mrcp_channel_t* pMrcpChannel);
+
+ bool ProcessNextRequest(mrcp_channel_t* pMrcpChannel);
+
+/* ============================ HANDLERS =================================== */
+ virtual bool OnSessionTerminate(mrcp_sig_status_code_e status);
+ virtual bool OnChannelAdd(mrcp_channel_t* channel, mrcp_sig_status_code_e status);
+ virtual bool OnMessageReceive(mrcp_channel_t* channel, mrcp_message_t* message);
+
+/* ============================ ACCESSORS ================================== */
+ const SetParamScenario* GetScenario() const;
+
+private:
+/* ============================ DATA ======================================= */
+ RecogChannel* m_pRecogChannel;
+ apr_array_header_t* m_RequestQueue;
+ int m_CurrentRequest;
+};
+
+
+/* ============================ INLINE METHODS ============================= */
+inline const SetParamScenario* SetParamSession::GetScenario() const
+{
+ return (SetParamScenario*)m_pScenario;
+}
+
+#endif /*__SETPARAM_SESSION_H__*/
/* ============================ HANDLERS =================================== */
virtual bool OnSessionTerminate(mrcp_sig_status_code_e status);
virtual bool OnChannelAdd(mrcp_channel_t* channel, mrcp_sig_status_code_e status);
- virtual bool OnChannelRemove(mrcp_channel_t* channel, mrcp_sig_status_code_e status);
virtual bool OnMessageReceive(mrcp_channel_t* channel, mrcp_message_t* message);
/* ============================ ACCESSORS ================================== */
friend void UmcOnTerminateComplete(apt_task_t* pTask);
friend apt_bool_t AppMessageHandler(const mrcp_app_message_t* pAppMessage);
- friend apt_bool_t AppOnReady(mrcp_application_t* pMrcpApplication, mrcp_sig_status_code_e status);
friend apt_bool_t AppOnSessionTerminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status);
private:
mrcp_client_t* m_pMrcpClient;
mrcp_application_t* m_pMrcpApplication;
- bool m_Ready;
-
apr_hash_t* m_pScenarioTable;
apr_hash_t* m_pSessionTable;
};
return StartRecognition(pMrcpChannel);
}
-bool DtmfSession::OnChannelRemove(mrcp_channel_t* pMrcpChannel, mrcp_sig_status_code_e status)
-{
- if(!UmcSession::OnChannelRemove(pMrcpChannel,status))
- return false;
-
- RecogChannel* pRecogChannel = (RecogChannel*) mrcp_application_channel_object_get(pMrcpChannel);
- if(pRecogChannel)
- {
- if(pRecogChannel->m_pDtmfGenerator)
- {
- mpf_dtmf_generator_destroy(pRecogChannel->m_pDtmfGenerator);
- pRecogChannel->m_pDtmfGenerator = NULL;
- }
- }
-
- /* terminate the demo */
- return Terminate();
-}
-
bool DtmfSession::OnMessageReceive(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage)
{
if(!UmcSession::OnMessageReceive(pMrcpChannel,pMrcpMessage))
}
else
{
- /* received unexpected response, remove channel */
- RemoveMrcpChannel(pMrcpChannel);
+ /* received unexpected response, terminate the session */
+ Terminate();
}
}
else
{
pRecogChannel->m_Streaming = false;
}
- RemoveMrcpChannel(pMrcpChannel);
+ Terminate();
}
else if(pMrcpMessage->start_line.method_id == RECOGNIZER_START_OF_INPUT)
{
return StartRecognition(pMrcpChannel);
}
-bool RecogSession::OnChannelRemove(mrcp_channel_t* pMrcpChannel, mrcp_sig_status_code_e status)
-{
- if(!UmcSession::OnChannelRemove(pMrcpChannel,status))
- return false;
-
- RecogChannel* pRecogChannel = (RecogChannel*) mrcp_application_channel_object_get(pMrcpChannel);
- if(pRecogChannel)
- {
- FILE* pAudioIn = pRecogChannel->m_pAudioIn;
- if(pAudioIn)
- {
- pRecogChannel->m_pAudioIn = NULL;
- fclose(pAudioIn);
- }
- }
-
- /* terminate the demo */
- return Terminate();
-}
-
bool RecogSession::OnMessageReceive(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage)
{
if(!UmcSession::OnMessageReceive(pMrcpChannel,pMrcpMessage))
}
else
{
- /* received unexpected response, remove channel */
- RemoveMrcpChannel(pMrcpChannel);
+ /* received unexpected response, terminate the session */
+ Terminate();
}
}
else if(pMrcpMessage->start_line.method_id == RECOGNIZER_RECOGNIZE)
}
else
{
- /* received unexpected response, remove channel */
- RemoveMrcpChannel(pMrcpChannel);
+ /* received unexpected response, terminate the session */
+ Terminate();
}
}
else
{
pRecogChannel->m_Streaming = false;
}
- RemoveMrcpChannel(pMrcpChannel);
+ Terminate();
}
else if(pMrcpMessage->start_line.method_id == RECOGNIZER_START_OF_INPUT)
{
return StartRecorder(pMrcpChannel);
}
-bool RecorderSession::OnChannelRemove(mrcp_channel_t* pMrcpChannel, mrcp_sig_status_code_e status)
-{
- if(!UmcSession::OnChannelRemove(pMrcpChannel,status))
- return false;
-
- RecorderChannel* pRecorderChannel = (RecorderChannel*) mrcp_application_channel_object_get(pMrcpChannel);
- if(pRecorderChannel)
- {
- FILE* pAudioIn = pRecorderChannel->m_pAudioIn;
- if(pAudioIn)
- {
- pRecorderChannel->m_pAudioIn = NULL;
- fclose(pAudioIn);
- }
- }
-
- /* terminate the demo */
- return Terminate();
-}
-
bool RecorderSession::OnMessageReceive(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage)
{
if(!UmcSession::OnMessageReceive(pMrcpChannel,pMrcpMessage))
}
else
{
- /* received unexpected response, remove channel */
- RemoveMrcpChannel(pMrcpChannel);
+ /* received unexpected response, terminate the session */
+ Terminate();
}
}
else
{
pRecorderChannel->m_Streaming = false;
}
- RemoveMrcpChannel(pMrcpChannel);
+ Terminate();
}
else if(pMrcpMessage->start_line.method_id == RECORDER_START_OF_INPUT)
{
--- /dev/null
+/*
+ * Copyright 2008 Arsen Chaloyan
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "setparamscenario.h"
+#include "setparamsession.h"
+
+UmcSession* SetParamScenario::CreateSession()
+{
+ return new SetParamSession(this);
+}
--- /dev/null
+/*
+ * Copyright 2008 Arsen Chaloyan
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "setparamsession.h"
+#include "setparamscenario.h"
+#include "mrcp_message.h"
+#include "mrcp_generic_header.h"
+#include "mrcp_recog_header.h"
+#include "mrcp_recog_resource.h"
+#include "apt_log.h"
+
+struct RecogChannel
+{
+ /** MRCP control channel */
+ mrcp_channel_t* m_pMrcpChannel;
+};
+
+SetParamSession::SetParamSession(const SetParamScenario* pScenario) :
+ UmcSession(pScenario),
+ m_pRecogChannel(NULL),
+ m_RequestQueue(NULL),
+ m_CurrentRequest(0)
+{
+}
+
+SetParamSession::~SetParamSession()
+{
+}
+
+bool SetParamSession::Start()
+{
+ /* create channel and associate all the required data */
+ m_pRecogChannel = CreateRecogChannel();
+ if(!m_pRecogChannel)
+ return false;
+
+ /* add channel to session (send asynchronous request) */
+ if(!AddMrcpChannel(m_pRecogChannel->m_pMrcpChannel))
+ {
+ delete m_pRecogChannel;
+ m_pRecogChannel = NULL;
+ return false;
+ }
+ return true;
+}
+
+bool SetParamSession::OnSessionTerminate(mrcp_sig_status_code_e status)
+{
+ if(m_pRecogChannel)
+ {
+ delete m_pRecogChannel;
+ m_pRecogChannel = NULL;
+ }
+ return UmcSession::OnSessionTerminate(status);
+}
+
+static apt_bool_t ReadStream(mpf_audio_stream_t* pStream, mpf_frame_t* pFrame)
+{
+ return TRUE;
+}
+
+RecogChannel* SetParamSession::CreateRecogChannel()
+{
+ mrcp_channel_t* pChannel;
+ mpf_termination_t* pTermination;
+ mpf_stream_capabilities_t* pCapabilities;
+ apr_pool_t* pool = GetSessionPool();
+
+ /* create channel */
+ RecogChannel *pRecogChannel = new RecogChannel;
+ pRecogChannel->m_pMrcpChannel = NULL;
+
+ /* create source stream capabilities */
+ pCapabilities = mpf_source_stream_capabilities_create(pool);
+ GetScenario()->InitCapabilities(pCapabilities);
+
+ static const mpf_audio_stream_vtable_t audio_stream_vtable =
+ {
+ NULL,
+ NULL,
+ NULL,
+ ReadStream,
+ NULL,
+ NULL,
+ NULL
+ };
+
+ pTermination = CreateAudioTermination(
+ &audio_stream_vtable, /* virtual methods table of audio stream */
+ pCapabilities, /* capabilities of audio stream */
+ pRecogChannel); /* object to associate */
+
+ pChannel = CreateMrcpChannel(
+ MRCP_RECOGNIZER_RESOURCE, /* MRCP resource identifier */
+ pTermination, /* media termination, used to terminate audio stream */
+ NULL, /* RTP descriptor, used to create RTP termination (NULL by default) */
+ pRecogChannel); /* object to associate */
+ if(!pChannel)
+ {
+ delete pRecogChannel;
+ return NULL;
+ }
+
+ pRecogChannel->m_pMrcpChannel = pChannel;
+ return pRecogChannel;
+}
+
+bool SetParamSession::OnChannelAdd(mrcp_channel_t* pMrcpChannel, mrcp_sig_status_code_e status)
+{
+ if(!UmcSession::OnChannelAdd(pMrcpChannel,status))
+ return false;
+
+ if(status != MRCP_SIG_STATUS_CODE_SUCCESS)
+ {
+ /* error case, just terminate the demo */
+ return Terminate();
+ }
+
+ if(!CreateRequestQueue(pMrcpChannel))
+ {
+ return Terminate();
+ }
+
+ return ProcessNextRequest(pMrcpChannel);
+}
+
+bool SetParamSession::OnMessageReceive(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage)
+{
+ if(!UmcSession::OnMessageReceive(pMrcpChannel,pMrcpMessage))
+ return false;
+
+ if(pMrcpMessage->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE)
+ {
+ /* received MRCP response */
+ if(pMrcpMessage->start_line.method_id == RECOGNIZER_SET_PARAMS || pMrcpMessage->start_line.method_id == RECOGNIZER_GET_PARAMS)
+ {
+ /* received the response */
+ if(pMrcpMessage->start_line.request_state == MRCP_REQUEST_STATE_COMPLETE)
+ {
+ m_CurrentRequest++;
+ ProcessNextRequest(pMrcpChannel);
+ }
+ else
+ {
+ /* received unexpected response, terminate the session */
+ Terminate();
+ }
+ }
+ else
+ {
+ /* received unexpected response */
+ Terminate();
+ }
+ }
+ return true;
+}
+
+bool SetParamSession::ProcessNextRequest(mrcp_channel_t* pMrcpChannel)
+{
+ if(m_CurrentRequest >= m_RequestQueue->nelts)
+ {
+ return Terminate();
+ }
+
+ mrcp_message_t* pMrcpMessage = APR_ARRAY_IDX(m_RequestQueue,m_CurrentRequest,mrcp_message_t*);
+ if(!pMrcpMessage)
+ {
+ return Terminate();
+ }
+
+ return SendMrcpRequest(pMrcpChannel,pMrcpMessage);
+}
+
+bool SetParamSession::CreateRequestQueue(mrcp_channel_t* pMrcpChannel)
+{
+ m_CurrentRequest = 0;
+ m_RequestQueue = apr_array_make(GetSessionPool(),5,sizeof(mrcp_message_t*));
+ mrcp_message_t* pMrcpMessage;
+
+ pMrcpMessage = CreateSetParams1(pMrcpChannel);
+ if(pMrcpMessage)
+ *(mrcp_message_t**)apr_array_push(m_RequestQueue) = pMrcpMessage;
+
+ pMrcpMessage = CreateGetParams1(pMrcpChannel);
+ if(pMrcpMessage)
+ *(mrcp_message_t**)apr_array_push(m_RequestQueue) = pMrcpMessage;
+
+ pMrcpMessage = CreateSetParams2(pMrcpChannel);
+ if(pMrcpMessage)
+ *(mrcp_message_t**)apr_array_push(m_RequestQueue) = pMrcpMessage;
+
+ pMrcpMessage = CreateGetParams2(pMrcpChannel);
+ if(pMrcpMessage)
+ *(mrcp_message_t**)apr_array_push(m_RequestQueue) = pMrcpMessage;
+
+ pMrcpMessage = CreateSetParams3(pMrcpChannel);
+ if(pMrcpMessage)
+ *(mrcp_message_t**)apr_array_push(m_RequestQueue) = pMrcpMessage;
+
+ pMrcpMessage = CreateGetParams3(pMrcpChannel);
+ if(pMrcpMessage)
+ *(mrcp_message_t**)apr_array_push(m_RequestQueue) = pMrcpMessage;
+
+ return true;
+}
+
+mrcp_message_t* SetParamSession::CreateSetParams1(mrcp_channel_t* pMrcpChannel)
+{
+ mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_SET_PARAMS);
+ if(!pMrcpMessage)
+ return NULL;
+
+ mrcp_recog_header_t* pRecogHeader;
+ /* get/allocate recog header */
+ pRecogHeader = (mrcp_recog_header_t*) mrcp_resource_header_prepare(pMrcpMessage);
+ if(pRecogHeader)
+ {
+ /* set recog header fields */
+ pRecogHeader->confidence_threshold = 0.4f;
+ mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD);
+ pRecogHeader->sensitivity_level = 0.531f;
+ mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_SENSITIVITY_LEVEL);
+ pRecogHeader->speed_vs_accuracy = 0.5f;
+ mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_SPEED_VS_ACCURACY);
+ pRecogHeader->n_best_list_length = 5;
+ mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_N_BEST_LIST_LENGTH);
+ pRecogHeader->no_input_timeout = 5000;
+ mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_NO_INPUT_TIMEOUT);
+ }
+
+ return pMrcpMessage;
+}
+
+mrcp_message_t* SetParamSession::CreateGetParams1(mrcp_channel_t* pMrcpChannel)
+{
+ mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_GET_PARAMS);
+ if(!pMrcpMessage)
+ return NULL;
+
+ mrcp_recog_header_t* pRecogHeader;
+ /* get/allocate recog header */
+ pRecogHeader = (mrcp_recog_header_t*) mrcp_resource_header_prepare(pMrcpMessage);
+ if(pRecogHeader)
+ {
+ /* set recog header fields */
+ mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD);
+ mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_SENSITIVITY_LEVEL);
+ mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_SPEED_VS_ACCURACY);
+ mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_N_BEST_LIST_LENGTH);
+ mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_NO_INPUT_TIMEOUT);
+ }
+
+ return pMrcpMessage;
+}
+
+mrcp_message_t* SetParamSession::CreateSetParams2(mrcp_channel_t* pMrcpChannel)
+{
+ mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_SET_PARAMS);
+ if(!pMrcpMessage)
+ return NULL;
+
+ mrcp_recog_header_t* pRecogHeader;
+ /* get/allocate recog header */
+ pRecogHeader = (mrcp_recog_header_t*) mrcp_resource_header_prepare(pMrcpMessage);
+ if(pRecogHeader)
+ {
+ /* set recog header fields */
+ pRecogHeader->recognition_timeout = 5000;
+ mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_RECOGNITION_TIMEOUT);
+ pRecogHeader->speech_complete_timeout = 1000;
+ mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT);
+ pRecogHeader->speech_incomplete_timeout = 2000;
+ mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_SPEECH_INCOMPLETE_TIMEOUT);
+ pRecogHeader->dtmf_interdigit_timeout = 3000;
+ mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT);
+ }
+
+ return pMrcpMessage;
+}
+
+mrcp_message_t* SetParamSession::CreateGetParams2(mrcp_channel_t* pMrcpChannel)
+{
+ mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_GET_PARAMS);
+ if(!pMrcpMessage)
+ return NULL;
+
+ mrcp_recog_header_t* pRecogHeader;
+ /* get/allocate recog header */
+ pRecogHeader = (mrcp_recog_header_t*) mrcp_resource_header_prepare(pMrcpMessage);
+ if(pRecogHeader)
+ {
+ /* set recog header fields */
+ mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_RECOGNITION_TIMEOUT);
+ mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT);
+ mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_SPEECH_INCOMPLETE_TIMEOUT);
+ mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT);
+ }
+
+ return pMrcpMessage;
+}
+
+mrcp_message_t* SetParamSession::CreateSetParams3(mrcp_channel_t* pMrcpChannel)
+{
+ mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_SET_PARAMS);
+ if(!pMrcpMessage)
+ return NULL;
+
+ mrcp_generic_header_t* pGenericHeader;
+ /* get/allocate generic header */
+ pGenericHeader = (mrcp_generic_header_t*) mrcp_generic_header_prepare(pMrcpMessage);
+ if(pGenericHeader)
+ {
+ apr_pool_t* pool = GetSessionPool();
+ /* set generic header fields */
+ apt_pair_arr_t* pVSP = apt_pair_array_create(3,pool);
+ if(pVSP)
+ {
+ apt_str_t name;
+ apt_str_t value;
+
+ apt_string_set(&name,"confidencelevel");
+ apt_string_set(&value,"500");
+ apt_pair_array_append(pVSP,&name,&value,pool);
+
+ apt_string_set(&name,"sensitivity");
+ apt_string_set(&value,"0.500");
+ apt_pair_array_append(pVSP,&name,&value,pool);
+
+ apt_string_set(&name,"speedvsaccuracy");
+ apt_string_set(&value,"0.789");
+ apt_pair_array_append(pVSP,&name,&value,pool);
+
+ apt_string_set(&name,"timeout");
+ apt_string_set(&value,"1000");
+ apt_pair_array_append(pVSP,&name,&value,pool);
+
+ apt_string_set(&name,"swirec_application_name");
+ apt_string_set(&value,"UniMRCP");
+ apt_pair_array_append(pVSP,&name,&value,pool);
+
+ apt_string_set(&name,"swirec_phoneme_lookahead_beam");
+ apt_string_set(&value,"-50");
+ apt_pair_array_append(pVSP,&name,&value,pool);
+
+ pGenericHeader->vendor_specific_params = pVSP;
+ mrcp_generic_header_property_add(pMrcpMessage,GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS);
+ }
+ }
+
+ return pMrcpMessage;
+}
+
+mrcp_message_t* SetParamSession::CreateGetParams3(mrcp_channel_t* pMrcpChannel)
+{
+ mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_GET_PARAMS);
+ if(!pMrcpMessage)
+ return NULL;
+
+ mrcp_generic_header_t* pGenericHeader;
+ /* get/allocate generic header */
+ pGenericHeader = (mrcp_generic_header_t*) mrcp_generic_header_prepare(pMrcpMessage);
+ if(pGenericHeader)
+ {
+ mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_ACCEPT_CHARSET);
+ mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_CACHE_CONTROL);
+ mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_LOGGING_TAG);
+ mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS);
+ mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_FETCH_TIMEOUT);
+ mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_SET_COOKIE);
+ mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_SET_COOKIE2);
+ }
+
+ return pMrcpMessage;
+}
return true;
}
-bool SynthSession::OnChannelRemove(mrcp_channel_t* pMrcpChannel, mrcp_sig_status_code_e status)
-{
- if(!UmcSession::OnChannelRemove(pMrcpChannel,status))
- return false;
-
- SynthChannel* pSynthChannel = (SynthChannel*) mrcp_application_channel_object_get(pMrcpChannel);
- if(pSynthChannel)
- {
- FILE* pAudioOut = pSynthChannel->m_pAudioOut;
- if(pAudioOut)
- {
- pSynthChannel->m_pAudioOut = NULL;
- fclose(pAudioOut);
- }
- }
-
- /* terminate the demo */
- return Terminate();
-}
-
bool SynthSession::OnMessageReceive(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage)
{
if(!UmcSession::OnMessageReceive(pMrcpChannel,pMrcpMessage))
}
else
{
- /* received unexpected response, remove channel */
- RemoveMrcpChannel(pMrcpChannel);
+ /* received unexpected response, terminate the session */
+ Terminate();
}
}
else
/* received MRCP event */
if(pMrcpMessage->start_line.method_id == SYNTHESIZER_SPEAK_COMPLETE)
{
- /* received SPEAK-COMPLETE event, remove channel */
- RemoveMrcpChannel(pMrcpChannel);
+ /* received SPEAK-COMPLETE event, terminate the session */
+ Terminate();
}
}
return true;
char* pScenarioName = apr_strtok(NULL, " ", &last);
if(pScenarioName)
{
- char* pProfileName = apr_strtok(NULL, " ", &last);
+ const char* pProfileName = apr_strtok(NULL, " ", &last);
if(!pProfileName)
{
pProfileName = "MRCPv2-Default";
#include "recogscenario.h"
#include "recorderscenario.h"
#include "dtmfscenario.h"
+#include "setparamscenario.h"
#include "unimrcp_client.h"
#include "apt_log.h"
m_pTask(NULL),
m_pMrcpClient(NULL),
m_pMrcpApplication(NULL),
- m_Ready(false),
m_pScenarioTable(NULL),
m_pSessionTable(NULL)
{
m_pSessionTable = apr_hash_make(m_pPool);
m_pScenarioTable = apr_hash_make(m_pPool);
- if(!CreateTask())
- return false;
-
- /* wait for READY state,
- preferably cond wait object should be used */
- int attempts = 0;
- while(!m_Ready && attempts < 10)
- {
- attempts++;
- apr_sleep(500000);
- }
-
- return true;
+ return CreateTask();
}
void UmcFramework::Destroy()
pVtable->on_terminate_complete = UmcOnTerminateComplete;
}
- m_Ready = false;
apt_task_start(pTask);
return true;
}
return new RecorderScenario();
else if(strcasecmp(pType,"DtmfRecognizer") == 0)
return new DtmfScenario();
+ else if(strcasecmp(pType,"Params") == 0)
+ return new SetParamScenario();
}
return NULL;
}
return pSession->OnResourceDiscover(descriptor,status);
}
-apt_bool_t AppOnReady(mrcp_application_t *application, mrcp_sig_status_code_e status)
-{
- UmcFramework* pFramework = (UmcFramework*) mrcp_application_object_get(application);
- pFramework->m_Ready = true;
- return TRUE;
-}
-
void UmcOnStartComplete(apt_task_t* pTask)
{
apt_consumer_task_t* pConsumerTask = (apt_consumer_task_t*) apt_task_object_get(pTask);
AppOnChannelAdd,
AppOnChannelRemove,
AppOnMessageReceive,
- AppOnReady,
AppOnTerminateEvent,
AppOnResourceDiscover
};
}
case UMC_TASK_RUN_SESSION_MSG:
{
- if(pFramework->m_Ready)
- pFramework->ProcessRunRequest(pUmcMsg->m_ScenarioName,pUmcMsg->m_ProfileName);
+ pFramework->ProcessRunRequest(pUmcMsg->m_ScenarioName,pUmcMsg->m_ProfileName);
break;
}
case UMC_TASK_KILL_SESSION_MSG:
{
- if(pFramework->m_Ready)
- pFramework->ProcessKillRequest(pUmcMsg->m_SessionId);
+ pFramework->ProcessKillRequest(pUmcMsg->m_SessionId);
break;
}
case UMC_TASK_SHOW_SCENARIOS_MSG:
{
- if(pFramework->m_Ready)
- pFramework->ProcessShowScenarios();
+ pFramework->ProcessShowScenarios();
break;
}
case UMC_TASK_SHOW_SESSIONS_MSG:
{
- if(pFramework->m_Ready)
- pFramework->ProcessShowSessions();
+ pFramework->ProcessShowSessions();
break;
}
}
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
<Configuration
Name="Release|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
Name="VCPostBuildEventTool"
/>
</Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(UniMRCPClientLibs)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(UniMRCPClientLibs)"
+ LinkTimeCodeGeneration="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
</Configurations>
<References>
</References>
RelativePath=".\src\recordersession.cpp"
>
</File>
+ <File
+ RelativePath=".\src\setparamscenario.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\src\setparamsession.cpp"
+ >
+ </File>
<File
RelativePath=".\src\synthscenario.cpp"
>
RelativePath=".\include\recordersession.h"
>
</File>
+ <File
+ RelativePath=".\include\setparamscenario.h"
+ >
+ </File>
+ <File
+ RelativePath=".\include\setparamsession.h"
+ >
+ </File>
<File
RelativePath=".\include\synthscenario.h"
>
NULL,
NULL,
NULL,
- NULL,
discover_application_on_resource_discover
};
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
<Configuration
Name="Release|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(UniMRCPClientLibs)"
+ LinkTimeCodeGeneration="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(UniMRCPClientLibs)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpclient.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpserver.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpserver.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
<Configuration
Name="Release|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpserver.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpserver.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(UniMRCPServerLibs)"
+ LinkTimeCodeGeneration="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpserver.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="$(UniMRCPServerLibs)"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpserver.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
<Platform\r
Name="Win32"\r
/>\r
+ <Platform\r
+ Name="x64"\r
+ />\r
</Platforms>\r
<ToolFiles>\r
</ToolFiles>\r
<Configuration\r
Name="Debug|Win32"\r
ConfigurationType="2"\r
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpplugin.vsprops"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin.vsprops"\r
CharacterSet="1"\r
>\r
<Tool\r
<Configuration\r
Name="Release|Win32"\r
ConfigurationType="2"\r
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpplugin.vsprops"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin.vsprops"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="include"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Debug|x64"\r
+ ConfigurationType="2"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin-x64.vsprops"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ TargetEnvironment="3"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="include"\r
+ DebugInformationFormat="3"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|x64"\r
+ ConfigurationType="2"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin-x64.vsprops"\r
CharacterSet="1"\r
WholeProgramOptimization="1"\r
>\r
/>\r
<Tool\r
Name="VCMIDLTool"\r
+ TargetEnvironment="3"\r
/>\r
<Tool\r
Name="VCCLCompilerTool"\r
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="2"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpplugin.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="2"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpplugin.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin-x64.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin-x64.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
if(req_synth_header) {
/* check voice age header */
if(mrcp_resource_header_property_check(request,SYNTHESIZER_HEADER_VOICE_AGE) == TRUE) {
- apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Voice Age [%d]",req_synth_header->voice_param.age);
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Voice Age [%"APR_SIZE_T_FMT"]",
+ req_synth_header->voice_param.age);
}
/* check voice name header */
if(mrcp_resource_header_property_check(request,SYNTHESIZER_HEADER_VOICE_NAME) == TRUE) {
- apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Voice Name [%s]",req_synth_header->voice_param.name);
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Voice Name [%s]",
+ req_synth_header->voice_param.name);
}
}
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="2"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpplugin.vsprops;$(ProjectDir)..\..\build\vsprops\cepstral.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin.vsprops;$(ProjectDir)..\..\build\vsprops\cepstral.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="2"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpplugin.vsprops;$(ProjectDir)..\..\build\vsprops\cepstral.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin.vsprops;$(ProjectDir)..\..\build\vsprops\cepstral.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\cepstral.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\cepstral.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="2"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\flite.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpplugin.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin.vsprops;$(ProjectDir)..\..\build\vsprops\flite.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="2"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\flite.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpplugin.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin.vsprops;$(ProjectDir)..\..\build\vsprops\flite.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\flite.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\flite.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
static apt_bool_t flite_synth_channel_stop(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response);
static apt_bool_t flite_synth_channel_pause(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response);
static apt_bool_t flite_synth_channel_resume(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response);
-// static apt_bool_t flite_synth_channel_setparams(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response);
-// static apt_bool_t flite_synth_channel_getparams(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response);
static const struct mrcp_engine_channel_method_vtable_t channel_vtable = {
flite_synth_channel_destroy,
if(synth_channel->speak_request && synth_channel->paused == FALSE) {
/* normal processing */
mpf_buffer_frame_read(synth_channel->audio_buffer,frame);
-// apt_log(APT_LOG_MARK, APT_PRIO_DEBUG, "flite_synth_stream_read - channel %d - size %d", synth_channel->iId, mpf_buffer_get_size(synth_channel->audio_buffer));
+#if 0
+ apt_log(APT_LOG_MARK, APT_PRIO_DEBUG, "flite_synth_stream_read - channel %d - size %d", synth_channel->iId, mpf_buffer_get_size(synth_channel->audio_buffer));
+#endif
if((frame->type & MEDIA_FRAME_TYPE_EVENT) == MEDIA_FRAME_TYPE_EVENT) {
+ frame->type &= ~MEDIA_FRAME_TYPE_EVENT;
flite_synth_speak_complete_raise(synth_channel);
}
}
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="2"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\pocketsphinx.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpplugin.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin.vsprops;$(ProjectDir)..\..\build\vsprops\pocketsphinx.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="2"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\pocketsphinx.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpplugin.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin.vsprops;$(ProjectDir)..\..\build\vsprops\pocketsphinx.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\pocketsphinx.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\pocketsphinx.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="2"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpplugin.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin.vsprops"
CharacterSet="1"
>
<Tool
<Configuration
Name="Release|Win32"
ConfigurationType="2"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unimrcpplugin.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin-x64.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="include"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\uniplugin-x64.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
return FALSE;
}
- record_uri = apr_psprintf(message->pool,"<file://mediaserver/data/%s>;size=%d;duration=%d",
- recorder_channel->file_name,
- recorder_channel->cur_size,
- recorder_channel->cur_time);
+ record_uri = apr_psprintf(
+ message->pool,
+ "<file://mediaserver/data/%s>;size=%"APR_SIZE_T_FMT";duration=%"APR_SIZE_T_FMT,
+ recorder_channel->file_name,
+ recorder_channel->cur_size,
+ recorder_channel->cur_time);
apt_string_set(&recorder_header->record_uri,record_uri);
mrcp_resource_header_property_add(message,RECORDER_HEADER_RECORD_URI);
<Platform\r
Name="Win32"\r
/>\r
+ <Platform\r
+ Name="x64"\r
+ />\r
</Platforms>\r
<ToolFiles>\r
</ToolFiles>\r
<Configuration\r
Name="Debug|Win32"\r
ConfigurationType="1"\r
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"\r
>\r
<Tool\r
Name="VCPreBuildEventTool"\r
<Configuration\r
Name="Release|Win32"\r
ConfigurationType="1"\r
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ AdditionalDependencies="aprtoolkit.lib libaprutil-1.lib libapr-1.lib"\r
+ LinkTimeCodeGeneration="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Debug|x64"\r
+ ConfigurationType="1"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ TargetEnvironment="3"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ DebugInformationFormat="3"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ AdditionalDependencies="aprtoolkit.lib libaprutil-1.lib libapr-1.lib"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebDeploymentTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|x64"\r
+ ConfigurationType="1"\r
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"\r
>\r
<Tool\r
Name="VCPreBuildEventTool"\r
/>\r
<Tool\r
Name="VCMIDLTool"\r
+ TargetEnvironment="3"\r
/>\r
<Tool\r
Name="VCCLCompilerTool"\r
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\mpf.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\mpf.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
<Configuration
Name="Release|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\mpf.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\mpf.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="mpf.lib aprtoolkit.lib libaprutil-1.lib libapr-1.lib ws2_32.lib winmm.lib "
+ LinkTimeCodeGeneration="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mpf.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="mpf.lib aprtoolkit.lib libaprutil-1.lib libapr-1.lib ws2_32.lib winmm.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mpf.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\mrcp.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\mrcp.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
<Configuration
Name="Release|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\mrcp.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\mrcp.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="mrcp.lib aprtoolkit.lib libaprutil-1.lib libapr-1.lib"
+ LinkTimeCodeGeneration="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcp.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="mrcp.lib aprtoolkit.lib libaprutil-1.lib libapr-1.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\mrcp.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
{
char buffer[500];
apt_text_stream_t stream;
- mrcp_stream_result_e result;
+ mrcp_stream_status_e status;
apt_bool_t continuation;
mrcp_generator_message_set(generator,message);
do {
apt_text_stream_init(&stream,buffer,sizeof(buffer)-1);
continuation = FALSE;
- result = mrcp_generator_run(generator,&stream);
- if(result == MRCP_STREAM_MESSAGE_COMPLETE) {
+ status = mrcp_generator_run(generator,&stream);
+ if(status == MRCP_STREAM_STATUS_COMPLETE) {
stream.text.length = stream.pos - stream.text.buf;
*stream.pos = '\0';
apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Generated MRCP Stream [%lu bytes]\n%s",stream.text.length,stream.text.buf);
}
- else if(result == MRCP_STREAM_MESSAGE_TRUNCATED) {
+ else if(status == MRCP_STREAM_STATUS_INCOMPLETE) {
*stream.pos = '\0';
- apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Generated MRCP Stream [%lu bytes] continuation awaiting\n%s",stream.text.length,stream.text.buf);
+ apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Generated MRCP Stream [%lu bytes] continuation awaited\n%s",stream.text.length,stream.text.buf);
continuation = TRUE;
}
- else {
+ else if(status == MRCP_STREAM_STATUS_INVALID) {
apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate MRCP Stream");
}
}
return TRUE;
}
-static apt_bool_t mrcp_message_handler(void *obj, mrcp_message_t *message, mrcp_stream_result_e result)
+static apt_bool_t mrcp_message_handler(void *obj, mrcp_message_t *message, mrcp_stream_status_e status)
{
- if(result == MRCP_STREAM_MESSAGE_COMPLETE) {
+ if(status == MRCP_STREAM_STATUS_COMPLETE) {
/* message is completely parsed */
mrcp_generator_t *generator = obj;
test_stream_generate(generator,message);
apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Parse MRCP Stream [%lu bytes]\n%s",length,stream.pos);
/* reset pos */
- stream.pos = stream.text.buf;
+ apt_text_stream_reset(&stream);
mrcp_stream_walk(parser,&stream,mrcp_message_handler,generator);
}
while(apr_file_eof(file) != APR_EOF);
if(mrcp_resource_header_property_check(message,SYNTHESIZER_HEADER_VOICE_AGE) == TRUE) {
if(synth_header->voice_param.age == SAMPLE_VOICE_AGE) {
/* OK */
- apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Get Voice-Age: %d",synth_header->voice_param.age);
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Get Voice-Age: %"APR_SIZE_T_FMT,synth_header->voice_param.age);
res = TRUE;
}
}
/* test voice age header */
if(mrcp_resource_header_property_check(request,SYNTHESIZER_HEADER_VOICE_AGE) == TRUE) {
res_synth_header->voice_param.age = SAMPLE_VOICE_AGE;
- apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Voice-Age: %d",res_synth_header->voice_param.age);
+ apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Voice-Age: %"APR_SIZE_T_FMT,res_synth_header->voice_param.age);
mrcp_resource_header_property_add(response,SYNTHESIZER_HEADER_VOICE_AGE);
res = TRUE;
}
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
<Configuration
Name="Release|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="unirtsp.lib aprtoolkit.lib libaprutil-1.lib libapr-1.lib"
+ LinkTimeCodeGeneration="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="unirtsp.lib aprtoolkit.lib libaprutil-1.lib libapr-1.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\unirtsp.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
{
char buffer[500];
apt_text_stream_t stream;
- rtsp_stream_result_e result;
+ rtsp_stream_status_e status;
apt_bool_t continuation;
rtsp_generator_message_set(generator,message);
do {
apt_text_stream_init(&stream,buffer,sizeof(buffer)-1);
continuation = FALSE;
- result = rtsp_generator_run(generator,&stream);
- if(result == RTSP_STREAM_MESSAGE_COMPLETE) {
+ status = rtsp_generator_run(generator,&stream);
+ if(status == RTSP_STREAM_STATUS_COMPLETE) {
stream.text.length = stream.pos - stream.text.buf;
*stream.pos = '\0';
apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Generated RTSP Stream [%lu bytes]\n%s",stream.text.length,stream.text.buf);
}
- else if(result == RTSP_STREAM_MESSAGE_TRUNCATED) {
+ else if(status == RTSP_STREAM_STATUS_INCOMPLETE) {
*stream.pos = '\0';
- apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Generated RTSP Stream [%lu bytes] continuation awaiting\n%s",stream.text.length,stream.text.buf);
+ apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Generated RTSP Stream [%lu bytes] continuation awaited\n%s",stream.text.length,stream.text.buf);
continuation = TRUE;
}
else {
return TRUE;
}
-static apt_bool_t rtsp_message_handler(void *obj, rtsp_message_t *message, rtsp_stream_result_e result)
+static apt_bool_t rtsp_message_handler(void *obj, rtsp_message_t *message, rtsp_stream_status_e status)
{
- if(result == RTSP_STREAM_MESSAGE_COMPLETE) {
+ if(status == RTSP_STREAM_STATUS_COMPLETE) {
/* message is completely parsed */
rtsp_generator_t *generator = obj;
test_stream_generate(generator,message);
apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Parse RTSP Stream [%lu bytes]\n%s",length,stream.pos);
/* reset pos */
- stream.pos = stream.text.buf;
+ apt_text_stream_reset(&stream);
rtsp_stream_walk(parser,&stream,rtsp_message_handler,generator);
}
while(apr_file_eof(file) != APR_EOF);
text_stream.text.length = fread(parse_buffer, 1, sizeof(parse_buffer)-1, file);
parse_buffer[text_stream.text.length] = '\0';
text_stream.text.buf = parse_buffer;
- text_stream.pos = parse_buffer;
+ apt_text_stream_reset(&text_stream);
do {
if(apt_text_line_read(&text_stream,&line) == FALSE || !line.length) {
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
<Configuration
Name="Debug|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
<Configuration
Name="Release|Win32"
ConfigurationType="1"
- InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="aprtoolkit.lib libaprutil-1.lib libapr-1.lib"
+ LinkTimeCodeGeneration="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unidebug.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="aprtoolkit.lib libaprutil-1.lib libapr-1.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(ProjectDir)..\..\build\vsprops\unirelease.vsprops;$(ProjectDir)..\..\build\vsprops\unibin-x64.vsprops;$(ProjectDir)..\..\build\vsprops\apt.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsignaling", "libs\mrcp-signaling\mrcpsignaling.vcproj", "{12A49562-BAB9-43A3-A21D-15B60BBB4C31}"
ProjectSection(ProjectDependencies) = postProject
- {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {B5A00BFA-6083-4FAE-A097-71642D6473B5}
{1C320193-46A6-4B34-9C56-8AB584FC1B56} = {1C320193-46A6-4B34-9C56-8AB584FC1B56}
+ {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {B5A00BFA-6083-4FAE-A097-71642D6473B5}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpserver", "libs\mrcp-server\mrcpserver.vcproj", "{18B1F35A-10F8-4287-9B37-2D10501B0B38}"
ProjectSection(ProjectDependencies) = postProject
- {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {12A49562-BAB9-43A3-A21D-15B60BBB4C31}
{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}
+ {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {12A49562-BAB9-43A3-A21D-15B60BBB4C31}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libunimrcpserver", "platforms\libunimrcp-server\libunimrcpserver.vcproj", "{C98AF157-352E-4737-BD30-A24E2647F5AE}"
ProjectSection(ProjectDependencies) = postProject
- {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {DEB01ACB-D65F-4A62-AED9-58C1054499E9}
- {18B1F35A-10F8-4287-9B37-2D10501B0B38} = {18B1F35A-10F8-4287-9B37-2D10501B0B38}
{746F3632-5BB2-4570-9453-31D6D58A7D8E} = {746F3632-5BB2-4570-9453-31D6D58A7D8E}
+ {18B1F35A-10F8-4287-9B37-2D10501B0B38} = {18B1F35A-10F8-4287-9B37-2D10501B0B38}
+ {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {DEB01ACB-D65F-4A62-AED9-58C1054499E9}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsofiasip", "modules\mrcp-sofiasip\mrcpsofiasip.vcproj", "{746F3632-5BB2-4570-9453-31D6D58A7D8E}"
ProjectSection(ProjectDependencies) = postProject
- {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {12A49562-BAB9-43A3-A21D-15B60BBB4C31}
{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}
+ {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {12A49562-BAB9-43A3-A21D-15B60BBB4C31}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpclient", "libs\mrcp-client\mrcpclient.vcproj", "{72782932-37CC-46AE-8C7F-9A7B1A6EE108}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libunimrcpclient", "platforms\libunimrcp-client\libunimrcpclient.vcproj", "{EE157390-1E85-416C-946E-620E32C9AD33}"
ProjectSection(ProjectDependencies) = postProject
- {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {DEB01ACB-D65F-4A62-AED9-58C1054499E9}
- {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {746F3632-5BB2-4570-9453-31D6D58A7D8E}
{72782932-37CC-46AE-8C7F-9A7B1A6EE108} = {72782932-37CC-46AE-8C7F-9A7B1A6EE108}
+ {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {746F3632-5BB2-4570-9453-31D6D58A7D8E}
+ {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {DEB01ACB-D65F-4A62-AED9-58C1054499E9}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unimrcpclient", "platforms\unimrcp-client\unimrcpclient.vcproj", "{57FAF32E-49FD-491F-895D-132D0D5EFE0A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpengine", "libs\mrcp-engine\mrcpengine.vcproj", "{843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}"
ProjectSection(ProjectDependencies) = postProject
- {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {B5A00BFA-6083-4FAE-A097-71642D6473B5}
{1C320193-46A6-4B34-9C56-8AB584FC1B56} = {1C320193-46A6-4B34-9C56-8AB584FC1B56}
+ {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {B5A00BFA-6083-4FAE-A097-71642D6473B5}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "demosynth", "plugins\demo-synth\demosynth.vcproj", "{92BFA534-C419-4EB2-AAA3-510653F38F08}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpunirtsp", "modules\mrcp-unirtsp\mrcpunirtsp.vcproj", "{DEB01ACB-D65F-4A62-AED9-58C1054499E9}"
ProjectSection(ProjectDependencies) = postProject
- {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {12A49562-BAB9-43A3-A21D-15B60BBB4C31}
{504B3154-7A4F-459D-9877-B951021C3F1F} = {504B3154-7A4F-459D-9877-B951021C3F1F}
+ {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {12A49562-BAB9-43A3-A21D-15B60BBB4C31}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "prepare", "build\tools\prepare.vcproj", "{01D63BF5-7798-4746-852A-4B45229BB735}"
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{592CF22D-3F8F-4A77-A174-130D77B7623B}.Debug|Win32.ActiveCfg = Debug|Win32
{592CF22D-3F8F-4A77-A174-130D77B7623B}.Debug|Win32.Build.0 = Debug|Win32
+ {592CF22D-3F8F-4A77-A174-130D77B7623B}.Debug|x64.ActiveCfg = Debug|x64
+ {592CF22D-3F8F-4A77-A174-130D77B7623B}.Debug|x64.Build.0 = Debug|x64
{592CF22D-3F8F-4A77-A174-130D77B7623B}.Release|Win32.ActiveCfg = Release|Win32
{592CF22D-3F8F-4A77-A174-130D77B7623B}.Release|Win32.Build.0 = Release|Win32
+ {592CF22D-3F8F-4A77-A174-130D77B7623B}.Release|x64.ActiveCfg = Release|x64
+ {592CF22D-3F8F-4A77-A174-130D77B7623B}.Release|x64.Build.0 = Release|x64
{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.ActiveCfg = Debug|Win32
{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.Build.0 = Debug|Win32
+ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.ActiveCfg = Debug|x64
+ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.Build.0 = Debug|x64
{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.ActiveCfg = Release|Win32
{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.Build.0 = Release|Win32
+ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.ActiveCfg = Release|x64
+ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.Build.0 = Release|x64
{B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.ActiveCfg = Debug|Win32
{B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.Build.0 = Debug|Win32
+ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.ActiveCfg = Debug|x64
+ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.Build.0 = Debug|x64
{B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.ActiveCfg = Release|Win32
{B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.Build.0 = Release|Win32
+ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.ActiveCfg = Release|x64
+ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.Build.0 = Release|x64
{1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.ActiveCfg = Debug|Win32
{1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.Build.0 = Debug|Win32
+ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.ActiveCfg = Debug|x64
+ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.Build.0 = Debug|x64
{1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.ActiveCfg = Release|Win32
{1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.Build.0 = Release|Win32
+ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.ActiveCfg = Release|x64
+ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.Build.0 = Release|x64
{12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.ActiveCfg = Debug|Win32
{12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.Build.0 = Debug|Win32
+ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.ActiveCfg = Debug|x64
+ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.Build.0 = Debug|x64
{12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.ActiveCfg = Release|Win32
{12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.Build.0 = Release|Win32
+ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.ActiveCfg = Release|x64
+ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.Build.0 = Release|x64
{18B1F35A-10F8-4287-9B37-2D10501B0B38}.Debug|Win32.ActiveCfg = Debug|Win32
{18B1F35A-10F8-4287-9B37-2D10501B0B38}.Debug|Win32.Build.0 = Debug|Win32
+ {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Debug|x64.ActiveCfg = Debug|x64
+ {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Debug|x64.Build.0 = Debug|x64
{18B1F35A-10F8-4287-9B37-2D10501B0B38}.Release|Win32.ActiveCfg = Release|Win32
{18B1F35A-10F8-4287-9B37-2D10501B0B38}.Release|Win32.Build.0 = Release|Win32
+ {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Release|x64.ActiveCfg = Release|x64
+ {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Release|x64.Build.0 = Release|x64
{C98AF157-352E-4737-BD30-A24E2647F5AE}.Debug|Win32.ActiveCfg = Debug|Win32
{C98AF157-352E-4737-BD30-A24E2647F5AE}.Debug|Win32.Build.0 = Debug|Win32
+ {C98AF157-352E-4737-BD30-A24E2647F5AE}.Debug|x64.ActiveCfg = Debug|x64
+ {C98AF157-352E-4737-BD30-A24E2647F5AE}.Debug|x64.Build.0 = Debug|x64
{C98AF157-352E-4737-BD30-A24E2647F5AE}.Release|Win32.ActiveCfg = Release|Win32
{C98AF157-352E-4737-BD30-A24E2647F5AE}.Release|Win32.Build.0 = Release|Win32
+ {C98AF157-352E-4737-BD30-A24E2647F5AE}.Release|x64.ActiveCfg = Release|x64
+ {C98AF157-352E-4737-BD30-A24E2647F5AE}.Release|x64.Build.0 = Release|x64
{746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.ActiveCfg = Debug|Win32
{746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.Build.0 = Debug|Win32
+ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.ActiveCfg = Debug|x64
+ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.Build.0 = Debug|x64
{746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.ActiveCfg = Release|Win32
{746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.Build.0 = Release|Win32
+ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.ActiveCfg = Release|x64
+ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.Build.0 = Release|x64
{72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.ActiveCfg = Debug|Win32
{72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.Build.0 = Debug|Win32
+ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.ActiveCfg = Debug|x64
+ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.Build.0 = Debug|x64
{72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.ActiveCfg = Release|Win32
{72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.Build.0 = Release|Win32
+ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.ActiveCfg = Release|x64
+ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.Build.0 = Release|x64
{EE157390-1E85-416C-946E-620E32C9AD33}.Debug|Win32.ActiveCfg = Debug|Win32
{EE157390-1E85-416C-946E-620E32C9AD33}.Debug|Win32.Build.0 = Debug|Win32
+ {EE157390-1E85-416C-946E-620E32C9AD33}.Debug|x64.ActiveCfg = Debug|x64
+ {EE157390-1E85-416C-946E-620E32C9AD33}.Debug|x64.Build.0 = Debug|x64
{EE157390-1E85-416C-946E-620E32C9AD33}.Release|Win32.ActiveCfg = Release|Win32
{EE157390-1E85-416C-946E-620E32C9AD33}.Release|Win32.Build.0 = Release|Win32
+ {EE157390-1E85-416C-946E-620E32C9AD33}.Release|x64.ActiveCfg = Release|x64
+ {EE157390-1E85-416C-946E-620E32C9AD33}.Release|x64.Build.0 = Release|x64
{57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Debug|Win32.ActiveCfg = Debug|Win32
{57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Debug|Win32.Build.0 = Debug|Win32
+ {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Debug|x64.ActiveCfg = Debug|x64
+ {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Debug|x64.Build.0 = Debug|x64
{57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Release|Win32.ActiveCfg = Release|Win32
{57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Release|Win32.Build.0 = Release|Win32
+ {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Release|x64.ActiveCfg = Release|x64
+ {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Release|x64.Build.0 = Release|x64
{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.ActiveCfg = Debug|Win32
{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.Build.0 = Debug|Win32
+ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.ActiveCfg = Debug|x64
+ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.Build.0 = Debug|x64
{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.ActiveCfg = Release|Win32
{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.Build.0 = Release|Win32
+ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.ActiveCfg = Release|x64
+ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.Build.0 = Release|x64
{843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Debug|Win32.ActiveCfg = Debug|Win32
{843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Debug|Win32.Build.0 = Debug|Win32
+ {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Debug|x64.ActiveCfg = Debug|x64
+ {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Debug|x64.Build.0 = Debug|x64
{843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Release|Win32.ActiveCfg = Release|Win32
{843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Release|Win32.Build.0 = Release|Win32
+ {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Release|x64.ActiveCfg = Release|x64
+ {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Release|x64.Build.0 = Release|x64
{92BFA534-C419-4EB2-AAA3-510653F38F08}.Debug|Win32.ActiveCfg = Debug|Win32
{92BFA534-C419-4EB2-AAA3-510653F38F08}.Debug|Win32.Build.0 = Debug|Win32
+ {92BFA534-C419-4EB2-AAA3-510653F38F08}.Debug|x64.ActiveCfg = Debug|x64
+ {92BFA534-C419-4EB2-AAA3-510653F38F08}.Debug|x64.Build.0 = Debug|x64
{92BFA534-C419-4EB2-AAA3-510653F38F08}.Release|Win32.ActiveCfg = Release|Win32
{92BFA534-C419-4EB2-AAA3-510653F38F08}.Release|Win32.Build.0 = Release|Win32
+ {92BFA534-C419-4EB2-AAA3-510653F38F08}.Release|x64.ActiveCfg = Release|x64
+ {92BFA534-C419-4EB2-AAA3-510653F38F08}.Release|x64.Build.0 = Release|x64
{B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Debug|Win32.ActiveCfg = Debug|Win32
{B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Debug|Win32.Build.0 = Debug|Win32
+ {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Debug|x64.ActiveCfg = Debug|x64
+ {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Debug|x64.Build.0 = Debug|x64
{B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Release|Win32.ActiveCfg = Release|Win32
{B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Release|Win32.Build.0 = Release|Win32
+ {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Release|x64.ActiveCfg = Release|x64
+ {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Release|x64.Build.0 = Release|x64
{79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Debug|Win32.ActiveCfg = Debug|Win32
{79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Debug|Win32.Build.0 = Debug|Win32
+ {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Debug|x64.ActiveCfg = Debug|x64
+ {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Debug|x64.Build.0 = Debug|x64
{79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Release|Win32.ActiveCfg = Release|Win32
{79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Release|Win32.Build.0 = Release|Win32
+ {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Release|x64.ActiveCfg = Release|x64
+ {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Release|x64.Build.0 = Release|x64
{429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Debug|Win32.ActiveCfg = Debug|Win32
{429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Debug|Win32.Build.0 = Debug|Win32
+ {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Debug|x64.ActiveCfg = Debug|x64
+ {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Debug|x64.Build.0 = Debug|x64
{429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Release|Win32.ActiveCfg = Release|Win32
{429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Release|Win32.Build.0 = Release|Win32
+ {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Release|x64.ActiveCfg = Release|x64
+ {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Release|x64.Build.0 = Release|x64
{DCF01B1C-5268-44F3-9130-D647FABFB663}.Debug|Win32.ActiveCfg = Debug|Win32
{DCF01B1C-5268-44F3-9130-D647FABFB663}.Debug|Win32.Build.0 = Debug|Win32
+ {DCF01B1C-5268-44F3-9130-D647FABFB663}.Debug|x64.ActiveCfg = Debug|x64
+ {DCF01B1C-5268-44F3-9130-D647FABFB663}.Debug|x64.Build.0 = Debug|x64
{DCF01B1C-5268-44F3-9130-D647FABFB663}.Release|Win32.ActiveCfg = Release|Win32
{DCF01B1C-5268-44F3-9130-D647FABFB663}.Release|Win32.Build.0 = Release|Win32
+ {DCF01B1C-5268-44F3-9130-D647FABFB663}.Release|x64.ActiveCfg = Release|x64
+ {DCF01B1C-5268-44F3-9130-D647FABFB663}.Release|x64.Build.0 = Release|x64
{3CA97077-6210-4362-998A-D15A35EEAA08}.Debug|Win32.ActiveCfg = Debug|Win32
{3CA97077-6210-4362-998A-D15A35EEAA08}.Debug|Win32.Build.0 = Debug|Win32
+ {3CA97077-6210-4362-998A-D15A35EEAA08}.Debug|x64.ActiveCfg = Debug|x64
+ {3CA97077-6210-4362-998A-D15A35EEAA08}.Debug|x64.Build.0 = Debug|x64
{3CA97077-6210-4362-998A-D15A35EEAA08}.Release|Win32.ActiveCfg = Release|Win32
{3CA97077-6210-4362-998A-D15A35EEAA08}.Release|Win32.Build.0 = Release|Win32
+ {3CA97077-6210-4362-998A-D15A35EEAA08}.Release|x64.ActiveCfg = Release|x64
+ {3CA97077-6210-4362-998A-D15A35EEAA08}.Release|x64.Build.0 = Release|x64
{729EF28E-38C9-40DE-A138-87785F021411}.Debug|Win32.ActiveCfg = Debug|Win32
+ {729EF28E-38C9-40DE-A138-87785F021411}.Debug|x64.ActiveCfg = Debug|x64
{729EF28E-38C9-40DE-A138-87785F021411}.Release|Win32.ActiveCfg = Release|Win32
+ {729EF28E-38C9-40DE-A138-87785F021411}.Release|x64.ActiveCfg = Release|x64
{504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.ActiveCfg = Debug|Win32
{504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.Build.0 = Debug|Win32
+ {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.ActiveCfg = Debug|x64
+ {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.Build.0 = Debug|x64
{504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.ActiveCfg = Release|Win32
{504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.Build.0 = Release|Win32
+ {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.ActiveCfg = Release|x64
+ {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.Build.0 = Release|x64
{17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Debug|Win32.ActiveCfg = Debug|Win32
{17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Debug|Win32.Build.0 = Debug|Win32
+ {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Debug|x64.ActiveCfg = Debug|x64
+ {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Debug|x64.Build.0 = Debug|x64
{17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Release|Win32.ActiveCfg = Release|Win32
{17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Release|Win32.Build.0 = Release|Win32
+ {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Release|x64.ActiveCfg = Release|x64
+ {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Release|x64.Build.0 = Release|x64
{DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.ActiveCfg = Debug|Win32
{DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.Build.0 = Debug|Win32
+ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.ActiveCfg = Debug|x64
+ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.Build.0 = Debug|x64
{DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.ActiveCfg = Release|Win32
{DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.Build.0 = Release|Win32
+ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.ActiveCfg = Release|x64
+ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.Build.0 = Release|x64
{01D63BF5-7798-4746-852A-4B45229BB735}.Debug|Win32.ActiveCfg = Debug|Win32
+ {01D63BF5-7798-4746-852A-4B45229BB735}.Debug|x64.ActiveCfg = Debug|x64
{01D63BF5-7798-4746-852A-4B45229BB735}.Release|Win32.ActiveCfg = Release|Win32
+ {01D63BF5-7798-4746-852A-4B45229BB735}.Release|x64.ActiveCfg = Release|x64
{4714EF49-BFD5-4B22-95F7-95A07F1EAC25}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4714EF49-BFD5-4B22-95F7-95A07F1EAC25}.Debug|x64.ActiveCfg = Debug|x64
{4714EF49-BFD5-4B22-95F7-95A07F1EAC25}.Release|Win32.ActiveCfg = Release|Win32
+ {4714EF49-BFD5-4B22-95F7-95A07F1EAC25}.Release|x64.ActiveCfg = Release|x64
{3C614AE8-B611-4D43-A9AF-1CAA440A9F69}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3C614AE8-B611-4D43-A9AF-1CAA440A9F69}.Debug|x64.ActiveCfg = Debug|x64
{3C614AE8-B611-4D43-A9AF-1CAA440A9F69}.Release|Win32.ActiveCfg = Release|Win32
+ {3C614AE8-B611-4D43-A9AF-1CAA440A9F69}.Release|x64.ActiveCfg = Release|x64
{56F6FB96-2BC7-4CAE-A8BF-6A0FAEC90556}.Debug|Win32.ActiveCfg = Debug|Win32
+ {56F6FB96-2BC7-4CAE-A8BF-6A0FAEC90556}.Debug|x64.ActiveCfg = Debug|x64
{56F6FB96-2BC7-4CAE-A8BF-6A0FAEC90556}.Release|Win32.ActiveCfg = Release|Win32
+ {56F6FB96-2BC7-4CAE-A8BF-6A0FAEC90556}.Release|x64.ActiveCfg = Release|x64
{71D62A04-8EF6-4C6B-AC12-0C15A875E53A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {71D62A04-8EF6-4C6B-AC12-0C15A875E53A}.Debug|x64.ActiveCfg = Debug|x64
{71D62A04-8EF6-4C6B-AC12-0C15A875E53A}.Release|Win32.ActiveCfg = Release|Win32
+ {71D62A04-8EF6-4C6B-AC12-0C15A875E53A}.Release|x64.ActiveCfg = Release|x64
{6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Debug|Win32.ActiveCfg = Debug|Win32
{6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Debug|Win32.Build.0 = Debug|Win32
+ {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Debug|x64.ActiveCfg = Debug|x64
+ {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Debug|x64.Build.0 = Debug|x64
{6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Release|Win32.ActiveCfg = Release|Win32
{6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Release|Win32.Build.0 = Release|Win32
+ {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Release|x64.ActiveCfg = Release|x64
+ {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Release|x64.Build.0 = Release|x64
{272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Debug|Win32.ActiveCfg = Debug|Win32
{272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Debug|Win32.Build.0 = Debug|Win32
+ {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Debug|x64.ActiveCfg = Debug|x64
+ {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Debug|x64.Build.0 = Debug|x64
{272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Release|Win32.ActiveCfg = Release|Win32
{272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Release|Win32.Build.0 = Release|Win32
+ {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Release|x64.ActiveCfg = Release|x64
+ {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Release|x64.Build.0 = Release|x64
{CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Debug|Win32.ActiveCfg = Debug|Win32
{CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Debug|Win32.Build.0 = Debug|Win32
+ {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Debug|x64.ActiveCfg = Debug|x64
+ {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Debug|x64.Build.0 = Debug|x64
{CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Release|Win32.ActiveCfg = Release|Win32
{CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Release|Win32.Build.0 = Release|Win32
+ {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Release|x64.ActiveCfg = Release|x64
+ {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Release|x64.Build.0 = Release|x64
{5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Debug|Win32.ActiveCfg = Debug|Win32
{5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Debug|Win32.Build.0 = Debug|Win32
+ {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Debug|x64.ActiveCfg = Debug|x64
+ {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Debug|x64.Build.0 = Debug|x64
{5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Release|Win32.ActiveCfg = Release|Win32
{5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Release|Win32.Build.0 = Release|Win32
+ {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Release|x64.ActiveCfg = Release|x64
+ {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE