diff --git a/.github/workflows/ci-win.yml b/.github/workflows/ci-win.yml index 40556634ae..efc40dcbc1 100644 --- a/.github/workflows/ci-win.yml +++ b/.github/workflows/ci-win.yml @@ -41,7 +41,7 @@ jobs: call "%PROGRAMFILES%\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" set INCLUDE=%INCLUDE%;%JAVA_HOME%\include;%JAVA_HOME%\include\win32 cd pjsip-apps/build - msbuild swig_java_pjsua2.vcxproj /p:PlatformToolset=v143 /p:Configuration=Debug /p:Platform=win32 /p:UseEnv=true + msbuild swig_java_pjsua2.vcxproj /p:PlatformToolset=v143 /p:Configuration=Debug-Dynamic /p:Platform=win32 /p:UseEnv=true shell: cmd openssl-1: diff --git a/pjproject-vs14.sln b/pjproject-vs14.sln index 7ec360db4c..57f6588476 100644 --- a/pjproject-vs14.sln +++ b/pjproject-vs14.sln @@ -2382,36 +2382,36 @@ Global {5BCF2773-3825-4D91-9D72-3E2F650DF1DB}.Release-Static|Win32.Build.0 = Release-Static|Win32 {5BCF2773-3825-4D91-9D72-3E2F650DF1DB}.Release-Static|x64.ActiveCfg = Release-Static|x64 {5BCF2773-3825-4D91-9D72-3E2F650DF1DB}.Release-Static|x64.Build.0 = Release-Static|x64 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug|ARM.ActiveCfg = Debug|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug|Win32.ActiveCfg = Debug|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug|x64.ActiveCfg = Debug|x64 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Dynamic|Any CPU.ActiveCfg = Debug|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Dynamic|ARM.ActiveCfg = Debug|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Dynamic|ARM64.ActiveCfg = Debug|ARM64 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Dynamic|Win32.ActiveCfg = Debug|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Dynamic|x64.ActiveCfg = Debug|x64 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Static|Any CPU.ActiveCfg = Debug|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Static|ARM.ActiveCfg = Debug|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Static|ARM64.ActiveCfg = Debug|ARM64 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Static|Win32.ActiveCfg = Debug|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Static|x64.ActiveCfg = Debug|x64 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release|Any CPU.ActiveCfg = Release|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release|ARM.ActiveCfg = Release|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release|ARM64.ActiveCfg = Release|ARM64 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release|Win32.ActiveCfg = Release|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release|x64.ActiveCfg = Release|x64 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Dynamic|Any CPU.ActiveCfg = Release|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Dynamic|ARM.ActiveCfg = Release|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Dynamic|ARM64.ActiveCfg = Release|ARM64 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Dynamic|Win32.ActiveCfg = Release|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Dynamic|x64.ActiveCfg = Release|x64 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Static|Any CPU.ActiveCfg = Release|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Static|ARM.ActiveCfg = Release|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Static|ARM64.ActiveCfg = Release|ARM64 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Static|Win32.ActiveCfg = Release|Win32 - {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Static|x64.ActiveCfg = Release|x64 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug|Any CPU.ActiveCfg = Debug-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug|ARM.ActiveCfg = Debug-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug|ARM64.ActiveCfg = Debug-Dynamic|ARM64 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug|Win32.ActiveCfg = Debug-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug|x64.ActiveCfg = Debug-Dynamic|x64 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Dynamic|Any CPU.ActiveCfg = Debug-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Dynamic|ARM.ActiveCfg = Debug-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Dynamic|ARM64.ActiveCfg = Debug-Dynamic|ARM64 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Dynamic|Win32.ActiveCfg = Debug-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Dynamic|x64.ActiveCfg = Debug-Dynamic|x64 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Static|Any CPU.ActiveCfg = Debug-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Static|ARM.ActiveCfg = Debug-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Static|ARM64.ActiveCfg = Debug-Dynamic|ARM64 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Static|Win32.ActiveCfg = Debug-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Debug-Static|x64.ActiveCfg = Debug-Dynamic|x64 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release|Any CPU.ActiveCfg = Release-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release|ARM.ActiveCfg = Release-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release|ARM64.ActiveCfg = Release-Dynamic|ARM64 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release|Win32.ActiveCfg = Release-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release|x64.ActiveCfg = Release-Dynamic|x64 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Dynamic|Any CPU.ActiveCfg = Release-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Dynamic|ARM.ActiveCfg = Release-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Dynamic|ARM64.ActiveCfg = Release-Dynamic|ARM64 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Dynamic|Win32.ActiveCfg = Release-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Dynamic|x64.ActiveCfg = Release-Dynamic|x64 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Static|Any CPU.ActiveCfg = Release-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Static|ARM.ActiveCfg = Release-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Static|ARM64.ActiveCfg = Release-Dynamic|ARM64 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Static|Win32.ActiveCfg = Release-Dynamic|Win32 + {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C}.Release-Static|x64.ActiveCfg = Release-Dynamic|x64 {D738A812-CE37-40A4-B2FA-D81488C12C87}.Debug|Any CPU.ActiveCfg = Debug|Win32 {D738A812-CE37-40A4-B2FA-D81488C12C87}.Debug|ARM.ActiveCfg = Debug|ARM {D738A812-CE37-40A4-B2FA-D81488C12C87}.Debug|ARM64.ActiveCfg = Debug|ARM64 diff --git a/pjsip-apps/build/swig_java_pjsua2.vcxproj b/pjsip-apps/build/swig_java_pjsua2.vcxproj index 16b9e1feba..a30422a001 100644 --- a/pjsip-apps/build/swig_java_pjsua2.vcxproj +++ b/pjsip-apps/build/swig_java_pjsua2.vcxproj @@ -1,28 +1,28 @@  - - Debug + + Debug-Dynamic ARM64 - - Debug + + Debug-Dynamic Win32 - - Debug + + Debug-Dynamic x64 - - Release + + Release-Dynamic ARM64 - - Release + + Release-Dynamic Win32 - - Release + + Release-Dynamic x64 @@ -32,116 +32,114 @@ {63AC6D7A-5D97-40C2-9AF2-E13AA1F9567C} pjsua2 swig_java_pjsua2 + 10.0.26100.0 - + DynamicLibrary - v140 MultiByte true + v143 - + DynamicLibrary - v140 MultiByte + v143 - + DynamicLibrary - v140 MultiByte true + v143 - + DynamicLibrary - v140 MultiByte true - + DynamicLibrary - v140 MultiByte + v143 - + DynamicLibrary - v140 MultiByte - + - + - + - + - + - + - + - + - + <_ProjectFileVersion>14.0.25431.1 ..\src\swig\java\output\ - + MinimumRecommendedRules.ruleset - + MinimumRecommendedRules.ruleset - + MinimumRecommendedRules.ruleset - + MinimumRecommendedRules.ruleset - + MinimumRecommendedRules.ruleset - + MinimumRecommendedRules.ruleset - + Disabled ../../pjsip/include;../../pjlib/include;../../pjlib-util/include;../../pjmedia/include;../../pjnath/include;%(AdditionalIncludeDirectories) true EnableFastChecks - MultiThreadedDebug Level3 EditAndContinue @@ -153,7 +151,7 @@ MachineX86 - + X64 @@ -162,7 +160,6 @@ ../../pjsip/include;../../pjlib/include;../../pjlib-util/include;../../pjmedia/include;../../pjnath/include;%(AdditionalIncludeDirectories) true EnableFastChecks - MultiThreadedDebug Level3 ProgramDatabase @@ -174,7 +171,7 @@ MachineX64 - + Disabled @@ -192,10 +189,9 @@ true - + ../../pjsip/include;../../pjlib/include;../../pjlib-util/include;../../pjmedia/include;../../pjnath/include;%(AdditionalIncludeDirectories) - MultiThreaded Level3 ProgramDatabase @@ -209,13 +205,12 @@ MachineX86 - + X64 ../../pjsip/include;../../pjlib/include;../../pjlib-util/include;../../pjmedia/include;../../pjnath/include;%(AdditionalIncludeDirectories) - MultiThreaded Level3 ProgramDatabase @@ -229,7 +224,7 @@ MachineX64 - + ../../pjsip/include;../../pjlib/include;../../pjlib-util/include;../../pjmedia/include;../../pjnath/include;%(AdditionalIncludeDirectories) @@ -254,7 +249,7 @@ - %40echo off + %40echo off %40echo ************************************************************** %40echo - Make sure %27swig%27 and %27javac%27 locations are in your PATH environment vars. %40echo - Make sure Java SDK header file directories @@ -278,8 +273,8 @@ javac -d $(OutDir) -classpath $(OutDir) $(OutDir)..\sample.java %40echo ************************************************************** %40echo off - $(OutDir)pjsua2_wrap.cpp;$(OutDir)pjsua2_wrap.h;%(Outputs) - %40echo off + $(OutDir)pjsua2_wrap.cpp;$(OutDir)pjsua2_wrap.h;%(Outputs) + %40echo off %40echo ************************************************************** %40echo - Make sure %27swig%27 and %27javac%27 locations are in your PATH environment vars. %40echo - Make sure Java SDK header file directories @@ -303,7 +298,7 @@ javac -d $(OutDir) -classpath $(OutDir) $(OutDir)..\sample.java %40echo ************************************************************** %40echo off - %40echo off + %40echo off %40echo ************************************************************** %40echo - Make sure %27swig%27 and %27javac%27 locations are in your PATH environment vars. %40echo - Make sure Java SDK header file directories @@ -327,9 +322,9 @@ javac -d $(OutDir) -classpath $(OutDir) $(OutDir)..\sample.java %40echo ************************************************************** %40echo off - %(Filename)_wrap.cxx;%(Outputs) - %(Filename)_wrap.cxx;%(Outputs) - %40echo off + %(Filename)_wrap.cxx;%(Outputs) + %(Filename)_wrap.cxx;%(Outputs) + %40echo off %40echo ************************************************************** %40echo - Make sure %27swig%27 and %27javac%27 locations are in your PATH environment vars. %40echo - Make sure Java SDK header file directories @@ -353,8 +348,8 @@ javac -d $(OutDir) -classpath $(OutDir) $(OutDir)..\sample.java %40echo ************************************************************** %40echo off - $(OutDir)pjsua2_wrap.cpp;$(OutDir)pjsua2_wrap.h;%(Outputs) - %40echo off + $(OutDir)pjsua2_wrap.cpp;$(OutDir)pjsua2_wrap.h;%(Outputs) + %40echo off %40echo ************************************************************** %40echo - Make sure %27swig%27 and %27javac%27 locations are in your PATH environment vars. %40echo - Make sure Java SDK header file directories @@ -378,7 +373,7 @@ javac -d $(OutDir) -classpath $(OutDir) $(OutDir)..\sample.java %40echo ************************************************************** %40echo off - %40echo off + %40echo off %40echo ************************************************************** %40echo - Make sure %27swig%27 and %27javac%27 locations are in your PATH environment vars. %40echo - Make sure Java SDK header file directories @@ -402,8 +397,8 @@ javac -d $(OutDir) -classpath $(OutDir) $(OutDir)..\sample.java %40echo ************************************************************** %40echo off - $(OutDir)pjsua2_wrap.cpp;$(OutDir)pjsua2_wrap.h;%(Outputs) - $(OutDir)pjsua2_wrap.cpp;$(OutDir)pjsua2_wrap.h;%(Outputs) + $(OutDir)pjsua2_wrap.cpp;$(OutDir)pjsua2_wrap.h;%(Outputs) + $(OutDir)pjsua2_wrap.cpp;$(OutDir)pjsua2_wrap.h;%(Outputs) diff --git a/pjsip-apps/src/swig/java/android/app/src/main/java/org/pjsip/pjsua2/app/MainActivity.java b/pjsip-apps/src/swig/java/android/app/src/main/java/org/pjsip/pjsua2/app/MainActivity.java index 39888cd60f..ca9519c7dc 100644 --- a/pjsip-apps/src/swig/java/android/app/src/main/java/org/pjsip/pjsua2/app/MainActivity.java +++ b/pjsip-apps/src/swig/java/android/app/src/main/java/org/pjsip/pjsua2/app/MainActivity.java @@ -670,6 +670,8 @@ public void notifyCallMediaEvent(MyCall call, OnCallMediaEventParam prm) } } + public void notifyTimer(OnTimerParam prm) {} + /* === end of MyAppObserver ==== */ } diff --git a/pjsip-apps/src/swig/java/android/app/src/main/java/org/pjsip/pjsua2/app/MyApp.java b/pjsip-apps/src/swig/java/android/app/src/main/java/org/pjsip/pjsua2/app/MyApp.java index adb994d7b9..eb754c1565 100644 --- a/pjsip-apps/src/swig/java/android/app/src/main/java/org/pjsip/pjsua2/app/MyApp.java +++ b/pjsip-apps/src/swig/java/android/app/src/main/java/org/pjsip/pjsua2/app/MyApp.java @@ -34,6 +34,7 @@ interface MyAppObserver abstract void notifyBuddyState(MyBuddy buddy); abstract void notifyChangeNetwork(); abstract void notifyCallMediaEvent(MyCall call, OnCallMediaEventParam prm); + abstract void notifyTimer(OnTimerParam prm); } @@ -314,9 +315,17 @@ public void writeObject(ContainerNode node) } } +class MyEndpoint extends Endpoint +{ + @Override + public void onTimer(OnTimerParam prm) + { + MyApp.observer.notifyTimer(prm); + } +} class MyApp extends pjsua2 { - public static Endpoint ep = new Endpoint(); + public static MyEndpoint ep = new MyEndpoint(); public static MyAppObserver observer; public ArrayList accList = new ArrayList(); diff --git a/pjsip-apps/src/swig/java/sample.java b/pjsip-apps/src/swig/java/sample.java index a50c97ef3b..f8e92658cb 100644 --- a/pjsip-apps/src/swig/java/sample.java +++ b/pjsip-apps/src/swig/java/sample.java @@ -25,6 +25,11 @@ class MyObserver implements MyAppObserver { private static MyCall currentCall = null; private boolean del_call_scheduled = false; + private MyApp app = null; + + public MyObserver(MyApp app_) { + app = app_; + } public void check_call_deletion() { @@ -84,6 +89,11 @@ public void notifyChangeNetwork() {} @Override public void notifyCallMediaEvent(MyCall call, OnCallMediaEventParam prm) {} + + @Override + public void notifyTimer(OnTimerParam prm) { + app.ep.utilLogWrite(3, "-TIMER-", "OnTimer invoked: user data=" + prm.getUserData()); + } } class MyShutdownHook extends Thread { @@ -103,7 +113,7 @@ public void run() { public class sample { private static MyApp app = new MyApp(); - private static MyObserver observer = new MyObserver(); + private static MyObserver observer = new MyObserver(app); private static MyAccount account = null; private static AccountConfig accCfg = null; private static MyCall call = null; @@ -124,6 +134,16 @@ private void setOutputVidWin() {} private static void runWorker() { try { app.init(observer, ".", true); + + // Schedule a timer + long token = app.ep.utilTimerSchedule(1000, -100); + // Immediately cancel it, callback should not be invoked + app.ep.utilTimerCancel(token); + + // Schedule another timer + app.ep.utilLogWrite(3, "-TIMER-", "Scheduling timer: timeout=1000ms, user data=-99"); + app.ep.utilTimerSchedule(1000, -99); + } catch (Exception e) { System.out.println(e); app.deinit(); @@ -145,7 +165,7 @@ private static void runWorker() { "passwd")); StringVector proxy = sipCfg.getProxies(); - proxy.add("sip:pjsip.org;transport=tcp"); + proxy.add("sip:sip.pjsip.org;transport=tcp"); AccountRegConfig regCfg = accCfg.getRegConfig(); regCfg.setRegistrarUri("sip:pjsip.org"); @@ -171,15 +191,9 @@ private static void runWorker() { while (!Thread.currentThread().isInterrupted()) { // Handle events MyApp.ep.libHandleEvents(10); - + // Check if any call instance need to be deleted observer.check_call_deletion(); - - try { - Thread.currentThread().sleep(50); - } catch (InterruptedException ie) { - break; - } } app.deinit(); } diff --git a/pjsip-apps/src/swig/java/sample2.java b/pjsip-apps/src/swig/java/sample2.java index 30c1f50346..4cfeabfb3d 100644 --- a/pjsip-apps/src/swig/java/sample2.java +++ b/pjsip-apps/src/swig/java/sample2.java @@ -98,6 +98,11 @@ public void notifyBuddyState(MyBuddy buddy) {} @Override public void notifyChangeNetwork() {} + + @Override + public void notifyTimer(OnTimerParam prm) { + System.out.println("OnTimer invoked, user data=" + prm.getUserData()); + } } class MyThread extends Thread { diff --git a/pjsip-apps/src/swig/pjsua2.i b/pjsip-apps/src/swig/pjsua2.i index 5c7de25a79..d9b9c11803 100644 --- a/pjsip-apps/src/swig/pjsua2.i +++ b/pjsip-apps/src/swig/pjsua2.i @@ -3,7 +3,7 @@ // // Suppress few warnings // -#pragma SWIG nowarn=312 // 312: nested struct (in types.h, sip_auth.h) +#pragma SWIG nowarn=312 // 312: nested struct (in types.h, sip_auth.h) // // Header section @@ -14,6 +14,22 @@ using namespace std; using namespace pj; %} +// +// STL stuff. +// +%include "std_string.i" +%include "std_vector.i" +%include "std_map.i" + +// Android string handling +%include "and_string.i" + +%template(StringVector) std::vector; +%template(IntVector) std::vector; +%template(ByteVector) std::vector; +%template(StringToStringMap) std::map; + + #ifdef SWIGPYTHON %feature("director:except") { if( $error != NULL ) { @@ -29,7 +45,7 @@ using namespace pj; #ifdef SWIGCSHARP %typemap(throws, canthrow=1) pj::Error { SWIG_CSharpSetPendingException(SWIG_CSharpApplicationException, - (std::string("C++ pj::Error:\n") + $1.info(true).c_str()).c_str()); + (std::string("C++ pj::Error:\n") + $1.info(true).c_str()).c_str()); return $null; } @@ -51,61 +67,69 @@ using namespace pj; %} #endif -// Allow C++ exceptions to be handled in Java #ifdef SWIGJAVA + // Allow C++ exceptions to be handled in Java %typemap(throws, throws="java.lang.Exception") pj::Error { - jclass excep = jenv->FindClass("java/lang/Exception"); - if (excep) - jenv->ThrowNew(excep, $1.info(true).c_str()); - return $null; -} + jclass excep = jenv->FindClass("java/lang/Exception"); + if (excep) + jenv->ThrowNew(excep, $1.info(true).c_str()); + return $null; + } // Force the Error Java class to extend java.lang.Exception %typemap(javabase) pj::Error "java.lang.Exception"; %typemap(javacode) pj::Error %{ + // Override getMessage() + public String getMessage() { + return getTitle(); + } - // Override getMessage() - public String getMessage() { - return getTitle(); - } - - // Disable serialization (check ticket #1868) - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - throw new java.io.NotSerializableException("Check ticket #1868!"); - } - private void readObject(java.io.ObjectInputStream in) throws java.io.IOException { - throw new java.io.NotSerializableException("Check ticket #1868!"); - } - -%} -#endif + // Disable serialization (check ticket #1868) + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + throw new java.io.NotSerializableException("Check ticket #1868!"); + } + private void readObject(java.io.ObjectInputStream in) throws java.io.IOException { + throw new java.io.NotSerializableException("Check ticket #1868!"); + } + %} + // map "Token"/"void *" as "long" + %apply long long { void* }; -// Constants from PJSIP libraries + // map "void **" as "long" + %apply long long { void** }; -#ifdef SWIGJAVA -%include "enumtypeunsafe.swg" -%javaconst(1); - -%pragma(java) jniclasscode=%{ - static { - try { - System.loadLibrary("openh264"); - } catch (UnsatisfiedLinkError e) { - System.err.println("Failed to load native library openh264\n" + e); - System.out.println("This could be safely ignored if you " + - "don't use OpenH264 video codec."); - } - try { - System.loadLibrary("pjsua2"); - } catch (UnsatisfiedLinkError e) { - System.err.println("Failed to load native library pjsua2\n" + e); + // map "pjmedia_aud_dev_index" as "int" + %apply int { pjmedia_aud_dev_index }; + + // map "unsigned char[20]" as "short array" for SslCertInfo.serialNo + %include "arrays_java.i" + %apply unsigned char[ANY] { unsigned char[20] }; + + // Constants from PJSIP libraries + + %include "enumtypeunsafe.swg" + %javaconst(1); + + %pragma(java) jniclasscode=%{ + static { + try { + System.loadLibrary("openh264"); + } catch (UnsatisfiedLinkError e) { + System.err.println("Failed to load native library openh264\n" + e); + System.out.println("This could be safely ignored if you " + + "don't use OpenH264 video codec."); + } + try { + System.loadLibrary("pjsua2"); + } catch (UnsatisfiedLinkError e) { + System.err.println("Failed to load native library pjsua2\n" + e); + } } - } -%} + %} +#endif /* SWIGJAVA */ -#endif %include "symbols.i" @@ -121,6 +145,7 @@ using namespace pj; %feature("director") FindBuddyMatch; %feature("director") AudioMediaPlayer; %feature("director") AudioMediaPort; + // PendingJob is only used on Python #ifdef SWIGPYTHON %feature("director") PendingJob; @@ -129,20 +154,6 @@ using namespace pj; %ignore pj::Endpoint::utilAddPendingJob; #endif -// -// STL stuff. -// -%include "std_string.i" -%include "std_vector.i" -%include "std_map.i" - -// Android string handling -%include "and_string.i" - -%template(StringVector) std::vector; -%template(IntVector) std::vector; -%template(ByteVector) std::vector; -%template(StringToStringMap) std::map; // // Ignore stuffs in pjsua2 @@ -166,26 +177,26 @@ using namespace pj; %include "pjsua2/siptypes.hpp" -%template(SockOptVector) std::vector; -%template(SipHeaderVector) std::vector; -%template(AuthCredInfoVector) std::vector; -%template(SrtpCryptoVector) std::vector; -%template(SipMultipartPartVector) std::vector; -%template(BuddyVector) std::vector; -%template(BuddyVector2) std::vector; -%template(AudioMediaVector) std::vector; -%template(AudioMediaVector2) std::vector; -%template(VideoMediaVector) std::vector; -%template(ToneDescVector) std::vector; -%template(ToneDigitVector) std::vector; -%template(ToneDigitMapVector) std::vector; -%template(AudioDevInfoVector) std::vector; -%template(AudioDevInfoVector2) std::vector; -%template(CodecInfoVector) std::vector; -%template(CodecInfoVector2) std::vector; -%template(VideoDevInfoVector) std::vector; -%template(VideoDevInfoVector2) std::vector; -%template(CodecFmtpVector) std::vector; +%template(SockOptVector) std::vector; +%template(SipHeaderVector) std::vector; +%template(AuthCredInfoVector) std::vector; +%template(SrtpCryptoVector) std::vector; +%template(SipMultipartPartVector) std::vector; +%template(BuddyVector) std::vector; +%template(BuddyVector2) std::vector; +%template(AudioMediaVector) std::vector; +%template(AudioMediaVector2) std::vector; +%template(VideoMediaVector) std::vector; +%template(ToneDescVector) std::vector; +%template(ToneDigitVector) std::vector; +%template(ToneDigitMapVector) std::vector; +%template(AudioDevInfoVector) std::vector; +%template(AudioDevInfoVector2) std::vector; +%template(CodecInfoVector) std::vector; +%template(CodecInfoVector2) std::vector; +%template(VideoDevInfoVector) std::vector; +%template(VideoDevInfoVector2) std::vector; +%template(CodecFmtpVector) std::vector; %template(MediaFormatAudioVector) std::vector; %template(MediaFormatVideoVector) std::vector; %template(CallMediaInfoVector) std::vector; @@ -213,9 +224,9 @@ using namespace pj; void setWindow(jobject surface) { $self->window = surface; } } #else -%extend pj::WindowHandle { - void setWindow(long long hwnd) { $self->window = (void*)hwnd; } -} +//%extend pj::WindowHandle { +// void setWindow(long long hwnd) { $self->window = (void*)hwnd; } +//} #endif %include "pjsua2/media.hpp" @@ -234,13 +245,13 @@ using namespace pj; %rename(libDestroy_) pj::Endpoint::libDestroy; %typemap(javacode) pj::Endpoint %{ public void libDestroy(long prmFlags) throws java.lang.Exception { - Runtime.getRuntime().gc(); - libDestroy_(prmFlags); + Runtime.getRuntime().gc(); + libDestroy_(prmFlags); } public void libDestroy() throws java.lang.Exception { - Runtime.getRuntime().gc(); - libDestroy_(); + Runtime.getRuntime().gc(); + libDestroy_(); } %} #endif diff --git a/pjsip-apps/src/swig/symbols.i b/pjsip-apps/src/swig/symbols.i index f441522d74..8f26b22be6 100644 --- a/pjsip-apps/src/swig/symbols.i +++ b/pjsip-apps/src/swig/symbols.i @@ -1,22 +1,5 @@ // This file is autogenerated by importsym script, do not modify! -typedef int pj_status_t; - -enum pj_constants_ -{ - PJ_SUCCESS = 0, - PJ_TRUE = 1, - PJ_FALSE = 0 -}; - -typedef unsigned char pj_uint8_t; - -typedef int pj_int32_t; - -typedef unsigned int pj_uint32_t; - -typedef unsigned short pj_uint16_t; - enum pj_file_access { PJ_O_RDONLY = 0x1101, @@ -118,6 +101,15 @@ typedef enum pj_ssl_cipher PJ_TLS_DH_anon_WITH_AES_256_CBC_SHA = 0x0000003A, PJ_TLS_DH_anon_WITH_AES_128_CBC_SHA256 = 0x0000006C, PJ_TLS_DH_anon_WITH_AES_256_CBC_SHA256 = 0x0000006D, + PJ_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 0x0000c02c, + PJ_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 0x0000c030, + PJ_TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 = 0x000000a3, + PJ_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = 0x0000009f, + PJ_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 0x0000c02b, + PJ_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 0x0000c02f, + PJ_TLS_AES_128_GCM_SHA256 = 0x00001301, + PJ_TLS_AES_256_GCM_SHA384 = 0x00001302, + PJ_TLS_CHACHA20_POLY1305_SHA256 = 0x00001303, PJ_TLS_RSA_EXPORT_WITH_RC4_40_MD5 = 0x00000003, PJ_TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = 0x00000006, PJ_TLS_RSA_WITH_IDEA_CBC_SHA = 0x00000007, @@ -156,7 +148,7 @@ typedef enum pj_ssl_sock_proto PJ_SSL_SOCK_PROTO_TLS1_2 = 1 << 4, PJ_SSL_SOCK_PROTO_TLS1_3 = 1 << 5, PJ_SSL_SOCK_PROTO_SSL23 = (1 << 16) - 1, - PJ_SSL_SOCK_PROTO_ALL = PJ_SSL_SOCK_PROTO_SSL23, + PJ_SSL_SOCK_PROTO_ALL = (1 << 16) - 1, PJ_SSL_SOCK_PROTO_DTLS1 = 1 << 16 } pj_ssl_sock_proto; @@ -194,6 +186,23 @@ typedef enum pj_ssl_cert_lookup_type PJ_SSL_CERT_LOOKUP_FRIENDLY_NAME } pj_ssl_cert_lookup_type; +typedef int pj_status_t; + +enum pj_constants_ +{ + PJ_SUCCESS = 0, + PJ_TRUE = 1, + PJ_FALSE = 0 +}; + +typedef unsigned char pj_uint8_t; + +typedef int pj_int32_t; + +typedef unsigned int pj_uint32_t; + +typedef unsigned short pj_uint16_t; + typedef enum pj_ice_sess_trickle { PJ_ICE_SESS_TRICKLE_DISABLED, @@ -259,105 +268,70 @@ typedef enum pjmedia_event_type PJMEDIA_EVENT_CALLBACK = (((' ' << 24) | (' ' << 16)) | ('B' << 8)) | 'C' } pjmedia_event_type; -typedef enum pjmedia_srtp_use -{ - PJMEDIA_SRTP_DISABLED, - PJMEDIA_SRTP_UNKNOWN = PJMEDIA_SRTP_DISABLED, - PJMEDIA_SRTP_OPTIONAL, - PJMEDIA_SRTP_MANDATORY -} pjmedia_srtp_use; - -typedef enum pjmedia_srtp_crypto_option -{ - PJMEDIA_SRTP_NO_ENCRYPTION = 1, - PJMEDIA_SRTP_NO_AUTHENTICATION = 2 -} pjmedia_srtp_crypto_option; - -typedef enum pjmedia_srtp_keying_method -{ - PJMEDIA_SRTP_KEYING_SDES, - PJMEDIA_SRTP_KEYING_DTLS_SRTP, - PJMEDIA_SRTP_KEYINGS_COUNT -} pjmedia_srtp_keying_method; - -typedef enum pjmedia_vid_stream_rc_method -{ - PJMEDIA_VID_STREAM_RC_NONE = 0, - PJMEDIA_VID_STREAM_RC_SIMPLE_BLOCKING = 1 -} pjmedia_vid_stream_rc_method; - -typedef pj_int32_t pjmedia_vid_dev_index; - -enum pjmedia_vid_dev_std_index -{ - PJMEDIA_VID_DEFAULT_CAPTURE_DEV = -1, - PJMEDIA_VID_DEFAULT_RENDER_DEV = -2, - PJMEDIA_VID_INVALID_DEV = -3 -}; - -typedef enum pjmedia_vid_dev_cap -{ - PJMEDIA_VID_DEV_CAP_FORMAT = 1, - PJMEDIA_VID_DEV_CAP_INPUT_SCALE = 2, - PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW = 4, - PJMEDIA_VID_DEV_CAP_OUTPUT_RESIZE = 8, - PJMEDIA_VID_DEV_CAP_OUTPUT_POSITION = 16, - PJMEDIA_VID_DEV_CAP_OUTPUT_HIDE = 32, - PJMEDIA_VID_DEV_CAP_INPUT_PREVIEW = 64, - PJMEDIA_VID_DEV_CAP_ORIENTATION = 128, - PJMEDIA_VID_DEV_CAP_SWITCH = 256, - PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW_FLAGS = 512, - PJMEDIA_VID_DEV_CAP_OUTPUT_FULLSCREEN = 1024, - PJMEDIA_VID_DEV_CAP_MAX = 16384 -} pjmedia_vid_dev_cap; - -typedef enum pjmedia_vid_dev_fullscreen_flag -{ - PJMEDIA_VID_DEV_WINDOWED = 0, - PJMEDIA_VID_DEV_FULLSCREEN = 1, - PJMEDIA_VID_DEV_FULLSCREEN_DESKTOP = 2 -} pjmedia_vid_dev_fullscreen_flag; - -typedef enum pjmedia_aud_dev_route +typedef enum pjmedia_format_id { - PJMEDIA_AUD_DEV_ROUTE_DEFAULT = 0, - PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER = 1, - PJMEDIA_AUD_DEV_ROUTE_EARPIECE = 2, - PJMEDIA_AUD_DEV_ROUTE_BLUETOOTH = 4, - PJMEDIA_AUD_DEV_ROUTE_CUSTOM = 128 -} pjmedia_aud_dev_route; + PJMEDIA_FORMAT_L16 = 0, + PJMEDIA_FORMAT_PCM = PJMEDIA_FORMAT_L16, + PJMEDIA_FORMAT_PCMA = ((('W' << 24) | ('A' << 16)) | ('L' << 8)) | 'A', + PJMEDIA_FORMAT_ALAW = PJMEDIA_FORMAT_PCMA, + PJMEDIA_FORMAT_PCMU = ((('W' << 24) | ('A' << 16)) | ('L' << 8)) | 'u', + PJMEDIA_FORMAT_ULAW = PJMEDIA_FORMAT_PCMU, + PJMEDIA_FORMAT_AMR = ((('R' << 24) | ('M' << 16)) | ('A' << 8)) | ' ', + PJMEDIA_FORMAT_G729 = ((('9' << 24) | ('2' << 16)) | ('7' << 8)) | 'G', + PJMEDIA_FORMAT_ILBC = ((('C' << 24) | ('B' << 16)) | ('L' << 8)) | 'I', + PJMEDIA_FORMAT_RGB24 = ((('3' << 24) | ('B' << 16)) | ('G' << 8)) | 'R', + PJMEDIA_FORMAT_RGBA = ((('A' << 24) | ('B' << 16)) | ('G' << 8)) | 'R', + PJMEDIA_FORMAT_BGRA = ((('A' << 24) | ('R' << 16)) | ('G' << 8)) | 'B', + PJMEDIA_FORMAT_RGB32 = PJMEDIA_FORMAT_RGBA, + PJMEDIA_FORMAT_DIB = (((' ' << 24) | ('B' << 16)) | ('I' << 8)) | 'D', + PJMEDIA_FORMAT_GBRP = ((('P' << 24) | ('R' << 16)) | ('B' << 8)) | 'G', + PJMEDIA_FORMAT_AYUV = ((('V' << 24) | ('U' << 16)) | ('Y' << 8)) | 'A', + PJMEDIA_FORMAT_YUY2 = ((('2' << 24) | ('Y' << 16)) | ('U' << 8)) | 'Y', + PJMEDIA_FORMAT_UYVY = ((('Y' << 24) | ('V' << 16)) | ('Y' << 8)) | 'U', + PJMEDIA_FORMAT_YVYU = ((('U' << 24) | ('Y' << 16)) | ('V' << 8)) | 'Y', + PJMEDIA_FORMAT_I420 = ((('0' << 24) | ('2' << 16)) | ('4' << 8)) | 'I', + PJMEDIA_FORMAT_IYUV = PJMEDIA_FORMAT_I420, + PJMEDIA_FORMAT_YV12 = ((('2' << 24) | ('1' << 16)) | ('V' << 8)) | 'Y', + PJMEDIA_FORMAT_NV12 = ((('2' << 24) | ('1' << 16)) | ('V' << 8)) | 'N', + PJMEDIA_FORMAT_NV21 = ((('1' << 24) | ('2' << 16)) | ('V' << 8)) | 'N', + PJMEDIA_FORMAT_I422 = ((('2' << 24) | ('2' << 16)) | ('4' << 8)) | 'I', + PJMEDIA_FORMAT_I420JPEG = ((('0' << 24) | ('2' << 16)) | ('4' << 8)) | 'J', + PJMEDIA_FORMAT_I422JPEG = ((('2' << 24) | ('2' << 16)) | ('4' << 8)) | 'J', + PJMEDIA_FORMAT_H261 = ((('1' << 24) | ('6' << 16)) | ('2' << 8)) | 'H', + PJMEDIA_FORMAT_H263 = ((('3' << 24) | ('6' << 16)) | ('2' << 8)) | 'H', + PJMEDIA_FORMAT_H263P = ((('3' << 24) | ('6' << 16)) | ('2' << 8)) | 'P', + PJMEDIA_FORMAT_H264 = ((('4' << 24) | ('6' << 16)) | ('2' << 8)) | 'H', + PJMEDIA_FORMAT_VP8 = ((('0' << 24) | ('8' << 16)) | ('P' << 8)) | 'V', + PJMEDIA_FORMAT_VP9 = ((('0' << 24) | ('9' << 16)) | ('P' << 8)) | 'V', + PJMEDIA_FORMAT_MJPEG = ((('G' << 24) | ('P' << 16)) | ('J' << 8)) | 'M', + PJMEDIA_FORMAT_MPEG1VIDEO = ((('V' << 24) | ('1' << 16)) | ('P' << 8)) | 'M', + PJMEDIA_FORMAT_MPEG2VIDEO = ((('V' << 24) | ('2' << 16)) | ('P' << 8)) | 'M', + PJMEDIA_FORMAT_MPEG4 = ((('4' << 24) | ('G' << 16)) | ('P' << 8)) | 'M', + PJMEDIA_FORMAT_INVALID = 0xFFFFFFF +} pjmedia_format_id; -typedef enum pjmedia_aud_dev_cap +typedef enum pjmedia_frame_type { - PJMEDIA_AUD_DEV_CAP_EXT_FORMAT = 1, - PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY = 2, - PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY = 4, - PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING = 8, - PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING = 16, - PJMEDIA_AUD_DEV_CAP_INPUT_SIGNAL_METER = 32, - PJMEDIA_AUD_DEV_CAP_OUTPUT_SIGNAL_METER = 64, - PJMEDIA_AUD_DEV_CAP_INPUT_ROUTE = 128, - PJMEDIA_AUD_DEV_CAP_INPUT_SOURCE = 128, - PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE = 256, - PJMEDIA_AUD_DEV_CAP_EC = 512, - PJMEDIA_AUD_DEV_CAP_EC_TAIL = 1024, - PJMEDIA_AUD_DEV_CAP_VAD = 2048, - PJMEDIA_AUD_DEV_CAP_CNG = 4096, - PJMEDIA_AUD_DEV_CAP_PLC = 8192, - PJMEDIA_AUD_DEV_CAP_MAX = 16384 -} pjmedia_aud_dev_cap; + PJMEDIA_FRAME_TYPE_NONE, + PJMEDIA_FRAME_TYPE_AUDIO, + PJMEDIA_FRAME_TYPE_EXTENDED, + PJMEDIA_FRAME_TYPE_VIDEO +} pjmedia_frame_type; -enum pjmedia_file_writer_option +typedef enum pjmedia_jb_discard_algo { - PJMEDIA_FILE_WRITE_PCM = 0, - PJMEDIA_FILE_WRITE_ALAW = 1, - PJMEDIA_FILE_WRITE_ULAW = 2 -}; + PJMEDIA_JB_DISCARD_NONE = 0, + PJMEDIA_JB_DISCARD_STATIC, + PJMEDIA_JB_DISCARD_PROGRESSIVE +} pjmedia_jb_discard_algo; -enum pjmedia_file_player_option +typedef enum pjmedia_rtcp_fb_type { - PJMEDIA_FILE_NO_LOOP = 1 -}; + PJMEDIA_RTCP_FB_ACK, + PJMEDIA_RTCP_FB_NACK, + PJMEDIA_RTCP_FB_TRR_INT, + PJMEDIA_RTCP_FB_OTHER +} pjmedia_rtcp_fb_type; typedef struct pjmedia_tone_digit { @@ -388,6 +362,27 @@ typedef struct pjmedia_tone_desc short flags; } pjmedia_tone_desc; +typedef enum pjmedia_srtp_use +{ + PJMEDIA_SRTP_DISABLED, + PJMEDIA_SRTP_UNKNOWN = PJMEDIA_SRTP_DISABLED, + PJMEDIA_SRTP_OPTIONAL, + PJMEDIA_SRTP_MANDATORY +} pjmedia_srtp_use; + +typedef enum pjmedia_srtp_crypto_option +{ + PJMEDIA_SRTP_NO_ENCRYPTION = 1, + PJMEDIA_SRTP_NO_AUTHENTICATION = 2 +} pjmedia_srtp_crypto_option; + +typedef enum pjmedia_srtp_keying_method +{ + PJMEDIA_SRTP_KEYING_SDES, + PJMEDIA_SRTP_KEYING_DTLS_SRTP, + PJMEDIA_SRTP_KEYINGS_COUNT +} pjmedia_srtp_keying_method; + typedef enum pjmedia_type { PJMEDIA_TYPE_NONE, @@ -437,55 +432,14 @@ typedef enum pjmedia_orient PJMEDIA_ORIENT_ROTATE_270DEG } pjmedia_orient; -typedef enum pjmedia_frame_type +typedef enum pjmedia_vid_dev_hwnd_type { - PJMEDIA_FRAME_TYPE_NONE, - PJMEDIA_FRAME_TYPE_AUDIO, - PJMEDIA_FRAME_TYPE_EXTENDED, - PJMEDIA_FRAME_TYPE_VIDEO -} pjmedia_frame_type; - -typedef enum pjmedia_format_id -{ - PJMEDIA_FORMAT_L16 = 0, - PJMEDIA_FORMAT_PCM = PJMEDIA_FORMAT_L16, - PJMEDIA_FORMAT_PCMA = ((('W' << 24) | ('A' << 16)) | ('L' << 8)) | 'A', - PJMEDIA_FORMAT_ALAW = PJMEDIA_FORMAT_PCMA, - PJMEDIA_FORMAT_PCMU = ((('W' << 24) | ('A' << 16)) | ('L' << 8)) | 'u', - PJMEDIA_FORMAT_ULAW = PJMEDIA_FORMAT_PCMU, - PJMEDIA_FORMAT_AMR = ((('R' << 24) | ('M' << 16)) | ('A' << 8)) | ' ', - PJMEDIA_FORMAT_G729 = ((('9' << 24) | ('2' << 16)) | ('7' << 8)) | 'G', - PJMEDIA_FORMAT_ILBC = ((('C' << 24) | ('B' << 16)) | ('L' << 8)) | 'I', - PJMEDIA_FORMAT_RGB24 = ((('3' << 24) | ('B' << 16)) | ('G' << 8)) | 'R', - PJMEDIA_FORMAT_RGBA = ((('A' << 24) | ('B' << 16)) | ('G' << 8)) | 'R', - PJMEDIA_FORMAT_BGRA = ((('A' << 24) | ('R' << 16)) | ('G' << 8)) | 'B', - PJMEDIA_FORMAT_RGB32 = PJMEDIA_FORMAT_RGBA, - PJMEDIA_FORMAT_DIB = (((' ' << 24) | ('B' << 16)) | ('I' << 8)) | 'D', - PJMEDIA_FORMAT_GBRP = ((('P' << 24) | ('R' << 16)) | ('B' << 8)) | 'G', - PJMEDIA_FORMAT_AYUV = ((('V' << 24) | ('U' << 16)) | ('Y' << 8)) | 'A', - PJMEDIA_FORMAT_YUY2 = ((('2' << 24) | ('Y' << 16)) | ('U' << 8)) | 'Y', - PJMEDIA_FORMAT_UYVY = ((('Y' << 24) | ('V' << 16)) | ('Y' << 8)) | 'U', - PJMEDIA_FORMAT_YVYU = ((('U' << 24) | ('Y' << 16)) | ('V' << 8)) | 'Y', - PJMEDIA_FORMAT_I420 = ((('0' << 24) | ('2' << 16)) | ('4' << 8)) | 'I', - PJMEDIA_FORMAT_IYUV = PJMEDIA_FORMAT_I420, - PJMEDIA_FORMAT_YV12 = ((('2' << 24) | ('1' << 16)) | ('V' << 8)) | 'Y', - PJMEDIA_FORMAT_NV12 = ((('2' << 24) | ('1' << 16)) | ('V' << 8)) | 'N', - PJMEDIA_FORMAT_NV21 = ((('1' << 24) | ('2' << 16)) | ('V' << 8)) | 'N', - PJMEDIA_FORMAT_I422 = ((('2' << 24) | ('2' << 16)) | ('4' << 8)) | 'I', - PJMEDIA_FORMAT_I420JPEG = ((('0' << 24) | ('2' << 16)) | ('4' << 8)) | 'J', - PJMEDIA_FORMAT_I422JPEG = ((('2' << 24) | ('2' << 16)) | ('4' << 8)) | 'J', - PJMEDIA_FORMAT_H261 = ((('1' << 24) | ('6' << 16)) | ('2' << 8)) | 'H', - PJMEDIA_FORMAT_H263 = ((('3' << 24) | ('6' << 16)) | ('2' << 8)) | 'H', - PJMEDIA_FORMAT_H263P = ((('3' << 24) | ('6' << 16)) | ('2' << 8)) | 'P', - PJMEDIA_FORMAT_H264 = ((('4' << 24) | ('6' << 16)) | ('2' << 8)) | 'H', - PJMEDIA_FORMAT_VP8 = ((('0' << 24) | ('8' << 16)) | ('P' << 8)) | 'V', - PJMEDIA_FORMAT_VP9 = ((('0' << 24) | ('9' << 16)) | ('P' << 8)) | 'V', - PJMEDIA_FORMAT_MJPEG = ((('G' << 24) | ('P' << 16)) | ('J' << 8)) | 'M', - PJMEDIA_FORMAT_MPEG1VIDEO = ((('V' << 24) | ('1' << 16)) | ('P' << 8)) | 'M', - PJMEDIA_FORMAT_MPEG2VIDEO = ((('V' << 24) | ('2' << 16)) | ('P' << 8)) | 'M', - PJMEDIA_FORMAT_MPEG4 = ((('4' << 24) | ('G' << 16)) | ('P' << 8)) | 'M', - PJMEDIA_FORMAT_INVALID = 0xFFFFFFF -} pjmedia_format_id; + PJMEDIA_VID_DEV_HWND_TYPE_NONE, + PJMEDIA_VID_DEV_HWND_TYPE_WINDOWS, + PJMEDIA_VID_DEV_HWND_TYPE_COCOA, + PJMEDIA_VID_DEV_HWND_TYPE_IOS, + PJMEDIA_VID_DEV_HWND_TYPE_ANDROID +} pjmedia_vid_dev_hwnd_type; typedef enum pjmedia_vid_packing { @@ -494,13 +448,84 @@ typedef enum pjmedia_vid_packing PJMEDIA_VID_PACKING_WHOLE = 2 } pjmedia_vid_packing; -typedef enum pjmedia_rtcp_fb_type +typedef enum pjmedia_vid_stream_rc_method { - PJMEDIA_RTCP_FB_ACK, - PJMEDIA_RTCP_FB_NACK, - PJMEDIA_RTCP_FB_TRR_INT, - PJMEDIA_RTCP_FB_OTHER -} pjmedia_rtcp_fb_type; + PJMEDIA_VID_STREAM_RC_NONE = 0, + PJMEDIA_VID_STREAM_RC_SIMPLE_BLOCKING = 1 +} pjmedia_vid_stream_rc_method; + +enum pjmedia_file_writer_option +{ + PJMEDIA_FILE_WRITE_PCM = 0, + PJMEDIA_FILE_WRITE_ALAW = 1, + PJMEDIA_FILE_WRITE_ULAW = 2 +}; + +enum pjmedia_file_player_option +{ + PJMEDIA_FILE_NO_LOOP = 1 +}; + +typedef enum pjmedia_aud_dev_route +{ + PJMEDIA_AUD_DEV_ROUTE_DEFAULT = 0, + PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER = 1, + PJMEDIA_AUD_DEV_ROUTE_EARPIECE = 2, + PJMEDIA_AUD_DEV_ROUTE_BLUETOOTH = 4, + PJMEDIA_AUD_DEV_ROUTE_CUSTOM = 128 +} pjmedia_aud_dev_route; + +typedef enum pjmedia_aud_dev_cap +{ + PJMEDIA_AUD_DEV_CAP_EXT_FORMAT = 1, + PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY = 2, + PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY = 4, + PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING = 8, + PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING = 16, + PJMEDIA_AUD_DEV_CAP_INPUT_SIGNAL_METER = 32, + PJMEDIA_AUD_DEV_CAP_OUTPUT_SIGNAL_METER = 64, + PJMEDIA_AUD_DEV_CAP_INPUT_ROUTE = 128, + PJMEDIA_AUD_DEV_CAP_INPUT_SOURCE = 128, + PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE = 256, + PJMEDIA_AUD_DEV_CAP_EC = 512, + PJMEDIA_AUD_DEV_CAP_EC_TAIL = 1024, + PJMEDIA_AUD_DEV_CAP_VAD = 2048, + PJMEDIA_AUD_DEV_CAP_CNG = 4096, + PJMEDIA_AUD_DEV_CAP_PLC = 8192, + PJMEDIA_AUD_DEV_CAP_MAX = 16384 +} pjmedia_aud_dev_cap; + +typedef pj_int32_t pjmedia_vid_dev_index; + +enum pjmedia_vid_dev_std_index +{ + PJMEDIA_VID_DEFAULT_CAPTURE_DEV = -1, + PJMEDIA_VID_DEFAULT_RENDER_DEV = -2, + PJMEDIA_VID_INVALID_DEV = -3 +}; + +typedef enum pjmedia_vid_dev_cap +{ + PJMEDIA_VID_DEV_CAP_FORMAT = 1, + PJMEDIA_VID_DEV_CAP_INPUT_SCALE = 2, + PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW = 4, + PJMEDIA_VID_DEV_CAP_OUTPUT_RESIZE = 8, + PJMEDIA_VID_DEV_CAP_OUTPUT_POSITION = 16, + PJMEDIA_VID_DEV_CAP_OUTPUT_HIDE = 32, + PJMEDIA_VID_DEV_CAP_INPUT_PREVIEW = 64, + PJMEDIA_VID_DEV_CAP_ORIENTATION = 128, + PJMEDIA_VID_DEV_CAP_SWITCH = 256, + PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW_FLAGS = 512, + PJMEDIA_VID_DEV_CAP_OUTPUT_FULLSCREEN = 1024, + PJMEDIA_VID_DEV_CAP_MAX = 16384 +} pjmedia_vid_dev_cap; + +typedef enum pjmedia_vid_dev_fullscreen_flag +{ + PJMEDIA_VID_DEV_WINDOWED = 0, + PJMEDIA_VID_DEV_FULLSCREEN = 1, + PJMEDIA_VID_DEV_FULLSCREEN_DESKTOP = 2 +} pjmedia_vid_dev_fullscreen_flag; typedef enum pjsip_cred_data_type { @@ -672,6 +697,19 @@ typedef enum pjsip_hdr_e PJSIP_H_OTHER } pjsip_hdr_e; +typedef enum pjsip_tsx_state_e +{ + PJSIP_TSX_STATE_NULL, + PJSIP_TSX_STATE_CALLING, + PJSIP_TSX_STATE_TRYING, + PJSIP_TSX_STATE_PROCEEDING, + PJSIP_TSX_STATE_COMPLETED, + PJSIP_TSX_STATE_CONFIRMED, + PJSIP_TSX_STATE_TERMINATED, + PJSIP_TSX_STATE_DESTROYED, + PJSIP_TSX_STATE_MAX +} pjsip_tsx_state_e; + typedef enum pjsip_transport_type_e { PJSIP_TRANSPORT_UNSPECIFIED, @@ -717,19 +755,6 @@ typedef enum pjsip_ssl_method PJSIP_SSLV23_METHOD = 23 } pjsip_ssl_method; -typedef enum pjsip_tsx_state_e -{ - PJSIP_TSX_STATE_NULL, - PJSIP_TSX_STATE_CALLING, - PJSIP_TSX_STATE_TRYING, - PJSIP_TSX_STATE_PROCEEDING, - PJSIP_TSX_STATE_COMPLETED, - PJSIP_TSX_STATE_CONFIRMED, - PJSIP_TSX_STATE_TERMINATED, - PJSIP_TSX_STATE_DESTROYED, - PJSIP_TSX_STATE_MAX -} pjsip_tsx_state_e; - typedef enum pjsip_role_e { PJSIP_ROLE_UAC, @@ -747,13 +772,6 @@ typedef enum pjsip_redirect_op PJSIP_REDIRECT_STOP } pjsip_redirect_op; -typedef enum pjrpid_activity -{ - PJRPID_ACTIVITY_UNKNOWN, - PJRPID_ACTIVITY_AWAY, - PJRPID_ACTIVITY_BUSY -} pjrpid_activity; - typedef enum pjsip_evsub_state { PJSIP_EVSUB_STATE_NULL, @@ -765,6 +783,13 @@ typedef enum pjsip_evsub_state PJSIP_EVSUB_STATE_UNKNOWN } pjsip_evsub_state; +typedef enum pjrpid_activity +{ + PJRPID_ACTIVITY_UNKNOWN, + PJRPID_ACTIVITY_AWAY, + PJRPID_ACTIVITY_BUSY +} pjrpid_activity; + typedef enum pjsip_inv_state { PJSIP_INV_STATE_NULL, @@ -947,3 +972,10 @@ typedef enum pjsua_dtmf_method PJSUA_DTMF_METHOD_SIP_INFO } pjsua_dtmf_method; +typedef enum pjsua_sip_siprec_use +{ + PJSUA_SIP_SIPREC_INACTIVE, + PJSUA_SIP_SIPREC_OPTIONAL, + PJSUA_SIP_SIPREC_MANDATORY +} pjsua_sip_siprec_use; + diff --git a/pjsip-apps/src/swig/symbols.lst b/pjsip-apps/src/swig/symbols.lst index 8c3237bc5a..4ddc567c58 100644 --- a/pjsip-apps/src/swig/symbols.lst +++ b/pjsip-apps/src/swig/symbols.lst @@ -1,40 +1,44 @@ -pj/types.h pj_status_t pj_constants_ pj_uint8_t pj_int32_t pj_uint32_t pj_uint16_t -pj/file_io.h pj_file_access -pj/log.h pj_log_decoration -pj/sock_qos.h pj_qos_type pj_qos_flag pj_qos_wmm_prio pj_qos_params -pj/ssl_sock.h pj_ssl_cipher pj_ssl_sock_proto pj_ssl_cert_name_type pj_ssl_cert_verify_flag_t pj_ssl_cert_lookup_type +pj/file_io.h pj_file_access +pj/log.h pj_log_decoration +pj/sock_qos.h pj_qos_type pj_qos_flag pj_qos_wmm_prio pj_qos_params +pj/ssl_sock.h pj_ssl_cipher pj_ssl_sock_proto pj_ssl_cert_name_type pj_ssl_cert_verify_flag_t pj_ssl_cert_lookup_type +pj/types.h pj_status_t pj_constants_ pj_uint8_t pj_int32_t pj_uint32_t pj_uint16_t -pjnath/ice_session.h pj_ice_sess_trickle -pjnath/nat_detect.h pj_stun_nat_type -pjnath/turn_session.h pj_turn_tp_type +pjnath/ice_session.h pj_ice_sess_trickle +pjnath/nat_detect.h pj_stun_nat_type +pjnath/turn_session.h pj_turn_tp_type pjmedia/echo.h pjmedia_echo_flag pjmedia/event.h pjmedia_event_type -pjmedia/transport_srtp.h pjmedia_srtp_use pjmedia_srtp_crypto_option pjmedia_srtp_keying_method -pjmedia/vid_stream.h pjmedia_vid_stream_rc_method -pjmedia-videodev/videodev.h pjmedia_vid_dev_index pjmedia_vid_dev_std_index pjmedia_vid_dev_cap pjmedia_vid_dev_fullscreen_flag -pjmedia-audiodev/audiodev.h pjmedia_aud_dev_route pjmedia_aud_dev_cap -pjmedia/wav_port.h pjmedia_file_writer_option pjmedia_file_player_option -pjmedia/tonegen.h pjmedia_tone_digit pjmedia_tone_digit_map pjmedia_tone_desc +pjmedia/format.h pjmedia_format_id +pjmedia/frame.h pjmedia_frame_type +pjmedia/jbuf.h pjmedia_jb_discard_algo +pjmedia/rtcp_fb.h pjmedia_rtcp_fb_type +pjmedia/tonegen.h pjmedia_tone_digit pjmedia_tone_digit_map pjmedia_tone_desc +pjmedia/transport_srtp.h pjmedia_srtp_use pjmedia_srtp_crypto_option pjmedia_srtp_keying_method pjmedia/types.h pjmedia_type pjmedia_dir pjmedia_tp_proto pjmedia_orient -pjmedia/frame.h pjmedia_frame_type -pjmedia/format.h pjmedia_format_id -pjmedia/vid_codec.h pjmedia_vid_packing -pjmedia/rtcp_fb.h pjmedia_rtcp_fb_type +pjmedia/videodev.h pjmedia_vid_dev_hwnd_type +pjmedia/vid_codec.h pjmedia_vid_packing +pjmedia/vid_stream.h pjmedia_vid_stream_rc_method +pjmedia/wav_port.h pjmedia_file_writer_option pjmedia_file_player_option + +pjmedia-audiodev/audiodev.h pjmedia_aud_dev_route pjmedia_aud_dev_cap + +pjmedia-videodev/videodev.h pjmedia_vid_dev_index pjmedia_vid_dev_std_index pjmedia_vid_dev_cap pjmedia_vid_dev_fullscreen_flag -pjsip/sip_auth.h pjsip_cred_data_type pjsip_auth_algorithm_type +pjsip/sip_auth.h pjsip_cred_data_type pjsip_auth_algorithm_type pjsip/sip_dialog.h pjsip_dialog_cap_status pjsip/sip_event.h pjsip_event_id_e -pjsip/sip_msg.h pjsip_status_code pjsip_hdr_e -pjsip/sip_transport.h pjsip_transport_type_e pjsip_transport_flags_e pjsip_transport_state -pjsip/sip_transport_tls.h pjsip_ssl_method +pjsip/sip_msg.h pjsip_status_code pjsip_hdr_e pjsip/sip_transaction.h pjsip_tsx_state_e +pjsip/sip_transport.h pjsip_transport_type_e pjsip_transport_flags_e pjsip_transport_state +pjsip/sip_transport_tls.h pjsip_ssl_method pjsip/sip_types.h pjsip_role_e pjsip/sip_util.h pjsip_redirect_op -pjsip-simple/rpid.h pjrpid_activity -pjsip-simple/evsub.h pjsip_evsub_state +pjsip-simple/evsub.h pjsip_evsub_state +pjsip-simple/rpid.h pjrpid_activity pjsip-ua/sip_inv.h pjsip_inv_state -pjsua-lib/pjsua.h pjsua_invalid_id_const_ pjsua_state pjsua_stun_use pjsua_upnp_use pjsua_call_hold_type pjsua_acc_id pjsua_destroy_flag pjsua_100rel_use pjsua_sip_timer_use pjsua_ipv6_use pjsua_nat64_opt pjsua_buddy_status pjsua_call_media_status pjsua_vid_win_id pjsua_call_id pjsua_med_tp_st pjsua_call_vid_strm_op pjsua_vid_req_keyframe_method pjsua_call_flag pjsua_create_media_transport_flag pjsua_snd_dev_id pjsua_snd_dev_mode pjsua_ip_change_op pjsua_dtmf_method +pjsua-lib/pjsua.h pjsua_invalid_id_const_ pjsua_state pjsua_stun_use pjsua_upnp_use pjsua_call_hold_type pjsua_acc_id pjsua_destroy_flag pjsua_100rel_use pjsua_sip_timer_use pjsua_ipv6_use pjsua_nat64_opt pjsua_buddy_status pjsua_call_media_status pjsua_vid_win_id pjsua_call_id pjsua_med_tp_st pjsua_call_vid_strm_op pjsua_vid_req_keyframe_method pjsua_call_flag pjsua_create_media_transport_flag pjsua_snd_dev_id pjsua_snd_dev_mode pjsua_ip_change_op pjsua_dtmf_method pjsua_sip_siprec_use