Merge branch 'wince-port'

Conflicts:
	linphone/coreapi/exevents.c
	linphone/coreapi/friend.c
	linphone/coreapi/linphonecore.c
	linphone/coreapi/lpconfig.c
	linphone/mediastreamer2/build/wince/mediastreamer2.def
	linphone/mediastreamer2/build/wince/mediastreamer2.vcproj
	linphone/mediastreamer2/src/msvolume.c
	linphone/oRTP/build/wince/oRTP.vcproj
	linphone/oRTP/src/rtpsession.c

git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@801 3f6dc0c8-ddfe-455d-9043-3cd528dc4637
This commit is contained in:
smorlat 2010-01-05 12:30:46 +00:00
commit e1c2a3833a
44 changed files with 4742 additions and 2872 deletions

Binary file not shown.

View file

@ -0,0 +1,51 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblinphone", "liblinphone.vcproj", "{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "linphonec", "linphonec\linphonec.vcproj", "{92574924-BF59-4DAA-994B-9978B80E5797}"
ProjectSection(ProjectDependencies) = postProject
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7} = {290078F0-3B63-47BF-A2A9-E1AF5411F5E7}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
Debug|Windows Mobile 6 Standard SDK (ARMV4I) = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
Release|Win32 = Release|Win32
Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I)
Release|Windows Mobile 6 Standard SDK (ARMV4I) = Release|Windows Mobile 6 Standard SDK (ARMV4I)
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Debug|Win32.ActiveCfg = Debug|Win32
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Debug|Win32.Build.0 = Debug|Win32
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Release|Win32.ActiveCfg = Release|Win32
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Release|Win32.Build.0 = Release|Win32
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{92574924-BF59-4DAA-994B-9978B80E5797}.Debug|Win32.ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{92574924-BF59-4DAA-994B-9978B80E5797}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{92574924-BF59-4DAA-994B-9978B80E5797}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{92574924-BF59-4DAA-994B-9978B80E5797}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{92574924-BF59-4DAA-994B-9978B80E5797}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{92574924-BF59-4DAA-994B-9978B80E5797}.Release|Win32.ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{92574924-BF59-4DAA-994B-9978B80E5797}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{92574924-BF59-4DAA-994B-9978B80E5797}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{92574924-BF59-4DAA-994B-9978B80E5797}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{92574924-BF59-4DAA-994B-9978B80E5797}.Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Binary file not shown.

View file

@ -0,0 +1,584 @@
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="liblinphone"
ProjectGUID="{290078F0-3B63-47BF-A2A9-E1AF5411F5E7}"
RootNamespace="liblinphone"
Keyword="Win32Proj"
TargetFrameworkVersion="0"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="Windows Mobile 6 Standard SDK (ARMV4I)"
/>
<Platform
Name="Windows Mobile 6 Professional SDK (ARMV4I)"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="&quot;..\..\oRTP\include:..\..\mediastreamer2\include:..\..\..\..\linphone-builder\osip\include:..\..\..\..\linphone-builder\eXosip\include:..\..\..\..\linphone-builder\speex\include&quot;"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBLINPHONE_EXPORTS; OSIP_MT: ENABLE_TRACE:LOG_DOMAIN=\&quot;LinphoneCore\&quot;:ORTP_STATIC:"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalOptions="&#x0D;&#x0A;"
Optimization="0"
AdditionalIncludeDirectories="..\..\oRTP\include;..\..\mediastreamer2\include;&quot;..\..\..\..\linphone-builder\speex\include&quot;;&quot;..\..\..\..\linphone-builder\eXosip\include&quot;;&quot;..\..\..\..\linphone-builder\osip\include&quot;"
PreprocessorDefinitions="ORTP_INET6;ORTP_EXPORT;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);_DEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);LIBLINPHONE_EXPORTS;OSIP_MT;ENABLE_TRACE;LOG_DOMAIN=\&quot;LinphoneCore\&quot;;IN_LINPHONE;LINPHONE_PLUGINS_DIR=\&quot;\&quot;;LINPHONE_VERSION=\&quot;3.1.2\&quot;"
MinimalRebuild="true"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2.lib osip2.lib osipparser2.lib eXosip2.lib mediastreamer2.lib ortp.lib"
LinkIncremental="2"
AdditionalLibraryDirectories="&quot;..\..\..\..\linphone-builder\osip\platform\wince\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\oRTP\build\wince\$(PlatformName)\$(ConfigurationName)&quot;"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="4"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalOptions="&#x0D;&#x0A;"
Optimization="0"
AdditionalIncludeDirectories="..\..\oRTP\include;..\..\mediastreamer2\include;&quot;..\..\..\..\linphone-builder\speex\include&quot;;&quot;..\..\..\..\linphone-builder\eXosip\include&quot;;&quot;..\..\..\..\linphone-builder\osip\include&quot;"
PreprocessorDefinitions="ORTP_INET6;ORTP_EXPORT;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);_DEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);LIBLINPHONE_EXPORTS;OSIP_MT;ENABLE_TRACE;LOG_DOMAIN=\&quot;LinphoneCore\&quot;;IN_LINPHONE;LINPHONE_PLUGINS_DIR=\&quot;\&quot;;LINPHONE_VERSION=\&quot;3.1.2\&quot;;_UNICODE;UNICODE"
MinimalRebuild="true"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
AdditionalOptions=""
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\oRTP\include:..\..\mediastreamer2\include:..\..\..\..\linphone-builder\osip\include::..\..\..\..\linphone-builder\eXosip::..\..\..\..\linphone-builder\speex\include"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBLINPHONE_EXPORTS; OSIP_MT: ENABLE_TRACE:LOG_DOMAIN=\&quot;LinphoneCore\&quot;:ORTP_STATIC:"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalIncludeDirectories="..\..\oRTP\include:..\..\mediastreamer2\include:..\..\..\..\linphone-builder\osip\include::..\..\..\..\linphone-builder\eXosip::..\..\..\..\linphone-builder\speex\include"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBLINPHONE_EXPORTS; OSIP_MT: ENABLE_TRACE:LOG_DOMAIN=\&quot;LinphoneCore\&quot;:ORTP_STATIC:"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalIncludeDirectories="..\..\oRTP\include:..\..\mediastreamer2\include:..\..\..\..\linphone-builder\osip\include::..\..\..\..\linphone-builder\eXosip::..\..\..\..\linphone-builder\speex\include"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBLINPHONE_EXPORTS; OSIP_MT: ENABLE_TRACE:LOG_DOMAIN=\&quot;LinphoneCore\&quot;:ORTP_STATIC:"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\..\coreapi\enum.h"
>
</File>
<File
RelativePath="..\..\coreapi\exevents.h"
>
</File>
<File
RelativePath="..\..\coreapi\linphonecore.h"
>
</File>
<File
RelativePath="..\..\coreapi\lpconfig.h"
>
</File>
<File
RelativePath="..\..\coreapi\private.h"
>
</File>
<File
RelativePath="..\..\coreapi\sdphandler.h"
>
</File>
<File
RelativePath="..\..\coreapi\sipsetup.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\coreapi\authentication.c"
>
</File>
<File
RelativePath="..\..\coreapi\chat.c"
>
</File>
<File
RelativePath="..\..\coreapi\enum.c"
>
</File>
<File
RelativePath="..\..\coreapi\exevents.c"
>
</File>
<File
RelativePath="..\..\coreapi\friend.c"
>
</File>
<File
RelativePath="..\..\coreapi\general_state.c"
>
</File>
<File
RelativePath="..\..\coreapi\linphonecore.c"
>
</File>
<File
RelativePath="..\..\coreapi\lpconfig.c"
>
</File>
<File
RelativePath="..\..\coreapi\misc.c"
>
</File>
<File
RelativePath="..\..\coreapi\presence.c"
>
</File>
<File
RelativePath="..\..\coreapi\proxy.c"
>
</File>
<File
RelativePath="..\..\coreapi\sdphandler.c"
>
</File>
<File
RelativePath="..\..\coreapi\siplogin.c"
>
</File>
<File
RelativePath="..\..\coreapi\sipsetup.c"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -0,0 +1,239 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="linphonec"
ProjectGUID="{92574924-BF59-4DAA-994B-9978B80E5797}"
RootNamespace="linphonec"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Windows Mobile 6 Professional SDK (ARMV4I)"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="0"
AdditionalIncludeDirectories="&quot;..\..\..\..\..\linphone-builder\osip\include&quot;;..\..\..\mediastreamer2\include;..\..\..\oRTP\include;..\..\..\coreapi"
PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;DEBUG;_CONSOLE;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;IN_LINPHONE"
MinimalRebuild="true"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES)"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /subsystem:windowsce,5.02"
AdditionalDependencies="mediastreamer2.lib ortp.lib liblinphone.lib ws2.lib mmtimer.lib iphlpapi.lib eXosip2.lib osip2.lib osipparser2.lib"
OutputFile="$(OutDir)/linphonec.exe"
LinkIncremental="2"
AdditionalLibraryDirectories="&quot;..\..\..\oRTP\build\wince\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\mediastreamer2\build\wince\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\linphone-builder\eXosip\platform\wince\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\linphone-builder\osip\platform\wince\$(PlatformName)\$(ConfigurationName)&quot;"
DelayLoadDLLs="$(NOINHERIT)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/linphonec.pdb"
SubSystem="0"
StackReserveSize="65536"
StackCommitSize="4096"
EntryPointSymbol="mainWCRTStartup"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\linphone"
RegisterOutput="0"
AdditionalFiles="..\..\..\oRTP\build\wince\$(PlatformName)\$(ConfigurationName)\oRTP.dll;..\..\..\mediastreamer2\build\wince\$(PlatformName)\$(ConfigurationName)\mediastreamer2.dll"
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
FavorSizeOrSpeed="2"
PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;_CONSOLE;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES)"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /subsystem:windowsce,5.02"
OutputFile="$(OutDir)/linphonec.exe"
LinkIncremental="1"
DelayLoadDLLs="$(NOINHERIT)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/linphonec.pdb"
SubSystem="0"
StackReserveSize="65536"
StackCommitSize="4096"
OptimizeReferences="2"
EnableCOMDATFolding="2"
EntryPointSymbol="mainWCRTStartup"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\..\console\commands.c"
>
</File>
<File
RelativePath="..\..\..\console\linphonec.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\..\..\console\linphonec.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<File
RelativePath=".\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -36,8 +36,15 @@ AC_HEADER_STDC
AM_PROG_CC_C_O
case $target_os in
*mingw32ce)
CFLAGS="$CFLAGS -D_WIN32_WCE -DORTP_STATIC -D_WIN32_WINNT=0x0501"
CXXFLAGS="$CXXFLAGS -DORTP_STATIC -D_WIN32_WINNT=0x0501"
LIBS="$LIBS -lws2 -liphlpapi"
mingw_found=yes
mingwce_found=yes
;;
*mingw*)
CFLAGS="$CFLAGS -DORTP_STATIC -D_WIN32_WINNT=0x0501"
CFLAGS="$CFLAGS -DORTP_STATIC -D_WIN32_WINNT=0x0501 "
CXXFLAGS="$CXXFLAGS -DORTP_STATIC -D_WIN32_WINNT=0x0501"
LIBS="$LIBS -lws2_32"
GUI_FLAGS="-mwindows"
@ -84,9 +91,15 @@ dnl gettext macro does not work properly under mingw.
AM_GNU_GETTEXT([external])
LIBS="$LIBS $LIBINTL"
else
AC_DEFINE(ENABLE_NLS,1,[Tells whether localisation is possible])
AC_DEFINE(HAVE_GETTEXT,1,[Tells wheter localisation is possible])
LIBS="$LIBS -L/usr/lib -lintl"
if test "$mingwce_found" != "yes" ; then
AC_DEFINE(ENABLE_NLS,1,[Tells whether localisation is possible])
AC_DEFINE(HAVE_GETTEXT,1,[Tells wheter localisation is possible])
LIBS="$LIBS -L/usr/lib -lintl"
else
dnl gettext macro does not work properly under mingw.
AM_GNU_GETTEXT([external])
LIBS="$LIBS $LIBINTL"
fi
fi
GETTEXT_PACKAGE=linphone
@ -315,6 +328,19 @@ dnl compilation of gtk-glade user interface
AM_CONDITIONAL(BUILD_GLADE_UI, [test x$gtk_ui = xtrue ] )
AM_CONDITIONAL(BUILD_WIN32, test x$mingw_found = xyes )
dnl check getenv
AH_TEMPLATE([HAVE_GETENV])
AC_CHECK_FUNC([getenv], AC_DEFINE([HAVE_GETENV], [1], [If present, the getenv function allows fim to read environment variables.]))
dnl
AC_MSG_CHECKING([for sighandler_t])
AC_TRY_COMPILE([#include <signal.h>],[sighandler_t *f;],
has_sighandler_t=yes,has_sighandler_t=no)
AC_MSG_RESULT($has_sighandler_t)
if test "$has_sighandler_t" = "yes" ; then
AC_DEFINE( HAVE_SIGHANDLER_T, 1, [Define if sighandler_t available] )
fi
##################################################
# Stricter build options (after external packages)
##################################################

View file

@ -26,10 +26,12 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#ifndef _WIN32_WCE
#include <errno.h>
#include <unistd.h>
#endif /*_WIN32_WCE*/
#include <limits.h>
#include <ctype.h>
#include <unistd.h>
#include <linphonecore.h>
#include "linphonec.h"
#include "private.h"
@ -298,7 +300,7 @@ linphonec_command_generator(const char *text, int state)
if (strncmp(name, text, len) == 0)
{
return strdup(name);
return ortp_strdup(name);
}
}
@ -593,10 +595,12 @@ lpc_cmd_friend(LinphoneCore *lc, char *args)
args+=4;
if ( ! *args ) return 0;
friend_num = strtol(args, NULL, 10);
#ifndef _WIN32_WCE
if ( errno == ERANGE ) {
linphonec_out("Invalid friend number\n");
return 0;
}
#endif /*_WIN32_WCE*/
linphonec_friend_call(lc, friend_num);
return 1;
}
@ -613,10 +617,12 @@ lpc_cmd_friend(LinphoneCore *lc, char *args)
else
{
friend_num = strtol(args, NULL, 10);
#ifndef _WIN32_WCE
if ( errno == ERANGE ) {
linphonec_out("Invalid friend number\n");
return 0;
}
#endif /*_WIN32_WCE*/
}
linphonec_friend_delete(lc, friend_num);
return 1;
@ -1423,9 +1429,9 @@ static int lpc_cmd_duration(LinphoneCore *lc, char *args){
static int lpc_cmd_status(LinphoneCore *lc, char *args)
{
if ( ! args ) return 0;
LinphoneProxyConfig *cfg;
if ( ! args ) return 0;
linphone_core_get_default_proxy(lc,&cfg);
if (strstr(args,"register"))
{

View file

@ -23,24 +23,28 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
****************************************************************************/
#include <errno.h>
#include <string.h>
#ifndef _WIN32_WCE
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include "private.h" /*coreapi/private.h, needed for LINPHONE_VERSION */
#endif /*_WIN32_WCE*/
#include <limits.h>
#include <ctype.h>
#include <linphonecore.h>
#include "private.h" /*coreapi/private.h, needed for LINPHONE_VERSION */
#include "linphonec.h"
#ifdef WIN32
#include <ws2tcpip.h>
#include <ctype.h>
#ifndef _WIN32_WCE
#include <conio.h>
#endif /*_WIN32_WCE*/
#else
#include <sys/socket.h>
#include <netdb.h>
@ -48,6 +52,21 @@
#include <sys/stat.h>
#endif
#if defined(_WIN32_WCE)
#if !defined(PATH_MAX)
#define PATH_MAX 256
#endif /*PATH_MAX*/
#if !defined(strdup)
#define strdup _strdup
#endif /*strdup*/
/*
#if !defined(access)
#define access _access
#endif*/ /*access*/
#endif /*_WIN32_WCE*/
#ifdef HAVE_GETTEXT
#include <libintl.h>
@ -71,14 +90,16 @@ typedef struct {
/***************************************************************************
*
* Forward declarations
* Forward declarations
*
***************************************************************************/
char *lpc_strip_blanks(char *input);
static int handle_configfile_migration(void);
#if !defined(_WIN32_WCE)
static int copy_file(const char *from, const char *to);
#endif /*_WIN32_WCE*/
static int linphonec_parse_cmdline(int argc, char **argv);
static int linphonec_init(int argc, char **argv);
static int linphonec_main_loop (LinphoneCore * opm, char * sipAddr);
@ -111,7 +132,7 @@ static void linphonec_dtmf_received(LinphoneCore *lc, int dtmf);
static void print_prompt(LinphoneCore *opm);
/***************************************************************************
*
* Global variables
* Global variables
*
***************************************************************************/
@ -135,18 +156,25 @@ static int trace_level = 0;
static char *logfile_name = NULL;
static char configfile_name[PATH_MAX];
static char *sipAddr = NULL; /* for autocall */
#if !defined(_WIN32_WCE)
static ortp_pipe_t client_sock=ORTP_PIPE_INVALID;
#endif /*_WIN32_WCE*/
char prompt[PROMPT_MAX_LEN];
#if !defined(_WIN32_WCE)
static ortp_thread_t pipe_reader_th;
static bool_t pipe_reader_run=FALSE;
#endif /*_WIN32_WCE*/
#if !defined(_WIN32_WCE)
static ortp_pipe_t server_sock;
#endif /*_WIN32_WCE*/
LinphoneCoreVTable linphonec_vtable = {
LinphoneCoreVTable linphonec_vtable
#if !defined (_MSC_VER)
= {
.show =(ShowInterfaceCb) stub,
.inv_recv = linphonec_call_received,
.bye_recv = linphonec_bye_received,
.bye_recv = linphonec_bye_received,
.notify_recv = linphonec_notify_received,
.new_unknown_subscriber = linphonec_new_unknown_subscriber,
.auth_info_requested = linphonec_prompt_for_auth,
@ -162,7 +190,9 @@ LinphoneCoreVTable linphonec_vtable = {
.text_received=linphonec_text_received,
.general_state=linphonec_general_state,
.dtmf_received=linphonec_dtmf_received
};
}
#endif /*_WIN32_WCE*/
;
@ -173,7 +203,7 @@ LinphoneCoreVTable linphonec_vtable = {
***************************************************************************/
/*
* Linphone core callback
* Linphone core callback
*/
static void
linphonec_display_something (LinphoneCore * lc, const char *something)
@ -183,7 +213,7 @@ linphonec_display_something (LinphoneCore * lc, const char *something)
}
/*
* Linphone core callback
* Linphone core callback
*/
static void
linphonec_display_status (LinphoneCore * lc, const char *something)
@ -193,7 +223,7 @@ linphonec_display_status (LinphoneCore * lc, const char *something)
}
/*
* Linphone core callback
* Linphone core callback
*/
static void
linphonec_display_warning (LinphoneCore * lc, const char *something)
@ -203,7 +233,7 @@ linphonec_display_warning (LinphoneCore * lc, const char *something)
}
/*
* Linphone core callback
* Linphone core callback
*/
static void
linphonec_display_url (LinphoneCore * lc, const char *something, const char *url)
@ -213,7 +243,7 @@ linphonec_display_url (LinphoneCore * lc, const char *something, const char *url
/*
* Linphone core callback
* Linphone core callback
*/
static void
linphonec_call_received(LinphoneCore *lc, const char *from)
@ -225,7 +255,7 @@ linphonec_call_received(LinphoneCore *lc, const char *from)
}
/*
* Linphone core callback
* Linphone core callback
*/
static void
linphonec_prompt_for_auth(LinphoneCore *lc, const char *realm, const char *username)
@ -235,15 +265,15 @@ linphonec_prompt_for_auth(LinphoneCore *lc, const char *realm, const char *usern
linphone_core_abort_authentication(lc,NULL);
}else{
LinphoneAuthInfo *pending_auth;
if ( auth_stack.nitems+1 > MAX_PENDING_AUTH )
{
fprintf(stderr,
"Can't accept another authentication request.\n"
"Consider incrementing MAX_PENDING_AUTH macro.\n");
return;
}
}
pending_auth=linphone_auth_info_new(username,NULL,NULL,NULL,realm);
auth_stack.elem[auth_stack.nitems++]=pending_auth;
}
@ -268,8 +298,8 @@ linphonec_new_unknown_subscriber(LinphoneCore *lc, LinphoneFriend *lf,
const char *url)
{
printf("Friend %s requested subscription "
"(accept/deny is not implemented yet)\n", url);
// This means that this person wishes to be notified
"(accept/deny is not implemented yet)\n", url);
// This means that this person wishes to be notified
// of your presence information (online, busy, away...).
}
@ -304,7 +334,7 @@ static void linphonec_dtmf_received(LinphoneCore *lc, int dtmf){
fflush(stdout);
}
static void
static void
linphonec_general_state (LinphoneCore * lc, LinphoneGeneralState *gstate)
{
if (show_general_state) {
@ -352,11 +382,11 @@ linphonec_general_state (LinphoneCore * lc, LinphoneGeneralState *gstate)
printf("GSTATE_CALL_ERROR");
break;
default:
printf("GSTATE_UNKNOWN_%d",gstate->new_state);
printf("GSTATE_UNKNOWN_%d",gstate->new_state);
}
if (gstate->message) printf(" %s", gstate->message);
printf("\n");
}
}
}
static char received_prompt[PROMPT_MAX_LEN];
@ -380,14 +410,14 @@ static void start_prompt_reader(void){
ms_mutex_init(&prompt_mutex,NULL);
ortp_thread_create(&th,NULL,prompt_reader_thread,NULL);
}
#if !defined(_WIN32_WCE)
static ortp_pipe_t create_server_socket(void){
char path[128];
#ifndef WIN32
snprintf(path,sizeof(path)-1,"linphonec-%i",getuid());
#else
{
char username[128];
TCHAR username[128];
DWORD size=sizeof(username)-1;
GetUserName(username,&size);
snprintf(path,sizeof(path)-1,"linphonec-%s",username);
@ -396,6 +426,7 @@ static ortp_pipe_t create_server_socket(void){
return ortp_server_pipe_create(path);
}
static void *pipe_thread(void*p){
char tmp[250];
server_sock=create_server_socket();
@ -424,7 +455,7 @@ static void *pipe_thread(void*p){
ortp_server_pipe_close_client(client_sock);
client_sock=ORTP_PIPE_INVALID;
}
}else{
if (pipe_reader_run) fprintf(stderr,"accept() failed: %s\n",strerror(errno));
}
@ -446,6 +477,7 @@ static void stop_pipe_reader(void){
ortp_server_pipe_close(server_sock);
ortp_thread_join(pipe_reader_th,NULL);
}
#endif /*_WIN32_WCE*/
#ifdef HAVE_READLINE
#define BOOL_HAVE_READLINE 1
@ -462,8 +494,10 @@ char *linphonec_readline(char *prompt){
prompt_reader_started=TRUE;
}
if (unix_socket && !pipe_reader_started){
#if !defined(_WIN32_WCE)
start_pipe_reader();
pipe_reader_started=TRUE;
#endif /*_WIN32_WCE*/
}
fprintf(stdout,"%s",prompt);
fflush(stdout);
@ -498,19 +532,23 @@ void linphonec_out(const char *fmt,...){
va_end (args);
printf("%s",res);
fflush(stdout);
#if !defined(_WIN32_WCE)
if (client_sock!=ORTP_PIPE_INVALID){
if (ortp_pipe_write(client_sock,(uint8_t*)res,strlen(res))==-1){
fprintf(stderr,"Fail to send output via pipe: %s",strerror(errno));
}
}
#endif /*_WIN32_WCE*/
ortp_free(res);
}
void linphonec_command_finished(void){
#if !defined(_WIN32_WCE)
if (client_sock!=ORTP_PIPE_INVALID){
ortp_server_pipe_close_client(client_sock);
client_sock=ORTP_PIPE_INVALID;
}
#endif /*_WIN32_WCE*/
}
void linphonec_set_autoanswer(bool_t enabled){
@ -530,9 +568,35 @@ bool_t linphonec_get_autoanswer(){
* - char *histfile_name
* - FILE *mylogfile
*/
#if defined (_MSC_VER)
int _tmain(int argc, _TCHAR* argv[]) {
trace_level=1;
linphonec_vtable.show =(ShowInterfaceCb) stub;
linphonec_vtable.inv_recv = linphonec_call_received;
linphonec_vtable.bye_recv = linphonec_bye_received;
linphonec_vtable.notify_recv = linphonec_notify_received;
linphonec_vtable.new_unknown_subscriber = linphonec_new_unknown_subscriber;
linphonec_vtable.auth_info_requested = linphonec_prompt_for_auth;
linphonec_vtable.display_status = linphonec_display_status;
linphonec_vtable.display_message=linphonec_display_something;
#ifdef VINCENT_MAURY_RSVP
/* the yes/no dialog box */
linphonec_vtable.display_yes_no= (DisplayMessageCb) stub;
#endif
linphonec_vtable.display_warning=linphonec_display_warning;
linphonec_vtable.display_url=linphonec_display_url;
linphonec_vtable.display_question=(DisplayQuestionCb)stub;
linphonec_vtable.text_received=linphonec_text_received;
linphonec_vtable.general_state=linphonec_general_state;
linphonec_vtable.dtmf_received=linphonec_dtmf_received;
#else
int
main (int argc, char *argv[])
{
main (int argc, char *argv[]) {
#endif
if (! linphonec_init(argc, argv) ) exit(EXIT_FAILURE);
@ -556,9 +620,13 @@ linphonec_init(int argc, char **argv)
* Set initial values for global variables
*/
mylogfile = NULL;
snprintf(configfile_name, PATH_MAX, "%s/.linphonerc",
getenv("HOME"));
snprintf(configfile_name, PATH_MAX, "%s/.linphonerc",
#if !defined(_WIN32_WCE)
getenv("HOME"));
#else
".");
#endif /*_WIN32_WCE*/
/* Handle configuration filename changes */
switch (handle_configfile_migration())
@ -623,12 +691,13 @@ linphonec_init(int argc, char **argv)
*/
linphonec_initialize_readline();
#endif
#if !defined(_WIN32_WCE)
/*
* Initialize signal handlers
*/
signal(SIGTERM, linphonec_finish);
signal(SIGINT, linphonec_finish);
signal(SIGTERM, linphonec_finish);
signal(SIGINT, linphonec_finish);
#endif /*_WIN32_WCE*/
return 1;
}
@ -645,16 +714,17 @@ void
linphonec_finish(int exit_status)
{
printf("Terminating...\n");
/* Terminate any pending call */
linphonec_parse_command_line(linphonec, "terminate");
linphonec_command_finished();
#ifdef HAVE_READLINE
linphonec_finish_readline();
#endif
#if !defined(_WIN32_WCE)
if (pipe_reader_run)
stop_pipe_reader();
#endif /*_WIN32_WCE*/
linphone_core_destroy (linphonec);
@ -672,7 +742,7 @@ linphonec_finish(int exit_status)
* pending_auth != NULL.
*
* It prompts user for a password.
* Hitting ^D (EOF) would make this function
* Hitting ^D (EOF) would make this function
* return 0 (Cancel).
* Any other input would try to set linphone core
* auth_password for the pending_auth, add the auth_info
@ -715,7 +785,7 @@ linphonec_prompt_for_auth_final(LinphoneCore *lc)
*/
if ( ! input )
{
printf("Cancel requested, but not implemented.\n");
printf("Cancel requested, but not implemented.\n");
continue;
}
@ -834,7 +904,7 @@ linphonec_initialize_readline()
rl_readline_name = "linphonec";
/* Call idle_call() every second */
rl_set_keyboard_input_timeout(LPC_READLINE_TIMEOUT);
rl_set_keyboard_input_timeout(LPC_READLINE_TIMEOUT);
rl_event_hook=linphonec_idle_call;
/* Set history file and read it */
@ -849,7 +919,7 @@ linphonec_initialize_readline()
rl_attempted_completion_function = linephonec_readline_completion;
/* printf("Readline initialized.\n"); */
setlinebuf(stdout);
setlinebuf(stdout);
return 0;
}
@ -976,7 +1046,7 @@ linphonec_parse_cmdline(int argc, char **argv)
else if (strncmp ("-c", argv[arg_num], 2) == 0)
{
if ( ++arg_num >= argc ) print_usage(EXIT_FAILURE);
#if !defined(_WIN32_WCE)
if (access(argv[arg_num],F_OK)!=0 )
{
fprintf (stderr,
@ -984,6 +1054,7 @@ linphonec_parse_cmdline(int argc, char **argv)
argv[arg_num]);
exit(EXIT_FAILURE);
}
#endif /*_WIN32_WCE*/
snprintf(configfile_name, PATH_MAX, "%s", argv[arg_num]);
}
else if (strncmp ("-s", argv[arg_num], 2) == 0)
@ -1016,7 +1087,9 @@ linphonec_parse_cmdline(int argc, char **argv)
("--version", argv[arg_num],
strlen ("--version")) == 0))
{
#if !defined(_WIN32_WCE)
printf ("version: " LINPHONE_VERSION "\n");
#endif
exit (EXIT_SUCCESS);
}
else if (strncmp ("-S", argv[arg_num], 2) == 0)
@ -1053,16 +1126,20 @@ linphonec_parse_cmdline(int argc, char **argv)
* Returns:
* 0 if it did nothing
* 1 if it migrated successfully
* -1 on error
* -1 on error
*/
static int
handle_configfile_migration()
{
#if !defined(_WIN32_WCE)
char *old_cfg_gui;
char *old_cfg_cli;
char *old_cfg_cli;
char *new_cfg;
#if !defined(_WIN32_WCE)
const char *home = getenv("HOME");
#else
const char *home = ".";
#endif /*_WIN32_WCE*/
new_cfg = ms_strdup_printf("%s/.linphonerc", home);
/*
@ -1119,9 +1196,10 @@ handle_configfile_migration()
free(old_cfg_gui);
free(new_cfg);
#endif /*_WIN32_WCE*/
return 0;
}
#if !defined(_WIN32_WCE)
/*
* Copy file "from" to file "to".
* Destination file is truncated if existing.
@ -1162,13 +1240,14 @@ copy_file(const char *from, const char *to)
{
return 0;
}
}
}
fclose(in);
fclose(out);
return 1;
}
#endif /*_WIN32_WCE*/
#ifdef HAVE_READLINE
static char **
@ -1332,3 +1411,4 @@ lpc_strip_blanks(char *input)
*
*
****************************************************************************/

View file

@ -46,6 +46,7 @@
#endif
#endif
/**************************************************************************
*
* Compile-time defines
@ -98,7 +99,7 @@ typedef struct {
/***************************************************************************
*
* Forward declarations
* Forward declarations
*
***************************************************************************/

View file

@ -43,9 +43,9 @@ endif
AM_CFLAGS=$(STRICT_OPTIONS) -DIN_LINPHONE \
$(ORTP_CFLAGS) \
$(OSIP_CFLAGS) \
$(EXOSIP_CFLAGS) \
$(ORTP_CFLAGS) \
-DENABLE_TRACE \
-DLOG_DOMAIN=\"LinphoneCore\" \
$(IPV6_CFLAGS) \

View file

@ -19,7 +19,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
/* enum lookup code */
#ifndef _WIN32_WCE
#include <errno.h>
#endif
#include <string.h>
#include "enum.h"

View file

@ -116,7 +116,7 @@ int linphone_call_terminated(LinphoneCore *lc, eXosip_event_t *ev)
return 0;
}
}
ms_message("Current call terminated...");
if (lc->ringstream!=NULL) {
ring_stop(lc->ringstream);
@ -143,7 +143,7 @@ int linphone_call_terminated(LinphoneCore *lc, eXosip_event_t *ev)
int linphone_call_released(LinphoneCore *lc, int cid){
LinphoneCall *call=lc->call;
if (call!=NULL && call->cid==cid){
linphone_call_destroy(lc->call);
lc->call=NULL;
lc->vtable.display_status(lc,_("Could not reach destination."));
@ -178,7 +178,7 @@ int linphone_call_failure(LinphoneCore *lc, eXosip_event_t *ev)
reason=osip_message_get_reason_phrase(ev->response);
}else code=-110;
lc->vtable.show(lc);
switch(code)
{
case 401:
@ -211,12 +211,12 @@ int linphone_call_failure(LinphoneCore *lc, eXosip_event_t *ev)
sprintf(umsg,retrymsg,tmpmsg,atoi(retry->hvalue)/60);
lc->vtable.display_message(lc,umsg);
ms_free(umsg);
}*/
}*/
lc->vtable.display_message(lc,tmpmsg);
break;
case 487:
lc->vtable.display_status(lc,msg487);
break;
break;
case 600:
lc->vtable.display_message(lc,msg600);
break;
@ -229,13 +229,13 @@ int linphone_call_failure(LinphoneCore *lc, eXosip_event_t *ev)
case -111:
lc->vtable.display_status(lc,_("Remote host was found but refused connection."));
break;
default:
if (code>0)
{
lc->vtable.display_status(lc,reason);
}
else ms_warning("failure_cb unknown code=%i\n",code);
else ms_warning("failure_cb unknown code=%i\n",code);
}
if (lc->ringstream!=NULL) {
ring_stop(lc->ringstream);
@ -255,7 +255,7 @@ extern sdp_handler_t linphone_sdphandler;
static int linphone_answer_sdp(LinphoneCore *lc, eXosip_event_t *ev, sdp_message_t *sdp){
int status=200;
sdp_context_t *ctx=NULL;
ctx=lc->call->sdpctx;
/* get the result of the negociation */
sdp_context_get_answer(ctx,sdp);
@ -280,8 +280,8 @@ int linphone_inc_new_call(LinphoneCore *lc, eXosip_event_t *ev)
int err;
osip_from_to_str(ev->request->from,&from);
osip_to_to_str(ev->request->to,&to);
osip_to_to_str(ev->request->to,&to);
/* first check if we can answer successfully to this invite */
if (lc->presence_mode!=LINPHONE_STATUS_ONLINE){
ms_message("Not present !! presence mode : %d\n",lc->presence_mode);
@ -322,7 +322,7 @@ int linphone_inc_new_call(LinphoneCore *lc, eXosip_event_t *ev)
goto end;
}
lc->call=linphone_call_new_incoming(lc,linphone_address_new(from),linphone_address_new(to),ev);
sdp=eXosip_get_sdp_info(ev->request);
if (sdp==NULL){
ms_message("No sdp body in invite, 200-ack scheme");
@ -352,7 +352,7 @@ int linphone_inc_new_call(LinphoneCore *lc, eXosip_event_t *ev)
lc->vtable.inv_recv(lc,tmp);
ms_free(barmesg);
osip_free(tmp);
osip_free(tmp);
}else{
ms_error("Error during sdp negociation. ");
eXosip_lock();
@ -459,8 +459,8 @@ int linphone_set_audio_offer(sdp_context_t *ctx)
PayloadType *codec;
MSList *elem;
sdp_payload_t payload;
elem=lc->codecs_conf.audio_codecs;
while(elem!=NULL){
codec=(PayloadType*) elem->data;
@ -468,7 +468,7 @@ int linphone_set_audio_offer(sdp_context_t *ctx)
sdp_payload_init(&payload);
payload.a_rtpmap=ortp_strdup_printf("%s/%i/1",codec->mime_type,codec->clock_rate);
payload.pt=rtp_profile_get_payload_number_from_rtpmap(lc->local_profile,payload.a_rtpmap);
payload.localport=call->audio_params.natd_port > 0 ?
payload.localport=call->audio_params.natd_port > 0 ?
call->audio_params.natd_port : lc->rtp_conf.audio_rtp_port;
if (strcasecmp(codec->mime_type,"iLBC")==0){
/* prefer the 30 ms mode */
@ -494,7 +494,7 @@ static int find_payload_type_number(RtpProfile *prof, PayloadType *pt){
PayloadType *it;
for(i=0;i<127;++i){
it=rtp_profile_get_payload(prof,i);
if (it!=NULL && strcasecmp(pt->mime_type,it->mime_type)==0
if (it!=NULL && strcasecmp(pt->mime_type,it->mime_type)==0
&& (pt->clock_rate==it->clock_rate || pt->clock_rate<=0) ){
if ( (pt->recv_fmtp && it->recv_fmtp && strcasecmp(pt->recv_fmtp,it->recv_fmtp)==0) ||
(pt->recv_fmtp==NULL && it->recv_fmtp==NULL) ){
@ -533,7 +533,7 @@ int linphone_set_video_offer(sdp_context_t *ctx)
LinphoneCore *lc=call->core;
PayloadType *codec;
MSList *elem;
bool_t firsttime=TRUE;
bool_t firsttime=TRUE;
if (!linphone_core_video_enabled(lc)) return -1;
@ -544,7 +544,7 @@ int linphone_set_video_offer(sdp_context_t *ctx)
sdp_payload_init(&payload);
payload.line=1;
payload.a_rtpmap=ortp_strdup_printf("%s/%i",codec->mime_type,codec->clock_rate);
payload.localport=call->video_params.natd_port>0 ?
payload.localport=call->video_params.natd_port>0 ?
call->video_params.natd_port : lc->rtp_conf.video_rtp_port;
payload.pt=find_payload_type_number(lc->local_profile,codec);
payload.a_fmtp=codec->recv_fmtp;
@ -576,7 +576,7 @@ SupportLevel linphone_payload_is_supported(LinphoneCore *lc, sdp_payload_t *payl
localpt=payload->pt;
ms_warning("payload has no rtpmap.");
}
if (localpt>=0 && localpt <128 ){
/* this payload is understood, but does the user want to use it ?? */
PayloadType *rtppayload;
@ -610,7 +610,7 @@ SupportLevel linphone_payload_is_supported(LinphoneCore *lc, sdp_payload_t *payl
if (rtppayload->type==PAYLOAD_VIDEO){
dbw=lc->dw_video_bw;
ubw=lc->up_video_bw;
}else{
}else{
dbw=lc->dw_audio_bw;
ubw=lc->up_audio_bw;
}
@ -665,11 +665,11 @@ int linphone_accept_audio_offer(sdp_context_t *ctx,sdp_payload_t *payload)
ms_message("Only one codec has to be accepted.");
return -1;
}
if (supported==SupportedAndValid) {
if (supported==SupportedAndValid) {
if (params->initialized==0){
/* this is the first codec we accept, it is going to be used*/
params->localport=lc->rtp_conf.audio_rtp_port;
payload->localport=params->natd_port>0 ?
payload->localport=params->natd_port>0 ?
params->natd_port : lc->rtp_conf.audio_rtp_port;
params->line=payload->line;
params->pt=payload->pt; /* remember the first payload accepted */
@ -692,7 +692,9 @@ int linphone_accept_audio_offer(sdp_context_t *ctx,sdp_payload_t *payload)
/* refuse all other audio lines*/
if(params->line!=payload->line) {
ms_message("Only one audio line can be accepted.");
#if !defined(_WIN32_WCE)
abort();
#endif /*_WIN32_WCE*/
return -1;
}
}
@ -761,7 +763,7 @@ int linphone_read_audio_answer(sdp_context_t *ctx,sdp_payload_t *payload)
StreamParams *params;
SupportLevel supported;
PayloadType *lpt=NULL;
/* paranoid check: see if this codec is supported in our local rtp profile*/
supported=linphone_payload_is_supported(lc, payload,lc->local_profile,call->profile,FALSE,&lpt);
if (supported==Unsupported) {
@ -801,7 +803,7 @@ int linphone_read_video_answer(sdp_context_t *ctx,sdp_payload_t *payload)
StreamParams *params;
SupportLevel supported;
PayloadType *lpt=NULL;
/* paranoid check: see if this codec is supported in our local rtp profile*/
supported=linphone_payload_is_supported(lc, payload,lc->local_profile,call->profile,FALSE,&lpt);
if (supported==Unsupported) {
@ -834,7 +836,7 @@ int linphone_read_video_answer(sdp_context_t *ctx,sdp_payload_t *payload)
void linphone_call_ringing(LinphoneCore *lc, eXosip_event_t *ev){
sdp_message_t *sdp=eXosip_get_sdp_info(ev->response);
LinphoneCall *call=lc->call;
lc->vtable.display_status(lc,_("Remote ringing."));
linphone_call_proceeding(lc,ev);
if (call==NULL) return;
@ -910,7 +912,7 @@ static void linphone_process_dtmf_relay(LinphoneCore *lc, eXosip_event_t *ev){
lc->vtable.dtmf_received(lc, tmp[0]);
}
}
eXosip_call_build_answer(ev->tid,200,&ans);
if (ans)
eXosip_call_send_answer(ev->tid,200,ans);
@ -952,7 +954,7 @@ void linphone_registration_faillure(LinphoneCore *lc, eXosip_event_t *ev){
osip_uri_t *requri=osip_message_get_uri(ev->request);
char *ru;
LinphoneProxyConfig *cfg;
if (ev->response){
status_code=osip_message_get_status_code(ev->response);
reason=osip_message_get_reason_phrase(ev->response);
@ -994,7 +996,7 @@ void linphone_registration_success(LinphoneCore *lc,eXosip_event_t *ev){
cfg->registered=TRUE;
linphone_proxy_config_register_again_with_updated_contact(cfg,ev->request,ev->response);
}else cfg->registered=FALSE;
osip_uri_to_str(requri,&ru);
if (cfg->registered) msg=ms_strdup_printf(_("Registration on %s successful."),ru);
else msg=ms_strdup_printf(_("Unregistration on %s done."),ru);
@ -1013,7 +1015,7 @@ static bool_t comes_from_local_if(osip_message_t *msg){
osip_generic_param_t *param=NULL;
osip_via_param_get_byname(via,"received",&param);
if (param==NULL) return TRUE;
if (param->gvalue &&
if (param->gvalue &&
(strcmp(param->gvalue,"127.0.0.1")==0 || strcmp(param->gvalue,"::1")==0)){
return TRUE;
}
@ -1057,10 +1059,10 @@ static void linphone_other_request(LinphoneCore *lc, eXosip_event_t *ev){
osip_message_header_get_byname(ev->request,"Refer-To",0,&h);
eXosip_message_send_answer(ev->tid,200,NULL);
if (h){
if (lc->vtable.refer_received)
if (lc->vtable.refer_received)
lc->vtable.refer_received(lc,h->hvalue);
}
}else ms_warning("Ignored REFER not coming from this local loopback interface.");
}else if (strncmp(ev->request->sip_method, "UPDATE", 6) == 0){
linphone_inc_update(lc,ev);
@ -1103,7 +1105,7 @@ void linphone_core_process_event(LinphoneCore *lc,eXosip_event_t *ev)
break;
case EXOSIP_CALL_INVITE:
ms_message("CALL_NEW\n");
/* CALL_NEW is used twice in qos mode :
/* CALL_NEW is used twice in qos mode :
* when you receive invite (textinfo = "With QoS" or "Without QoS")
* and when you receive update (textinfo = "New Call") */
linphone_inc_new_call(lc,ev);
@ -1132,7 +1134,7 @@ void linphone_core_process_event(LinphoneCore *lc,eXosip_event_t *ev)
linphone_call_message_new(lc,ev);
break;
case EXOSIP_CALL_MESSAGE_REQUESTFAILURE:
if (ev->did<0 && ev->response &&
if (ev->did<0 && ev->response &&
(ev->response->status_code==407 || ev->response->status_code==401)){
eXosip_default_action(ev);
}

View file

@ -702,7 +702,7 @@ LinphoneFriend *linphone_core_get_friend_by_ref_key(const LinphoneCore *lc, cons
return NULL;
}
#define key_compare(key, word) strncasecmp((key),(word),strlen(key))
#define key_compare(s1,s2) strcmp(s1,s2)
LinphoneSubscribePolicy __policy_str_to_enum(const char* pol){
if (key_compare("accept",pol)==0){

View file

@ -31,9 +31,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "exevents.h"
#ifdef INET6
#ifdef INET6
#ifndef WIN32
#include <netdb.h>
#include <netdb.h>
#endif
#endif
@ -50,7 +50,7 @@ static void toggle_video_preview(LinphoneCore *lc, bool_t val);
/* relative path where is stored local ring*/
#define LOCAL_RING "rings/oldphone.wav"
/* same for remote ring (ringback)*/
#define REMOTE_RING "ringback.wav"
#define REMOTE_RING "ringback.wav"
sdp_handler_t linphone_sdphandler={
@ -79,7 +79,7 @@ static void linphone_call_init_common(LinphoneCall *call, LinphoneAddress *from
call->media_start_time=0;
call->log=linphone_call_log_new(call, from, to);
linphone_core_notify_all_friends(call->core,LINPHONE_STATUS_ONTHEPHONE);
if (linphone_core_get_firewall_policy(call->core)==LINPHONE_POLICY_USE_STUN)
if (linphone_core_get_firewall_policy(call->core)==LINPHONE_POLICY_USE_STUN)
linphone_core_run_stun_tests(call->core,call);
call->profile=rtp_profile_new("Call RTP profile");
}
@ -159,7 +159,12 @@ void linphone_call_destroy(LinphoneCall *obj)
/*prevent a gcc bug with %c*/
static size_t my_strftime(char *s, size_t max, const char *fmt, const struct tm *tm){
#if !defined(_WIN32_WCE)
return strftime(s, max, fmt, tm);
#else
return 0;
/*FIXME*/
#endif /*_WIN32_WCE*/
}
static void set_call_log_date(LinphoneCallLog *cl, const struct tm *loctime){
@ -171,7 +176,10 @@ LinphoneCallLog * linphone_call_log_new(LinphoneCall *call, LinphoneAddress *fro
struct tm loctime;
cl->dir=call->dir;
#ifdef WIN32
#if !defined(_WIN32_WCE)
loctime=*localtime(&call->start_time);
/*FIXME*/
#endif /*_WIN32_WCE*/
#else
localtime_r(&call->start_time,&loctime);
#endif
@ -395,7 +403,7 @@ void _osip_trace_func(char *fi, int li, osip_trace_level_t level, char *chfr, va
ortp_level=ORTP_FATAL;
break;
case END_TRACE_LEVEL:
break;
break;
}
if (ortp_log_level_enabled(level)){
int len=strlen(chfr);
@ -512,13 +520,13 @@ static void sound_config_read(LinphoneCore *lc)
devid=lp_config_get_string(lc->config,"sound","playback_dev_id",NULL);
linphone_core_set_playback_device(lc,devid);
devid=lp_config_get_string(lc->config,"sound","ringer_dev_id",NULL);
linphone_core_set_ringer_device(lc,devid);
devid=lp_config_get_string(lc->config,"sound","capture_dev_id",NULL);
linphone_core_set_capture_device(lc,devid);
/*
tmp=lp_config_get_int(lc->config,"sound","play_lev",80);
linphone_core_set_play_level(lc,tmp);
@ -529,22 +537,22 @@ static void sound_config_read(LinphoneCore *lc)
tmpbuf=lp_config_get_string(lc->config,"sound","source","m");
linphone_core_set_sound_source(lc,tmpbuf[0]);
*/
tmpbuf=PACKAGE_SOUND_DIR "/" LOCAL_RING;
tmpbuf=lp_config_get_string(lc->config,"sound","local_ring",tmpbuf);
if (access(tmpbuf,F_OK)==-1) {
if (ortp_file_exist(tmpbuf)==-1) {
tmpbuf=PACKAGE_SOUND_DIR "/" LOCAL_RING;
}
if (strstr(tmpbuf,".wav")==NULL){
/* it currently uses old sound files, so replace them */
tmpbuf=PACKAGE_SOUND_DIR "/" LOCAL_RING;
}
linphone_core_set_ring(lc,tmpbuf);
tmpbuf=PACKAGE_SOUND_DIR "/" REMOTE_RING;
tmpbuf=lp_config_get_string(lc->config,"sound","remote_ring",tmpbuf);
if (access(tmpbuf,F_OK)==-1){
if (ortp_file_exist(tmpbuf)==-1){
tmpbuf=PACKAGE_SOUND_DIR "/" REMOTE_RING;
}
if (strstr(tmpbuf,".wav")==NULL){
@ -589,12 +597,16 @@ static void sip_config_read(LinphoneCore *lc)
linphone_core_enable_ipv6(lc,ipv6);
port=lp_config_get_int(lc->config,"sip","sip_port",5060);
linphone_core_set_sip_port(lc,port);
tmpstr=lp_config_get_string(lc->config,"sip","contact",NULL);
if (tmpstr==NULL || linphone_core_set_primary_contact(lc,tmpstr)==-1) {
char *hostname=getenv("HOST");
char *username=getenv("USER");
const char *hostname=NULL;
const char *username=NULL;
#ifdef HAVE_GETENV
hostname=getenv("HOST");
username=getenv("USER");
if (hostname==NULL) hostname=getenv("HOSTNAME");
#endif /*HAVE_GETENV*/
if (hostname==NULL)
hostname="unknown-host";
if (username==NULL){
@ -607,8 +619,8 @@ static void sip_config_read(LinphoneCore *lc)
tmp=lp_config_get_int(lc->config,"sip","guess_hostname",1);
linphone_core_set_guess_hostname(lc,tmp);
tmp=lp_config_get_int(lc->config,"sip","inc_timeout",15);
linphone_core_set_inc_timeout(lc,tmp);
@ -624,7 +636,7 @@ static void sip_config_read(LinphoneCore *lc)
/* get the default proxy */
tmp=lp_config_get_int(lc->config,"sip","default_proxy",-1);
linphone_core_set_default_proxy_index(lc,tmp);
/* read authentication information */
for(i=0;; i++){
LinphoneAuthInfo *ai=linphone_auth_info_new_from_config_file(lc->config,i);
@ -648,16 +660,16 @@ static void rtp_config_read(LinphoneCore *lc)
int nortp_timeout;
port=lp_config_get_int(lc->config,"rtp","audio_rtp_port",7078);
linphone_core_set_audio_port(lc,port);
port=lp_config_get_int(lc->config,"rtp","video_rtp_port",9078);
if (port==0) port=9078;
linphone_core_set_video_port(lc,port);
jitt_comp=lp_config_get_int(lc->config,"rtp","audio_jitt_comp",60);
linphone_core_set_audio_jittcomp(lc,jitt_comp);
linphone_core_set_audio_jittcomp(lc,jitt_comp);
jitt_comp=lp_config_get_int(lc->config,"rtp","video_jitt_comp",60);
nortp_timeout=lp_config_get_int(lc->config,"rtp","nortp_timeout",30);
linphone_core_set_nortp_timeout(lc,nortp_timeout);
linphone_core_set_nortp_timeout(lc,nortp_timeout);
}
@ -666,14 +678,14 @@ static PayloadType * get_codec(LpConfig *config, char* type,int index){
const char *mime,*fmtp;
int rate,enabled;
PayloadType *pt;
snprintf(codeckey,50,"%s_%i",type,index);
mime=lp_config_get_string(config,codeckey,"mime",NULL);
if (mime==NULL || strlen(mime)==0 ) return NULL;
pt=payload_type_new();
pt->mime_type=ms_strdup(mime);
rate=lp_config_get_int(config,codeckey,"rate",8000);
pt->clock_rate=rate;
fmtp=lp_config_get_string(config,codeckey,"recv_fmtp",NULL);
@ -728,7 +740,7 @@ static void video_config_read(LinphoneCore *lc)
str=lp_config_get_string(lc->config,"video","device",NULL);
if (str && str[0]==0) str=NULL;
linphone_core_set_video_device(lc,str);
linphone_core_set_preferred_video_size_by_name(lc,
lp_config_get_string(lc->config,"video","size","cif"));
@ -874,7 +886,7 @@ static void linphone_core_init (LinphoneCore * lc, const LinphoneCoreVTable *vta
gstate_initialize(lc);
gstate_new_state(lc, GSTATE_POWER_STARTUP, NULL);
ortp_init();
linphone_core_assign_payload_type(&payload_type_lpc1015,115,NULL);
linphone_core_assign_payload_type(&payload_type_speex_nb,110,"vbr=on");
@ -908,11 +920,11 @@ static void linphone_core_init (LinphoneCore * lc, const LinphoneCoreVTable *vta
#endif
ms_init();
lc->config=lp_config_new(config_path);
if (factory_config_path)
lp_config_read_file(lc->config,factory_config_path);
#ifdef VINCENT_MAURY_RSVP
/* default qos parameters : rsvp on, rpc off */
lc->rsvp_enable = 1;
@ -1031,7 +1043,7 @@ void linphone_core_get_local_ip(LinphoneCore *lc, const char *dest, char *result
if (eXosip_guess_localip(lc->sip_conf.ipv6_enabled ? AF_INET6 : AF_INET,result,LINPHONE_IPADDR_SIZE)<0){
/*default to something */
strncpy(result,lc->sip_conf.ipv6_enabled ? "::1" : "127.0.0.1",LINPHONE_IPADDR_SIZE);
ms_error("Could not find default routable ip address !");
ms_error("Could not find default routable ip address !");
}
}
@ -1052,10 +1064,10 @@ const char *linphone_core_get_primary_contact(LinphoneCore *lc)
ms_free(lc->sip_conf.guessed_contact);
lc->sip_conf.guessed_contact=NULL;
}
osip_from_init(&url);
if (osip_from_parse(url,lc->sip_conf.contact)==0){
}else ms_error("Could not parse identity contact !");
linphone_core_get_local_ip(lc, NULL, tmp);
if (strcmp(tmp,"127.0.0.1")==0 || strcmp(tmp,"::1")==0 ){
@ -1073,9 +1085,9 @@ const char *linphone_core_get_primary_contact(LinphoneCore *lc)
}
osip_from_to_str(url,&guessed);
lc->sip_conf.guessed_contact=guessed;
osip_from_free(url);
}
identity=lc->sip_conf.guessed_contact;
}else{
@ -1494,11 +1506,11 @@ void linphone_core_iterate(LinphoneCore *lc)
{
eXosip_event_t *ev;
bool_t disconnected=FALSE;
int disconnect_timeout = linphone_core_get_nortp_timeout(lc);
int disconnect_timeout = linphone_core_get_nortp_timeout(lc);
time_t curtime=time(NULL);
int elapsed;
bool_t one_second_elapsed=FALSE;
if (curtime-lc->prevtime>=1){
lc->prevtime=curtime;
one_second_elapsed=TRUE;
@ -1510,7 +1522,7 @@ void linphone_core_iterate(LinphoneCore *lc)
lc->ringstream=NULL;
lc_callback_obj_invoke(&lc->preview_finished_cb,lc);
}
if (exosip_running){
while((ev=eXosip_event_wait(0,0))!=NULL){
linphone_core_process_event(lc,ev);
@ -1526,7 +1538,7 @@ void linphone_core_iterate(LinphoneCore *lc)
if (lc->call!=NULL){
LinphoneCall *call=lc->call;
if (call->dir==LinphoneCallIncoming && call->state==LCStateRinging){
elapsed=curtime-call->start_time;
ms_message("incoming call ringing for %i seconds",elapsed);
@ -1613,7 +1625,7 @@ bool_t linphone_core_interpret_url(LinphoneCore *lc, const char *url, LinphoneAd
if (real_parsed_url!=NULL) *real_parsed_url=NULL;
*route=NULL;
tmproute=linphone_core_get_route(lc);
if (is_enum(url,&enum_domain)){
lc->vtable.display_status(lc,_("Looking for telephone number destination..."));
if (enum_lookup(enum_domain,&enumres)<0){
@ -1789,7 +1801,7 @@ int linphone_core_invite(LinphoneCore *lc, const char *url)
LinphoneAddress *real_parsed_url=NULL;
char *real_url=NULL;
LinphoneProxyConfig *dest_proxy=NULL;
if (lc->call!=NULL){
lc->vtable.display_warning(lc,_("Sorry, having multiple simultaneous calls is not supported yet !"));
return -1;
@ -1807,7 +1819,7 @@ int linphone_core_invite(LinphoneCore *lc, const char *url)
ms_message("The used identity will be %s",linphone_proxy_config_get_identity(dest_proxy));
}
if (dest_proxy!=NULL)
if (dest_proxy!=NULL)
from=linphone_proxy_config_get_identity(dest_proxy);
else if (proxy!=NULL)
from=linphone_proxy_config_get_identity(proxy);
@ -1826,9 +1838,9 @@ int linphone_core_invite(LinphoneCore *lc, const char *url)
osip_message_set_supported(invite, "timer");
}
/* make sdp message */
parsed_url2=linphone_address_new(from);
lc->call=linphone_call_new_outgoing(lc,parsed_url2,real_parsed_url);
/*try to be best-effort in giving real local or routable contact address,
except when the user choosed to override the ipaddress */
@ -1856,7 +1868,7 @@ int linphone_core_invite(LinphoneCore *lc, const char *url)
lc->call=NULL;
linphone_core_stop_media_streams(lc);
}else gstate_new_state(lc, GSTATE_CALL_OUT_INVITE, url);
goto end;
end:
if (real_url!=NULL) ms_free(real_url);
@ -1909,7 +1921,7 @@ int linphone_core_set_rpc_mode(LinphoneCore *lc, int on)
{
if (on==1)
printf("RPC_ENABLE set on\n");
else
else
printf("RPC_ENABLE set off\n");
lc->rpc_enable = (on==1);
/* need to tell eXosip the new setting */
@ -1923,7 +1935,7 @@ int linphone_core_set_rsvp_mode(LinphoneCore *lc, int on)
{
if (on==1)
printf("RSVP_ENABLE set on\n");
else
else
printf("RSVP_ENABLE set off\n");
lc->rsvp_enable = (on==1);
/* need to tell eXosip the new setting */
@ -1939,10 +1951,10 @@ int linphone_core_change_qos(LinphoneCore *lc, int answer)
if (lc->call==NULL){
return -1;
}
if (lc->rsvp_enable && answer==1)
{
/* answer is yes, local setting is with qos, so
/* answer is yes, local setting is with qos, so
* the user chose to continue with no qos ! */
/* so switch in normal mode : ring and 180 */
lc->rsvp_enable = 0; /* no more rsvp */
@ -2066,7 +2078,7 @@ static void post_configure_audio_streams(LinphoneCore *lc){
ms_filter_call_method(f,MS_VOLUME_SET_EA_FORCE,&force);
if (sustain!=-1)
ms_filter_call_method(f,MS_VOLUME_SET_EA_SUSTAIN,&sustain);
}
if (st->volsend){
float ng_thres=lp_config_get_float(lc->config,"sound","ng_thres",0.05);
@ -2085,12 +2097,13 @@ static void post_configure_audio_streams(LinphoneCore *lc){
void linphone_core_start_media_streams(LinphoneCore *lc, LinphoneCall *call){
LinphoneAddress *me=linphone_core_get_primary_contact_parsed(lc);
const char *tool="linphone-" LINPHONE_VERSION;
char *cname;
/* adjust rtp jitter compensation. It must be at least the latency of the sound card */
int jitt_comp=MAX(lc->sound_conf.latency,lc->rtp_conf.audio_jitt_comp);
if (call->media_start_time==0) call->media_start_time=time(NULL);
char *cname=ortp_strdup_printf("%s@%s",linphone_address_get_username(me),linphone_address_get_domain(me));
cname=ortp_strdup_printf("%s@%s",me->url->username,me->url->host);
{
StreamParams *audio_params=&call->audio_params;
if (!lc->use_files){
@ -2104,7 +2117,7 @@ void linphone_core_start_media_streams(LinphoneCore *lc, LinphoneCall *call){
ms_warning("No card defined for capture !");
goto end;
}
if (audio_params->relay_session_id!=NULL)
if (audio_params->relay_session_id!=NULL)
audio_stream_set_relay_session_id(lc->audiostream,audio_params->relay_session_id);
audio_stream_start_now(
lc->audiostream,
@ -2129,7 +2142,7 @@ void linphone_core_start_media_streams(LinphoneCore *lc, LinphoneCall *call){
lc->play_file,
lc->rec_file);
}
post_configure_audio_streams(lc);
post_configure_audio_streams(lc);
audio_stream_set_rtcp_information(lc->audiostream, cname, tool);
}
#ifdef VIDEO_ENABLED
@ -2141,9 +2154,9 @@ void linphone_core_start_media_streams(LinphoneCore *lc, LinphoneCall *call){
}
if (lc->video_conf.display || lc->video_conf.capture) {
StreamParams *video_params=&call->video_params;
if (video_params->remoteport>0){
if (video_params->relay_session_id!=NULL)
if (video_params->relay_session_id!=NULL)
video_stream_set_relay_session_id(lc->videostream,video_params->relay_session_id);
video_stream_set_sent_video_size(lc->videostream,linphone_core_get_preferred_video_size(lc));
video_stream_enable_self_view(lc->videostream,lc->video_conf.selfview);
@ -2217,11 +2230,11 @@ int linphone_core_accept_call(LinphoneCore *lc, const char *url)
LinphoneCall *call=lc->call;
int err;
bool_t offering=FALSE;
if (call==NULL){
return -1;
}
if (lc->call->state==LCStateAVRunning){
/*call already accepted*/
return -1;
@ -2253,7 +2266,7 @@ int linphone_core_accept_call(LinphoneCore *lc, const char *url)
offering=TRUE;
ms_message("generating sdp offer");
sdpmesg=sdp_context_get_offer(call->sdpctx);
if (sdpmesg==NULL){
ms_error("fail to generate sdp offer !");
return -1;
@ -2268,7 +2281,7 @@ int linphone_core_accept_call(LinphoneCore *lc, const char *url)
eXosip_unlock();
lc->vtable.display_status(lc,_("Connected."));
gstate_new_state(lc, GSTATE_CALL_IN_CONNECTED, NULL);
if (!offering) linphone_core_start_media_streams(lc, lc->call);
ms_message("call answered.");
return 0;
@ -2289,11 +2302,11 @@ int linphone_core_terminate_call(LinphoneCore *lc, const char *url)
return -1;
}
lc->call=NULL;
eXosip_lock();
eXosip_call_terminate(call->cid,call->did);
eXosip_unlock();
/*stop ringing*/
if (lc->ringstream!=NULL) {
ring_stop(lc->ringstream);
@ -2361,7 +2374,7 @@ void linphone_core_set_presence_info(LinphoneCore *lc,int minutes_away,
ms_message("contact url is correct.");
}
osip_from_free(url);
}
if (contactok>=0){
if (lc->alt_contact!=NULL) ms_free(lc->alt_contact);
@ -2369,7 +2382,7 @@ void linphone_core_set_presence_info(LinphoneCore *lc,int minutes_away,
}
if (lc->presence_mode!=presence_mode){
linphone_core_notify_all_friends(lc,presence_mode);
/*
/*
Improve the use of all LINPHONE_STATUS available.
!TODO Do not mix "presence status" with "answer status code"..
Use correct parameter to follow sip_if_match/sip_etag.
@ -2378,7 +2391,7 @@ void linphone_core_set_presence_info(LinphoneCore *lc,int minutes_away,
}
lc->prev_mode=lc->presence_mode;
lc->presence_mode=presence_mode;
}
LinphoneOnlineStatus linphone_core_get_presence_info(const LinphoneCore *lc){
@ -2455,7 +2468,7 @@ static MSSndCard *get_card_from_string_id(const char *devid, unsigned int cap){
MSSndCard *sndcard=NULL;
if (devid!=NULL){
sndcard=ms_snd_card_manager_get_card(ms_snd_card_manager_get(),devid);
if (sndcard!=NULL &&
if (sndcard!=NULL &&
(ms_snd_card_get_capabilities(sndcard) & cap)==0 ){
ms_warning("%s card does not have the %s capability, ignoring.",
devid,
@ -2621,7 +2634,7 @@ void linphone_core_set_sound_source(LinphoneCore *lc, char source)
ms_snd_card_set_capture(sndcard,MS_SND_CARD_LINE);
break;
}
}
@ -2780,7 +2793,7 @@ void linphone_core_send_dtmf(LinphoneCore *lc,char dtmf)
osip_message_set_content_type(msg,"application/dtmf-relay");
snprintf(clen,sizeof(clen),"%lu",(unsigned long)strlen(dtmf_body));
osip_message_set_content_length(msg,clen);
eXosip_lock();
eXosip_call_send_request(call->did,msg);
eXosip_unlock();
@ -2821,7 +2834,7 @@ static void apply_nat_settings(LinphoneCore *lc){
int err;
struct addrinfo hints,*res;
const char *addr=lc->net_conf.nat_address;
if (lc->net_conf.firewall_policy==LINPHONE_POLICY_USE_NAT_ADDRESS){
if (addr==NULL || strlen(addr)==0){
lc->vtable.display_warning(lc,_("No nat/firewall address supplied !"));
@ -2831,7 +2844,7 @@ static void apply_nat_settings(LinphoneCore *lc){
memset(&hints,0,sizeof(struct addrinfo));
if (lc->sip_conf.ipv6_enabled)
hints.ai_family=AF_INET6;
else
else
hints.ai_family=AF_INET;
hints.ai_socktype = SOCK_DGRAM;
err=getaddrinfo(addr,NULL,&hints,&res);
@ -2879,7 +2892,7 @@ static void apply_nat_settings(LinphoneCore *lc){
}
else {
eXosip_set_option(EXOSIP_OPT_SET_IPV4_FOR_GATEWAY,NULL);
eXosip_masquerade_contact("",0);
eXosip_masquerade_contact("",0);
}
}
@ -3092,12 +3105,12 @@ unsigned long linphone_core_get_native_video_window_id(const LinphoneCore *lc){
}
static MSVideoSizeDef supported_resolutions[]={
{ MS_VIDEO_SIZE_SVGA , "svga" },
{ MS_VIDEO_SIZE_4CIF , "4cif" },
{ MS_VIDEO_SIZE_VGA , "vga" },
{ MS_VIDEO_SIZE_CIF , "cif" },
{ MS_VIDEO_SIZE_QVGA , "qvga" },
{ MS_VIDEO_SIZE_QCIF , "qcif" },
{ {MS_VIDEO_SIZE_SVGA_W,MS_VIDEO_SIZE_SVGA_H} , "svga" },
{ {MS_VIDEO_SIZE_4CIF_W,MS_VIDEO_SIZE_4CIF_H} , "4cif" },
{ {MS_VIDEO_SIZE_VGA_W,MS_VIDEO_SIZE_VGA_H} , "vga" },
{ {MS_VIDEO_SIZE_CIF_W,MS_VIDEO_SIZE_CIF_H} , "cif" },
{ {MS_VIDEO_SIZE_QVGA_W,MS_VIDEO_SIZE_QVGA_H} , "qvga" },
{ {MS_VIDEO_SIZE_QCIF_W,MS_VIDEO_SIZE_QVGA_H} , "qcif" },
{ {0,0} , NULL }
};
@ -3112,13 +3125,14 @@ const MSVideoSizeDef *linphone_core_get_supported_video_sizes(LinphoneCore *lc){
static MSVideoSize video_size_get_by_name(const char *name){
MSVideoSizeDef *pdef=supported_resolutions;
MSVideoSize null_vsize={0,0};
for(;pdef->name!=NULL;pdef++){
if (strcasecmp(name,pdef->name)==0){
return pdef->vsize;
}
}
ms_warning("Video resolution %s is not supported in linphone.",name);
return (MSVideoSize){0,0};
return null_vsize;
}
static const char *video_size_get_name(MSVideoSize vsize){
@ -3167,8 +3181,9 @@ void linphone_core_set_preferred_video_size(LinphoneCore *lc, MSVideoSize vsize)
**/
void linphone_core_set_preferred_video_size_by_name(LinphoneCore *lc, const char *name){
MSVideoSize vsize=video_size_get_by_name(name);
MSVideoSize default_vsize={MS_VIDEO_SIZE_CIF_W,MS_VIDEO_SIZE_CIF_H};
if (vsize.width!=0) linphone_core_set_preferred_video_size(lc,vsize);
else linphone_core_set_preferred_video_size(lc,MS_VIDEO_SIZE_CIF);
else linphone_core_set_preferred_video_size(lc,default_vsize);
}
/**
@ -3203,7 +3218,7 @@ void linphone_core_set_record_file(LinphoneCore *lc, const char *file){
}
if (file!=NULL) {
lc->rec_file=ms_strdup(file);
if (lc->audiostream)
if (lc->audiostream)
audio_stream_record(lc->audiostream,file);
}
}
@ -3272,7 +3287,7 @@ void net_config_uninit(LinphoneCore *lc)
net_config_t *config=&lc->net_conf;
lp_config_set_int(lc->config,"net","download_bw",config->download_bw);
lp_config_set_int(lc->config,"net","upload_bw",config->upload_bw);
if (config->stun_server!=NULL)
lp_config_set_string(lc->config,"net","stun_server",config->stun_server);
if (config->nat_address!=NULL)
@ -3320,9 +3335,9 @@ void sip_config_uninit(LinphoneCore *lc)
#endif
}
}
linphone_proxy_config_write_to_config_file(lc->config,NULL,i); /*mark the end */
for(elem=lc->auth_info,i=0;elem!=NULL;elem=ms_list_next(elem),i++){
LinphoneAuthInfo *ai=(LinphoneAuthInfo*)(elem->data);
linphone_auth_info_write_config(lc->config,ai,i);
@ -3344,9 +3359,9 @@ void sound_config_uninit(LinphoneCore *lc)
{
sound_config_t *config=&lc->sound_conf;
ms_free(config->cards);
lp_config_set_string(lc->config,"sound","remote_ring",config->remote_ring);
if (config->local_ring) ms_free(config->local_ring);
if (config->remote_ring) ms_free(config->remote_ring);
ms_snd_card_manager_destroy();
@ -3354,7 +3369,7 @@ void sound_config_uninit(LinphoneCore *lc)
void video_config_uninit(LinphoneCore *lc)
{
}
void codecs_config_uninit(LinphoneCore *lc)
@ -3445,7 +3460,7 @@ static void linphone_core_uninit(LinphoneCore *lc)
sip_setup_unregister_all();
linphone_core_free_payload_types();
ortp_exit();
eXosip_quit();
exosip_running=FALSE;

View file

@ -344,7 +344,7 @@ LinphoneProxyConfig *linphone_proxy_config_new(void);
int linphone_proxy_config_set_server_addr(LinphoneProxyConfig *obj, const char *server_addr);
void linphone_proxy_config_set_identity(LinphoneProxyConfig *obj, const char *identity);
void linphone_proxy_config_set_route(LinphoneProxyConfig *obj, const char *route);
void linphone_proxy_config_expires(LinphoneProxyConfig *obj, const int expires);
void linphone_proxy_config_expires(LinphoneProxyConfig *obj, int expires);
void linphone_proxy_config_enable_register(LinphoneProxyConfig *obj, bool_t val);
#define linphone_proxy_config_enableregister linphone_proxy_config_enable_register
void linphone_proxy_config_edit(LinphoneProxyConfig *obj);

View file

@ -30,9 +30,13 @@
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#if !defined(_WIN32_WCE)
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#endif /*_WIN32_WCE*/
#define lp_new0(type,n) (type*)calloc(sizeof(type),n)
@ -59,14 +63,14 @@ struct _LpConfig{
LpItem * lp_item_new(const char *key, const char *value){
LpItem *item=lp_new0(LpItem,1);
item->key=strdup(key);
item->value=strdup(value);
item->key=ortp_strdup(key);
item->value=ortp_strdup(value);
return item;
}
LpSection *lp_section_new(const char *name){
LpSection *sec=lp_new0(LpSection,1);
sec->name=strdup(name);
sec->name=ortp_strdup(name);
return sec;
}
@ -136,9 +140,9 @@ LpItem *lp_section_find_item(LpSection *sec, const char *name){
void lp_config_parse(LpConfig *lpconfig, FILE *file){
char tmp[MAX_LEN];
LpSection *cur=NULL;
if (file==NULL) return;
while(fgets(tmp,MAX_LEN,file)!=NULL){
char *pos1,*pos2;
pos1=strchr(tmp,'[');
@ -168,10 +172,10 @@ void lp_config_parse(LpConfig *lpconfig, FILE *file){
if (pos1!=NULL){
char key[MAX_LEN];
key[0]='\0';
*pos1='\0';
if (sscanf(tmp,"%s",key)>0){
pos1++;
pos2=strchr(pos1,'\n');
if (pos2==NULL) pos2=pos1+strlen(pos1);
@ -205,16 +209,18 @@ void lp_config_parse(LpConfig *lpconfig, FILE *file){
LpConfig * lp_config_new(const char *filename){
LpConfig *lpconfig=lp_new0(LpConfig,1);
if (filename!=NULL){
lpconfig->filename=strdup(filename);
lpconfig->filename=ortp_strdup(filename);
lpconfig->file=fopen(filename,"rw");
if (lpconfig->file!=NULL){
lp_config_parse(lpconfig,lpconfig->file);
fclose(lpconfig->file);
#if !defined(_WIN32_WCE)
/* make existing configuration files non-group/world-accessible */
if (chmod(filename, S_IRUSR | S_IWUSR) == -1)
ms_warning("unable to correct permissions on "
"configuration file: %s",
strerror(errno));
#endif /*_WIN32_WCE*/
lpconfig->file=NULL;
lpconfig->modified=0;
}
@ -235,7 +241,7 @@ int lp_config_read_file(LpConfig *lpconfig, const char *filename){
void lp_item_set_value(LpItem *item, const char *value){
free(item->value);
item->value=strdup(value);
item->value=ortp_strdup(value);
}

View file

@ -22,18 +22,24 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "mediastreamer2/mediastream.h"
#include <stdlib.h>
#include <stdio.h>
#ifdef HAVE_SIGHANDLER_T
#include <signal.h>
#endif /*HAVE_SIGHANDLER_T*/
#include <string.h>
#if !defined(_WIN32_WCE)
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <strings.h>
#endif /*_WIN32_WCE*/
#undef snprintf
#include <ortp/stun.h>
#ifndef WIN32
#if !defined(WIN32)
static char lock_name[80];
static char lock_set=0;
@ -41,7 +47,7 @@ static char lock_set=0;
int set_lock_file()
{
FILE *lockfile;
snprintf(lock_name,80,"/tmp/linphone.%i",getuid());
lockfile=fopen(lock_name,"w");
if (lockfile==NULL)
@ -60,7 +66,7 @@ int get_lock_file()
{
int pid;
FILE *lockfile;
snprintf(lock_name,80,"/tmp/linphone.%i",getuid());
lockfile=fopen(lock_name,"r");
if (lockfile==NULL)
@ -97,15 +103,17 @@ char *int2str(int number)
void check_sound_device(LinphoneCore *lc)
{
int fd,len;
#ifdef _linux
int fd=0;
int len;
int a;
char *file=NULL;
char *i810_audio=NULL;
char *snd_pcm_oss=NULL;
char *snd_mixer_oss=NULL;
char *snd_pcm=NULL;
fd=open("/proc/modules",O_RDONLY);
if (fd>0){
/* read the entire /proc/modules file and check if sound conf seems correct */
/*a=fstat(fd,&statbuf);
@ -138,13 +146,12 @@ void check_sound_device(LinphoneCore *lc)
}
}
}else {
#ifdef __linux
ms_warning("Could not open /proc/modules.");
#endif
}
/* now check general volume. Some user forget to rise it and then complain that linphone is
not working */
/* but some other users complain that linphone should not change levels...
/* but some other users complain that linphone should not change levels...
if (lc->sound_conf.sndcard!=NULL){
a=snd_card_get_level(lc->sound_conf.sndcard,SND_CARD_LEVEL_GENERAL);
if (a<50){
@ -156,6 +163,7 @@ void check_sound_device(LinphoneCore *lc)
end:
if (file!=NULL) ms_free(file);
if (fd>0) close(fd);
#endif
}
#define UDP_HDR_SZ 8
@ -164,12 +172,12 @@ void check_sound_device(LinphoneCore *lc)
const char *payload_type_get_description(PayloadType *pt){
return _((const char *)pt->user_data);
}
}
void payload_type_set_enable(PayloadType *pt,int value)
void payload_type_set_enable(PayloadType *pt,int value)
{
if ((value)!=0) payload_type_set_flag(pt,PAYLOAD_TYPE_ENABLED); \
else payload_type_unset_flag(pt,PAYLOAD_TYPE_ENABLED);
else payload_type_unset_flag(pt,PAYLOAD_TYPE_ENABLED);
}
@ -266,7 +274,7 @@ bool_t linphone_core_check_payload_type_usability(LinphoneCore *lc, PayloadType
/*let the video use all the bandwidth minus the maximum bandwidth used by audio */
if (min_video_bw>0)
pt->normal_bitrate=min_video_bw*1000;
else
else
pt->normal_bitrate=1500000; /*around 1.5 Mbit/s*/
ret=TRUE;
}
@ -274,7 +282,7 @@ bool_t linphone_core_check_payload_type_usability(LinphoneCore *lc, PayloadType
break;
}
/*if (!ret) ms_warning("Payload %s is not usable with your internet connection.",pt->mime_type);*/
return ret;
}
@ -284,7 +292,7 @@ static PayloadType * find_payload(RtpProfile *prof, PayloadType *pt /*from confi
PayloadType *it;
for(i=0;i<127;++i){
it=rtp_profile_get_payload(prof,i);
if (it!=NULL && strcasecmp(pt->mime_type,it->mime_type)==0
if (it!=NULL && strcasecmp(pt->mime_type,it->mime_type)==0
&& (pt->clock_rate==it->clock_rate || pt->clock_rate<=0)
&& payload_type_get_user_data(it)==NULL ){
if ( (pt->recv_fmtp && it->recv_fmtp && strcasecmp(pt->recv_fmtp,it->recv_fmtp)==0) ||
@ -316,7 +324,7 @@ static MSList *fix_codec_list(RtpProfile *prof, MSList *conflist)
MSList *elem;
MSList *newlist=NULL;
PayloadType *payload,*confpayload;
for (elem=conflist;elem!=NULL;elem=ms_list_next(elem))
{
confpayload=(PayloadType*)elem->data;
@ -350,12 +358,10 @@ void linphone_core_setup_local_rtp_profile(LinphoneCore *lc)
PayloadType *payload;
bool_t prepend;
lc->local_profile=rtp_profile_clone_full(&av_profile);
/* first look at the list given by configuration file to see if
/* first look at the list given by configuration file to see if
it is correct */
audiopt=fix_codec_list(lc->local_profile,lc->codecs_conf.audio_codecs);
videopt=fix_codec_list(lc->local_profile,lc->codecs_conf.video_codecs);
/* now find and add payloads that are not listed in the configuration
codec list */
for (i=0;i<127;i++)
@ -384,7 +390,7 @@ void linphone_core_setup_local_rtp_profile(LinphoneCore *lc)
case PAYLOAD_AUDIO_CONTINUOUS:
case PAYLOAD_AUDIO_PACKETIZED:
if (prepend)
audiopt=ms_list_prepend(audiopt,(void *)payload);
audiopt=ms_list_prepend(audiopt,(void *)payload);
else
audiopt=ms_list_append(audiopt,(void *)payload);
break;
@ -427,6 +433,7 @@ int from_2char_without_params(osip_from_t *from,char **str)
}
bool_t lp_spawn_command_line_sync(const char *command, char **result,int *command_ret){
#if !defined(_WIN32_WCE)
FILE *f=popen(command,"r");
if (f!=NULL){
int err;
@ -442,6 +449,7 @@ bool_t lp_spawn_command_line_sync(const char *command, char **result,int *comman
if (command_ret!=NULL) *command_ret=err;
return TRUE;
}
#endif /*_WIN32_WCE*/
return FALSE;
}
@ -454,12 +462,12 @@ bool_t host_has_ipv6_network()
struct ifaddrs *ifp;
struct ifaddrs *ifpstart;
bool_t ipv6_present=FALSE;
if (getifaddrs (&ifpstart) < 0)
{
return FALSE;
}
for (ifp=ifpstart; ifp != NULL; ifp = ifp->ifa_next)
{
if (!ifp->ifa_addr)
@ -467,7 +475,7 @@ bool_t host_has_ipv6_network()
switch (ifp->ifa_addr->sa_family) {
case AF_INET:
break;
case AF_INET6:
ipv6_present=TRUE;
@ -608,7 +616,7 @@ void linphone_core_run_stun_tests(LinphoneCore *lc, LinphoneCall *call){
}
if (lc->vtable.display_status!=NULL)
lc->vtable.display_status(lc,_("Stun lookup in progress..."));
/*create the two audio and video RTP sockets, and send STUN message to our stun server */
sock1=create_socket(linphone_core_get_audio_port(lc));
if (sock1<0) return;
@ -793,7 +801,7 @@ int linphone_core_get_local_ip_for(const char *dest, char *result){
if (err<0) {
ms_error("Error in connect: %s",strerror(errno));
freeaddrinfo(res);
close(sock);
close_socket(sock);
return -1;
}
freeaddrinfo(res);
@ -802,14 +810,14 @@ int linphone_core_get_local_ip_for(const char *dest, char *result){
err=getsockname(sock,(struct sockaddr*)&addr,&s);
if (err!=0) {
ms_error("Error in getsockname: %s",strerror(errno));
close(sock);
close_socket(sock);
return -1;
}
err=getnameinfo((struct sockaddr *)&addr,s,result,LINPHONE_IPADDR_SIZE,NULL,0,NI_NUMERICHOST);
if (err!=0){
ms_error("getnameinfo error: %s",strerror(errno));
}
close(sock);
close_socket(sock);
ms_message("Local interface to reach %s is %s.",dest,result);
return 0;
}

View file

@ -40,10 +40,6 @@
#define PACKAGE_SOUND_DIR "."
#endif
#ifdef WIN32
#include <io.h> /* for access() */
#endif
#ifdef HAVE_GETTEXT
#include <libintl.h>
#ifndef _

View file

@ -174,7 +174,7 @@ sdp_context_generate_template (sdp_context_t * ctx)
}
static void add_relay_info(sdp_message_t *sdp, int mline, const char *relay, const char *relay_session_id){
if (relay) sdp_message_a_attribute_add(sdp, mline,
osip_strdup ("relay-addr"),osip_strdup(relay));
if (relay_session_id) sdp_message_a_attribute_add(sdp, mline,
@ -191,7 +191,12 @@ sdp_context_add_payload (sdp_context_t * ctx, sdp_payload_t * payload, char *med
{
eXosip_trace (OSIP_ERROR,
("You must not call sdp_context_add_*_payload outside the write_offer callback\n"));
abort ();
#if !defined(_WIN32_WCE)
abort();
#else
exit(-1);
#endif /*_WIN32_WCE*/
}
if (payload->proto == NULL)
payload->proto = "RTP/AVP";
@ -225,7 +230,7 @@ sdp_context_add_payload (sdp_context_t * ctx, sdp_payload_t * payload, char *med
attr_field);
}
if (payload->b_as_bandwidth != 0)
{
{
if (sdp_message_bandwidth_get(offer,payload->line,0)==NULL){
attr_field =
sstrdup_sprintf ("%i", payload->b_as_bandwidth);
@ -326,7 +331,7 @@ sdp_context_get_answer ( sdp_context_t *ctx,sdp_message_t *remote)
else eXosip_trace(OSIP_INFO1,("Using firewall address in sdp."));
answer = sdp_context_generate_template (ctx);
/* for each m= line */
for (i = 0; !sdp_message_endof_media (remote, i); i++){
sdp_payload_init(&init_payload);
@ -373,7 +378,7 @@ sdp_context_get_answer ( sdp_context_t *ctx,sdp_message_t *remote)
sdp_message_a_attr_value_get_with_pt
(remote, i, payload.pt,
"fmtp");
/* ask the application if this codec is supported */
err = sdph->accept_audio_codecs (ctx,
&payload);
@ -447,7 +452,7 @@ sdp_context_get_answer ( sdp_context_t *ctx,sdp_message_t *remote)
{
/* refuse the line */
refuse_mline(answer,mtype,proto,i);
}
else
m_lines_accepted++;

View file

@ -88,6 +88,9 @@ static int sip_login_do_logout(SipSetupContext * ctx){
}
/* a simple SipSetup built-in plugin to allow specify the user/password for proxy config at runtime*/
#ifndef _MSC_VER
SipSetup linphone_sip_login={
.name="SipLogin",
.capabilities=SIP_SETUP_CAP_LOGIN,
@ -96,3 +99,29 @@ SipSetup linphone_sip_login={
.logout_account=sip_login_do_logout
};
#else
SipSetup linphone_sip_login={
"SipLogin",
SIP_SETUP_CAP_LOGIN,
0,
NULL,
NULL,
sip_login_init_instance,
NULL,
NULL,
NULL,
sip_login_do_login,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
sip_login_do_logout
};
#endif

View file

@ -20,6 +20,7 @@ EXPORTS
ms_filter_register
ms_filter_new_from_name
ms_filter_set_notify_callback
ms_filter_get_encoder
ms_snd_card_new
ms_snd_card_manager_destroy
@ -43,7 +44,20 @@ EXPORTS
ms_snd_card_set_capture
ms_snd_card_set_control
ms_snd_card_get_control
ms_web_cam_new
ms_web_cam_manager_reload
ms_web_cam_manager_get_default_cam
ms_web_cam_manager_get
ms_web_cam_manager_get_list
ms_web_cam_manager_get_cam
ms_web_cam_manager_add_cam
ms_web_cam_manager_register_desc
ms_web_cam_create_reader
ms_web_cam_get_driver_type
ms_web_cam_get_name
ms_web_cam_get_string_id
ms_ticker_new
ms_ticker_set_name
ms_ticker_destroy
@ -58,32 +72,58 @@ EXPORTS
ms_bufferizer_read
ms_bufferizer_put
ms_bufferizer_put_from_queue
ms_queue_init
ms_queue_flush
rfc3984_init
rfc3984_uninit
rfc3984_pack
rfc3984_unpack
rfc3984_set_mode
ms_load_plugins
audio_stream_start
ms_queue_init
ms_queue_flush
rfc3984_init
rfc3984_uninit
rfc3984_pack
rfc3984_unpack
rfc3984_set_mode
audio_stream_alive
audio_stream_enable_automatic_gain_control
audio_stream_set_echo_canceler_params
audio_stream_enable_gain_control
audio_stream_enable_echo_limiter
audio_stream_new
audio_stream_set_rtcp_information
audio_stream_start_with_files
audio_stream_start_now
audio_stream_set_relay_session_id
audio_stream_play_received_dtmfs
audio_stream_set_mic_gain
audio_stream_stop
audio_stream_play
audio_stream_record
ms_snd_card_get_capabilities
ring_start_with_cb
ring_start
ring_stop
audio_stream_send_dtmf
ms_discover_mtu
ms_set_mtu
ms_web_cam_new
ms_web_cam_manager_reload
ms_web_cam_manager_get_default_cam
ms_web_cam_manager_get
ms_web_cam_manager_get_list
ms_web_cam_manager_get_cam
ms_web_cam_manager_add_cam
ms_web_cam_manager_register_desc
ms_web_cam_create_reader
ms_web_cam_get_driver_type
ms_web_cam_get_name
ms_web_cam_get_string_id
ms_list_append
ms_list_remove
ms_list_free
ms_list_for_each
ms_list_find
ms_list_for_each2
ms_list_find_custom
ms_list_size
ms_list_nth_data
ms_list_remove_link
ms_list_index
ms_list_prepend
ms_list_position
ms_time
ms_get_payload_max_size
ms_sleep

View file

@ -0,0 +1,46 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mediastreamer2", "mediastreamer2.vcproj", "{177F5AE2-A40C-4412-8F26-7F85FA32464E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
Debug|Windows Mobile 6 Standard SDK (ARMV4I) = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I)
Release|Windows Mobile 6 Standard SDK (ARMV4I) = Release|Windows Mobile 6 Standard SDK (ARMV4I)
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

File diff suppressed because it is too large Load diff

View file

@ -126,6 +126,7 @@ if test $GCC = yes && test $wall_werror = yes; then
fi
macosx_found=no
mingw32ce_found=no
dnl add thread flags
case $target_os in
@ -135,7 +136,16 @@ case $target_os in
macosx_found=yes
LIBS="$LIBS -framework CoreFoundation -framework Cocoa"
;;
*mingw*)
*mingw32ce)
CFLAGS="$CFLAGS -DINET6 -DORTP_INET6 -D_WIN32_WINNT=0x0501 -D_WIN32_WCE -DORTP_STATIC"
CXXFLAGS="$CXXFLAGS -DINET6 -DORTP_INET6 -D_WIN32_WINNT=0x0501 -DORTP_STATIC -D_WIN32_WCE"
dnl ORTP_STATIC to tell ortp not to export its variable with dllexport, as if we were building statically, or dynamically on linux
LIBS="$LIBS -lws2"
mingw_found=yes
mingw32ce_found=yes
build_tests=no
;;
*mingw*)
CFLAGS="$CFLAGS -DINET6 -DORTP_INET6 -D_WIN32_WINNT=0x0501 -DORTP_STATIC"
CXXFLAGS="$CXXFLAGS -DINET6 -DORTP_INET6 -D_WIN32_WINNT=0x0501 -DORTP_STATIC"
dnl ORTP_STATIC to tell ortp not to export its variable with dllexport, as if we were building statically, or dynamically on linux
@ -152,6 +162,8 @@ esac
AM_CONDITIONAL(BUILD_MACOSX, test x$macosx_found = xyes)
AM_CONDITIONAL(BUILD_TESTS,test x$build_tests != xno)
AC_CONFIG_COMMANDS([libtool-hacking],[
if test "$mingw_found" = "yes" ; then
echo "Hacking libtool to work with mingw..."
@ -471,6 +483,7 @@ MS_CHECK_VIDEO
AM_CONDITIONAL(BUILD_VIDEO, test "$video" = "true")
AM_CONDITIONAL(BUILD_THEORA, test "$have_theora" = "yes")
AM_CONDITIONAL(BUILD_WIN32, test "$mingw_found" = "yes")
AM_CONDITIONAL(BUILD_WIN32_WCE, test "$mingw32ce_found" = "yes")
dnl *********************************************
dnl setup oRTP dependency

View file

@ -28,6 +28,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "mediastreamer2/msvideo.h"
#include "ortp/ortp.h"
#include "ortp/event.h"
#include <time.h>
#if defined(_WIN32_WCE)
time_t ms_time (time_t *t);
#else
#define ms_time time
#endif
typedef enum EchoLimiterType{
ELInactive,
@ -99,7 +106,7 @@ void audio_stream_set_rtcp_information(AudioStream *st, const char *cname, const
void audio_stream_play_received_dtmfs(AudioStream *st, bool_t yesno);
/* those two function do the same as audio_stream_start() but in two steps
this is useful to make sure that sockets are open before sending an invite;
this is useful to make sure that sockets are open before sending an invite;
or to start to stream only after receiving an ack.*/
AudioStream *audio_stream_new(int locport, bool_t ipv6);
int audio_stream_start_now(AudioStream * stream, RtpProfile * prof, const char *remip, int remport, int rem_rtcp_port, int payload_type, int jitt_comp,MSSndCard *playcard, MSSndCard *captcard, bool_t echo_cancel);

View file

@ -162,7 +162,9 @@ libmediastreamer_la_LIBADD+= -lole32 \
endif
endif
if BUILD_WIN32_WCE
libmediastreamer_la_LIBADD+= -lmmtimer
endif
AM_CFLAGS= -I$(top_srcdir) \
$(ORTP_CFLAGS) \

View file

@ -95,7 +95,7 @@ bool_t ms_is_ipv6(const char *remote){
bool_t ret=FALSE;
#ifdef INET6
struct addrinfo hints, *res0;
int err;
memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_UNSPEC;
@ -105,7 +105,7 @@ bool_t ms_is_ipv6(const char *remote){
ms_warning ("get_local_addr_for: %s", gai_strerror(err));
return FALSE;
}
ret=(res0->ai_addr->sa_family==AF_INET6);
ret=(res0->ai_addr->sa_family==AF_INET6);
freeaddrinfo(res0);
#endif
return ret;
@ -127,7 +127,7 @@ RtpSession * create_duplex_rtpsession( int locport, bool_t ipv6){
#if defined(_WIN32_WCE)
time_t
time (time_t *t)
ms_time (time_t *t)
{
DWORD timemillis = GetTickCount();
if (timemillis>0)
@ -145,9 +145,9 @@ bool_t audio_stream_alive(AudioStream * stream, int timeout){
if (stats->recv!=0){
if (stats->recv!=stream->last_packet_count){
stream->last_packet_count=stats->recv;
stream->last_packet_time=time(NULL);
stream->last_packet_time=ms_time(NULL);
}else{
if (time(NULL)-stream->last_packet_time>timeout){
if (ms_time(NULL)-stream->last_packet_time>timeout){
/* more than timeout seconds of inactivity*/
return FALSE;
}
@ -179,7 +179,7 @@ void audio_stream_change_decoder(AudioStream *stream, int payload){
ms_filter_link (stream->rtprecv, 0, stream->decoder, 0);
ms_filter_link (stream->decoder,0 , stream->dtmfgen, 0);
ms_filter_preprocess(stream->decoder,stream->ticker);
}else{
ms_warning("No decoder found for %s",pt->mime_type);
}
@ -208,17 +208,17 @@ int audio_stream_start_full(AudioStream *stream, RtpProfile *profile, const char
if (remport>0) rtp_session_set_remote_addr_full(rtps,remip,remport,rem_rtcp_port);
rtp_session_set_payload_type(rtps,payload);
rtp_session_set_jitter_compensation(rtps,jitt_comp);
if (remport>0)
ms_filter_call_method(stream->rtpsend,MS_RTP_SEND_SET_SESSION,rtps);
stream->rtprecv=ms_filter_new(MS_RTP_RECV_ID);
ms_filter_call_method(stream->rtprecv,MS_RTP_RECV_SET_SESSION,rtps);
stream->session=rtps;
stream->dtmfgen=ms_filter_new(MS_DTMF_GEN_ID);
rtp_session_signal_connect(rtps,"telephone-event",(RtpCallback)on_dtmf_received,(unsigned long)stream);
rtp_session_signal_connect(rtps,"payload_type_changed",(RtpCallback)payload_type_changed,(unsigned long)stream);
/* creates the local part */
if (captcard!=NULL) stream->soundread=ms_snd_card_create_reader(captcard);
else {
@ -231,7 +231,7 @@ int audio_stream_start_full(AudioStream *stream, RtpProfile *profile, const char
stream->soundwrite=ms_filter_new(MS_FILE_REC_ID);
if (outfile!=NULL) audio_stream_record(stream,outfile);
}
/* creates the couple of encoder/decoder */
pt=rtp_profile_get_payload(profile,payload);
if (pt==NULL){
@ -245,7 +245,7 @@ int audio_stream_start_full(AudioStream *stream, RtpProfile *profile, const char
ms_error("mediastream.c: No decoder available for payload %i.",payload);
return -1;
}
if (use_ec) {
stream->ec=ms_filter_new(MS_SPEEX_EC_ID);
ms_filter_call_method(stream->ec,MS_FILTER_SET_SAMPLE_RATE,&pt->clock_rate);
@ -283,7 +283,7 @@ int audio_stream_start_full(AudioStream *stream, RtpProfile *profile, const char
ms_filter_call_method(stream->soundwrite,MS_FILTER_SET_SAMPLE_RATE,&pt->clock_rate);
tmp=1;
ms_filter_call_method(stream->soundwrite,MS_FILTER_SET_NCHANNELS, &tmp);
/* give the encoder/decoder some parameters*/
ms_filter_call_method(stream->encoder,MS_FILTER_SET_SAMPLE_RATE,&pt->clock_rate);
ms_message("Payload's bitrate is %i",pt->normal_bitrate);
@ -292,10 +292,10 @@ int audio_stream_start_full(AudioStream *stream, RtpProfile *profile, const char
ms_filter_call_method(stream->encoder,MS_FILTER_SET_BITRATE,&pt->normal_bitrate);
}
ms_filter_call_method(stream->decoder,MS_FILTER_SET_SAMPLE_RATE,&pt->clock_rate);
if (pt->send_fmtp!=NULL) ms_filter_call_method(stream->encoder,MS_FILTER_ADD_FMTP, (void*)pt->send_fmtp);
if (pt->recv_fmtp!=NULL) ms_filter_call_method(stream->decoder,MS_FILTER_ADD_FMTP,(void*)pt->recv_fmtp);
/*create the equalizer*/
stream->equalizer=ms_filter_new(MS_EQUALIZER_ID);
tmp=stream->eq_active;
@ -303,7 +303,7 @@ int audio_stream_start_full(AudioStream *stream, RtpProfile *profile, const char
/* and then connect all */
/* tip: draw yourself the picture if you don't understand */
/*sending graph*/
ms_connection_helper_start(&h);
ms_connection_helper_link(&h,stream->soundread,-1,0);
@ -328,13 +328,13 @@ int audio_stream_start_full(AudioStream *stream, RtpProfile *profile, const char
if (stream->ec)
ms_connection_helper_link(&h,stream->ec,0,0);
ms_connection_helper_link(&h,stream->soundwrite,0,-1);
/* create ticker */
stream->ticker=ms_ticker_new();
ms_ticker_set_name(stream->ticker,"Audio MSTicker");
ms_ticker_attach(stream->ticker,stream->soundread);
ms_ticker_attach(stream->ticker,stream->rtprecv);
return 0;
}
@ -490,9 +490,9 @@ void audio_stream_stop(AudioStream * stream)
MSConnectionHelper h;
ms_ticker_detach(stream->ticker,stream->soundread);
ms_ticker_detach(stream->ticker,stream->rtprecv);
rtp_stats_display(rtp_session_get_stats(stream->session),"Audio session's RTP statistics");
/*dismantle the outgoing graph*/
ms_connection_helper_start(&h);
ms_connection_helper_unlink(&h,stream->soundread,-1,0);

View file

@ -105,11 +105,8 @@ static void volume_uninit(MSFilter *f){
static int volume_get(MSFilter *f, void *arg){
float *farg=(float*)arg;
Volume *v=(Volume*)f->data;
#ifndef _WIN32_WCE
*farg=10*log10f((v->energy+1)/max_e);
#else
*farg=(float)(10*log10((v->energy+1)/max_e));
#endif
*farg=10*ortp_log10f((v->energy+1)/max_e);
return 0;
}
@ -144,10 +141,10 @@ static inline float compute_gain(float static_gain, float energy, float weight){
}
/*
The principle of this algorithm is that we apply a gain to the input signal which is opposite to the
The principle of this algorithm is that we apply a gain to the input signal which is opposite to the
energy measured by the peer MSVolume.
For example if some noise is played by the speaker, then the signal captured by the microphone will be lowered.
The gain changes smoothly when the peer energy is decreasing, but is immediately changed when the peer energy is
The gain changes smoothly when the peer energy is decreasing, but is immediately changed when the peer energy is
increasing.
*/
@ -352,7 +349,7 @@ static void volume_process(MSFilter *f){
om->b_wptr+=nbytes;
en=update_energy((int16_t*)om->b_rptr,v->nsamples,en);
volume_agc_process(v,om);
if (v->peer){
volume_echo_avoider_process(v,f->ticker->time);
}else v->target_gain=v->static_gain;
@ -367,7 +364,7 @@ static void volume_process(MSFilter *f){
while((m=ms_queue_get(f->inputs[0]))!=NULL){
en=update_energy((int16_t*)m->b_rptr,(m->b_wptr-m->b_rptr)/2,en);
if (v->peer){
volume_echo_avoider_process(v,f->ticker->time);
volume_echo_avoider_process(v,f->ticker->time);
}else v->target_gain=v->static_gain;
if (v->noise_gate_enabled)

View file

@ -348,6 +348,7 @@ static void add_rfc2190_header(mblk_t **packet, AVCodecContext *context){
*packet = header;
}
#if 0
static int get_gbsc(uint8_t *psc, uint8_t *end)
{
int len = end-psc;
@ -370,13 +371,33 @@ static int get_gbsc(uint8_t *psc, uint8_t *end)
}
return k;
}
#else
static int get_gbsc_bytealigned(uint8_t *begin, uint8_t *end){
int i;
int len = end - begin;
for (i = len - 2; /*len + length of scan window*/
i > 2 + 2; /*length of scan window + 2 avoidance of 1st gob or psc*/
i--){
if(*(begin + i) == 0 &&
*(begin + i+1) == 0 &&
(*(begin + i+2) & 0x80) == 0x80){
/*ms_message("JV psc/gob found! %2x %2x %2x", *(begin + i), *(begin + i+1), *(begin + i + 2));*/
return i;
}
}
/*ms_message("JV no psc or gob found!");*/
return len;
}
#endif
static void rfc2190_generate_packets(MSFilter *f, EncState *s, mblk_t *frame, uint32_t timestamp){
mblk_t *packet=NULL;
while (frame->b_rptr<frame->b_wptr){
packet=dupb(frame);
frame->b_rptr=packet->b_wptr=packet->b_rptr+get_gbsc(packet->b_rptr, MIN(packet->b_rptr+s->mtu,frame->b_wptr));
/*frame->b_rptr=packet->b_wptr=packet->b_rptr+get_gbsc(packet->b_rptr, MIN(packet->b_rptr+s->mtu,frame->b_wptr));*/
frame->b_rptr = packet->b_wptr =
packet->b_rptr + get_gbsc_bytealigned(packet->b_rptr, MIN(packet->b_rptr+s->mtu,frame->b_wptr));
add_rfc2190_header(&packet, &s->av_context);
mblk_set_timestamp_info(packet,timestamp);
ms_queue_put(f->outputs[0],packet);

View file

@ -1,3 +1,5 @@
if BUILD_TESTS
noinst_PROGRAMS=echo ring mtudiscover bench
if BUILD_VIDEO
@ -31,3 +33,5 @@ INCLUDES=-I$(top_srcdir)/include/
AM_CFLAGS=-I$(top_srcdir) $(ORTP_CFLAGS) $(STRICT_OPTIONS) $(VIDEO_CFLAGS)
AM_LDFLAGS=-rdynamic
endif

View file

@ -1 +1 @@
SUBDIRS= win32native wince
SUBDIRS= win32native wince winmob

View file

@ -1,2 +0,0 @@
Makefile.in
Makefile

View file

@ -0,0 +1,46 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "oRTP", "oRTP.vcproj", "{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
Debug|Windows Mobile 6 Standard SDK (ARMV4I) = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I)
Release|Windows Mobile 6 Standard SDK (ARMV4I) = Release|Windows Mobile 6 Standard SDK (ARMV4I)
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

File diff suppressed because it is too large Load diff

View file

@ -1,97 +1,102 @@
LIBRARY ortp
EXPORTS
ortp_init
ortp_scheduler_init
ortp_exit
ortp_get_scheduler
ortp_set_log_file
ortp_set_log_level_mask
ortp_logv_out
ortp_set_log_handler
ortp_strdup_printf
ortp_logv
ortp_get_global_stats
ortp_global_stats_display
session_set_new
session_set_select
session_set_destroy
rtp_stats_display
rtp_session_get_stats
rtp_session_init
rtp_session_new
rtp_session_set_scheduling_mode
rtp_session_set_blocking_mode
rtp_session_set_profile
rtp_session_get_profile
rtp_session_set_data
rtp_session_signal_connect
rtp_session_signal_disconnect_by_callback
rtp_session_set_ssrc
rtp_session_set_seq_number
rtp_session_get_seq_number
rtp_session_set_jitter_compensation
rtp_session_set_local_addr
rtp_session_set_remote_addr
rtp_session_enable_adaptive_jitter_compensation
rtp_session_set_recv_buf_size
rtp_session_send_with_ts
rtp_session_sendm_with_ts
rtp_session_set_sockets
rtp_session_get_rtp_socket
rtp_session_get_rtcp_socket
rtp_session_set_payload_type
rtp_session_set_send_payload_type
rtp_session_get_send_payload_type
rtp_session_set_recv_payload_type
rtp_session_get_recv_payload_type
rtp_session_recv_with_ts
rtp_session_recvm_with_ts
rtp_session_create_packet
rtp_session_get_current_send_ts
rtp_session_get_current_recv_ts
rtp_session_reset
rtp_session_uninit
rtp_session_destroy
rtp_add_csrc
rtp_session_send_dtmf
rtp_session_set_source_description
rtp_session_set_symmetric_rtp
rtp_profile_new
rtp_profile_set_payload
rtp_profile_clone_full
rtp_profile_destroy
rtp_profile_get_payload_from_rtpmap
payload_type_set_send_fmtp
payload_type_clone
fmtp_get_value
LIBRARY ortp
EXPORTS
ortp_init
ortp_scheduler_init
ortp_exit
ortp_get_scheduler
ortp_set_log_file
ortp_set_log_level_mask
ortp_logv_out
ortp_set_log_handler
ortp_strdup_printf
ortp_logv
ortp_get_global_stats
ortp_global_stats_display
session_set_new
session_set_select
session_set_destroy
rtp_stats_display
rtp_session_get_stats
rtp_session_init
rtp_session_new
rtp_session_set_scheduling_mode
rtp_session_set_blocking_mode
rtp_session_set_profile
rtp_session_get_profile
rtp_session_set_data
rtp_session_signal_connect
rtp_session_signal_disconnect_by_callback
rtp_session_set_ssrc
rtp_session_set_seq_number
rtp_session_get_seq_number
rtp_session_set_jitter_compensation
rtp_session_set_local_addr
rtp_session_set_remote_addr
rtp_session_enable_adaptive_jitter_compensation
rtp_session_set_recv_buf_size
rtp_session_send_with_ts
rtp_session_sendm_with_ts
rtp_session_set_sockets
rtp_session_get_rtp_socket
rtp_session_get_rtcp_socket
rtp_session_set_payload_type
rtp_session_set_send_payload_type
rtp_session_get_send_payload_type
rtp_session_set_recv_payload_type
rtp_session_get_recv_payload_type
rtp_session_recv_with_ts
rtp_session_recvm_with_ts
rtp_session_create_packet
rtp_session_get_current_send_ts
rtp_session_get_current_recv_ts
rtp_session_reset
rtp_session_uninit
rtp_session_destroy
rtp_add_csrc
rtp_session_send_dtmf
rtp_session_set_source_description
rtp_session_set_symmetric_rtp
rtp_profile_new
rtp_profile_set_payload
rtp_profile_clone_full
rtp_profile_destroy
rtp_profile_get_payload_from_rtpmap
rtp_profile_get_payload_number_from_rtpmap
rtp_profile_get_payload_number_from_mime
payload_type_new
payload_type_set_send_fmtp
payload_type_append_send_fmtp
payload_type_clone
payload_type_destroy
fmtp_get_value
ortp_free
ortp_malloc
ortp_strdup
ortp_realloc
ortp_malloc0
freemsg
dupmsg
dupmsg
allocb
getq
putq
@ -105,19 +110,21 @@ EXPORTS
concatb
esballoc
WIN_thread_create
WIN_thread_join
WIN_cond_init
WIN_mutex_init
WIN_mutex_unlock
WIN_cond_wait
WIN_mutex_lock
WIN_cond_destroy
WIN_mutex_destroy
WIN_cond_signal
__ortp_log_mask
WIN_thread_create
WIN_thread_join
WIN_cond_init
WIN_mutex_init
WIN_mutex_unlock
WIN_cond_wait
WIN_mutex_lock
WIN_cond_destroy
WIN_mutex_destroy
WIN_cond_signal
__ortp_log_mask
ortp_strdup_printf
ortp_strdup_vprintf
rtp_session_register_event_queue
rtp_session_unregister_event_queue
ortp_ev_queue_new
@ -142,13 +149,19 @@ EXPORTS
stunCalculateIntegrity_shortterm
stunCalculateIntegrity_longterm
stunCalculateFingerprint
getWinSocketError
rtp_session_set_dscp
rtp_session_compute_recv_bandwidth
rtp_session_compute_send_bandwidth
getWinSocketError
close_socket
set_non_blocking_socket
ortp_strerror
gettimeofday
ortp_file_exist
rtp_session_set_dscp
rtp_session_compute_recv_bandwidth
rtp_session_compute_send_bandwidth
rtcp_next_packet
rtcp_is_SDES
rtcp_sdes_parse
@ -162,16 +175,16 @@ EXPORTS
rtcp_is_BYE
rtcp_BYE_get_ssrc
rtcp_BYE_get_reason
rtcp_is_APP
rtcp_APP_get_subtype
rtcp_APP_get_ssrc
rtcp_APP_get_name
rtcp_is_APP
rtcp_APP_get_subtype
rtcp_APP_get_ssrc
rtcp_APP_get_name
rtcp_APP_get_data
rtp_session_flush_sockets
rtp_session_resync
rtp_session_set_remote_addr_and_port
rtp_session_set_time_jump_limit
copymsg
rtp_session_enable_jitter_buffer

View file

@ -0,0 +1,2 @@
EXTRA_DIST=oRTP.vcproj ortp.def

View file

@ -0,0 +1,46 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "oRTP", "oRTP.vcproj", "{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
Debug|Windows Mobile 6 Standard SDK (ARMV4I) = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I)
Release|Windows Mobile 6 Standard SDK (ARMV4I) = Release|Windows Mobile 6 Standard SDK (ARMV4I)
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,915 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="oRTP"
ProjectGUID="{9FEA0683-C391-4C74-BCF6-2F9E4DE1B541}"
RootNamespace="oRTP"
Keyword="MFCDLLProj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
/>
<Platform
Name="Windows Mobile 5.0 Smartphone SDK (ARMV4I)"
/>
<Platform
Name="Windows Mobile 6 Standard SDK (ARMV4I)"
/>
<Platform
Name="Windows Mobile 6 Professional SDK (ARMV4I)"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
OutputDirectory="$(PlatformName)\Debug"
IntermediateDirectory="$(PlatformName)\Debug"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="false"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="..\..\include;..\..\..\osip\include"
PreprocessorDefinitions="ORTP_INET6;ORTP_EXPORT;AMD_HACK;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);_DEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);POCKETPC2003_UI_MODEL;POCKETPC2003_UI_MODEL"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="true"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/oRTP.pdb"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="ws2.lib iphlpapi.lib mmtimer.lib libcmtd.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="oRTP.def"
GenerateDebugInformation="true"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\vbamsipua"
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"
OutputDirectory="$(PlatformName)\Debug"
IntermediateDirectory="$(PlatformName)\Debug"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="false"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalIncludeDirectories="..\..\include;..\..\..\osip\include"
PreprocessorDefinitions="ORTP_INET6;ORTP_EXPORT;AMD_HACK;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);_DEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);SMARTPHONE2003_UI_MODEL;SMARTPHONE2003_UI_MODEL"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="true"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/oRTP.pdb"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="ws2.lib iphlpapi.lib mmtimer.lib libcmtd.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="oRTP.def"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\vbamsipua"
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="false"
TargetEnvironment="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="..\..\include;..\..\..\osip\include"
PreprocessorDefinitions="ORTP_INET6;ORTP_EXPORT;AMD_HACK;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);_DEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_)"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="true"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/oRTP.pdb"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="ws2.lib iphlpapi.lib mmtimer.lib libcmtd.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="oRTP.def"
GenerateDebugInformation="true"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\amsipua"
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
OutputDirectory="$(PlatformName)\Release"
IntermediateDirectory="$(PlatformName)\Release"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="false"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalIncludeDirectories="..\..\include;..\..\..\osip\include"
PreprocessorDefinitions="ORTP_INET6;ORTP_EXPORT;AMD_HACK;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);NDEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);POCKETPC2003_UI_MODEL;POCKETPC2003_UI_MODEL"
RuntimeLibrary="2"
TreatWChar_tAsBuiltInType="true"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/oRTP.pdb"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="ws2.lib iphlpapi.lib mmtimer.lib libcmt.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="oRTP.def"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="\amsip"
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"
OutputDirectory="$(PlatformName)\Release"
IntermediateDirectory="$(PlatformName)\Release"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="false"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalIncludeDirectories="..\..\include;..\..\..\osip\include"
PreprocessorDefinitions="ORTP_INET6;ORTP_EXPORT;AMD_HACK;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);NDEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);SMARTPHONE2003_UI_MODEL;SMARTPHONE2003_UI_MODEL"
RuntimeLibrary="2"
TreatWChar_tAsBuiltInType="true"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/oRTP.pdb"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="ws2.lib iphlpapi.lib mmtimer.lib libcmt.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="oRTP.def"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\vbamsipua"
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="false"
TargetEnvironment="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalIncludeDirectories="..\..\include;..\..\..\osip\include"
PreprocessorDefinitions="ORTP_INET6;ORTP_EXPORT;AMD_HACK;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);NDEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_)"
RuntimeLibrary="2"
TreatWChar_tAsBuiltInType="true"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/oRTP.pdb"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="ws2.lib iphlpapi.lib mmtimer.lib libcmt.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="oRTP.def"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\amsipua"
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="false"
TargetEnvironment="1"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="..\..\include;..\..\..\osip\include"
PreprocessorDefinitions="ORTP_INET6;ORTP_EXPORT;AMD_HACK;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);_DEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);POCKETPC2003_UI_MODEL"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="true"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/oRTP.pdb"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="ws2.lib iphlpapi.lib mmtimer.lib libcmtd.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="oRTP.def"
GenerateDebugInformation="true"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="false"
TargetEnvironment="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalIncludeDirectories="..\..\include;..\..\..\osip\include"
PreprocessorDefinitions="ORTP_INET6;ORTP_EXPORT;AMD_HACK;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);NDEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);POCKETPC2003_UI_MODEL;POCKETPC2003_UI_MODEL"
RuntimeLibrary="2"
TreatWChar_tAsBuiltInType="true"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/oRTP.pdb"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="ws2.lib iphlpapi.lib mmtimer.lib libcmt.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="oRTP.def"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\src\avprofile.c"
>
</File>
<File
RelativePath="..\..\src\b64.c"
>
</File>
<File
RelativePath="..\..\src\event.c"
>
</File>
<File
RelativePath="..\..\src\jitterctl.c"
>
</File>
<File
RelativePath="..\..\src\ortp.c"
>
</File>
<File
RelativePath="..\..\src\payloadtype.c"
>
</File>
<File
RelativePath="..\..\src\port.c"
>
</File>
<File
RelativePath="..\..\src\posixtimer.c"
>
</File>
<File
RelativePath="..\..\src\rtcp.c"
>
</File>
<File
RelativePath="..\..\src\rtcpparse.c"
>
</File>
<File
RelativePath="..\..\src\rtpparse.c"
>
</File>
<File
RelativePath="..\..\src\rtpsession.c"
>
</File>
<File
RelativePath="..\..\src\rtpsession_inet.c"
>
</File>
<File
RelativePath="..\..\src\rtpsignaltable.c"
>
</File>
<File
RelativePath="..\..\src\rtptimer.c"
>
</File>
<File
RelativePath="..\..\src\scheduler.c"
>
</File>
<File
RelativePath="..\..\src\sessionset.c"
>
</File>
<File
RelativePath="..\..\src\str_utils.c"
>
</File>
<File
RelativePath="..\..\src\stun.c"
>
</File>
<File
RelativePath="..\..\src\stun_udp.c"
>
</File>
<File
RelativePath="..\..\src\telephonyevents.c"
>
</File>
<File
RelativePath="..\..\src\utils.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\..\include\ortp\b64.h"
>
</File>
<File
RelativePath="..\..\include\ortp\event.h"
>
</File>
<File
RelativePath="..\..\src\jitterctl.h"
>
</File>
<File
RelativePath="..\..\src\ortp-config-win32.h"
>
</File>
<File
RelativePath="..\..\include\ortp\ortp.h"
>
</File>
<File
RelativePath="..\..\include\ortp\payloadtype.h"
>
</File>
<File
RelativePath="..\..\include\ortp\port.h"
>
</File>
<File
RelativePath="..\..\include\ortp\rtcp.h"
>
</File>
<File
RelativePath="..\..\include\ortp\rtp.h"
>
</File>
<File
RelativePath="..\..\include\ortp\rtpsession.h"
>
</File>
<File
RelativePath="..\..\src\rtpsession_priv.h"
>
</File>
<File
RelativePath="..\..\include\ortp\rtpsignaltable.h"
>
</File>
<File
RelativePath="..\..\src\rtptimer.h"
>
</File>
<File
RelativePath="..\..\src\scheduler.h"
>
</File>
<File
RelativePath="..\..\include\ortp\sessionset.h"
>
</File>
<File
RelativePath="..\..\include\ortp\str_utils.h"
>
</File>
<File
RelativePath="..\..\include\ortp\stun.h"
>
</File>
<File
RelativePath="..\..\include\ortp\stun_udp.h"
>
</File>
<File
RelativePath="..\..\include\ortp\telephonyevents.h"
>
</File>
<File
RelativePath="..\..\src\utils.h"
>
</File>
</Filter>
<File
RelativePath=".\ortp.def"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -0,0 +1,207 @@
LIBRARY ortp
EXPORTS
ortp_init
ortp_scheduler_init
ortp_exit
ortp_get_scheduler
ortp_set_log_file
ortp_set_log_level_mask
ortp_logv_out
ortp_set_log_handler
ortp_strdup_printf
ortp_logv
ortp_get_global_stats
ortp_global_stats_display
session_set_new
session_set_select
session_set_destroy
rtp_stats_display
rtp_session_get_stats
rtp_session_init
rtp_session_new
rtp_session_set_scheduling_mode
rtp_session_set_blocking_mode
rtp_session_set_profile
rtp_session_get_profile
rtp_session_set_data
rtp_session_signal_connect
rtp_session_signal_disconnect_by_callback
rtp_session_set_ssrc
rtp_session_set_seq_number
rtp_session_get_seq_number
rtp_session_set_jitter_compensation
rtp_session_set_local_addr
rtp_session_set_remote_addr
rtp_session_enable_adaptive_jitter_compensation
rtp_session_set_recv_buf_size
rtp_session_send_with_ts
rtp_session_sendm_with_ts
rtp_session_set_sockets
rtp_session_get_rtp_socket
rtp_session_get_rtcp_socket
rtp_session_set_payload_type
rtp_session_set_send_payload_type
rtp_session_get_send_payload_type
rtp_session_set_recv_payload_type
rtp_session_get_recv_payload_type
rtp_session_recv_with_ts
rtp_session_recvm_with_ts
rtp_session_create_packet
rtp_session_get_current_send_ts
rtp_session_get_current_recv_ts
rtp_session_reset
rtp_session_uninit
rtp_session_destroy
rtp_add_csrc
rtp_session_send_dtmf
rtp_session_set_source_description
rtp_session_set_symmetric_rtp
rtp_profile_new
rtp_profile_set_payload
rtp_profile_clone_full
rtp_profile_destroy
rtp_profile_get_payload_from_rtpmap
rtp_profile_get_payload_number_from_rtpmap
rtp_profile_get_payload_number_from_mime
payload_type_new
payload_type_set_send_fmtp
payload_type_append_send_fmtp
payload_type_clone
payload_type_destroy
fmtp_get_value
ortp_free
ortp_malloc
ortp_strdup
ortp_realloc
ortp_malloc0
freemsg
dupmsg
allocb
getq
putq
msgpullup
qinit
flushq
msgdsize
peekq
freeb
dupb
concatb
esballoc
WIN_thread_create
WIN_thread_join
WIN_cond_init
WIN_mutex_init
WIN_mutex_unlock
WIN_cond_wait
WIN_mutex_lock
WIN_cond_destroy
WIN_mutex_destroy
WIN_cond_signal
__ortp_log_mask
ortp_strdup_printf
ortp_strdup_vprintf
rtp_session_register_event_queue
rtp_session_unregister_event_queue
ortp_ev_queue_new
ortp_ev_queue_flush
ortp_ev_queue_get
ortp_ev_queue_destroy
ortp_event_get_type
ortp_event_get_data
ortp_event_destroy
stunParseHostName
stunParseServerName
sendMessage
stunEncodeMessage
stunBuildReqSimple
stunParseMessage
stunServerProcessMsg
stunNatType
stunTest
stunOpenSocket
stunOpenSocketPair
stunCalculateIntegrity_shortterm
stunCalculateIntegrity_longterm
stunCalculateFingerprint
getWinSocketError
close_socket
set_non_blocking_socket
ortp_strerror
gettimeofday
ortp_file_exist
rtp_session_set_dscp
rtp_session_compute_recv_bandwidth
rtp_session_compute_send_bandwidth
rtcp_next_packet
rtcp_is_SDES
rtcp_sdes_parse
rtcp_is_SR
rtcp_SR_get_ssrc
rtcp_SR_get_report_block
rtcp_SR_get_sender_info
rtcp_is_RR
rtcp_RR_get_ssrc
rtcp_RR_get_report_block
rtcp_is_BYE
rtcp_BYE_get_ssrc
rtcp_BYE_get_reason
rtcp_is_APP
rtcp_APP_get_subtype
rtcp_APP_get_ssrc
rtcp_APP_get_name
rtcp_APP_get_data
rtp_session_flush_sockets
rtp_session_resync
rtp_session_set_remote_addr_and_port
rtp_session_set_time_jump_limit
copymsg
rtp_session_enable_jitter_buffer
rtp_session_set_rtp_socket_recv_buffer_size
rtp_session_set_rtp_socket_send_buffer_size
rtp_session_set_jitter_buffer_params
rtp_get_payload
rtp_session_set_remote_addr_full
rtp_session_send_rtcp_APP
b64_decode
b64_encode
payload_type_set_recv_fmtp
rtp_session_get_local_port
rtp_session_get_jitter_buffer_params
copyb
turnAllocateSocketPair

View file

@ -99,6 +99,12 @@ case "$target_os" in
AC_DEFINE(NOCONNECT,1,[Defined if we should not use connect() on udp sockets])
PTHREAD_LDFLAGS="-pthread"
;;
*mingw32ce)
CFLAGS="$CFLAGS -D_WIN32_WCE -D_WIN32_WINNT=0x0501 -DORTP_STATIC"
LIBS="$LIBS -lws2 -liphlpapi"
build_tests=no
mingw_found=yes
;;
*mingw*)
CFLAGS="$CFLAGS -D_WIN32_WINNT=0x0501 -DORTP_STATIC"
LIBS="$LIBS -lws2_32 -liphlpapi -lwinmm"
@ -106,6 +112,15 @@ case "$target_os" in
;;
esac
AC_CONFIG_COMMANDS([libtool-hacking],[
if test "$mingw_found" = "yes" ; then
echo "Hacking libtool to work with mingw..."
sed -e 's/\*\" \$a_deplib \"\*/\*/' < ./libtool > libtool.tmp
cp -f ./libtool.tmp ./libtool
rm -f ./libtool.tmp
fi
],[mingw_found=$mingw_found])
dnl Checks for programs.
AC_PROG_CC
AC_LIBTOOL_WIN32_DLL

View file

@ -106,6 +106,9 @@ int __ortp_thread_create(pthread_t *thread, pthread_attr_t *attr, void * (*routi
#define getSocketError() strerror(errno)
#define getSocketErrorCode() (errno)
#define ortp_log10f(x) log10f(x)
#else
/*********************************/
/* definitions for WIN32 flavour */
@ -147,7 +150,7 @@ typedef HANDLE ortp_thread_t;
#define ortp_thread_create WIN_thread_create
#define ortp_thread_join WIN_thread_join
#define ortp_thread_exit(arg)
#define ortp_thread_exit(arg)
#define ortp_mutex_init WIN_mutex_init
#define ortp_mutex_lock WIN_mutex_lock
#define ortp_mutex_unlock WIN_mutex_unlock
@ -163,12 +166,12 @@ typedef HANDLE ortp_thread_t;
extern "C"
{
#endif
int WIN_mutex_init(ortp_mutex_t *m, void *attr_unused);
int WIN_mutex_lock(ortp_mutex_t *mutex);
int WIN_mutex_unlock(ortp_mutex_t *mutex);
int WIN_mutex_destroy(ortp_mutex_t *mutex);
int WIN_thread_create(ortp_thread_t *t, void *attr_unused, void *(*func)(void*), void *arg);
int WIN_thread_create(ortp_thread_t *t, void *attr_unused, void *(*func)(void*), void *arg);
int WIN_thread_join(ortp_thread_t thread, void **unused);
int WIN_cond_init(ortp_cond_t *cond, void *attr_unused);
int WIN_cond_wait(ortp_cond_t * cond, ortp_mutex_t * mutex);
@ -183,6 +186,32 @@ int WIN_cond_destroy(ortp_cond_t * cond);
#define SOCKET_OPTION_VALUE char *
#define inline __inline
#if defined(_WIN32_WCE)
#define ortp_log10f(x) (float)log10 ((double)x)
#ifdef assert
#undef assert
#endif /*assert*/
#define assert(exp) ((void)0)
#ifdef errno
#undef errno
#endif /*errno*/
#define errno GetLastError()
#ifdef strerror
#undef strerror
#endif /*strerror*/
const char * ortp_strerror(DWORD value);
#define strerror ortp_strerror
#else /*_WIN32_WCE*/
#define ortp_log10f(x) log10f(x)
#endif
const char *getWinSocketError(int error);
#define getSocketErrorCode() WSAGetLastError()
#define getSocketError() getWinSocketError(WSAGetLastError())
@ -240,6 +269,8 @@ char *ortp_strndup(const char *str,int n);
char *ortp_strdup_printf(const char *fmt,...);
char *ortp_strdup_vprintf(const char *fmt, va_list ap);
int ortp_file_exist(const char *pathname);
/* portable named pipes */
#if !defined(_WIN32_WCE)
#ifdef WIN32
@ -269,6 +300,7 @@ int ortp_pipe_write(ortp_pipe_t p, const uint8_t *buf, int len);
#ifdef __cplusplus
}
#endif

View file

@ -60,7 +60,7 @@
#include <assert.h>
#include <string.h>
#include "ortp/port.h"
/* /////////////////////////////////////////////////////////////////////////////
* Constants and definitions
*/

View file

@ -100,7 +100,7 @@ char * ortp_strdup(const char *tmp){
*/
int set_non_blocking_socket (ortp_socket_t sock)
{
#if !defined(_WIN32) && !defined(_WIN32_WCE)
return fcntl (sock, F_SETFL, O_NONBLOCK);
@ -124,7 +124,23 @@ int close_socket(ortp_socket_t sock){
#endif
}
#if defined (_WIN32_WCE)
int ortp_file_exist(const char *pathname) {
FILE* fd;
if (pathname==NULL) return -1;
fd=fopen(pathname,"r");
if (fd==NULL) {
return -1;
} else {
fclose(fd);
return 0;
}
}
#else
int ortp_file_exist(const char *pathname) {
return access(pathname,F_OK);
}
#endif /*_WIN32_WCE*/
#if !defined(_WIN32) && !defined(_WIN32_WCE)
/* Use UNIX inet_aton method */
@ -132,10 +148,10 @@ int close_socket(ortp_socket_t sock){
int inet_aton (const char * cp, struct in_addr * addr)
{
unsigned long retval;
retval = inet_addr (cp);
if (retval == INADDR_NONE)
if (retval == INADDR_NONE)
{
return -1;
}
@ -180,7 +196,7 @@ int __ortp_thread_create(pthread_t *thread, pthread_attr_t *attr, void * (*routi
#if defined(_WIN32) || defined(_WIN32_WCE)
int WIN_mutex_init(ortp_mutex_t *mutex, void *attr)
{
{
*mutex=CreateMutex(NULL, FALSE, NULL);
return 0;
}
@ -225,7 +241,7 @@ int WIN_thread_create(ortp_thread_t *th, void *attr, void * (*func)(void *), voi
thread_param_t *params=ortp_new(thread_param_t,1);
params->func=func;
params->arg=data;
*th=(HANDLE)_beginthreadex( NULL, 0, thread_starter, params, 0, NULL);
*th=(HANDLE)_beginthreadex( NULL, 0, (LPTHREAD_START_ROUTINE)thread_starter, params, 0, NULL);
return 0;
}
@ -248,7 +264,7 @@ int WIN_cond_init(ortp_cond_t *cond, void *attr)
int WIN_cond_wait(ortp_cond_t* hCond, ortp_mutex_t * hMutex)
{
//gulp: this is not very atomic ! bug here ?
WIN_mutex_unlock(hMutex);
WIN_mutex_unlock(hMutex);
WaitForSingleObject(*hCond, INFINITE);
WIN_mutex_lock(hMutex);
return 0;
@ -276,6 +292,21 @@ int WIN_cond_destroy(ortp_cond_t * hCond)
#if defined(_WIN32_WCE)
#include <time.h>
const char * ortp_strerror(DWORD value) {
static TCHAR msgBuf[256];
FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
value,
0, // Default language
(LPTSTR) &msgBuf,
0,
NULL
);
return (const char *)msgBuf;
}
int
gettimeofday (struct timeval *tv, void *tz)
{
@ -287,19 +318,19 @@ gettimeofday (struct timeval *tv, void *tz)
#else
int gettimeofday (struct timeval *tv, void* tz)
{
union
{
__int64 ns100; /*time since 1 Jan 1601 in 100ns units */
FILETIME fileTime;
} now;
int gettimeofday (struct timeval *tv, void* tz)
{
union
{
__int64 ns100; /*time since 1 Jan 1601 in 100ns units */
FILETIME fileTime;
} now;
GetSystemTimeAsFileTime (&now.fileTime);
tv->tv_usec = (long) ((now.ns100 / 10LL) % 1000000LL);
tv->tv_sec = (long) ((now.ns100 - 116444736000000000LL) / 10000000LL);
return (0);
}
GetSystemTimeAsFileTime (&now.fileTime);
tv->tv_usec = (long) ((now.ns100 / 10LL) % 1000000LL);
tv->tv_sec = (long) ((now.ns100 - 116444736000000000LL) / 10000000LL);
return (0);
}
#endif
@ -405,6 +436,7 @@ int ortp_client_pipe_close(ortp_socket_t sock){
return close(sock);
}
#elif defined(WIN32) && !defined(_WIN32_WCE)
static char *make_pipe_name(const char *name){
@ -462,15 +494,15 @@ int ortp_server_pipe_close(ortp_pipe_t spipe){
ortp_pipe_t ortp_client_pipe_connect(const char *name){
char *pipename=make_pipe_name(name);
ortp_pipe_t hpipe = CreateFile(
pipename, // pipe name
GENERIC_READ | // read and write access
GENERIC_WRITE,
0, // no sharing
ortp_pipe_t hpipe = CreateFile(
pipename, // pipe name
GENERIC_READ | // read and write access
GENERIC_WRITE,
0, // no sharing
NULL, // default security attributes
OPEN_EXISTING, // opens existing pipe
0, // default attributes
NULL); // no template file
OPEN_EXISTING, // opens existing pipe
0, // default attributes
NULL); // no template file
ortp_free(pipename);
return hpipe;
}
@ -496,4 +528,5 @@ int ortp_client_pipe_close(ortp_pipe_t sock){
return CloseHandle(sock);
}
#endif

View file

@ -219,7 +219,6 @@ rtp_session_init (RtpSession * session, int mode)
ortp_debug("rtp_session_init: Invalid paramter (session=NULL)");
return;
}
memset (session, 0, sizeof (RtpSession));
session->mode = (RtpSessionMode) mode;
if ((mode == RTP_SESSION_RECVONLY) || (mode == RTP_SESSION_SENDRECV))