diff options
-rw-r--r-- | mk/modules.mk | 9 | ||||
-rw-r--r-- | mk/win32/baresip.sln | 39 | ||||
-rw-r--r-- | mk/win32/baresip.vcproj | 2 | ||||
-rw-r--r-- | mk/win32/baresip.vcxproj | 178 | ||||
-rw-r--r-- | mk/win32/static.c | 28 | ||||
-rw-r--r-- | modules/avcodec/avcodec.c | 56 | ||||
-rw-r--r-- | modules/cons/cons.c | 5 | ||||
-rw-r--r-- | modules/dshow/dshow.cpp | 32 | ||||
-rw-r--r-- | modules/wincons/wincons.c | 5 | ||||
-rw-r--r-- | src/log.c | 6 |
10 files changed, 327 insertions, 33 deletions
diff --git a/mk/modules.mk b/mk/modules.mk index 0bf72a9..2481f0e 100644 --- a/mk/modules.mk +++ b/mk/modules.mk @@ -175,6 +175,11 @@ USE_VPX := $(shell [ -f $(SYSROOT)/include/vpx/vp8.h ] \ USE_GTK := $(shell [ -f $(SYSROOT)/include/gtk-2.0/gtk/gtk.h ] || \ [ -f $(SYSROOT)/local/include/gtk-2.0/gtk/gtk.h ] || \ [ -f $(SYSROOT_ALT)/include/gtk-2.0/gtk/gtk.h ] && echo "yes") +else +# Windows. +# Accounts for mingw with Windows SDK (formerly known as Platform SDK) +# mounted at /winsdk +USE_DSHOW := $(shell [ -f /winsdk/Include/um/dshow.h ] && echo "yes") endif # Platform specific modules @@ -364,3 +369,7 @@ endif ifneq ($(USE_GTK),) MODULES += gtk endif + +ifneq ($(USE_DSHOW),) +MODULES += dshow +endif diff --git a/mk/win32/baresip.sln b/mk/win32/baresip.sln new file mode 100644 index 0000000..7c791e8 --- /dev/null +++ b/mk/win32/baresip.sln @@ -0,0 +1,39 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual C++ Express 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "baresip-win32", "baresip.vcxproj", "{4B89C2D8-FB32-4D7C-9019-752A5664781C}" + ProjectSection(ProjectDependencies) = postProject + {3E767371-A72B-4F5C-A695-8F844B0889C5} = {3E767371-A72B-4F5C-A695-8F844B0889C5} + {40B28DF6-4B4A-411A-9EB7-8D80C2A29B9D} = {40B28DF6-4B4A-411A-9EB7-8D80C2A29B9D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "re-win32", "..\..\..\re\mk\win32\re.vcxproj", "{40B28DF6-4B4A-411A-9EB7-8D80C2A29B9D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rem-win32", "..\..\..\rem\mk\win32\rem.vcxproj", "{3E767371-A72B-4F5C-A695-8F844B0889C5}" + ProjectSection(ProjectDependencies) = postProject + {40B28DF6-4B4A-411A-9EB7-8D80C2A29B9D} = {40B28DF6-4B4A-411A-9EB7-8D80C2A29B9D} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4B89C2D8-FB32-4D7C-9019-752A5664781C}.Debug|Win32.ActiveCfg = Debug|Win32 + {4B89C2D8-FB32-4D7C-9019-752A5664781C}.Debug|Win32.Build.0 = Debug|Win32 + {4B89C2D8-FB32-4D7C-9019-752A5664781C}.Release|Win32.ActiveCfg = Release|Win32 + {4B89C2D8-FB32-4D7C-9019-752A5664781C}.Release|Win32.Build.0 = Release|Win32 + {40B28DF6-4B4A-411A-9EB7-8D80C2A29B9D}.Debug|Win32.ActiveCfg = Debug|Win32 + {40B28DF6-4B4A-411A-9EB7-8D80C2A29B9D}.Debug|Win32.Build.0 = Debug|Win32 + {40B28DF6-4B4A-411A-9EB7-8D80C2A29B9D}.Release|Win32.ActiveCfg = Release|Win32 + {40B28DF6-4B4A-411A-9EB7-8D80C2A29B9D}.Release|Win32.Build.0 = Release|Win32 + {3E767371-A72B-4F5C-A695-8F844B0889C5}.Debug|Win32.ActiveCfg = Debug|Win32 + {3E767371-A72B-4F5C-A695-8F844B0889C5}.Debug|Win32.Build.0 = Debug|Win32 + {3E767371-A72B-4F5C-A695-8F844B0889C5}.Release|Win32.ActiveCfg = Release|Win32 + {3E767371-A72B-4F5C-A695-8F844B0889C5}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/mk/win32/baresip.vcproj b/mk/win32/baresip.vcproj index 70095bc..6a4197c 100644 --- a/mk/win32/baresip.vcproj +++ b/mk/win32/baresip.vcproj @@ -34,7 +34,7 @@ Name="VCCustomBuildTool"/> <Tool Name="VCLinkerTool" - AdditionalOptions="winmm.lib wsock32.lib ..\..\..\re\Win32\Debug\re.lib ..\..\..\rem\Win32\Debug\rem.lib" + AdditionalOptions="winmm.lib wsock32.lib ..\..\..\re\Win32\Debug\re-win32.lib ..\..\..\rem\Win32\Debug\rem-win32.lib" OutputFile="$(OutDir)/baresip-win32.exe" LinkIncremental="2" AdditionalLibraryDirectories="" diff --git a/mk/win32/baresip.vcxproj b/mk/win32/baresip.vcxproj new file mode 100644 index 0000000..9adb612 --- /dev/null +++ b/mk/win32/baresip.vcxproj @@ -0,0 +1,178 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectName>baresip-win32</ProjectName> + <ProjectGuid>{4B89C2D8-FB32-4D7C-9019-752A5664781C}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\Win32\Debug\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">c:\tmp\baresip-win32\Debug\</IntDir> + <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\Win32\Release\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">c:\tmp\baresip-win32\release\</IntDir> + <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>include;..\..\include;..\..\..\re\include;..\..\..\rem\include;..\..\..\ffmpeg-win32-dev\include;..\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;STATIC;HAVE_IO_H;HAVE_SELECT;USE_VIDEO;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>true</MinimalRebuild> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + <CompileAs>CompileAsC</CompileAs> + <DisableSpecificWarnings>4142;%(DisableSpecificWarnings)</DisableSpecificWarnings> + <ObjectFileName>$(IntDir)/%(RelativeDir)/</ObjectFileName> + </ClCompile> + <Link> + <AdditionalOptions>winmm.lib wsock32.lib ..\..\..\re\Win32\Debug\re-win32.lib ..\..\..\rem\Win32\Debug\rem-win32.lib %(AdditionalOptions)</AdditionalOptions> + <OutputFile>$(OutDir)baresip-win32.exe</OutputFile> + <AdditionalLibraryDirectories>..\..\..\ffmpeg-win32-dev\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <GenerateDebugInformation>true</GenerateDebugInformation> + <ProgramDatabaseFile>$(OutDir)baresip-win32.pdb</ProgramDatabaseFile> + <SubSystem>Console</SubSystem> + <TargetMachine>MachineX86</TargetMachine> + <AdditionalDependencies>avcodec.lib;avutil.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <AdditionalIncludeDirectories>include;..\..\include;..\..\..\re\include;..\..\..\rem\include;..\..\..\ffmpeg-win32-dev\include;..\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;STATIC;HAVE_IO_H;HAVE_SELECT;USE_VIDEO;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <DisableSpecificWarnings>4142;%(DisableSpecificWarnings)</DisableSpecificWarnings> + <ObjectFileName>$(IntDir)/%(RelativeDir)/</ObjectFileName> + </ClCompile> + <Link> + <AdditionalOptions>winmm.lib wsock32.lib ..\..\..\re\Win32\Release\re.lib ..\..\..\rem\Win32\Release\rem.lib %(AdditionalOptions)</AdditionalOptions> + <OutputFile>$(OutDir)baresip-win32.exe</OutputFile> + <AdditionalLibraryDirectories>..\..\..\ffmpeg-win32-dev\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <GenerateDebugInformation>true</GenerateDebugInformation> + <SubSystem>Console</SubSystem> + <OptimizeReferences>true</OptimizeReferences> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <TargetMachine>MachineX86</TargetMachine> + <AdditionalDependencies>avcodec.lib;avutil.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="..\..\modules\account\account.c" /> + <ClCompile Include="..\..\modules\auloop\auloop.c" /> + <ClCompile Include="..\..\modules\avcodec\avcodec.c" /> + <ClCompile Include="..\..\modules\avcodec\decode.c" /> + <ClCompile Include="..\..\modules\avcodec\encode.c" /> + <ClCompile Include="..\..\modules\avcodec\h263.c" /> + <ClCompile Include="..\..\modules\avcodec\h264.c" /> + <ClCompile Include="..\..\modules\cons\cons.c" /> + <ClCompile Include="..\..\modules\contact\contact.c" /> + <ClCompile Include="..\..\modules\dshow\dshow.cpp"> + <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs> + <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs> + </ClCompile> + <ClCompile Include="..\..\modules\ice\ice.c" /> + <ClCompile Include="..\..\modules\menu\menu.c" /> + <ClCompile Include="..\..\modules\stun\stun.c" /> + <ClCompile Include="..\..\modules\turn\turn.c" /> + <ClCompile Include="..\..\modules\uuid\uuid.c" /> + <ClCompile Include="..\..\modules\vidloop\vidloop.c" /> + <ClCompile Include="..\..\modules\vumeter\vumeter.c" /> + <ClCompile Include="..\..\modules\wincons\wincons.c" /> + <ClCompile Include="..\..\modules\winwave\play.c" /> + <ClCompile Include="..\..\modules\winwave\src.c" /> + <ClCompile Include="..\..\src\account.c" /> + <ClCompile Include="..\..\src\aucodec.c" /> + <ClCompile Include="..\..\src\audio.c" /> + <ClCompile Include="..\..\src\aufilt.c" /> + <ClCompile Include="..\..\src\auplay.c" /> + <ClCompile Include="..\..\src\ausrc.c" /> + <ClCompile Include="..\..\src\bfcp.c" /> + <ClCompile Include="..\..\src\call.c" /> + <ClCompile Include="..\..\src\cmd.c" /> + <ClCompile Include="..\..\src\conf.c" /> + <ClCompile Include="..\..\src\config.c" /> + <ClCompile Include="..\..\src\contact.c" /> + <ClCompile Include="..\..\src\log.c" /> + <ClCompile Include="..\..\src\main.c" /> + <ClCompile Include="..\..\src\mctrl.c" /> + <ClCompile Include="..\..\src\menc.c" /> + <ClCompile Include="..\..\src\message.c" /> + <ClCompile Include="..\..\src\metric.c" /> + <ClCompile Include="..\..\src\mnat.c" /> + <ClCompile Include="..\..\src\module.c" /> + <ClCompile Include="..\..\src\net.c" /> + <ClCompile Include="..\..\src\play.c" /> + <ClCompile Include="..\..\src\reg.c" /> + <ClCompile Include="..\..\src\rtpkeep.c" /> + <ClCompile Include="static.c" /> + <ClCompile Include="..\..\src\sdp.c" /> + <ClCompile Include="..\..\src\stream.c" /> + <ClCompile Include="..\..\src\sipreq.c" /> + <ClCompile Include="..\..\src\ua.c" /> + <ClCompile Include="..\..\src\ui.c" /> + <ClCompile Include="..\..\src\vidcodec.c" /> + <ClCompile Include="..\..\src\vidfilt.c" /> + <ClCompile Include="..\..\src\video.c" /> + <ClCompile Include="..\..\src\vidisp.c" /> + <ClCompile Include="..\..\src\vidsrc.c" /> + <ClCompile Include="..\..\modules\g711\g711.c" /> + <ClCompile Include="..\..\modules\winwave\winwave.c" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\..\modules\avcodec\avcodec.h" /> + <ClInclude Include="..\..\modules\avcodec\h26x.h" /> + <ClInclude Include="include\inttypes.h" /> + <ClInclude Include="include\stdint.h" /> + <ClInclude Include="qedit.h" /> + <ClInclude Include="stdafx.h" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\..\rem\mk\win32\rem.vcxproj"> + <Project>{3e767371-a72b-4f5c-a695-8f844b0889c5}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\re\mk\win32\re.vcxproj"> + <Project>{40b28df6-4b4a-411a-9eb7-8d80c2a29b9d}</Project> + </ProjectReference> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/mk/win32/static.c b/mk/win32/static.c index 9fd143e..9b6d428 100644 --- a/mk/win32/static.c +++ b/mk/win32/static.c @@ -3,12 +3,38 @@ #include <re_mod.h> extern const struct mod_export exports_cons; +extern const struct mod_export exports_wincons; extern const struct mod_export exports_g711; extern const struct mod_export exports_winwave; +extern const struct mod_export exports_dshow; +extern const struct mod_export exports_avcodec; +extern const struct mod_export exports_account; +extern const struct mod_export exports_contact; +extern const struct mod_export exports_menu; +extern const struct mod_export exports_auloop; +extern const struct mod_export exports_vidloop; +extern const struct mod_export exports_uuid; +extern const struct mod_export exports_stun; +extern const struct mod_export exports_turn; +extern const struct mod_export exports_ice; +extern const struct mod_export exports_vumeter; + const struct mod_export *mod_table[] = { - &exports_cons, + &exports_wincons, + &exports_avcodec, &exports_g711, &exports_winwave, + &exports_dshow, + &exports_account, + &exports_contact, + &exports_menu, + &exports_auloop, + &exports_vidloop, + &exports_uuid, + &exports_stun, + &exports_turn, + &exports_ice, + &exports_vumeter, NULL }; diff --git a/modules/avcodec/avcodec.c b/modules/avcodec/avcodec.c index 2b634df..dfcd38d 100644 --- a/modules/avcodec/avcodec.c +++ b/modules/avcodec/avcodec.c @@ -97,37 +97,49 @@ static int mpg4_fmtp_enc(struct mbuf *mb, const struct sdp_format *fmt, static struct vidcodec h264 = { - .name = "H264", - .variant = "packetization-mode=0", - .encupdh = encode_update, + LE_INIT, + NULL, + "H264", + "packetization-mode=0", + NULL, + encode_update, #ifdef USE_X264 - .ench = encode_x264, + encode_x264, #else - .ench = encode, + encode, #endif - .decupdh = decode_update, - .dech = decode_h264, - .fmtp_ench = h264_fmtp_enc, - .fmtp_cmph = h264_fmtp_cmp, + decode_update, + decode_h264, + h264_fmtp_enc, + h264_fmtp_cmp, }; static struct vidcodec h263 = { - .pt = "34", - .name = "H263", - .encupdh = encode_update, - .ench = encode, - .decupdh = decode_update, - .dech = decode_h263, - .fmtp_ench = h263_fmtp_enc, + LE_INIT, + "34", + "H263", + NULL, + NULL, + encode_update, + encode, + decode_update, + decode_h263, + h263_fmtp_enc, + NULL, }; static struct vidcodec mpg4 = { - .name = "MP4V-ES", - .encupdh = encode_update, - .ench = encode, - .decupdh = decode_update, - .dech = decode_mpeg4, - .fmtp_ench = mpg4_fmtp_enc, + LE_INIT, + NULL, + "MP4V-ES", + NULL, + NULL, + encode_update, + encode, + decode_update, + decode_mpeg4, + mpg4_fmtp_enc, + NULL, }; diff --git a/modules/cons/cons.c b/modules/cons/cons.c index d5e78ca..89ce028 100644 --- a/modules/cons/cons.c +++ b/modules/cons/cons.c @@ -213,8 +213,9 @@ static int output_handler(const char *str) static struct ui ui_cons = { - .name = "cons", - .outputh = output_handler + LE_INIT, + "cons", + output_handler }; diff --git a/modules/dshow/dshow.cpp b/modules/dshow/dshow.cpp index c687f83..0c0066f 100644 --- a/modules/dshow/dshow.cpp +++ b/modules/dshow/dshow.cpp @@ -9,12 +9,40 @@ #include <re.h> #include <rem.h> #include <baresip.h> -#include <comutil.h> #include <commctrl.h> #include <dshow.h> -#include <qedit.h> +/** + * @defgroup dshow dshow + * + * Windows DirectShow video-source + * + * + * References: + * + * http://www.alsa-project.org/main/index.php/Main_Page + */ + + +/* a piece from Google WebM's qedit.h: + * + * https://code.google.com/p/webm/source/browse/qedit.h?repo=udpsample + */ +static const +IID IID_ISampleGrabber = { + 0x6b652fff, 0x11fe, 0x4fce, + { 0x92, 0xad, 0x02, 0x66, 0xb5, 0xd7, 0xc7, 0x8f } +}; + +static const +IID IID_ISampleGrabberCB = { + 0x0579154a, 0x2b53, 0x4994, + { 0xb0, 0xd0, 0xe7, 0x73, 0x14, 0x8e, 0xff, 0x85 } +}; + +#include "qedit.h" + const CLSID CLSID_SampleGrabber = { 0xc1f400a0, 0x3f08, 0x11d3, { 0x9f, 0x0b, 0x00, 0x60, 0x08, 0x03, 0x9e, 0x37 } }; diff --git a/modules/wincons/wincons.c b/modules/wincons/wincons.c index 2e743bc..f8e1340 100644 --- a/modules/wincons/wincons.c +++ b/modules/wincons/wincons.c @@ -168,8 +168,9 @@ static int output_handler(const char *str) static struct ui ui_wincons = { - .name = "wincons", - .outputh = output_handler + LE_INIT, + "wincons", + output_handler }; @@ -13,9 +13,9 @@ static struct { bool debug; bool stder; } lg = { - .logl = LIST_INIT, - .debug = false, - .stder = true + LIST_INIT, + false, + true }; |