From e8468e016ddee3b838a8cb15a6e10b2d77a2ed63 Mon Sep 17 00:00:00 2001 From: Suhas Nandakumar Date: Fri, 26 Aug 2011 20:59:35 -0700 Subject: [PATCH] Added support for linux Webrtc --- SConstruct | 3 +- Sconscriptlib | 6 +- ikran/SConstruct | 78 +++++++++++++++++++++++++- src/softphonewrapper/CC_SIPCCCall.cpp | 2 +- tests/testapp_softphone/SConstruct | 79 ++++++++++++++++++++++++++- tests/testapp_softphone/testapp.cpp | 2 + 6 files changed, 161 insertions(+), 9 deletions(-) diff --git a/SConstruct b/SConstruct index 8cde7fe..bd2b5fe 100644 --- a/SConstruct +++ b/SConstruct @@ -147,7 +147,7 @@ elif sys.platform=='darwin': elif sys.platform=='linux2': build_env["CPPFLAGS"] = [ - '-Werror', + #'-Werror', '-Wall', '-fexceptions', '-fno-common', @@ -162,6 +162,7 @@ elif sys.platform=='linux2': '-march=i486' ] build_env["CPPDEFINES"] += [ + 'NO_WEBRTC_VIDEO', '_GNU_SOURCE', 'SIP_OS_LINUX', 'LINUX', diff --git a/Sconscriptlib b/Sconscriptlib index 1a23a98..f17b188 100644 --- a/Sconscriptlib +++ b/Sconscriptlib @@ -33,7 +33,7 @@ elif sys.platform =='darwin': ] elif sys.platform =='linux2': - gipslib = 'third_party/lib/libVideoEngine_Linux_gcc.a' +# gipslib = 'third_party/lib/libVideoEngine_Linux_gcc.a' src_files = [ 'src/libcallcontrol.a', 'src/sipcc/libsipcc.a', @@ -47,8 +47,8 @@ if sys.platform =='win32': env.Install("./out/lib/", 'third_party\lib\ddraw.lib') else: env.Install("./out/lib/", "lib" + componentName + suffixName + ".a") - if sys.platform == 'linux2': - env.Install("./out/lib/", gipslib) + # if sys.platform == 'linux2': + # env.Install("./out/lib/", gipslib) # function to help write the linux_export directory diff --git a/ikran/SConstruct b/ikran/SConstruct index 35d5c06..a26e568 100644 --- a/ikran/SConstruct +++ b/ikran/SConstruct @@ -307,7 +307,44 @@ elif sys.platform=='linux2': '/usr/lib', mozsdkpath + '/lib', mozsdkpath + '/bin', - webrtcpath + '/out/Debug' + webrtcpath + '/out/Debug/obj.target/src/video_engine/main/source', + webrtcpath + '/out/Debug/obj.target/src/voice_engine/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/video_render/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/media_file/source', + webrtcpath + '/out/Debug/obj.target/src/modules/video_processing/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/video_capture/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/utility/source', + webrtcpath + '/out/Debug/obj.target/src/modules/video_coding/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/video_coding/codecs/vp8/main/source', + webrtcpath + '/out/Debug/obj.target/src/common_video/jpeg/main/source', + webrtcpath + '/out/Debug/obj.target/third_party/libvpx', + webrtcpath + '/out/Debug/obj.target/third_party/libjpeg_turbo', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_processing/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_device/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/NetEQ/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_processing/ns/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_processing/aecm/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_processing/aec/main/source', + webrtcpath + '/out/Debug/obj.target/src/common_audio/resampler/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/iLBC/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_processing/agc/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/CNG/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/iSAC/fix/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/iSAC/main/source', + webrtcpath + '/out/Debug/obj.target/src/common_audio/vad/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/udp_transport/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_conference_mixer/source', + webrtcpath + '/out/Debug/obj.target/src/modules/rtp_rtcp/source', + webrtcpath + '/out/Debug/obj.target/src/modules/video_coding/codecs/i420/main/source', + webrtcpath + '/out/Debug/obj.target/src/common_video/vplib/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/G711/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_processing/utility', + webrtcpath + '/out/Debug/obj.target/src/common_audio/signal_processing_library/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/G722/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/PCM16B/main/source', + webrtcpath + '/out/Debug/obj.target/third_party/protobuf', + webrtcpath + '/out/Debug/obj.target/src/system_wrappers/source' ] libs += [ componentName + suffixName, @@ -330,7 +367,44 @@ elif sys.platform=='linux2': 'Xext', 'glib-2.0', 'chromium', - 'VideoEngine_Linux_gcc', + 'libvideo_engine_core.a', + 'libvoice_engine_core.a', + 'libvideo_render_module.a', + 'libmedia_file.a', + 'libvideo_processing.a', + 'libvideo_capture_module.a', + 'libwebrtc_utility.a', + 'libwebrtc_video_coding.a', + 'libwebrtc_vp8.a', + 'libwebrtc_jpeg.a', + 'libvpx.a', + 'libjpeg_turbo.a', + 'libaudio_coding_module.a', + 'libaudio_processing.a', + 'libaudio_device.a', + 'libNetEq.a', + 'libns.a', + 'libaecm.a', + 'libaec.a', + 'libresampler.a', + 'libiLBC.a', + 'libagc.a', + 'libCNG.a', + 'libiSACFix.a', + 'libiSAC.a', + 'libvad.a', + 'libudp_transport.a', + 'libaudio_conference_mixer.a', + 'librtp_rtcp.a', + 'libwebrtc_i420.a', + 'libwebrtc_vplib.a', + 'libG711.a', + 'libapm_util.a', + 'libspl.a', + 'libG722.a', + 'libPCM16B.a', + 'libprotobuf_lite.a', + 'libsystem_wrappers.a' ] env["LINKFLAGS"] += [ '-shared', diff --git a/src/softphonewrapper/CC_SIPCCCall.cpp b/src/softphonewrapper/CC_SIPCCCall.cpp index 5e725ca..de06dd1 100644 --- a/src/softphonewrapper/CC_SIPCCCall.cpp +++ b/src/softphonewrapper/CC_SIPCCCall.cpp @@ -423,7 +423,7 @@ void CC_SIPCCCall::addStream(int streamId, bool isVideo) // At the moment the only candidate is the muted state if (isVideo) { -#ifndef __APPLE__ +#ifndef NO_WEBRTC_VIDEO VideoTermination * pVideo = VcmSIPCCBinding::getVideoTermination(); // if there is a window for this call apply it to the stream diff --git a/tests/testapp_softphone/SConstruct b/tests/testapp_softphone/SConstruct index 6ffaf1c..f50aad9 100644 --- a/tests/testapp_softphone/SConstruct +++ b/tests/testapp_softphone/SConstruct @@ -184,7 +184,45 @@ elif sys.platform=='linux2': libpath += [ '../../third_party/chromium_base', '../../third_party/lib', - '/usr/lib' + '/usr/lib', + webrtcpath + '/out/Debug/obj.target/src/video_engine/main/source', + webrtcpath + '/out/Debug/obj.target/src/voice_engine/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/video_render/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/media_file/source', + webrtcpath + '/out/Debug/obj.target/src/modules/video_processing/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/video_capture/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/utility/source', + webrtcpath + '/out/Debug/obj.target/src/modules/video_coding/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/video_coding/codecs/vp8/main/source', + webrtcpath + '/out/Debug/obj.target/src/common_video/jpeg/main/source', + webrtcpath + '/out/Debug/obj.target/third_party/libvpx', + webrtcpath + '/out/Debug/obj.target/third_party/libjpeg_turbo', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_processing/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_device/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/NetEQ/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_processing/ns/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_processing/aecm/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_processing/aec/main/source', + webrtcpath + '/out/Debug/obj.target/src/common_audio/resampler/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/iLBC/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_processing/agc/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/CNG/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/iSAC/fix/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/iSAC/main/source', + webrtcpath + '/out/Debug/obj.target/src/common_audio/vad/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/udp_transport/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_conference_mixer/source', + webrtcpath + '/out/Debug/obj.target/src/modules/rtp_rtcp/source', + webrtcpath + '/out/Debug/obj.target/src/modules/video_coding/codecs/i420/main/source', + webrtcpath + '/out/Debug/obj.target/src/common_video/vplib/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/G711/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_processing/utility', + webrtcpath + '/out/Debug/obj.target/src/common_audio/signal_processing_library/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/G722/main/source', + webrtcpath + '/out/Debug/obj.target/src/modules/audio_coding/codecs/PCM16B/main/source', + webrtcpath + '/out/Debug/obj.target/third_party/protobuf', + webrtcpath + '/out/Debug/obj.target/src/system_wrappers/source' ] libs += [ componentName + suffixName, @@ -198,7 +236,44 @@ elif sys.platform=='linux2': 'Xext', 'glib-2.0', 'chromium', - 'VideoEngine_Linux_gcc' + 'libvideo_engine_core.a', + 'libvoice_engine_core.a', + 'libvideo_render_module.a', + 'libmedia_file.a', + 'libvideo_processing.a', + 'libvideo_capture_module.a', + 'libwebrtc_utility.a', + 'libwebrtc_video_coding.a', + 'libwebrtc_vp8.a', + 'libwebrtc_jpeg.a', + 'libvpx.a', + 'libjpeg_turbo.a', + 'libaudio_coding_module.a', + 'libaudio_processing.a', + 'libaudio_device.a', + 'libNetEq.a', + 'libns.a', + 'libaecm.a', + 'libaec.a', + 'libresampler.a', + 'libiLBC.a', + 'libagc.a', + 'libCNG.a', + 'libiSACFix.a', + 'libiSAC.a', + 'libvad.a', + 'libudp_transport.a', + 'libaudio_conference_mixer.a', + 'librtp_rtcp.a', + 'libwebrtc_i420.a', + 'libwebrtc_vplib.a', + 'libG711.a', + 'libapm_util.a', + 'libspl.a', + 'libG722.a', + 'libPCM16B.a', + 'libprotobuf_lite.a', + 'libsystem_wrappers.a' ] env["LINKFLAGS"] += [ '-z', diff --git a/tests/testapp_softphone/testapp.cpp b/tests/testapp_softphone/testapp.cpp index f27960a..905be5b 100644 --- a/tests/testapp_softphone/testapp.cpp +++ b/tests/testapp_softphone/testapp.cpp @@ -74,6 +74,7 @@ #include "PhoneDetails.h" #include "CSFAudioControl.h" + #ifndef NOVIDEO #include "VideoWindow.h" #endif @@ -568,6 +569,7 @@ static void handleOriginatePhoneCall (CallControlManagerPtr ccmPtr, const string #ifndef NOVIDEO + CSFLogDebug(logTag, " SUHAS SUHAS SUHAS SUHAS SUHAS SUHAS SUHAS "); // associate the video window - even if this is not a video call, it might be escalated later, so // it is easier to always associate them outgoingCall->setRemoteWindow((VideoWindowHandle)hVideoWindow);